# Рассинхрон состояния между реле и контроллером

**URL:** <https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403>\
**Category:** WB-MR\
**Created:** [May 26, 2022, 10:30am UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403 "2022-05-26T10:30:23Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![imposibrus](https://support.wirenboard.com/user_avatar/support.wirenboard.com/imposibrus/32/4575_2.png) [@imposibrus](https://support.wirenboard.com/u/imposibrus)\
**Post date:** [May 26, 2022, 10:30am UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/1 "2022-05-26T10:30:23Z")

</div>

Добрый день!  
Вчера случилась не оч приятная ситуация: теплый пол в санузле не выключался весь день (разогрелся до 50 градусов вместо 35). При этом на контроллере состояние реле было “выключено”.

График состояния реле и датчика температуры:

 ![newplot](https://support.wirenboard.com/uploads/default/original/2X/0/0d7a1d9871346a65e3b6851429b0c3d19c37b8d1.png)

Самая интересная часть /var/log/messages:

```auto
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](https://github.com/imposibrus/wirenboard-rules) . Там много всякого тестового, основные моменты, отвечающие за вкл/выкл:

- модуль [RelaysAutoOff](https://github.com/imposibrus/wirenboard-rules/blob/master/wb-rules-modules/RelaysAutoOff.js), который отключает реле после 30 минут непрерывной работы. И его [инициализация](https://github.com/imposibrus/wirenboard-rules/blob/master/wb-rules/relay_auto_off.js);
- модуль [Schedules](https://github.com/imposibrus/wirenboard-rules/blob/master/wb-rules-modules/Schedules.js), скопированный из Wiki;
- [floor\_heat\_control](https://github.com/imposibrus/wirenboard-rules/blob/master/wb-rules/rules.js), управляющий реле в зависимоти от температуры.

Не имею морального права просить разгребать эти правила. Вроде как, они работают и все хорошо. Главные вопросы: как может случиться ситуация с рассинхроном физического состояния реле и его состоянием в контроллере и как с этим бороться? Может где-то нет подтверждения записи или возникает 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](https://support.wirenboard.com/uploads/short-url/5w5rqF4w7FsE9ePpJiX11b2T3ra.log) (79.8 КБ)

---

<div class="post-metadata">

**Author:** ![Explorerol](https://avatars.discourse-cdn.com/v2/letter/e/7ab992/32.png) [@Explorerol](https://support.wirenboard.com/u/Explorerol)\
**Post date:** [May 26, 2022, 3:15pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/2 "2022-05-26T15:15:42Z")

</div>

Здравствуйте!  
В логах явных проблем нет, только изредка таймауты чтения. Сейчас работа реле нормальная? Если да, каким образом восстановили работу модуля?  
Скажите какие нагрузки подключены к каналам модуля реле WB-MRM2-mini (тип, мощность)? Не могло ли залипнуть реле от большой нагрузки или от механического износа при частых срабатываниях?

---

<div class="post-metadata">

**Author:** ![imposibrus](https://support.wirenboard.com/user_avatar/support.wirenboard.com/imposibrus/32/4575_2.png) [@imposibrus](https://support.wirenboard.com/u/imposibrus)\
**Post date:** [May 26, 2022, 4:04pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/4 "2022-05-26T16:04:04Z")

</div>

> Сейчас работа реле нормальная?

Да, вообще уже 5 месяцев работало без вопросов.

> Если да, каким образом восстановили работу модуля?

Перегрев заметила девушка, меня рядом не было, так что она вырубила автомат в щитке. Т.е. отрубила нагрузку (теплый пол), без отключения самого реле. Примерно в 4:30 уже я пошел смотреть: послал пару раз вкл/выкл через MQTT, услышал, что реле щелкает, подождал как начала падать температура, успокоился) Поэтому у меня сложилось мнение, что реле работает ок, просто случился рассинхрон состояния (хоть я и понимаю, что опрос состояния идет постоянно и рассинхрона быть не должно).

> Скажите какие нагрузки подключены к каналам модуля реле WB-MRM2-mini (тип, мощность)?

Резистивная нагрузка, теплый пол по 0,5м² на каждый канал. Мощность каждого примерно 80Вт (по паспорту мощность 1м² теплого пола = 160Вт).

> Не могло ли залипнуть реле от большой нагрузки или от механического износа при частых срабатываниях?

Залипнувшие реле - мой самый страшный сон😅 Но вообще, везде нагрузка оч маленькая, так что если только от износа, я полагаю🤷‍♂️ Сейчас посмотрел, в день этот канал реле включается около 36 раз. Получается за 5 месяцев этот канал включался уже примерно 5500 раз.

Забыл еще уточнить: это реле находится в потенциально влажной зоне - в подрозетнике в санузле. Прямого контакта с водой там точно нет, конденсата тоже быть не должно. Но это наводит меня на мысль, что к нему надо относиться как к “потенциально опасному” и не особо доверять.

Если я правильно понимаю, удаленно излечить возможное “залипание контактов” не получится? Наверное, только если ставить еще одно реле, "как на подводной лодке"😂

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [May 26, 2022, 4:04pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/5 "2022-05-26T16:04:39Z")

</div>

> [@imposibrus](#):
>
> Может где-то нет подтверждения записи или возникает race condition? Алерт о перегреве я теперь точно добавлю, чтобы можно было руками переткнуть, если что. Но теперь я не уверен, что будет достаточно добавить правило в wb-rules, которые будет делать “вкл/выкл” реле. Неужели надо будет питание реле перетыкать через правила? ☹

А ошибки **связи** обрабатываются? Вот пример: [Сообщение при отключении или неисправности в Telegram - #3 от пользователя BrainRoot](https://support.wirenboard.com/t/soobshhenie-pri-otklyuchenii-ili-neispravnosti-v-telegram/10880/3)  
и на самом реле надо включить безопасный режим, чтобы оно не было включенным при отсутствии связи. В правила гляну, но уже скорее завтра.

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [May 26, 2022, 4:05pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/6 "2022-05-26T16:05:47Z")

</div>

> [@imposibrus](#):
>
> Поэтому у меня сложилось мнение, что реле работает ок, просто случился рассинхрон состояния (хоть я и понимаю, что опрос состояния идет постоянно и рассинхрона быть не должно).

А нет ли в логах wb-mqtt-serial сообщений о ошибках за этот период. О, и кстати, а **версия FW** в реле какая?  
И надо бы с него uptime (104 и 105 input регистры) прочитать.

---

<div class="post-metadata">

**Author:** ![imposibrus](https://support.wirenboard.com/user_avatar/support.wirenboard.com/imposibrus/32/4575_2.png) [@imposibrus](https://support.wirenboard.com/u/imposibrus)\
**Post date:** [May 26, 2022, 4:21pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/7 "2022-05-26T16:21:42Z")

</div>

> А ошибки **связи** обрабатываются?  
> и на самом реле надо включить безопасный режим, чтобы оно не было включенным при отсутствии связи.

Нет, сделаю👌

> А нет ли в логах wb-mqtt-serial сообщений о ошибках за этот период

Его ID - 134, получается, конкретно в этот период ошибок нет, но вообще встречаются “invalid crc”.

```auto
May 24 20:09:48 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 20:09:54 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 24 20:10:24 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 coil(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 20:10:53 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 20:11:07 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 input(s) @ 32 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 22:25:01 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 22:25:16 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 input(s) @ 32 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 24 22:25:31 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 24 22:25:45 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 coil(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 24 22:26:00 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid data size
May 24 22:26:15 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 coil(s) @ 2 of device modbus:104: Serial protocol error: request timed out
May 24 23:05:32 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 holding(s) @ 0 of device modbus:104: Serial protocol error: request timed out
May 25 00:32:28 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 3 input(s) @ 32 of device modbus:153: Serial protocol error: request timed out
May 25 01:39:17 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 3 input(s) @ 35 of device modbus:42: Serial protocol error: request timed out
May 25 04:27:07 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 3 input(s) @ 32 of device modbus:153: Serial protocol error: request timed out
May 25 08:59:25 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 discrete(s) @ 0 of device modbus:104: Serial protocol error: request timed out
May 25 09:37:08 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:138: Serial protocol error: request timed out
May 25 10:59:41 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 3 discrete(s) @ 0 of device modbus:153: Serial protocol error: request timed out
May 25 11:05:38 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 holding(s) @ 2 of device modbus:104: Serial protocol error: request timed out
May 25 11:21:03 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 3 input(s) @ 32 of device modbus:153: Serial protocol error: request timed out
May 25 11:25:05 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 1 input(s) @ 482 of device modbus:153: Serial protocol error: request timed out
May 25 12:19:56 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 input(s) @ 32 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 25 12:20:04 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 25 12:20:19 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 input(s) @ 32 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 25 12:20:48 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 25 12:21:03 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 discrete(s) @ 0 of device modbus:134: Serial protocol error: malformed response: invalid crc
May 25 12:21:32 wirenboard-AINFZ3MB wb-mqtt-serial[1655]: WARNING: [modbus] failed to read 2 input(s) @ 32 of device modbus:134: Serial protocol error: malformed response: invalid crc

```

> О, и кстати, а **версия FW** в реле какая?

> fw 1.17.7

Често сказать, не знаю как узнать версию прошивки без обновления. Знаю только, что она выводится при выполнении команды типа `wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a134`. Поэтому оно обновилось до 1.18.3, когда я узнавал версию таким способом 😁

> И надо бы с него uptime (104 и 105 input регистры) прочитать.

Вроде, это делается так:

```auto
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a134 -t0x03 -r104 4728ms  2022-05-26 16:19:34
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[86][03][00][68][00][01][1B][A1]
Waiting for a confirmation...
<86><03><02><00><00><0C><5A>
SUCCESS: read 1 of elements:
	Data: 0x0000

```

```auto
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a134 -t0x03 -r105 2022-05-26 16:19:36
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[86][03][00][69][00][01][4A][61]
Waiting for a confirmation...
<86><03><02><55><A9><F3><74>
SUCCESS: read 1 of elements:
	Data: 0x55a9

```

---

<div class="post-metadata">

**Author:** ![BrainRoot](https://avatars.discourse-cdn.com/v2/letter/b/c2a13f/32.png) [@BrainRoot](https://support.wirenboard.com/u/BrainRoot)\
**Post date:** [May 26, 2022, 4:26pm UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/8 "2022-05-26T16:26:08Z")

</div>

> [@imposibrus](#):
>
> ```auto
> SUCCESS: read 1 of elements:
> Data: 0x55a9
> 
> ```

То есть перезагружалось 6 часов назад.

> [@imposibrus](#):
>
> Его ID - 134, получается, конкретно в этот период ошибок нет, но вообще встречаются “invalid crc”.

Ну, было бы прерывание связи - он бы чаще ругался, так - ничего страшного не вижу.

---

<div class="post-metadata">

**Author:** ![system](https://support.wirenboard.com/uploads/default/original/2X/5/5ac90dc8a7bdff486d3494a19ec6aaa6f6cc5d36.png) [@system](https://support.wirenboard.com/u/system)\
**Post date:** [June 10, 2022, 6:32am UTC](https://support.wirenboard.com/t/rassinhron-sostoyaniya-mezhdu-rele-i-kontrollerom/11403/9 "2022-06-10T06:32:53Z")

</div>

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.
