Разработчик плагина сам решает, какие параметры ему нужны и как будут устроены каналы.
Для этого в файлах json специального формата описываются форма для параметров и форма для каналов: https://docs.intrascada.com/ru/pg143
Пример: небольшая часть формы параметров плагина Modbus
{"prop": "timeout","title": "Ожидание ответа на запрос","default": 5000, "type": "number"},
{"prop" : "sendChanges", "title": "Отправлять только изменения", "type": "cb"}
Вы можете посмотреть код плагина, который установлен, прямо в админке. Например для Modbus, в разделе Плагины->MODBUS на вкладке Редактор. Формы находятся в папке v5
Ядро использует эти формы для ввода и передает данные плагину, т е плагин получит те параметры, которые определил (timeout, polldelay, ...)
Аналогично, система никак не ограничивает, как будут устроены ваши каналы. Канал имеет id, r - флаг чтения, w - флаг записи. А остальное = требования протокола + ваша фантазия.
Никаких надстроек, опрос выполняет сам плагин. Сколько и какие нужны запросы - сам отправляет, получает, парсит, как хочет.
В принципе, если пишется специализированный плагин, набор каналов известен и не требуется настройка со стороны пользователя, плагин может сам объявить каналы, описав их в манифесте или отдавать их при старте. Или даже можно отдавать динамически
Пример 1. Плагин jethomed1: https://github.com/intrahouseio/ih-v5-jethomed1-plugin
Плагин отдает фиксированные каналы с заранее заданными ID при старте, а датчики 1-Wire отдает динамически при подключении
Пример 2. Плагин laurent https://github.com/intrahouseio/ih-v5-laurent-plugin
Все каналы прописаны в манифесте
Просто нужно решить - что у вас является значением канала, которое будет отдаваться в ядро.
Общие переменные-параметры или переменные сеанса? В любом случае ответ - да, это реализуется просто.
Такой функционал уже давно есть в любом языке высокого уровня. В javascript это элементарно, причем гуглится на раз:
- parseInt( dec.toString(10),16); // DEC => BCD
- parseInt( bcd.toString(16),10); // BCD => DEC
- parseInt( hexString, 16); // HEX => BCD: '20' => 32
- yourNumber.toString(16); // BCD => HEX: 32 => '20'
API плагина - https://docs.intrahouse.ru/ru/pg142
Минимальный плагин - https://docs.intrahouse.ru/ru/pg141
И другие разделы в пункте "Источники данных" -> "Разработка плагина"
Там есть, как работать с ядром, как создать свои формы для параметров плагина и для каналов.





Ответить с цитированием