Предыдущая версия справа и слева
Предыдущая версия
|
Следующая версия
Следующая версия справа и слева
|
настройка_modbus [2022/09/15 21:25] Sanch-KK |
настройка_modbus [2022/10/07 16:39] Sanch-KK |
"fan" :{"emit":"edem/air/vents/zal3/fan","@V":null}, | "fan" :{"emit":"edem/air/vents/zal3/fan","@V":null}, |
</code> | </code> |
| В этом случае, после того, как мы что-то записали в регистр, при следующем же опросе устройства, это будет обнаружено (если значение изменилось) и будут предприняты настроенные действия (например, значение будет отправлено по MQTT и отобразится в мобильном приложении Home Assistant) |
| |
И еще один фильтр: при попытке записать в регистр значение, не отличающееся от последнего полученного при опросе, такая попытка будет проигнорирована. Такое поведение отключить нельзя. | И еще один фильтр: при попытке записать в регистр значение, не отличающееся от последнего полученного при опросе, такая попытка будет проигнорирована. Такое поведение отключить нельзя. |
</code> | </code> |
| |
| ===== Mapping значений и команд контроллера в регистры Modbus ===== |
| |
| Рассмотрим на примере вентустановки |
| Допустим, регистр 41 отвечает за включение установки. Соответственно, в него надо записать "1" для всех рабочих режимов: |
| * AUTO |
| * ON |
| * HEAT |
| * FAN_ONLY |
| Для команды OFF записываем 0 |
| |
| Это реализуется строкой |
| "on":{"reg":41,"type":"u8l","id":1,"map":{"cmd":[["OFF",0],["ON",1],["AUTO",1],["HEAT",1],["FAN_ONLY",1]]}} |
| |
| наличие "id"=1 позволяет не только напрямую управлять данным регистром при помощи именованного параметра "on" (топика air/on/set) но и привязать его к командному суффиксу канала |
| |
| Соответственно, доступно управление по командному топику air/cmd |
| |
| В нашей вентустановке за переключение режима работы (нагрев-вентиляция-авто) отвечает отдельный регистр 43 |
| |
| настроим отображение режима работы на требуемые значения данного регистра и, также, привяжем это отображение к командному топику ("id":1) |
| |
| "pmode":{"reg":43,"type":"u8l","id":1,"map":{"cmd":[["AUTO",3],["HEAT",2],["FAN_ONLY",1]]}}, |
| |
| теперь при переключении режимов в регистр 43 будет записываться 3 для Авторежима, 2 - для режима нагрева, 1 - для режима вентиляции |
| |
| |
| (описание не завершено) |
| |
| <code> |
| "modbus": |
| { |
| "airset":{ |
| "baud":9600, |
| "serial":"8E1", |
| "poll":{"regs":[[0,60],1008],"delay":2000}, |
| "par":{ |
| |
| "on":{"reg":41,"type":"u8l","id":1,"map":{"cmd":[["OFF",0],["ON",1],["AUTO",1],["HEAT",1],["FAN_ONLY",1]]}}, |
| "fanspeed":{"reg":42,"type":"u8l","id":7,"map":{"cmd":"fan"}}, |
| "offbyfan":{"reg":41,"type":"u8l","id":7,"map":{"cmd":[1,["OFF",0]]}}, |
| "pmode":{"reg":43,"type":"u8l","id":1,"map":{"cmd":[["AUTO",3],["HEAT",2],["FAN_ONLY",1]]}}, |
| "tset":{"reg":44,"type":"u8l","id":2}, |
| |
| "di":{"reg":47,"type":"u8l"}, |
| "dp":{"reg":48,"type":"u8l"}, |
| "dt":{"reg":49,"type":"u8l"}, |
| |
| "fault":{"reg":1008} |
| } |
| } |
| } |
| }, |
| "items": |
| { |
| "vent":[14,[247,"airset", |
| |
| { |
| "tset":{"emit":"edem/s_out/vent/set","@V":null}, |
| "pmode":{"emit":"edem/s_out/vent/cmd","@V":null}, |
| "fanspeed":{"emit":"edem/s_out/vent/fan","@V":null}, |
| "on":{"emit":"edem/s_out/vent/oncmd","@V":null}, |
| |
| "ruheat":{"emit":"edem/s_out/vent/ruheat"}, |
| "ruslow":{"emit":"edem/s_out/vent/rupump"}, |
| "ramode":{"emit":"edem/s_out/vent/ramode"}, |
| "rfanspd":{"emit":"edem/s_out/vent/rfanspd"}, |
| "rfanlvl":{"emit":"edem/s_out/vent/rfanlvl"}, |
| "rpumpon":{"emit":"edem/s_out/vent/rpumpon"}, |
| "rtemp":{"emit":"edem/s_out/vent/rtemp"}, |
| "rtempset":{"emit":"edem/s_out/vent/rtempset"}, |
| "fault":{"emit":"edem/s_out/vent/fault"}, |
| |
| "tautoheat":{}, |
| "tautocool":{}, |
| "di":{}, |
| "dp":{}, |
| "dt":{}, |
| "fanmin":{}, |
| "fanmax":{}, |
| "tmreheat":{}, |
| "tairfreeze":{}, |
| "twaterstart":{}, |
| "twatershut":{}, |
| "twateridle":{}, |
| "fanauto":{"emit":"edem/s_out/vent/fanauto/set","@V":null}, |
| "numspeed":{}, |
| "offbyfan":{} |
| } |
| ]] |
| } |
| </code> |
| |