Вопросы новичка (уже и ответы ))).

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Дмитрий Иванов
Сообщения: 84
Зарегистрирован: Вс фев 28, 2016 11:36 pm
Благодарил (а): 17 раз
Поблагодарили: 25 раз

Вопросы новичка (уже и ответы ))).

Сообщение Дмитрий Иванов » Пн фев 29, 2016 12:12 am

Всем привет!
Главный мой вопрос в том, как в 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 раз.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Вопросы новичка.

Сообщение ErmolenkoM » Пн фев 29, 2016 8:30 am

aka msh555
Cubian на Cubietruck, Connect
Дмитрий Иванов
Сообщения: 84
Зарегистрирован: Вс фев 28, 2016 11:36 pm
Благодарил (а): 17 раз
Поблагодарили: 25 раз

Re: Вопросы новичка.

Сообщение Дмитрий Иванов » Вт мар 01, 2016 2:07 pm

Потратив много времени на сбор по крупицам разбросанной информации, решил сделать инструкцию:

Инструкция по подключению температурного датчика и исполнительного устройства на 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: Вопросы новичка.

Сообщение Дмитрий Иванов » Вт мар 01, 2016 2:11 pm

Пошаговая инструкция. Прошивка.
* Скачать среду разработки 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 (В данном скетче, походу не используется..)   
* Прошить контроллер, предварительно выбрав соответствующую плату в настройках программы (плата Arduino UNO).
За это сообщение автора Дмитрий Иванов поблагодарили (всего 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: Вопросы новичка.

Сообщение Дмитрий Иванов » Вт мар 01, 2016 2:20 pm

Пошаговая инструкция. Подключение и проверка:
* Установить Ethernet Shield и подключить датчик температуры:
Uno+5100.jpg
Uno+5100.jpg (33.27 КБ) 10465 просмотров
Значение резистора возможно потребуется изменить, в зависимости от длины провода к датчику (для длинного провода уменьшить значение).
* Подключить к локальной сети и проверить, введя в браузере запрос, типа http://192.168.8.120, который соответствует IP-адресу , заданному в скетче arduino.
* Если в ответ видим страничку, типа:
DS.jpg
DS.jpg (13.76 КБ) 10465 просмотров
а перейдя по ссылке на странице видим, что-то типа: 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: Вопросы новичка.

Сообщение Дмитрий Иванов » Вт мар 01, 2016 2:25 pm

Пошаговая инструкция. Настройка MajorDoMo:
* Создать объект (Панель управления -> объекты), класса tempSensors, например с именем sensorLiv:
obj.jpg
obj.jpg (21.12 КБ) 10460 просмотров
* Создать веб-переменную (Панель управления -> Веб-переменные)

в поле "Ссылка" вписать: http://addressduino/getdev
в поле "Шаблон поиска" вписать строку, типа T0:28FF3E076D140368:(.+?); (подставив правильный номер на шине и HEX код вашего устройства)
выбрать связанный объект ("sensorLiv")
выбрать свойство "temp"
можно добавить интервал проверки...
web.jpg
web.jpg (16.78 КБ) 10460 просмотров
* Для отображения температуры, перейти в раздел "Меню управления", открыть для редактирования блок "State" и дописать снизу следующий код: Комната %sensorLiv.temp% C <br> Теперь на веб-сайте MDM будет отображаться температура с датчика.
state.jpg
state.jpg (27.97 КБ) 10460 просмотров
За это сообщение автора Дмитрий Иванов поблагодарили (всего 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: Вопросы новичка.

Сообщение Дмитрий Иванов » Вт мар 01, 2016 2:28 pm

Надеюсь, что кому-нить пригодится...
За это сообщение автора Дмитрий Иванов поблагодарили (всего 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: Вопросы новичка (уже и ответы ))).

Сообщение m-malva » Ср мар 02, 2016 1:51 am

у меня читает только так
"282A902907000049:(.+?)\;"
без "\" не читает
vasyaka666
Сообщения: 23
Зарегистрирован: Вт фев 23, 2016 11:05 am
Благодарил (а): 0
Поблагодарили: 0

Re: Вопросы новичка (уже и ответы ))).

Сообщение vasyaka666 » Вт мар 08, 2016 4:39 pm

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

Re: Вопросы новичка (уже и ответы ))).

Сообщение vasyaka666 » Вт мар 08, 2016 4:39 pm

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