Страница 1 из 3
Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Вс мар 30, 2014 2:56 am
alexpzas
Всем привет. Помогите пожалуйста разобраться, рылся на форуме и на сайте, но толком не понял, разжуйте если можно. Общим есть Дуина мега , управляет освещением в квартире по датчикам движения , освещения и пр. Недавно подкинул на неё датчик температуры DHT11 , значение температуры записываю в переменную t. Теперь хочу эту температуру выводить где-то в МЖД (потом былобы неплохо с МЖД вкл/выкл свет, но для начала хотябы разобраться с принцыпом). В скетче формирую след запрос
Код: Выделить всё
sprintf(buf, "GET /objects/?object=sensorTemp&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (float)t);
и отправляю его процедурой
Код: Выделить всё
void sendHTTPRequest()
{
Serial.println(buf);
if (client.connect(server,80)) {
Serial.println("OK");
client.println(buf);
client.println("Host: 192.168.0.25");
client.println();
delay(2000);
client.stop();
} else {
Serial.println("FAILED");
}
}
Надеюсь тут всё верно (если нет , то подправьте пож).
Теперь вот вопрос, помогите пошагово, что нужно делать в МЖД.
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Пн мар 31, 2014 9:00 am
PAV
Создать объект sensorTemp. Ему, согласно скетча, будет присвоено значение t.
Также создать метод tempChanged и прописать там, что будет, когда к нему обращаются.
Только я бы float не передавал, лучше сделать так:
Код: Выделить всё
int temp5 = (current_temp5 - (int)current_temp5) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorTemp5&op=m&m=tempChanged&t=%0d.%d", (int)current_temp5, abs(temp5));
sendHTTPRequest();
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Пн мар 31, 2014 9:04 am
alexpzas
я так понимаю temp5 это и есть моя t ? А подскажите пож , что означает в запросе t=%0d.%d" ?
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Вт апр 01, 2014 1:43 pm
PAV
Вот честно, я этим способом (t=%0d.%d) пользуюсь во всех кодах, но как он работает понятия не имел

))
Благодаря вашему вопросу разобрался
http://php.net/manual/en/function.sprintf.php
или на русском
http://www.php.su/sprintf
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Вт апр 01, 2014 11:27 pm
alexpzas
Спасибо за ссылку, полезно было тоже разобраться ))
Теперь хочу описать, что я делал пошагово в МЖД но результата не получил ((( Направьте пож. где ошибся.
Создал объект sensorTemp

- 1.jpg (32.79 КБ) 10178 просмотров
Добавил к этому объекту метод tempChanged в котором просто произносится фраза (для теста).

- 2.jpg (38.91 КБ) 10178 просмотров
Теперь в сцену добавляем элемент
температура, с состоянием
темп в котором вызывается метод sensorTemp.tempChanged

- 3.jpg (63.34 КБ) 10178 просмотров
(картинку лампочки просто для примера подключил,хоть и не в тему).
По идее, теперь когда открываем сцену то должна произноситься фраза -Температура в детской,цель конечно отображение температуры, но пока пускай так хоть. Но ничего не происходит. Что я не так делаю, если можно конкретно ткнуть пальцем.
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Ср апр 02, 2014 10:36 am
PAV
Вы бы начинали от легкого к сложному

Сначала нужно изучить структуру.
Ну первое - объект sensor.Temp лучше убрать под класс - Сделать класс например sensorTemp, а под ним уже sensorTemp1 2 и т.д.
Далее Объекту нужно присвоить свойства, например - temp, changed, alive, и методы tempchaged
В итоге вам нужны свойство sensorTemp.temp и метод sensorTemp.tempchanged
Покопайтесь в Connect, посмотрите, как у других сделано.
Когда с ардуины приходит команда, свойству sensorTemp.temp присваивается значение t и выполняется метод sensorTemp.tempchanged.
В сценах так легко не получится, там нужно выбрать скорее всего Тип - HTML и сверстать страничку с температурой, используя значение sensorTemp.temp
Так как вы сделали, у вас просто показывается лампочка и при нажатии на нее выполняется метод tempChanged. Точнее вы и тут неправильно указали - в первой строчке написать sensorTemp, во второй через точку tempChanged
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Пн апр 07, 2014 10:24 pm
alexpzas
И так, немного продвинулся но , опять загвоздка. Значится создал класс sensorTemp , в нём свойства direction Направление изменения,
temp Температура в детской ,updated ,updatedTime. Метод tempchanged в нём код
Код: Выделить всё
$old_temp=$this->getProperty('temp');
$t=round($params['t']*2)/2;
$this->setProperty('temp',$t);
if ($t>$old_temp) {
$d=1;
} elseif ($t<$old_temp) {
$d=-1;
} else {
$d=0;
}
$this->setProperty('direction',$d);
$this->setProperty("updated",time());
$this->setProperty("updatedTime",date("H:i",time()));
А также объект SensorTemp1 - Датчик температуры в детской , который унаследует свойства и метод класса.
Вот вид странички свойства для объекта SensorTemp1

- qqq.jpg (29.81 КБ) 9937 просмотров
В меню управления , создал новый пункт меню и в заголовке прописал
%SensorTemp1.temp% C (%SensorTemp1.updatedTime%)
Тобиш должно показывать температуру и с какого времени было последнее обновление.
С ардуины как уже говорилось посылается следующий запрос
sprintf(buf, "GET /objects/?object=SensorTemp1&op=m&m=tempchanged&t=%0d.%d HTTP/1.0", (float)t);
Но вот в меню где должна выводиться температура, её так и нет, разве только что выводится время SensorTemp1.updatedTime.
Что опять не так?
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Пн апр 07, 2014 10:26 pm
electric
А что лог апача говорит?
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Пн апр 07, 2014 10:33 pm
alexpzas
Если я Вас правильно понял это -

- 22.jpg (137.65 КБ) 9931 просмотр

- 33.jpg (87.27 КБ) 9931 просмотр
?
Re: Помогите разобраться с привязкой МЖД к Ардуино
Добавлено: Вт апр 08, 2014 12:39 am
alexpzas
вот , что показывает монитор порта
OK
GET /objects/?object=SensorTemp1&op=m&m=tempchanged&t=24.0 HTTP/1.0
GET /objects/?object=SensorTemp1&op=m&m=tempchanged&t=24.0 HTTP/1.0
OK
GET /objects/?object=SensorTemp1&op=m&m=tempchanged&t=24.0 HTTP/1.0
GET /objects/?object=SensorTemp1&op=m&m=tempchanged&t=24.0 HTTP/1.0
OK
Тобиш температура считывается и передается, но я что-то делаю не так в МДМ