Вопросы новичка (уже и ответы ))).
Модератор: immortal
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Вопросы новичка (уже и ответы ))).
Всем привет!
Главный мой вопрос в том, как в MajorDoMo получить информацию от термодатчика, подключенного к Arduino с веб-сервером? Имеется UNO+W5100 - само по себе все работает:
доступно по адресу: 192.168.1.133;
1-wire devices: T0:28FF3E076D140368
сервер MD: 192.168.1.170 (указан в скетче)
а вот, что с этим счастьем делать дальше я понять не могу, как в MD получить и использовать температуру с датчика? Очень прошу пошаговую инструкцию!
Моя система:
Имеется MajorDoMo на Raspberry Pi 2.
Система nooLight (USB-передатчик, радиопульты и силовые блоки)
Arduino UNO R3 + Ethernet Shield W5100 + термодатчик DS18B20.
Постепенно осваиваю систему, но остро не хватает подробной документации с реальными примерами для понимания принципов работы. Так, после просмотра видео, уважаемого Сергея про связь объектов, выключателей и элементов сцен, остался открытым вопрос, как связать с реальными устройствами. Наконец до меня дошло, что код исполнения надо прописывать в методах turnOff и turnOn объекта класса Relay, типа: safe_exec('/usr/local/bin/noolite -api -on_ch 1'); При чем, элемент, размещенный на сцене заработал сразу после связки с объектом, а у выключателя из меню управления, надо еще было указать метод refresh (все методом научного тыка). Но вот я подозреваю, что с устройствами nooLight можно работать более красиво, т.к. есть специальный класс для этих устройств... но как...?
Спасибо!
Главный мой вопрос в том, как в MajorDoMo получить информацию от термодатчика, подключенного к Arduino с веб-сервером? Имеется UNO+W5100 - само по себе все работает:
доступно по адресу: 192.168.1.133;
1-wire devices: T0:28FF3E076D140368
сервер MD: 192.168.1.170 (указан в скетче)
а вот, что с этим счастьем делать дальше я понять не могу, как в MD получить и использовать температуру с датчика? Очень прошу пошаговую инструкцию!
Моя система:
Имеется MajorDoMo на Raspberry Pi 2.
Система nooLight (USB-передатчик, радиопульты и силовые блоки)
Arduino UNO R3 + Ethernet Shield W5100 + термодатчик DS18B20.
Постепенно осваиваю систему, но остро не хватает подробной документации с реальными примерами для понимания принципов работы. Так, после просмотра видео, уважаемого Сергея про связь объектов, выключателей и элементов сцен, остался открытым вопрос, как связать с реальными устройствами. Наконец до меня дошло, что код исполнения надо прописывать в методах turnOff и turnOn объекта класса Relay, типа: safe_exec('/usr/local/bin/noolite -api -on_ch 1'); При чем, элемент, размещенный на сцене заработал сразу после связки с объектом, а у выключателя из меню управления, надо еще было указать метод refresh (все методом научного тыка). Но вот я подозреваю, что с устройствами nooLight можно работать более красиво, т.к. есть специальный класс для этих устройств... но как...?
Спасибо!
Последний раз редактировалось Дмитрий Иванов Вт мар 01, 2016 4:23 pm, всего редактировалось 1 раз.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Вопросы новичка.
Читать:
http://majordomo.smartliving.ru/Main/Scenarios
http://majordomo.smartliving.ru/Main/Basics
ну и весь сайт целиком.
http://majordomo.smartliving.ru/Main/Scenarios
http://majordomo.smartliving.ru/Main/Basics
ну и весь сайт целиком.
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Re: Вопросы новичка.
Потратив много времени на сбор по крупицам разбросанной информации, решил сделать инструкцию:
Инструкция по подключению температурного датчика и исполнительного устройства на ARDUINO:
Общие принципы:
* Температурный датчик DS18B20 (шина 1-Wire) и реле (до 7штук) подключены к контроллеру Arduino UNO с установленной платой Ethernet Shield W5100.
* Скетч для Arduino взят отсюда: https://github.com/sochkasov/majordomo- ... rWebServer
обсуждение данного скетча здесь: http://majordomo.smartliving.ru/forum/v ... ?f=8&t=496
* Контроллер с платой Ethernet Shield W5100 является вебсервером. Скетч, при обращении на адрес ардуины, генерирует страничку со справочной информацией.
* Контроллер умеет получать информацию с различных датчиков подключенных по шине 1-Wire и по запросу публиковать их значения (вместе с HEX адресом датчика) на своей веб-странице, доступной по адресу: http://addressduino/getdev.
Формат вывода: T<номер устройства на шине>:<HEX адрес устройства>:<текущая температура в градусах цельсия>;[...]
Пример вывода T0:1060CF59010800E3:24.06;T1:109ABE59010800FE:24.56;
* Для получения данной информации в системе MajorDoMo, необходимо создать веб-переменную, которая будет опрашивать контроллер, получать с определенного датчика значение и прописывать его в указанное свойство связанного с этой веб-переменной объекта. Шаблон поиска в веб-переменной выглядит следующим образом: T0:28FF3E076D140368:(.+?);, где T0:28FF3E076D140368 - это номер на шине и адрес датчика 1-wire.
* К контроллеру можно подключить до семи реле для управления внешними устройствами.
* Управлять состоянием выходов (с подключенными реле) можно при помощи http-запросов, типа:
http://xx.xx.xx.xx/command?3=CLICK&4=CLICK&5=ON&6=OFF, где CLICK&4 кратковременное (около 1сек, а LCLICK около 3 сек.) замыкание контактов реле, подключенного к 4 выводу контроллера; 5=ON - включение включение реле, подключенного к 5 выводу контроллера; 6=OFF, соответственно выключение шестого реле.
* Код сценария MDM, для управления реле, подключенного к 3-му выводу контроллера, выглядит так: $cmdUrl = "http://192.168.1.133/command?3=ON"; getURL($cmdUrl,0);
Есть второй метод передачи температуры в MDM. Состоит он в том, что сам контроллер Arduino при изменении показаний термодатчика обращается к веб-серверу MajorDoMo и своим запросом изменяет значение свойство temp соответствующего объекта. В данном скетче это не реализовано!
Инструкция по подключению температурного датчика и исполнительного устройства на ARDUINO:
Общие принципы:
* Температурный датчик DS18B20 (шина 1-Wire) и реле (до 7штук) подключены к контроллеру Arduino UNO с установленной платой Ethernet Shield W5100.
* Скетч для Arduino взят отсюда: https://github.com/sochkasov/majordomo- ... rWebServer
обсуждение данного скетча здесь: http://majordomo.smartliving.ru/forum/v ... ?f=8&t=496
* Контроллер с платой Ethernet Shield W5100 является вебсервером. Скетч, при обращении на адрес ардуины, генерирует страничку со справочной информацией.
* Контроллер умеет получать информацию с различных датчиков подключенных по шине 1-Wire и по запросу публиковать их значения (вместе с HEX адресом датчика) на своей веб-странице, доступной по адресу: http://addressduino/getdev.
Формат вывода: T<номер устройства на шине>:<HEX адрес устройства>:<текущая температура в градусах цельсия>;[...]
Пример вывода T0:1060CF59010800E3:24.06;T1:109ABE59010800FE:24.56;
* Для получения данной информации в системе MajorDoMo, необходимо создать веб-переменную, которая будет опрашивать контроллер, получать с определенного датчика значение и прописывать его в указанное свойство связанного с этой веб-переменной объекта. Шаблон поиска в веб-переменной выглядит следующим образом: T0:28FF3E076D140368:(.+?);, где T0:28FF3E076D140368 - это номер на шине и адрес датчика 1-wire.
* К контроллеру можно подключить до семи реле для управления внешними устройствами.
* Управлять состоянием выходов (с подключенными реле) можно при помощи http-запросов, типа:
http://xx.xx.xx.xx/command?3=CLICK&4=CLICK&5=ON&6=OFF, где CLICK&4 кратковременное (около 1сек, а LCLICK около 3 сек.) замыкание контактов реле, подключенного к 4 выводу контроллера; 5=ON - включение включение реле, подключенного к 5 выводу контроллера; 6=OFF, соответственно выключение шестого реле.
* Код сценария MDM, для управления реле, подключенного к 3-му выводу контроллера, выглядит так: $cmdUrl = "http://192.168.1.133/command?3=ON"; getURL($cmdUrl,0);
Есть второй метод передачи температуры в MDM. Состоит он в том, что сам контроллер Arduino при изменении показаний термодатчика обращается к веб-серверу MajorDoMo и своим запросом изменяет значение свойство temp соответствующего объекта. В данном скетче это не реализовано!
Последний раз редактировалось Дмитрий Иванов Вт мар 01, 2016 2:33 pm, всего редактировалось 1 раз.
- За это сообщение автора Дмитрий Иванов поблагодарили (всего 3):
- Sturgeon (Вт мар 08, 2016 9:09 pm) • samum (Чт мар 10, 2016 9:12 pm) • Forth (Пн мар 18, 2019 7:23 pm)
- Рейтинг: 3.49%
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Re: Вопросы новичка.
Пошаговая инструкция. Прошивка.
* Скачать среду разработки Arduino: https://www.arduino.cc/en/Main/Software#
* Почитать подробности можно здесь: http://arduino.ru/Arduino_environment
* Скачать необходимые дополнительные библиотеки (скачать ZIP-архивы и распаковать в папку library, где установлен софт Arduino):
WebServer.h (https://github.com/sirleech/Webduino);
OneWire.h (https://github.com/PaulStoffregen/OneWire)
DallasTemperature.h (https://github.com/milesburton/Arduino- ... ol-Library)
* Скачать скетч (прошивку) контроллера отсюда https://github.com/sochkasov/majordomo- ... rWebServer
* Открыть данный скетч в среде разработки и внести соответствующие изменения в настройки сети: * Прошить контроллер, предварительно выбрав соответствующую плату в настройках программы (плата Arduino UNO).
* Скачать среду разработки Arduino: https://www.arduino.cc/en/Main/Software#
* Почитать подробности можно здесь: http://arduino.ru/Arduino_environment
* Скачать необходимые дополнительные библиотеки (скачать ZIP-архивы и распаковать в папку library, где установлен софт Arduino):
WebServer.h (https://github.com/sirleech/Webduino);
OneWire.h (https://github.com/PaulStoffregen/OneWire)
DallasTemperature.h (https://github.com/milesburton/Arduino- ... ol-Library)
* Скачать скетч (прошивку) контроллера отсюда https://github.com/sochkasov/majordomo- ... rWebServer
* Открыть данный скетч в среде разработки и внести соответствующие изменения в настройки сети:
Код: Выделить всё
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE4, 0xDE, 0x35 }; // MAC-адрес нашего устройства (нужно менять если есть несколько одинаковых устройств с аналогичными прошивками)
byte ip[] = { 192, 168, 8, 120 }; //IP-адрес устройства (изменить в соответствие с настройками своей локальной сети)
byte subnet[] = { 255, 255, 255, 0 }; //маска подсети (изменить в соответствие с настройками своей локальной сети, в большинстве случаев такая и остается)
byte gateway[] = { 192, 168, 8, 1 }; //шлюз по умолчанию (изменить в соответствие с настройками своей локальной сети, в большинстве случаев совпадает с адресом домашнего роутера)
byte dns_server[] = { 192, 168, 8, 1 }; //DNS-сервер (вряд ли он здесь нужен вообще...)
// ip-адрес удалённого сервера
byte rserver[] = { 192, 168, 10, 130 }; //IP-адрес сервера MajorDoMo (В данном скетче, походу не используется..)
- За это сообщение автора Дмитрий Иванов поблагодарили (всего 3):
- Sturgeon (Вт мар 08, 2016 9:09 pm) • samum (Чт мар 10, 2016 10:20 pm) • fid (Сб авг 27, 2016 5:58 pm)
- Рейтинг: 3.49%
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Re: Вопросы новичка.
Пошаговая инструкция. Подключение и проверка:
* Установить Ethernet Shield и подключить датчик температуры: Значение резистора возможно потребуется изменить, в зависимости от длины провода к датчику (для длинного провода уменьшить значение).
* Подключить к локальной сети и проверить, введя в браузере запрос, типа http://192.168.8.120, который соответствует IP-адресу , заданному в скетче arduino.
* Если в ответ видим страничку, типа: а перейдя по ссылке на странице видим, что-то типа: T0:1060CF59010800E3:24.06, то значит все работает правильно и можно настраивать MajorDoMo.
* Установить Ethernet Shield и подключить датчик температуры: Значение резистора возможно потребуется изменить, в зависимости от длины провода к датчику (для длинного провода уменьшить значение).
* Подключить к локальной сети и проверить, введя в браузере запрос, типа http://192.168.8.120, который соответствует IP-адресу , заданному в скетче arduino.
* Если в ответ видим страничку, типа: а перейдя по ссылке на странице видим, что-то типа: T0:1060CF59010800E3:24.06, то значит все работает правильно и можно настраивать MajorDoMo.
- За это сообщение автора Дмитрий Иванов поблагодарили (всего 2):
- Sturgeon (Вт мар 08, 2016 9:09 pm) • samum (Чт мар 10, 2016 10:20 pm)
- Рейтинг: 2.33%
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Re: Вопросы новичка.
Пошаговая инструкция. Настройка MajorDoMo:
* Создать объект (Панель управления -> объекты), класса tempSensors, например с именем sensorLiv: * Создать веб-переменную (Панель управления -> Веб-переменные)
в поле "Ссылка" вписать: http://addressduino/getdev
в поле "Шаблон поиска" вписать строку, типа T0:28FF3E076D140368:(.+?); (подставив правильный номер на шине и HEX код вашего устройства)
выбрать связанный объект ("sensorLiv")
выбрать свойство "temp"
можно добавить интервал проверки... * Для отображения температуры, перейти в раздел "Меню управления", открыть для редактирования блок "State" и дописать снизу следующий код: Комната %sensorLiv.temp% C <br> Теперь на веб-сайте MDM будет отображаться температура с датчика.
* Создать объект (Панель управления -> объекты), класса tempSensors, например с именем sensorLiv: * Создать веб-переменную (Панель управления -> Веб-переменные)
в поле "Ссылка" вписать: http://addressduino/getdev
в поле "Шаблон поиска" вписать строку, типа T0:28FF3E076D140368:(.+?); (подставив правильный номер на шине и HEX код вашего устройства)
выбрать связанный объект ("sensorLiv")
выбрать свойство "temp"
можно добавить интервал проверки... * Для отображения температуры, перейти в раздел "Меню управления", открыть для редактирования блок "State" и дописать снизу следующий код: Комната %sensorLiv.temp% C <br> Теперь на веб-сайте MDM будет отображаться температура с датчика.
- За это сообщение автора Дмитрий Иванов поблагодарили (всего 3):
- Sturgeon (Вт мар 08, 2016 9:09 pm) • samum (Чт мар 10, 2016 10:23 pm) • fid (Сб авг 27, 2016 5:59 pm)
- Рейтинг: 3.49%
-
- Сообщения: 84
- Зарегистрирован: Вс фев 28, 2016 11:36 pm
- Благодарил (а): 17 раз
- Поблагодарили: 25 раз
Re: Вопросы новичка.
Надеюсь, что кому-нить пригодится...
- За это сообщение автора Дмитрий Иванов поблагодарили (всего 3):
- kawkay (Вт мар 01, 2016 4:56 pm) • kulibin-boris (Ср мар 02, 2016 12:40 am) • samum (Чт мар 10, 2016 10:24 pm)
- Рейтинг: 3.49%
- m-malva
- Сообщения: 291
- Зарегистрирован: Чт фев 26, 2015 1:38 am
- Откуда: Санкт-Петербург
- Благодарил (а): 16 раз
- Поблагодарили: 66 раз
- Контактная информация:
Re: Вопросы новичка (уже и ответы ))).
у меня читает только так
"282A902907000049:(.+?)\;"
без "\" не читает
"282A902907000049:(.+?)\;"
без "\" не читает
-
- Сообщения: 23
- Зарегистрирован: Вт фев 23, 2016 11:05 am
- Благодарил (а): 0
- Поблагодарили: 0
Re: Вопросы новичка (уже и ответы ))).
Извиняюсь за глупый вопрос, но помогите,пожалуйста...
есть класс Х, с объектом У и класс Е с объектом М. как из объекта У передать какое-нибудь свойство объекту М?
можно с помощью метода с кодом:
$old_temp=$this->getProperty('dsw1');
$this->setProperty("Что тут прописать?что то типа:E.M.'temp'?" 'temp',$old_temp);
Не хватает знаний синтаксиса написания кода...
есть класс Х, с объектом У и класс Е с объектом М. как из объекта У передать какое-нибудь свойство объекту М?
можно с помощью метода с кодом:
$old_temp=$this->getProperty('dsw1');
$this->setProperty("Что тут прописать?что то типа:E.M.'temp'?" 'temp',$old_temp);
Не хватает знаний синтаксиса написания кода...

-
- Сообщения: 23
- Зарегистрирован: Вт фев 23, 2016 11:05 am
- Благодарил (а): 0
- Поблагодарили: 0
Re: Вопросы новичка (уже и ответы ))).
Извиняюсь за глупый вопрос, но помогите,пожалуйста...
есть класс Х, с объектом У и класс Е с объектом М. как из объекта У передать какое-нибудь свойство объекту М?
можно с помощью метода с кодом:
$old_temp=$this->getProperty('dsw1');
$this->setProperty("Что тут прописать?что то типа:E.M.'temp'?" 'temp',$old_temp);
Не хватает знаний синтаксиса написания кода...
есть класс Х, с объектом У и класс Е с объектом М. как из объекта У передать какое-нибудь свойство объекту М?
можно с помощью метода с кодом:
$old_temp=$this->getProperty('dsw1');
$this->setProperty("Что тут прописать?что то типа:E.M.'temp'?" 'temp',$old_temp);
Не хватает знаний синтаксиса написания кода...
