Идея, сделать напольный вентилятор «умным», оснастив его модулем Wi-Fi и добавив его в приложение «Дом» от Apple, появилась давно, но реализовать решился только недавно, когда в очередной раз пришлось незапланированно вставать и тащиться за пультом, чтобы изменить режим работы.
В итоге реализовано:
История о модернизации вентилятора с механическим управлением описана тут.
На кусочках макетной платы, нужно собрать два модуля4) и подключить их к микросхемам HT66F004 и FTC332 на плате вентилятора.
Function | D1 mini | (ESP-12F) | HT66F004 | FTC332 |
---|---|---|---|---|
Speed 1 | RX | (GPIO03) | 12 | |
Speed 2 | D5 | (GPIO14) | 11 | |
Speed 3 | DO | (GPIO16) | 09 | |
Power LED | D2 | (GPIO04) | 03 | |
Power SW | D3 | (GPIO00) | 046) | |
Mode SW | D1 | (GPIO05) | 01 | |
Speed SW | D6 | (GPIO12) | 07 | |
Timer SW | D7 | (GPIO13) | 08 |
В итоге должно получиться как-то так:
Для работы логики, необходимо собрать прошивку с поддержкой команды «Subscribe»:
#ifndef SUPPORT_MQTT_EVENT #define SUPPORT_MQTT_EVENT #endif
Процедура прошивки стандартная, описана тут.
Но, в моем случае, похоже, попалась бракованная микросхема CH3407) и, хоть в системе и виделась, но не шилась! Пришлось снимать модуль ESP-12F с платы и шить «на весу»…
Но и это удалось далеко не сразу и то, только при такой схеме подключения, описанной в этом видео:
Вместо Arduino UNO использовался простой USB-программатор на этой же, к слову, микросхеме…
Backlog Tempale {"NAME":"Polaris PSF 40RC Sensor","GPIO":[160,0,576,161,224,225,0,0,226,227,162,0,163,0],"FLAG":0,"BASE":18}; Module 0
Backlog DeviceName Floor Fan; FriendlyName1 Напольный вентилятор
Backlog SwitchMode1 1; SwitchMode2 1; SwitchMode3 1; SwitchMode4 1; SetOption114 1
Backlog SwitchText1 FanPower; SwitchText2 FanSpeed1; SwitchText3 FanSpeed2; SwitchText4 FanSpeed3
Backlog PulseTime1 2; PulseTime2 2; PulseTime3 2; PulseTime4 2; PowerOnState 0; BlinkTime 5
Backlog WebButton1 Питание; WebButton2 Режим; WebButton3 Скорость; WebButton4 Таймер
Backlog Topic floorfan_%06X; FullTopic %topic%/%prefix%/
Backlog MqttHost 192.168.XXX.XXX; MqttPort 1883; MqttUser RGEHrther; MqttPassword 4h45ghgr; SetOption3 1
Backlog Timezone +10:00; TelePeriod 0; SetOption128 0
Rule1 ON Switch2#State=1 DO Var1 33 ENDON ON Switch3#State=1 DO Var1 66 ENDON ON Switch4#State=1 DO Var1 100 ENDON ON Switch1#State=0 DO Backlog Var1 %value%; Var2 %value%; Var3 %value%; Var4 %value%; Var5 %value%; Rule3 1 ENDON ON Var1#State>%Var2% DO Publish %topic%/stat/FANSPEED %value% ENDON ON Var2#State=0 DO Publish %topic%/stat/FANSPEED %value% ENDON ON Switch1#State DO Backlog Var6 %value%; Publish %topic%/stat/FANPOWER %value% ENDON ON Power1#State=1 DO Add4 2 ENDON
Rule2 ON Event#GetForestMode=1 DO Backlog Rule3 0; Var1 100; Var2 101; Add4 3; Var3 %value% ENDON ON Event#GetForestMode=0 DO Event ForestModeOff=%value% ENDON ON Var4#State==5 DO Power2 1 ENDON ON Var4#State==3 DO Backlog Add4 3; Power1 1; Delay 2; Power2 1 ENDON ON Event#ForestModeOff!=%Var4% DO Power1 1 ENDON ON Var3#State DO Publish %topic%/stat/FORESTMODE %value% ENDON ON Event#GetFanPower!=%Var6% DO Power1 1 ENDON ON Event#GetFanPower==0 DO Power1 1 ENDON ON Mqtt#Connected DO Backlog Subscribe GetForestMode, floorfan_69BF68/cmnd/ForestMode; Subscribe GetFanSpeed, floorfan_69BF68/cmnd/FanSpeed; Subscribe GetFanPower, floorfan_69BF68/cmnd/FanPower; Publish %topic%/stat/FANSPEED %Var1%; Publish %topic%/stat/FORESTMODE %Var3%; Publish %topic%/stat/FANPOWER %Var6%; ENDON ON System#Init DO Backlog Var1 0; Var2 0; Var3 0; Var4 0; Var5 0; Var6 0; Rule3 1 ENDON
Rule3 ON Var5#State!=%Var1% DO Power3 3 ENDON ON Var1#State==%Var5% DO Power3 4 ENDON ON Event#GetFanSpeed>66 DO Var5 100 BREAK ON Event#GetFanSpeed>33 DO Var5 66 BREAK ON Event#GetFanSpeed>0 DO Var5 33 BREAK
Backlog Rule1 1; Rule2 1; Rule3 1
Кстати, правила в консоль можно вставлять как есть с переносами строк, они правильно интерпретируются и записываются!
Пример конфигурации Homebridge приведен тут.
Обсуждение