Страница 2 из 3

Re: DHT11 > Arduino > MD

Добавлено: Ср июл 01, 2015 3:57 pm
annakin
У Алисы по логам чисто, вообще никакого намёка на обращение к ней.
Я уже пробовал менять скорость обмена данными порта УСБ у Алисы и в скетчах, тоже не помогло.
Я пробовал вставить простую флешку в Алису и она её видит.
Значит Алиса видит УСБ.
Проблема в чемто другом.

Re: DHT11 > Arduino > MD

Добавлено: Ср июл 01, 2015 6:26 pm
annakin
Для Win32 Транспортом между Ардуиной и Алисой служит ArduinoGW, так может быть в Debian должен быть такойже транспорт и я его не поставил или не настроил.

Re: DHT11 > Arduino > MD

Добавлено: Ср июл 01, 2015 8:51 pm
sergejey
annakin писал(а):Для Win32 Транспортом между Ардуиной и Алисой служит ArduinoGW, так может быть в Debian должен быть такойже транспорт и я его не поставил или не настроил.
На самом деле подключение Arduino напрямую к системе это не то, чтобы плохо, но не очень удобно. Обычно контроллеры обращаются к системе по сети, используя какие-то шлюзы (тот же ethernet-shield). Тем не менее, где-то был на форуме аналог ArduinoGW на bash, но что-то не нашёл.

Вот код, который по идее должен подойти (в блоке settings надо заменить на свои данные):

Код: Выделить всё

#!/bin/bash

# settings
ARDUINO_PORT=/dev/ttyACM0
ARDUINO_PORT_SPEED=9600
LOCAL_BASE_URL="http://192.168.0.1"


ERROR_COUNTER=0
while : 
do


START_TIME="$(date +%s)"
# main cycle
stty -F $ARDUINO_PORT ispeed $ARDUINO_PORT_SPEED ospeed $ARDUINO_PORT_SPEED cs8 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

#---------------------------------------------------------------------------
while read LINE; do

echo $LINE

PASSED_TIME="$(($(date +%s)-START_TIME))"

# Processing incoming URLs from controller
REGEX='^GET (.+)$'
if [[ $LINE =~ $REGEX ]]
then
URL=$LOCAL_BASE_URL${BASH_REMATCH[1]}
URL=$LOCAL_BAST_URL
echo Getting URL
echo $URL
fi

done < $ARDUINO_PORT

let "ERROR_COUNTER=$ERROR_COUNTER+1"

echo "ERROR COUNTER: $ERROR_COUNTER"

done
#---------------------------------------------------------------------------
echo Cycle stopped. 

Re: DHT11 > Arduino > MD

Добавлено: Ср июл 01, 2015 9:04 pm
annakin
Я так понимаю на будет его сразу надо поставить в автозагрузку и кинуть в /etc/init.d/

Re: DHT11 > Arduino > MD

Добавлено: Чт июл 02, 2015 11:20 am
sergejey
annakin писал(а):Я так понимаю на будет его сразу надо поставить в автозагрузку и кинуть в /etc/init.d/
Для начала проверить работу, а потом да, наверное.

Re: DHT11 > Arduino > MD

Добавлено: Чт июл 02, 2015 3:58 pm
annakin
Скрипт работает.
Вот что мне выдаёт скрипт:

Код: Выделить всё

GET /objects/?object=TempSensor01&op=m&m=tempChanged&temp=27.0
Getting URL
На данные в Алисе не меняются.
Шас провёл тест напрямую решил через браузер скормить данные таким методом:

Код: Выделить всё

http://192.168.0.100/objects/?object=TempSensor01&op=m&m=tempChanged&temp=25.00  
И ничего не меняется, как стояло значение 22.5 так и стоит, значит Алиса не принимает данные даже из браузера, я правельно понимаю ?
Изображение

Re: DHT11 > Arduino > MD

Добавлено: Чт июл 02, 2015 5:07 pm
annakin
При прямом обращений через барузер все свойства данного сенсора обновляются кроме свойства temp.

Re: DHT11 > Arduino > MD

Добавлено: Пт июл 03, 2015 11:50 am
annakin
Пробовал прямое обращение к сенсору движения и его свойство status меняется при прямом обращении через барузер. А вот именно сенсор температуры и влажности не хочет.
В чем может быть проблема ?

Re: DHT11 > Arduino > MD

Добавлено: Пт июл 03, 2015 1:19 pm
annakin
Всё разобрался, всё работает. Там надо было передавать не переменную temp=30 а t=30

Re: DHT11 > Arduino > MD

