Суть проблемы.
Схема: Home assistant → wirenboard8 → mr6c .
Из home assistant управляю каналом K1, все прекрасно работает, нажимаю на control в home assistant, реле переключается.
root@wirenboard-AT22VB27:~# mosquitto_sub -t '/devices/wb-mr6c_181/controls/K1/#' -v
/devices/wb-mr6c_181/controls/K1/meta {"order":15,"readonly":false,"title":{"en":"Command K1","ru":"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 K1"},"type":"switch"}
/devices/wb-mr6c_181/controls/K1/meta/order 1 5
/devices/wb-mr6c_181/controls/K1/meta/readonly 0
/devices/wb-mr6c_181/controls/K1/meta/type swi tch
/devices/wb-mr6c_181/controls/K1 0
/devices/wb-mr6c_181/controls/K1/on 1
/devices/wb-mr6c_181/controls/K1 1
/devices/wb-mr6c_181/controls/K1/on 0
/devices/wb-mr6c_181/controls/K1 0
/devices/wb-mr6c_181/controls/K1/on 1
/devices/wb-mr6c_181/controls/K1 1
Ошибок нет, все ок.
В момент переключения K1 выключаю питание mr6c .
В топике error появляется rw .
/devices/wb-mr6c_181/controls/K1/on 1
/devices/wb-mr6c_181/controls/K1/meta/error rw
Ожидаемо.
Включаю mr6c.
Проблема в том, что в home assistant контрол остается “unavailable”, и не принимает команды. Т.е. кнопка не активна.
До тех пор, пока кто либо не запишет в топик
/devices/wb-mr6c_181/controls/K1/on .
Т.е. чтобы control в homeassistant стал активен, кто-то (извне) должен записать любое значение в
/devices/wb-mr6c_181/controls/K1/on …
Возможно это из-за того, как wb engine описал этот канал, но не понимаю, где .
homeassistant/switch/wb-mr6c_181/k1/config :
{
"device": {
"identifiers": "wb-mr6c_181",
"manufacturer": "WirenBoard",
"model": "wb-mr6c [wb-modbus]",
"name": "WB-MR6C 181"
},
"availability_mode": "latest",
"enabled_by_default": true,
"availability": [
{
"topic": "/devices/wb-mr6c_181/controls/K1",
"value_template": "{{ False if value == '' else True }}",
"payload_not_available": false,
"payload_available": true
},
{
"topic": "/devices/wb-mr6c_181/controls/K1/meta",
"value_template": "{{ False if value == '' else True }}",
"payload_not_available": false,
"payload_available": true
},
{
"topic": "/devices/wb-mr6c_181/controls/K1/meta/error",
"value_template": "{{ True if value == '' else False }}",
"payload_not_available": false,
"payload_available": true
}
],
"name": "Command K1",
"unique_id": "wb-mr6c_181_k1",
"default_entity_id": "switch.wb-mr6c_181_k1",
"state_topic": "/devices/wb-mr6c_181/controls/K1",
"payload_on": 1,
"payload_off": 0,
"command_topic": "/devices/wb-mr6c_181/controls/K1/on"
}
Записываю в topic любое значение
root@wirenboard-AT22VB27:~# mosquitto_pub -t '/devices/wb-mr6c_181/controls/K1/on' -m "0"
/devices/wb-mr6c_181/controls/K1/on 0
/devices/wb-mr6c_181/controls/K1 0
/devices/wb-mr6c_181/controls/K1/meta/error (nul l)
Сбрасывается error, и control становится снова рабочим в home assistant.
Подскажите, где именно в
homeassistant/switch/wb-mr6c_181/k1/config
указано, что если в /devices/wb-mr6c_181/controls/K1/meta/error не null, то топик
“/devices/wb-mr6c_181/controls/K1 on”
есть unavailable и в него нельзя писать ?
Или home assistant сам знает meta\error, и при наличии в нем ошибки трактует топик unavailable (а точнее read only, т.к. после записи в топик он становится активен) ?
Как решить эту проблему ?
Т.е. чтобы при появлении связи с mr6c, homeassistant смог писать в топик ?
Навскидку могу в wb-rules отловить event что mr6c появился, и записать во все выходные топики ‘0’.
Но возможно есть более цивилизованное решение ?