Чтение и запись в одном канале, но разные значения

Здравствуйте.

Пишу шаблон для подключение стороннего оборудования. Установка запускается и останавливается при записи в один регистр, значения соответственно 2 и 1. Статус работы можно получить прочитав бит из другого регистра, но там 0 или 1.
Сначала описал канал в таком виде

{
              "name" : "Station On-Off",
			  "id" : "station_On_Off",
			  "reg_type" : "holding",
			  "address": "0x2008:13:1",
			  "write_address" : "0x1000",
			  "on_value": 2,
			  "off_value": 1,
			  "type" : "switch",
			  "format" : "u8",
			  "readonly" : false,
			  "enabled": true,
			  "order": 3,
              "group": "moduleData"
            }

Так, как разные значения - не работает.

Можно сделать два разных канала, но тогда как обновлять значение канала в web интерфейсе (при внешнем включении/выключении установки), для регистра работающего только на запись?

Добрый день.
Для канала записи так и используйте “write_address” как указано в документации
А что не работает? Точнее - что записывается в регистр 0x1000 при переключении switch?

А зачем его обновлять отдельно? Если что-то внешнее запишет в этот регистр значение - то контроллер (если регистр “только для записи”) и читать его не будет.

Если выключаем , то пишем 1, если включаем, то 2.

Если switch в web интерфейсе перевели в состояние On, а затем на пульте самой станции её остановили, то в регистре из которого читаем информацию значение изменится, а switch останется в положении On.

Пробую воспроизвести.
Делаю шаблон (Да, записал в десятеричной системе регистр 0x2008)

         {
          "name": "Station On-Off",
          "id": "station_On_Off",
          "reg_type" : "holding",
          "address": "8200:13:1",
          "write_address": "0x1000",
          "on_value": 2,
          "off_value": 1,
          "type" : "switch",
          "format" : "u16",
          "readonly" : false,
          "enabled": true,
          "group": "general"
        },

Получаю:
При переключении switch в регистр 0x1000 пишется 2

/devices/TestDev/controls/Holding2/on 2
/devices/TestDev/controls/Holding2 2
/devices/TestDev/controls/Holding2/on 0
/devices/TestDev/controls/Holding2 0

2, затем wb-mqtt-serial читает значение бита из 8200 и пишет 0.

Пробую, записываю в регистр 8200 значение с поднятым битом, - не реагирует.
Так вот, дело в том что в таком шаблоне как на регистр чтения так и на регистр записи действуют одновременно “on_value”: 2 так и “off_value”: 1,
И чтение одного бита никак не может вернуть “2”.
Да, реализовать только разными контролами. Причем включениее и выключение - можно кнопками, pushbutton.

А про pushbutton я и не подумал. Спасибо! Сейчас попробую.

1 лайк

Кнопка - то что нужно. Большое спасибо !

Но неожиданно возникла новая проблема, перестал отображаться мой шаблон при добавлении нового устройства. Ctrl+F5, службу перезапускал, перегружал WB, не помогает. Может в шаблоне синтаксические ошибки?

ACON_JUNIOR.json (3,0 КБ)

Ошибку в файле нашел. Спасибо за pushbutton.

Ну, отлично, рад.