Добавлено: Пн окт 24, 2016 4:50 pm
mazahaka7sk
annakin писал(а):Всё разобрался, всё работает. Там надо было передавать не переменную temp=30 а t=30
У тебя заработала а я уже месяца 2 не могу настроить точнее понять как добавить правельный скетьч для работы потому что нехрена не работает
вот мой скетч которым я сейчас пользуюсь
SPOILERSPOILER_SHOW
int cycle_counter=0;
char val = 0;
int old_SensorSpalnaD=0;
int old_SensorZalD=0;
int old_SensorKyxnaD=0;
int old_SensorKoridorD=0;
int old_SensorTyaletD=0;
int old_Sensorvodityalet=0;


unsigned int sensorValue = 0;
char buf[80];

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
}


void setup()
{

pinMode(2, INPUT); // Датчик движение спальня 2 пин
old_SensorSpalnaD=digitalRead(2);

pinMode(3, INPUT); // Датчик движение зал 3 пин
old_SensorZalD=digitalRead(3);

pinMode(4, INPUT); // Датчик движение кухня 4 пин
old_SensorKyxnaD=digitalRead(4);

pinMode(5, INPUT); // Датчик движение коридор 5 пин
old_SensorKoridorD=digitalRead(5);

pinMode(6, INPUT); // Датчик движение туалет 6 пин
old_SensorTyaletD=digitalRead(6);

pinMode(7, OUTPUT); // реле света спальня 7 пин

pinMode(8, OUTPUT); // реле подсветки кухня 8 пин



pinMode(10, INPUT); // сенсор воды туалет 10 пин
old_Sensorvodityalet=digitalRead(10);



pinMode(12, OUTPUT); // реле 12пин

pinMode(13, OUTPUT); // реле 13 пин

Serial.begin(115200); // Скорость консольного порта 9600 (пригодится для отладки)
}

void loop()
{
{
if (Serial.available() > 0) {
val = Serial.read();
if (val=='B') digitalWrite(7,HIGH); // выключить свет
if (val=='V') digitalWrite(7,LOW); // включить свет
if (val=='Z') digitalWrite(8,HIGH); // выключить свет
if (val=='X') digitalWrite(8,LOW); // включить свет
if (val=='S') digitalWrite(12,HIGH); // выключить свет
if (val=='D') digitalWrite(12,LOW); // включить свет
if (val=='F') digitalWrite(13,HIGH); // выключить свет
if (val=='G') digitalWrite(13,LOW); // включить свет
}
}


int valid_sensor=0;
delay(1000); // задержка в 0.1 сек.
cycle_counter++;

if (cycle_counter>600) {
cycle_counter=0;
}

//движение спальня
Serial.println("G");
int current_SensorSpalnaD=digitalRead(2);
//Serial.println(current_SensorSpalnaD);
if (current_SensorSpalnaD!=(int)old_SensorSpalnaD) {
old_SensorSpalnaD=(int)current_SensorSpalnaD;
sprintf(buf, "GET /objects/?object=SensorSpalnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorSpalnaD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("H");
int current_SensorZalD=digitalRead(3);
//Serial.println(current_SensorZalD);
if (current_SensorZalD!=(int)old_SensorZalD) {
old_SensorZalD=(int)current_SensorZalD;
sprintf(buf, "GET /objects/?object=SensorZalD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorZalD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("L");
int current_SensorKyxnaD=digitalRead(4);
//Serial.println(current_SensorKyxnaD);
if (current_SensorKyxnaD!=(int)old_SensorKyxnaD) {
old_SensorKyxnaD=(int)current_SensorKyxnaD;
sprintf(buf, "GET /objects/?object=SensorKyxnaD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKyxnaD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("N");
int current_SensorKoridorD=digitalRead(5);
//Serial.println(current_SensorKoridorD);
if (current_SensorKoridorD!=(int)old_SensorKoridorD) {
old_SensorKoridorD=(int)current_SensorKoridorD;
sprintf(buf, "GET /objects/?object=SensorKoridorD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorKoridorD);
sendHTTPRequest();
}

//GARAGE GATES SENSOR
Serial.println("O");
int current_SensorTyaletD=digitalRead(6);
//Serial.println(current_SensorTyaletD);
if (current_SensorTyaletD!=(int)old_SensorTyaletD) {
old_SensorTyaletD=(int)current_SensorTyaletD;
sprintf(buf, "GET /objects/?object=SensorTyaletD&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_SensorTyaletD);
sendHTTPRequest();

}


//GARAGE GATES SENSOR
Serial.println("K");
int current_Sensorvodityalet=digitalRead(10);
//Serial.println(current_Sensorvodityalet);
if (current_Sensorvodityalet!=(int)old_Sensorvodityalet) {
old_Sensorvodityalet=(int)current_Sensorvodityalet;
sprintf(buf, "GET /objects/?object=Sensorvodityalet&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_Sensorvodityalet);
sendHTTPRequest();
}



}
если понимаешь подскажи как добавить в этот скетч получения информации с датчика DHT11
спасибо