Я за прогресс! Но всегда помню, что меня окружают разные люди и умный дом делаю таким, чтобы каждый чувствовал себя в нем комфортно. И это не только связано с удобством включения голосом, например, лампочки, а чтобы эту лампочку можно было включить и традиционным способом. Чтобы гости не чувствовали себя идиотами, пытаясь справиться с незнакомыми для себя способами управления традиционными вещами.
Речь сегодня пойдет о способе задания температуры в помещении.
- Контроллер умного дома: Wiren Board 6 Универсальный контроллер для автоматизации с открытым ПО на базе Linux.
- Комплектующие к контроллеру: Модельный ряд реле, датчиков, вспомогательных устройств Wiren Board.
- Устройства общения человек-машина-человек: Термостаты, информационные электронные доски, извещатели, кнопки, переключатели, лампы.
- Программное обеспечение: Встроенное ПО Wiren Board, Node-red, Apple ПО, Sprut-Hub.
Возможности
- Задание температуры в помещении.
- Измерение температуры при помощи встроенного датчика.
- Вывод дополнительной информации, например, заданной температуры или температуры на улице.
- Задание режимов работы вентиляции.
Вывод текущего времени.
- Получение таблицы адресов управления устройством по шине RS485.
- Написание файла конфигурации устройства для контроллера WB6.
- Подключение к контроллеру.
- Написание алгоритма применения в Node-red и использование в Homekit.
- Написание шаблона для SprutHub (в доработке).
Адрес | Описание |
0 | Чтение текущей температуры на встроенном датчике |
1 | Задание желаемой температуры |
2 | Включение и выключение термостата |
3 | Режим работы термостата, 0-авто, 1-нагрев, 2-охлаждение, 3-вентиляция |
4 | Скорость вентилятора |
9 | Внешняя температура |
20 | Задание времени. Часы |
21 | Задание времени. Минуты |
22 | День недели |
{
"device_type":"TemperatureControlPanel",
"device":{
"name":"Temperature Control Panel",
"id":"temp",
"max_read_registers":0,
"channels":[
{
"name":"Current temperature",
"reg_type":"holding",
"readonly":false,
"address":0,
"type":"temperature",
"scale":0.1,
"format":"s16"
},
{
"name":"Mode",
"reg_type":"holding",
"readonly":false,
"address":3,
"type":"value",
"scale":1,
"format":"s16"
},
{
"name":"Speed Vent",
"reg_type":"holding",
"readonly":false,
"address":4,
"type":"range",
"scale":1,
"max":5
},
{
"name":"Temperature Set",
"reg_type":"holding",
"readonly":false,
"address":1,
"type":"range",
"scale":0.1,
"max":35
},
{
"name":"The thermostat works",
"reg_type":"holding",
"readonly":false,
"address":2,
"type":"switch"
},
{
"name":"Outdoor temperature",
"reg_type":"holding",
"readonly":false,
"address":9,
"type":"value",
"scale":0.1,
"format":"s16"
}
]
}
}
Как мы видим, можно менять скорость вращения вентилятора, устанавливать желаемую температуру, включать или отключать термостат. Из информационных топиков можно увидеть текущую температуру , измеряемую встроенным датчиком, режим работы термостата, а также внешнюю температуру, отображаемую на термостате. Внешнюю температуру можно получать от любого датчика, имеющего топики в Wiren Board.
[{"id":"4f94a426.b0c74c","type":"join","z":"d25093e8.f49e6","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1335,"y":2260,"wires":[["b6856f00.088c"]],"l":false},{"id":"b6856f00.088c","type":"function","z":"d25093e8.f49e6","name":"Logik","func":"if (msg.payload.TargetTemperature > msg.payload.CurrentTemperature) {\n msg.payload = \"1\";\n}\nelse if (msg.payload.TargetTemperature < msg.payload.CurrentTemperature) {\n msg.payload = \"0\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":1395,"y":2260,"wires":[[]],"l":false},{"id":"1198a1d2.0096ae","type":"inject","z":"d25093e8.f49e6","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":995,"y":2240,"wires":[["96badb93.bb8e58"]],"l":false},{"id":"e2f7fe8b.f1cc5","type":"inject","z":"d25093e8.f49e6","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":995,"y":2300,"wires":[["d2ad9fd.7ed376"]],"l":false},{"id":"d2ad9fd.7ed376","type":"wb-get","z":"d25093e8.f49e6","name":"температура уставки","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/Temperature Set","x":1140,"y":2300,"wires":[["b6b9e0a4.bc3c7"]]},{"id":"e9aa300d.0516f","type":"change","z":"d25093e8.f49e6","name":"var","rules":[{"t":"change","p":"topic","pt":"msg","from":"/devices/temp_100/controls/Current temperature","fromt":"str","to":"CurrentTemperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1275,"y":2240,"wires":[["4f94a426.b0c74c"]],"l":false},{"id":"b6b9e0a4.bc3c7","type":"change","z":"d25093e8.f49e6","name":"var","rules":[{"t":"change","p":"topic","pt":"msg","from":"/devices/temp_100/controls/Temperature Set","fromt":"str","to":"TargetTemperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1275,"y":2300,"wires":[["4f94a426.b0c74c"]],"l":false},{"id":"96badb93.bb8e58","type":"wb-get","z":"d25093e8.f49e6","name":"Текущая темература","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/Current temperature","x":1140,"y":2240,"wires":[["e9aa300d.0516f"]]},{"id":"9d631ffc.e111f","type":"wb-server","z":0,"name":"WB","url":"192.168.88.143","allowuntrusted":true}]
[{"id":"6f5a9630.00aa48","type":"homekit-service","z":"f4eb4999.3608c8","name":"Термостат","serviceName":"Thermostat","x":635,"y":380,"wires":[["547f25a0.48f0ac","65abb0c0.33338","73315bf9.1ae444","8aa31c7.9446de"]],"l":false},{"id":"547f25a0.48f0ac","type":"function","z":"f4eb4999.3608c8","name":"Save TEMP/HUM/TT","func":"var T1 = context.get(\"T1\")||{\n \"target_temperature\": 22,\n \"temperature\": 20,\n \"humidity\": 50,\n \"targetHeatCoolState\": 0\n};\n\nvar OutMsg = {};\n\nif (msg.payload.TargetHeatingCoolingState !== undefined){\n T1.targetHeatCoolState = msg.payload.TargetHeatingCoolingState;\n}\n\nif (msg.payload.CurrentTemperature !== undefined) {\n T1.temperature = msg.payload.CurrentTemperature;\n}\n\nif (msg.payload.CurrentRelativeHumidity !== undefined) {\n T1.humidity = msg.payload.CurrentRelativeHumidity;\n}\n\nif (msg.payload.TargetTemperature !== undefined) {\n T1.target_temperature = msg.payload.TargetTemperature;\n}\n\nif (T1.targetHeatCoolState == 1){\n if (T1.temperature >= T1.target_temperature) {\n OutMsg.payload = { \n CurrentHeatingCoolingState: 0\n };\n } else {\n OutMsg.payload = { \n CurrentHeatingCoolingState: 1\n };\n }\n} else if (T1.targetHeatCoolState === 0){\n OutMsg.payload = {\n CurrentHeatingCoolingState: 0\n };\n}\n\ncontext.set(\"T1\",T1);\n\nreturn OutMsg;\n","outputs":1,"noerr":0,"x":635,"y":440,"wires":[["6f5a9630.00aa48"]],"l":false},{"id":"518332d5.fbb68c","type":"inject","z":"f4eb4999.3608c8","name":"Check every 5 sec","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":true,"onceDelay":0.1,"x":635,"y":500,"wires":[["547f25a0.48f0ac"]],"l":false},{"id":"6be4f0dc.c5e6","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.TargetTemperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":515,"y":360,"wires":[["6f5a9630.00aa48"]],"l":false},{"id":"65abb0c0.33338","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"move","p":"payload.TargetTemperature","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":735,"y":460,"wires":[["598d0402.c2cb6c"]],"l":false},{"id":"76b0acf2.8926a4","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.CurrentTemperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":515,"y":420,"wires":[["6f5a9630.00aa48"]],"l":false},{"id":"e2ab33e3.7da14","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"TargetHeatingCoolingState\":0}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":515,"y":500,"wires":[["6f5a9630.00aa48"]],"l":false},{"id":"ae5b73e.f1de79","type":"wb-input","z":"f4eb4999.3608c8","name":"Температура уставки","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/Temperature Set","x":320,"y":360,"wires":[["6be4f0dc.c5e6"]]},{"id":"9e0dbcec.e88a6","type":"wb-input","z":"f4eb4999.3608c8","name":"Текущая температура","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/Current temperature","x":320,"y":420,"wires":[["76b0acf2.8926a4"]]},{"id":"c68eb8a5.076388","type":"wb-input","z":"f4eb4999.3608c8","name":"Вкл/Откл","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/The thermostat works","x":280,"y":480,"wires":[["85be6c7a.3bbdb"]]},{"id":"598d0402.c2cb6c","type":"wb-output","z":"f4eb4999.3608c8","name":"Температура уставки","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/Temperature Set","command":"/on","commandType":"wb_cmd","payload":"payload","payloadType":"msg","x":920,"y":460,"wires":[]},{"id":"e0d38aff.c02008","type":"wb-output","z":"f4eb4999.3608c8","name":"Вкл/Откл","server":"9d631ffc.e111f","filter":"/devices/temp_103/controls/The thermostat works","command":"/on","commandType":"wb_cmd","payload":"payload","payloadType":"msg","x":960,"y":500,"wires":[]},{"id":"85be6c7a.3bbdb","type":"switch","z":"f4eb4999.3608c8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"0","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":410,"y":480,"wires":[["78659a3a.9836b4"],["e2ab33e3.7da14"]]},{"id":"78659a3a.9836b4","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"{\"TargetHeatingCoolingState\":1}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":515,"y":460,"wires":[["6f5a9630.00aa48"]],"l":false},{"id":"73315bf9.1ae444","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"move","p":"payload.CurrentHeatingCoolingState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":735,"y":400,"wires":[["98d56767.ad4318"]],"l":false},{"id":"98d56767.ad4318","type":"switch","z":"f4eb4999.3608c8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":400,"wires":[["b07d3991.f4f0a8"],["b07d3991.f4f0a8"]]},{"id":"8aa31c7.9446de","type":"change","z":"f4eb4999.3608c8","name":"Преобразование","rules":[{"t":"move","p":"payload.TargetHeatingCoolingState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":735,"y":500,"wires":[["2997cb74.a81404"]],"l":false},{"id":"2997cb74.a81404","type":"switch","z":"f4eb4999.3608c8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":500,"wires":[["e0d38aff.c02008"],["e0d38aff.c02008"]]},{"id":"b07d3991.f4f0a8","type":"debug","z":"f4eb4999.3608c8","name":"На реле","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":960,"y":400,"wires":[]},{"id":"9d631ffc.e111f","type":"wb-server","z":0,"name":"WB","url":"192.168.88.143","allowuntrusted":true}]
Вот так выглядит термостат в интерьере. В моем доме установлено семь таких термостатов, прошло уже три месяца с момента инсталляции, проблем пока не выявлено. Из приятных мелочей можно отметить, что данный термостат подстраивает яркость в зависимости от освещенности, что очень полезно ночью.
Данной статьей я хотел показать новичкам, что важно, прежде всего, определиться с выбором базового оборудования, потому что от данного выбора зависит то, на сколько просто Вы сможете строить свой Умный Дом.
Если помидорами меня не закидают, то постараюсь озвучить темы:
- Управление климатом в комнатах с теплыми полами.
Управление котельной в Умном Доме
Управление вентиляцией в Умном Доме
Отличная статья. не хватает ценника на устройство
3400р
Буду пробовать, как раз в изучении вопроса климата и управление котельной! Ждем продолжение!
Все уже работает, осталось только все это описать
Тоже хочу управлять с помощью термостатов полами+батареи в комнате (коллекторная система отопления). Хочу строить УД на SprutHub/WirenBoard. Очень жду продолжения подобных тем и появления Spruthub.
я допишу на этой неделе возможно.
Отличная практичная статья, спасибо!
Жду продолжения.
Панели работают в том же сегменте rs-485 что и остальные устройства wirenboard?
Да
А какой информационный кабель использовали?
Витая пара DEXP F/UTP TP6cFUTP305G
Спасибо за статью. Управление климатом в комнатах с теплыми полами когда ждать статью?
Спасибо. Может как раз на этих днях доделаю.
Отличная статья