Следующая версия
|
Предыдущая версия
Последняя версия
Следующая версия справа и слева
|
примеры_конфигураций [2019/04/14 11:16] admin создано |
примеры_конфигураций [2021/09/13 23:35] 173.212.224.157 старая версия восстановлена (2021/01/08 13:45) |
**Пример 1: Плата ESP32-EVB** | При включении, контроллер сначала проверяет наличие записанного в памяти конфигурационного файла. (У нового контроллера конфигурационный файл отсутствует). Затем контроллер поднимает сетевые интерфейсы, подключается к интернету, идет на сайт lazyhome.ru и пытается получить конфигурационный файл JSON к своему МАС-адресу. |
При нажатии на кнопку, переключаем оба реле и отправляем команду в MQTT топик myhome/in/light | Для создания этого файла заходим на lazyhome.ru в свой аккаунт и на странице https://www.lazyhome.ru/portal создаем конфигурационный файл для своего роутера по его МАС-адресу. Тогда контроллер его там увидит и сможет начать работать по нему. |
Реле собраны в группу relays, но каждое доступно индивидуально | |
| Для того, чтобы настроить Контроллер умного дома LightHub также заходим на [[https://www.lazyhome.ru/portal|Личный Кабинет]] (после регистрации на сайте), |
| Для того чтобы начать, можете просто использовать примеры ниже, а затем доработать их по своему усмотрению |
| |
| Далее, надо просто подключить контроллер к роутеру, имеющему выход в Интернет. После перезапуска, контроллер загрузит настройки с сайта lazyhome.ru. |
| |
| В простом случае этого достаточно. |
| |
| ====== Если мы хотим сохранить настройки в постоянную память контроллера ====== |
| |
| После того, как вы убедитесь, что все работает, можно будет сохранить настройки в постоянную память контроллера (команда save в CLI) и сделать его независимым от наличия доступа в интернет. |
| Два способа сохранения конфига в память контроллера: |
| |
| 1. Подключаем контроллер по USB к ноутбуку. Сохраняем через эмулятор терминала (например для Макбука использую minicom). |
| |
| $ minicom -D /dev/tty.usbmodem14201 |
| Контроллер отвечает: |
| '' |
| Got IP address:192.168.88.44, Default config server used: lazyhome.ru |
| Config URI: http://lazyhome.ru/cnf/de-71-d5-9a-93-96.config.json |
| HTTP Status code: 404 |
| Config retrieving failed |
| Loading Config from EEPROM No stored config '' |
| |
| |
| командой CLI |
| |
| |
| 2. Если контроллер уже успешно подключен к MQTT брокеру, то команду CLI можно направить в топик. |
| |
| |
| Также можно разместить настройки на своем собственном http сервере, в папке cnf. Формат имени файла: http://MY_CONFIG_SERVER/cnf/12-12-12-12-12-12.config.json (вместо 12-12-12-12-12-12 ваш mac адрес) |
| После этого выполнить через CLI команду <code>get <MY_CONFIG_SERVER></code> |
| Контроллер запомнит ваш сервер и далее, будет загружать обновление конфига из этого источника. (на ESP32, STM, NRF пока не сохраняется, но сделаем) |
| |
| Для переключения контроллера на свой собственный MQTT брокер с общедоступного из примера, используйте настройку: |
| <code> |
| "mqtt":["controller_name","host",port,"user","pass"] |
| </code> |
| |
| controller_name - уникальное имя вашего контроллера. К одному и тому же брокеру не может быть подключено два контроллера с одним и тем же именем. Используя общедоступный брокер, не забывайте задать свое уникальное имя. |
| |
| Несмотря на то, что в настройке можно задать пароль вашего брокера, мы не рекомендуем это делать по соображениям безопасности. MQTT пароль желательно задавать через CLI команду pwd |
| После этого он сохраняется в памяти вашего устройства (на ESP32, STM, NRF пока не сохраняется, но сделаем) |
| |
| ===== Пример 1: Плата ESP32-EVB ===== |
| При нажатии на кнопку, переключаем оба реле и отправляем команду в MQTT топик __myhome/in/light__ |
| |
| Реле собраны в группу __relays__, но каждое доступно индивидуально |
<code> | <code> |
{ | { |
"34":{"item":"relays","emit":"myhome/in/light","scmd":"TOGGLE","rcmd":""} | "34":{"item":"relays","emit":"myhome/in/light","scmd":"TOGGLE","rcmd":""} |
}, | }, |
"mqtt":["LHexample01","m2m.eclipse.org"] | "mqtt":["LHexample01","test.mosquitto.org"] |
} | } |
</code> | </code> |
| |
**Пример 2: Сенсор CO2 CCS811 и влажности HD1080 на ESP82** | ===== Пример 2: Сенсор CO2 CCS811 и влажности HD1080 на ESP8266 ===== |
| |
| Данный сенсор CO2 и влажности подключен к шине I2C, поэтому номера PIN ов не используются и могут быть произвольными (уникальными в рамках раздела in) |
| |
| Дополнительно, считываем значение аналогового входа А0, преобразовываем к шкале 0-100 и подавляем шумы |
<code> | <code> |
{ | { |
"in":{ | "in":{ |
"1":{"T":5,"emit":"myhome/s_out/1"}, | "1":{"T":5,"emit":"myhome/s_out/1"}, |
"2":{"T":6,"emit":"myhome/s_out/2"} | "2":{"T":6,"emit":"myhome/s_out/2"}, |
},66 | "54":{"T":64,"emit":"analog","map":[0,1024,0,100,5]} |
"mqtt":["LHexample02","m2m.eclipse.org"] | }, |
| "mqtt":["LHexample02","test.mosquitto.org"] |
} | } |
</code> | </code> |
| |
**Пример 3: Два термостата, управляющие реле на выходах 24 и 36** | ===== Пример 3: Управление диммером, RGBW лентой, реле из Node Red, контроль протечек и счетчик воды ===== |
| |
| <del>(Node-Red логика для данного примера [[http://lazyhome.mircloud.host|развернута тут]]). [[http://lazyhome.mircloud.host/ui|а тут дашборд]].</del> - я не заметил, что примеры в облаке кому-то нужны и перестал оплачивать хостинг. Сорри |
| |
| Это наиболее сложный пример, использующий большинство возможностей контроллера LightHub 2.2 . |
| |
| * Диммеры света подключены по DMX, Датчик протечки - к аналоговому входу A6 (PIN#60) а шаровый кран перекрытия воды висит на A15 (PIN#69) - (подробнее про то, какие аналоговым входам соответствуют номера PIN указано [[входы_выходы|тут]]) |
| |
| * Используется вход DMX. Предполагается что на вход подключена типовая сенсорная панель для локального управления четырьмя четырех-канальными RGBW лентами (адреса 1,5,9,13). Эти ленты отображаются на "led5","led6","led7","led8" |
| |
| * Вход №38 напрямую управляет реле, которое подключено на выход 22 |
| |
| * Вход №39 - Master Switch - позволяет выключить сразу все или вернуть в первоначальное положение |
| |
| * Потенциометр, подключенный на аналоговый вход A5 (PIN#59) одновременно с NodeRed управляет DMX диммером (см 5-й параметр массива map - если значение считанное с аналогового входа, изменилось более чем на 10 пунктов, значение преобразовывается из диапазона 0-850 в диапазон 0-100 и передается на диммер) |
| |
| * на PIN#34 и 36 подключены контакты счетчиков воды (дальнейший подсчет потребления происходит в Node Red) |
| |
| * Также, на шину I2C подключены датчики температуры-влажности-CO2-летучих смесей |
| |
| NB: Конфигурация такого объема не уместится в Mega2560 и требует контроллера DUE |
| |
| |
| <code> |
| { |
| "dmx":[3,60], |
| "dmxin":["led5","led6","led7","led8"], |
| "topics":{"root":"myhome"}, |
| "mqtt":["lh22-test-0","m2m.eclipse.org"], |
| "ow":{ |
| "2861641227C1EFED":{"emit":"t_1","item":"thermostat"}, |
| "28EE504E161601C7":{"emit":"t_2"} |
| }, |
| "items": { |
| "mbusdim1":[4,[1,0,3,100]], |
| "mbusdim2":[4,[1,1,3,100]], |
| "mbusdim3":[4,[1,2,3,100]], |
| "mbusdim4":[4,[1,3,3,100]], |
| "relay":[6,22], |
| "thermostat":[5,23,33], |
| "pout2":[6,24], |
| "pout3":[6,25], |
| "pout4":[3,9], |
| "pout5":[3,8], |
| "pout6":[3,11], |
| "pout7":[3,12], |
| "pwm0" :[3,4], |
| "pwm1" :[3,5], |
| "pwm2" :[3,6], |
| "pwm3" :[3,7], |
| "pwm10":[3,10], |
| "water":[6,69], |
| "unprot0":[6,33], |
| "unprot1":[6,32], |
| "unprot2":[6,31], |
| "unprot3":[6,30], |
| "unprot4":[6,29], |
| "unprot5":[6,28], |
| "unprot6":[6,27], |
| "unprot7":[6,26], |
| "led": [1,1], |
| "led2":[1,5], |
| "led3":[1,9], |
| "led4":[1,13], |
| "led5":[1,17], |
| "led6":[1,21], |
| "led7":[1,25], |
| "led8":[1,29], |
| "dimmer" :[0,33], |
| "dimmer2":[0,34], |
| "dimmer3":[0,35], |
| "dimmer4":[0,36], |
| "dimmer5":[0,37], |
| "dimmer6":[0,38], |
| "dimmers":[7,["dimmer","dimmer2","dimmer3","dimmer4","dimmer5","dimmer6"]], |
| "leds":[7,["led","led2","led3","led4","led5","led6"]], |
| "mbuses":[7,["mbusdim1","mbusdim2","mbusdim3","mbusdim4"]], |
| "all":[7,["dimmers","uouts","relays","leds"]], |
| "relays":[7,["relay","thermostat","pout2","pout3","pout4","pout5","pout6","pout7"]], |
| "uouts":[7,["unprot0","unprot1","unprot2","unprot3","unprot4","unprot5","unprot6","unprot7"]] |
| }, |
| "in":{ |
| "42":{"emit":"in0"}, |
| "44":{"emit":"in1"}, |
| "46":{"emit":"in2"}, |
| "49":{"emit":"in3"}, |
| "43":{"emit":"in4"}, |
| "45":{"emit":"in5"}, |
| "47":{"emit":"in6"}, |
| "48":{"emit":"in7"}, |
| "34":{"emit":"acount_hot"}, |
| "36":{"emit":"acount_cold"}, |
| "38":{"emit":"in10","item":"relay"}, |
| "40":{"emit":"myhome/in/in11","scmd":"TOGGLE","rcmd":""}, |
| "35":{"emit":"in12","item":"all","scmd":"REST","rcmd":"HALT"}, |
| "37":{"emit":"myhome/in/in13","scmd":"ON","rcmd":"OFF"}, |
| "39":{"emit":"myhome/in/all","scmd":"HALT","rcmd":"REST"}, |
| "41":{"emit":"in15"}, |
| |
| "54":{"T":64,"emit":"myhome/in/a00","map":[0,1024,0,1024,10]}, |
| "55":{"T":64,"emit":"myhome/in/a01","map":[0,1024,0,1024,10]}, |
| "56":{"T":64,"emit":"myhome/in/a02","map":[0,1024,0,1024,10]}, |
| "57":{"T":64,"emit":"myhome/in/a03","map":[0,1024,0,1024,10]}, |
| "58":{"T":64,"emit":"myhome/in/a04","map":[0,850,0,100]}, |
| "59":{"T":66,"emit":"myhome/in/a05","item":"dimmer","map":[0,920,0,100,5]}, |
| "60":{"T":66,"emit":"alock_leak","item":"water","map":[200,700],"scmd":"ON","rcmd":"OFF"}, |
| "61":{"T":66,"emit":"myhome/in/a07","map":[0,1024,0,1024,5]}, |
| "62":{"T":64,"emit":"myhome/in/a08","map":[0,1024,0,1024,5]}, |
| "63":{"T":64,"emit":"myhome/in/a09","map":[0,1024,0,1024,5]}, |
| "64":{"T":64,"emit":"myhome/in/a10","map":[0,1024,0,1024,5]}, |
| "65":{"T":64,"emit":"myhome/in/a11","map":[0,1024,0,1024,5]}, |
| "66":{"T":0,"emit":"myhome/in/d12"}, |
| "67":{"T":2,"emit":"myhome/in/d13"}, |
| "68":{"T":0,"emit":"myhome/in/d14"}, |
| |
| "10":{"T":5,"emit":"myhome/s_out/airq1"}, |
| "20":{"T":6,"emit":"myhome/s_out/humidity1"} |
| } |
| } |
| |
| </code> |
| |
| ===== Пример 4: Два термостата, управляющие реле на выходах 24 и 36 ===== |
| |
Предустановлена температура 33 и 32 градуса | Предустановлена температура 33 и 32 градуса |
Термостаты собраны в группу "floor" через которую ими можно управлять одновременно. | |
| Термостаты собраны в группу "__floor__" через которую ими можно управлять одновременно. (И это настроено в Node-Red в зависимости от времени суток) |
Третий термометр ничем не управляет, просто передает температуру в MQTT | Третий термометр ничем не управляет, просто передает температуру в MQTT |
| Также, на PIN29 повешено реле "relay", включаемое сразу после загрузки и управляемое входом #38 |
| |
| А на входе 41 - мастер-выключатель, при переключении которого в топик myhome/in/all передаются команды "HALT" и "REST" |
| При этом они отработают как на данном контроллере (через MQTT и группу "__all__") так и на всех контроллерах, подписанных на __myhome/in/all__ |
| |
Настройка topics позволяет определить как формируются MQTT топики у данного контроллера | Настройка topics позволяет определить как формируются MQTT топики у данного контроллера |
| |
Например тут: | Например тут: |
Топики для управления: **myhome/in/<имя item>** и **myhome/LHexample03/<имя item>** | Топики для управления: **myhome/in/<имя item>** и **myhome/LHexample03/<имя item>** |
| |
Топик, в который отправляются статусы: **myhome/s_out/<имя item>** | Топик, в который отправляются статусы: **myhome/s_out/<имя item>** |
| |
(это же соответствует настройкам по-умолчанию) | (это же соответствует настройкам по-умолчанию) |
| |
<code> | <code> |
{ | { |
"mqtt":["LHexample03","m2m.eclipse.org"], | "mqtt":["LHexample03","test.mosquitto.org"], |
"topics":{"root":"myhome","bcst":"in","out":"s_out"}, | "topics":{"root":"myhome","bcst":"in","out":"s_out"}, |
"ow":{ | "ow":{ |
| |
"floor":[7,["h_bath1","h_bath2"]], | "floor":[7,["h_bath1","h_bath2"]], |
| "all":[7,["floor","relay","dimmer"]], |
"h_bath1":[5,24,33], | "h_bath1":[5,24,33], |
"h_bath2":[5,36,32] | "h_bath2":[5,36,32], |
| "relay":[6,29,1,1] |
}, | }, |
"in":{ | "in":{ |
"41":{"T":0,"emit":"myhome/in/all","scmd":"HALT","rcmd":"REST"}, | "41":{"T":0,"emit":"myhome/in/all","scmd":"HALT","rcmd":"REST"}, |
"38":{"item":"spots_en"}, | "38":{"item":"relay"}, |
} | } |
} | } |
| |
</code> | </code> |
| |
| ===== Конфиг, рекомендованный для тестирования и начала работы с LightHub 2.2 ===== |
| |
| <code> |
| |
| { |
| "dmx":[3,60], |
| "dmxin":["led5","led6","led7","led8"], |
| "topics":{"root":"lazyhome.ru"}, |
| "mqtt":["lazyhome.ru-UA2","test.mosquitto.org"], |
| "ow":{ |
| "2861641227C1EFED":{"emit":"t_1","item":"thermostat"}, |
| "28EE504E161601C7":{"emit":"t_2"} |
| }, |
| "items": { |
| "mbusdim1":[4,[1,0,3,100]], |
| "mbusdim2":[4,[1,1,3,100]], |
| "mbusdim3":[4,[1,2,3,100]], |
| "mbusdim4":[4,[1,3,3,100]], |
| "relay":[6,22], |
| "pout1":[6,23], |
| "pout2":[6,24], |
| "pout3":[6,25], |
| "pout4":[3,9], |
| "pout5":[3,8], |
| "pout6":[3,11], |
| "pout7":[3,12], |
| "pwm0" :[3,4], |
| "pwm1" :[3,5], |
| "pwm2" :[3,6], |
| "pwm3" :[3,7], |
| "pwm10":[3,10], |
| "thermostat":[5,2,33], |
| "unprot0":[6,33], |
| "unprot1":[6,32], |
| "unprot2":[6,31], |
| "unprot3":[6,30], |
| "unprot4":[6,29], |
| "unprot5":[6,28], |
| "unprot6":[6,27], |
| "unprot7":[6,26], |
| "led": [1,1], |
| "led2":[1,5], |
| "led3":[1,9], |
| "led4":[1,13], |
| "led5":[1,17], |
| "led6":[1,21], |
| "led7":[1,25], |
| "led8":[1,29], |
| "dimmer" :[0,33], |
| "dimmer2":[0,34], |
| "dimmer3":[0,35], |
| "dimmer4":[0,36], |
| "dimmer5":[0,37], |
| "dimmer6":[0,38], |
| "dimmers":[7,["dimmer","dimmer2","dimmer3","dimmer4","dimmer5","dimmer6"]], |
| "leds":[7,["led","led2","led3","led4","led5","led6"]], |
| "mbuses":[7,["mbusdim1","mbusdim2","mbusdim3","mbusdim4"]], |
| "all":[7,["dimmers","uouts","relays","leds","mbuses"]], |
| "relays":[7,["relay","pout1","pout2","pout3","pout4","pout5","pout6","pout7"]], |
| "uouts":[7,["unprot0","unprot1","unprot2","unprot3","unprot4","unprot5","unprot6","unprot7"]] |
| }, |
| "in":{ |
| "42":{"emit":"in0"}, |
| "44":{"emit":"in1"}, |
| "46":{"emit":"in2"}, |
| "49":{"emit":"in3"}, |
| "43":{"emit":"in4"}, |
| "45":{"emit":"in5"}, |
| "47":{"emit":"in6"}, |
| "48":{"emit":"in7"}, |
| "34":{"emit":"in8"}, |
| "36":{"emit":"in9","item":"unprot0","scmd":"TOGGLE","rcmd":""}, |
| "38":{"emit":"in10","item":"dimmers","scmd":"TOGGLE","rcmd":""}, |
| "40":{"emit":"in11","item":"leds","scmd":"TOGGLE","rcmd":""}, |
| "35":{"emit":"in12","item":"mbuses","scmd":"TOGGLE","rcmd":""}, |
| "37":{"emit":"in13","item":"relays","scmd":"TOGGLE","rcmd":""}, |
| "39":{"emit":"in14","item":"uouts","scmd":"TOGGLE","rcmd":""}, |
| "41":{"emit":"in15","item":"all","scmd":"TOGGLE","rcmd":""}, |
| |
| "54":{"T":66,"emit":"myhome/in/a00","map":[0,1024,0,1024,10]}, |
| "55":{"T":66,"emit":"myhome/in/a01","map":[0,1024,0,1024,10]}, |
| "56":{"T":66,"emit":"myhome/in/a02","map":[0,1024,0,1024,10]}, |
| "57":{"T":66,"emit":"myhome/in/a03","map":[0,1024,0,1024,10]}, |
| "58":{"T":66,"emit":"myhome/in/a04","map":[0,1024,0,1024,10]}, |
| "59":{"T":66,"emit":"myhome/in/a05","map":[0,1024,0,1024,10]}, |
| "60":{"T":66,"emit":"myhome/in/a06","map":[0,1024,0,1024,10]}, |
| "61":{"T":66,"emit":"myhome/in/a07","map":[0,1024,0,1024,10]}, |
| "62":{"T":66,"emit":"myhome/in/a08","map":[0,1024,0,1024,10]}, |
| "63":{"T":66,"emit":"myhome/in/a09","map":[0,1024,0,1024,10]}, |
| "64":{"T":66,"emit":"myhome/in/a10","map":[0,1024,0,1024,10]}, |
| "65":{"T":66,"emit":"myhome/in/a11","map":[0,1024,0,1024,10]}, |
| "66":{"T":0,"emit":"myhome/in/d12"}, |
| "67":{"T":0,"emit":"myhome/in/d13"}, |
| "68":{"T":0,"emit":"myhome/in/d14"}, |
| "69":{"T":0,"emit":"myhome/in/d15"}, |
| "10":{"T":15,"emit":"myhome/s_out/airq1"}, |
| "20":{"T":16,"emit":"myhome/s_out/humidity1"} |
| } |
| } |
| |
| </code> |