Добрый день!
Вчера случилась не оч приятная ситуация: теплый пол в санузле не выключался весь день (разогрелся до 50 градусов вместо 35). При этом на контроллере состояние реле было “выключено”.
График состояния реле и датчика температуры:
Самая интересная часть /var/log/messages:
May 25 07:58:09 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] floor_heat_control:: sensor (1wireSensors/bath_small_towel) temp (32.937) down hysteresis (33). turning ON the relay "wb-mrm2-mini_134/Relay 2"
May 25 07:58:09 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] RelaysAutoOff:: relay "wb-mrm2-mini_134/Relay 2" activated, saving activation time
May 25 07:58:38 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] auto_off_heater_control newValue=true, devName=_schedules, cellName=warm_floor_small_bath, warm_floor_small_bath=true
May 25 07:59:27 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] RelaysAutoOff:: relay "wb-mrm2-mini_134/Relay 2" deactivated, unset activation time
May 25 07:59:36 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] floor_heat_control:: sensor (1wireSensors/bath_small_towel) temp (32.875) down hysteresis (33). turning ON the relay "wb-mrm2-mini_134/Relay 2"
May 25 07:59:38 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] auto_off_heater_control newValue=true, devName=_schedules, cellName=warm_floor_small_bath, warm_floor_small_bath=true
May 25 07:59:58 wirenboard-AINFZ3MB wb-rules[1664]: INFO: [rule info] floor_heat_control:: sensor (1wireSensors/bath_small_towel) temp (32.937) down hysteresis (33). turning ON the relay "wb-mrm2-mini_134/Relay 2"
В 07:59:27
или в 07:59:36
произошло что-то странное, из-за чего появился рассинхрон: физически реле работало, а в истории/wb-rules - не работало.
Все мои wb-rules тут: GitHub - imposibrus/wirenboard-rules . Там много всякого тестового, основные моменты, отвечающие за вкл/выкл:
- модуль RelaysAutoOff, который отключает реле после 30 минут непрерывной работы. И его инициализация;
- модуль Schedules, скопированный из Wiki;
- floor_heat_control, управляющий реле в зависимоти от температуры.
Не имею морального права просить разгребать эти правила. Вроде как, они работают и все хорошо. Главные вопросы: как может случиться ситуация с рассинхроном физического состояния реле и его состоянием в контроллере и как с этим бороться? Может где-то нет подтверждения записи или возникает race condition? Алерт о перегреве я теперь точно добавлю, чтобы можно было руками переткнуть, если что. Но теперь я не уверен, что будет достаточно добавить правило в wb-rules, которые будет делать “вкл/выкл” реле. Неужели надо будет питание реле перетыкать через правила?
Wiren Board 6.7.2 (s/n AINFZ3MB), release staging.03688 (as testing)
Linux wirenboard-AINFZ3MB 5.10.35-wb109 #1 Wed Mar 16 07:18:32 UTC 2022 armv7l GNU/Linux
Реле WB-MRM2-mini-NO hw v2.3D, fw 1.17.7 (не знал как посмотреть версию без обновления, так что обновил сейчас до 1.18.3 ). Сидит одно на втором порту RS-485, питается от контроллера по Vout (тоже одно такое), скорость 9600.
wb-rules 2.11.1
wb-mqtt-serial 2.56.3
Полный лог за день (почистил только спам от dhcp и стандартных правил, пытающихся узнать IP несуществующих интерфейсов)
messages.log (79.8 КБ)