| Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
iot:firmware:tasmota:tomzn:tob15-63_wifi [2022/02/16 19:17] Николай Солошин |
iot:firmware:tasmota:tomzn:tob15-63_wifi [2023/11/03 11:58] (текущий) Николай Солошин |
| По сути, это 2 устройства в одном -- двухполюсный автоматический выключатель плюс реле контроля напряжения и тока. При некоторой сноровке их можно использовать поодиночке. Но мне это, как раз, и не надо, т.к. у меня нет пакетного выключателя на вводе((Фиг его знает, куда делся -- у всех соседей есть, у меня -- нет!)), а это не по фэншую! | По сути, это 2 устройства в одном -- двухполюсный автоматический выключатель плюс реле контроля напряжения и тока. При некоторой сноровке их можно использовать поодиночке. Но мне это, как раз, и не надо, т.к. у меня нет пакетного выключателя на вводе((Фиг его знает, куда делся -- у всех соседей есть, у меня -- нет!)), а это не по фэншую! |
| |
| :!: [[iot:firmware:tasmota:tomzn:tob15-63_wifi:external_antenna|Статья о замене внутренней антенны на внешнюю]], [[iot:firmware:tasmota:tomzn:tob15-63_wifi:pzem-004t-100a_and_ds18b20|статья о подключении Peacefair PZEM-004T и Maxim Integrated DS18B20]]. | ===== Связанные статьи ===== |
| | |
| | * [[iot:firmware:tasmota:tomzn:tob15-63_wifi:external_antenna|]] |
| | * [[iot:firmware:tasmota:tomzn:tob15-63_wifi:ds18b20|]] |
| |
| ===== Видеобзоры ===== | ===== Видеобзоры ===== |
| {{gallery> :iot:firmware:tasmota:tomzn?tob15-63-wifi-disassembled-0*.jpg?153x114&0&direct&showtitle }} | {{gallery> :iot:firmware:tasmota:tomzn?tob15-63-wifi-disassembled-0*.jpg?153x114&0&direct&showtitle }} |
| |
| Вот только при вытаскивании внутренностей из реле надо запомнить, как оно было, т.к. там все очень плотно и... В общем, я что-то поторопился и не обратил на это пристального внимания -- собирать было страшно и больно. m( | <del>Вот только при вытаскивании внутренностей из реле надо запомнить, как оно было, т.к. там все очень плотно и... В общем, я что-то поторопился и не обратил на это пристального внимания -- собирать было страшно и больно. m(</del> |
| | |
| | :!: //Как [[iot:firmware:tasmota:tomzn:tob15-63_wifi:ds18b20|показала практика]], перед сборкой лучше отпаять все провода, кроме шлейфа межу платами, и собирать послойно, припаяв провода обратно в самый последний момент.// |
| |
| ===== Подготовка ===== | ===== Подготовка ===== |
| ===== Прошивка ===== | ===== Прошивка ===== |
| |
| Для работы условных правил и выражений, необходимо собрать прошивку с их поддержкой. Можно воспользоваться первыми семью пунктами [[iot:firmware:tasmota:proscenic:808c#перепрошивка|этой инструкции]], только в 4-м пункте использовать [[https://tasmota.github.io/docs/Rules/#conditional-rules|этот код]]. | Для работы логики, необходимо собрать прошивку с поддержкой команды "[[https://tasmota.github.io/docs/MQTT/#subscribeunsubscribe|Subscribe]]". Процедура [[iot:firmware:tasmota:proscenic:808c#перепрошивка|описана тут]]. |
| |
| Далее нужно нажать нижнюю кнопку на плате, подключить программатор к USB и отпустить кнопку. После этого воспользоваться [[iot:firmware:tasmota:athom:pg01-eu16a#прошивка|этой инструкцией]] -- только в пунктах 5 и 6 установить переключатель на "BIN file" и, нажав "Open", выбрать скачанную выше сборку. | Далее нужно нажать нижнюю кнопку на плате, подключить программатор к USB и отпустить кнопку. После этого воспользоваться [[iot:firmware:tasmota:athom:pg01-eu16a#прошивка|этой инструкцией]] -- только в пунктах 5 и 6 установить переключатель на "BIN file" и, нажав "Open", выбрать скачанную выше сборку. |
| Конфигурация модуля в принципе [[iot:firmware:tasmota:athom:pg01-eu16a#конфигурация|стандартная]], за исключением следующих моментов: | Конфигурация модуля в принципе [[iot:firmware:tasmota:athom:pg01-eu16a#конфигурация|стандартная]], за исключением следующих моментов: |
| |
| * шаблон:\\ \\ <code javascript>Backlog Template {"NAME":"TOMZN TOB15-63 WIFI","GPIO":[32,0,225,226,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":12}; Module 0</code> | * шаблон:\\ \\ <code javascript>Backlog Template {"NAME":"TOB15-63 WIFI","GPIO":[32,0,0,0,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":12}; Module 0</code> |
| * метки кнопок в WebUI:\\ \\ <code javascript>Backlog Webbutton1 Реле; Webbutton2 Переключить; Webbutton3 Подтвердить</code> | |
| * URL для обновления(("Minimal", т.к. используется самостоятельная сборка.)):\\ \\ <code javascript>OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin.gz</code> | * URL для обновления(("Minimal", т.к. используется самостоятельная сборка.)):\\ \\ <code javascript>OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin.gz</code> |
| * прочие настройки((Значения соответствующих команд можно [[https://tasmota.github.io/docs/Commands/|посмотреть тут]].)):\\ \\ <code javascript>Backlog PowerOnState 3; TelePeriod 10;</code> | * прочие настройки((Значения соответствующих команд можно [[https://tasmota.github.io/docs/Commands/|посмотреть тут]].)):\\ \\ <code javascript>Backlog WebButton1 Реле; PowerOnState 3; TelePeriod 10; SetOption128 0</code> |
| |
| После окончательной настройки, желательно полностью отключить WebUI((Обратно в административный режим можно перевести через клиент MQTT, опубликовав топик ''devicename/cmnd/webserver'' с сообщением ''2''.)): | После окончательной настройки, желательно полностью отключить WebUI((Обратно в административный режим можно перевести через клиент MQTT, опубликовав топик ''devicename/cmnd/webserver'' с сообщением ''2''.)): |
| ==== Правила ==== | ==== Правила ==== |
| |
| ------------- | Самая важная часть затеи, т.к. она управляет логикой и связью с HomeKit. Это вторая версия, намного более простая и, я надеюсь, стабильная, [[iot:firmware:tasmota:tomzn:tob15-63_wifi?rev=1645010442#правила|чем первая]]. |
| | |
| FIXME **__Внимание!!!__ В логике работы текущей конфигурации есть неопознанная критическая ошибка, из-за которой иногда, у меня обычно с 9 вечера до 2 ночи, реле самопроизвольно выключается! Когда ошибка будет устранена, это сообщение исчезнет.** | |
| |
| --------------- | Вообще, в чем суть проблемы? -- нужно добавить кнопку выключения в приложение Дом от Apple, но максимально затруднить случайное выключение. |
| |
| Самая важная часть затеи, т.к. она управляет логикой и связью с HomeKit. | В этот раз переключатель один, но чтобы реле выключилось, его нужно выключить дважды с промежутком не более 5 секунд. Т.е. при первом выключении, он сразу же возвращается в исходное состояние, а Tasmota в течение 5 секунд ждет его повторного выключения. |
| |
| - Первое правило устанавливает начальные значения переменных при загрузке устройства, запускает таймеры при переключении "главной" кнопки и публикует состояние всех переключателей при подключении к MQTT:\\ \\ <code javascript>Rule1 ON System#Boot DO Backlog Var1 0; Var2 0; ENDON ON Power1#State=1 DO RuleTimer1 1 ENDON ON Power1#State=0 DO RuleTimer2 1 ENDON ON Mqtt#Connected DO Backlog Power1#State; Power2#State; Power3#State ENDON</code> | - Системный набор правил, который всегда включен\\ \\ <code>Rule1 |
| - Второе правило следит за состоянием обоих виртуальных переключателей и инициирует событие:\\ \\ <code javascript>Rule2 ON Power2#State=1 DO Backlog RuleTimer1 5; RuleTimer2 0; Var1 1; Event ChangePowerState ENDON ON Power3#State=1 DO Backlog RuleTimer1 5; RuleTimer2 0; Var2 1; Event ChangePowerState ENDON ON Power2#State=0 DO Backlog RuleTimer2 5; RuleTimer1 0; Var1 3; Event ChangePowerState ENDON ON Power3#State=0 DO Backlog RuleTimer2 5; RuleTimer1 0; Var2 3; Event ChangePowerState ENDON</code> | ON Power1#Boot DO Var1 %value% ENDON |
| - Третье правило запускает событие и, в зависимости от значений переменных, выключает или включает реле((Собственно, именно тут и нужны условные правила.)):\\ \\ <code javascript>Rule3 ON Event#ChangePowerState DO IF (%Var1%+%Var2%==2) Backlog Power1 OFF; RuleTimer1 0; RuleTimer2 0 ELSEIF (%Var1%+%Var2%==6) Backlog Power1 ON; RuleTimer1 0; RuleTimer2 0 ENDIF ENDON ON Rules#Timer=1 DO Backlog Var1 0; Var2 0; Power2 OFF; Power3 OFF ENDON ON Rules#Timer=2 DO Backlog Var1 0; Var2 0; Power2 ON; Power3 ON ENDON</code> | ON System#Boot DO Backlog Rule2 1; Rule3 0 ENDON |
| | ON Mqtt#Connected DO Backlog Power1#State; |
| | Publish circuitbreaker_0B6A01/stat/VIRTUALPOWER %Var1%; |
| | Subscribe VirtualPower, circuitbreaker_0B6A01/cmnd/VirtualPower ENDON |
| | ON Rules#Timer=1 DO Backlog Rule2 1; Rule3 0 ENDON |
| | ON Power1#State DO Publish circuitbreaker_0B6A01/stat/VIRTUALPOWER %value% ENDON</code> |
| | - правила поведения при первом выключении переключателя и при его включении\\ \\ <code>Rule2 |
| | ON Event#VirtualPower=0 DO Backlog |
| | Rule2 0; Rule3 1; RuleTimer1 5; Var1 1; |
| | Publish circuitbreaker_0B6A01/stat/VIRTUALPOWER 1 BREAK |
| | ON Event#VirtualPower=1 DO Backlog Power1 1; Var1 1 ENDON</code> |
| | - набор правил, который работает только 5 секунд, и выключает реле\\ \\ <code>Rule3 |
| | ON Event#VirtualPower=0 DO Backlog Power1 0; |
| | Rule3 0; Rule2 1; RuleTimer1 0; Var1 0 ENDON</code> |
| |
| После добавления всех правил их нужно включить, выполнив: | Осталось включить все наборы правил и <del>наслаждаться жизнью</del> идти в электрощиток, монтировать все это... |
| |
| <code javascript>Rule0 1</code> | <code>Rule0 1</code> |
| |
| ===== Homebridge ===== | ===== Homebridge ===== |
| |
| Код для добавления в Apple HomeKit через мост Homebridge [[iot:homebridge:config:accessories#tomzn_tob15-63_wifi|приведен тут]]. | Код для добавления в Apple HomeKit через мост Homebridge [[iot:software:homebridge:config:accessories#tomzn_tob15-63_wifi|приведен тут]]. |
| |
| ===== Как это выглядит и работает в живую ===== | ===== Как это выглядит и работает в живую ===== |
| |
| <html><iframe width="912" height="513" src="https://www.youtube.com/embed/VGrF-CRV0XA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html> | <html><iframe width="912" height="513" src="https://www.youtube.com/embed/G4E8AFl0rxg?si=LkZ1jrGogOtpylcI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></html> |