Плагин MegaD



  • Приобрел для MegaD расширитель портов MegaD-16I-XT описание устройства здесь: https://www.ab-log.ru/forum/viewtopic.php?f=1&t=1600#p36742/

    Описание команд здесь (в разделе "Работа с модулями на базе расширителей MCP23008/MCP23017"): https://ab-log.ru/smart-house/ethernet/megad-2561

    Подключены герконы окон. Помогите правильно настроить плагин MegaD.



  • @gis:

    Приобрел для MegaD расширитель портов MegaD-16I-XT описание устройства здесь: https://www.ab-log.ru/forum/viewtopic.php?f=1&t=1600#p36742/

    Описание команд здесь (в разделе "Работа с модулями на базе расширителей MCP23008/MCP23017"): https://ab-log.ru/smart-house/ethernet/megad-2561

    Подключены герконы окон. Помогите правильно настроить плагин MegaD.

    Этот расширитель уже обсуждался на нашем форуме . https://frm.intrahouse.ru/viewtopic.php?f=18&t=5312&start=250

    Поддержка добавлена начиная с версии плагина v1.1.13

    Кратко:

    1. Для опроса - добавлен разбор подканалов в формате значений через символ ";" - для MCP

    Обратите внимание! Поскольку в других местах подканалы нумеруются с 1, здесь сохранен такой же подход: 32_1,…32_16

    То есть ext0 - это 32_1.

    2. Если использовать INT и входящие от контроллера в расширениях:

    Сообщение от MegaD: /?pt=31&ext0=* - где pt=31 - номер порта, к которому подкл линия INT

    Установить состояния каналов: 32_1=%ext0%



  • Спасибо, что-то пропустил эту информацию. А с одновременной сработкой каналов еще не разбирались?



  • @gis:

    Спасибо, что-то пропустил эту информацию. А с одновременной сработкой каналов еще не разбирались?

    Пока нет 😞 Если вероятность большая, можно продублировать опросом



  • Коллеги! Поправьте, плиз, в плагине баг по "Формула расчета входного значения" из-за которого не могу значение "сдвинуть" вверх. В общем деление/умножение/вычитание работают, а сложение нет… пробовал использовать Number, но тоже ничего не вышло(



  • @Alex_Jet:

    Коллеги! Поправьте, плиз, в плагине баг по "Формула расчета входного значения" из-за которого не могу значение "сдвинуть" вверх. В общем деление/умножение/вычитание работают, а сложение нет… пробовал использовать Number, но тоже ничего не вышло(

    Если "деление/умножение/вычитание работают", значит формулы в целом работают, Странная избирательность для сложения :(. А можно увидеть лог? И проверьте, может заданный диапазон не позволяет добавлять.



  • @intrapro:

    Если "деление/умножение/вычитание работают", значит формулы в целом работают, Странная избирательность для сложения :(. А можно увидеть лог? И проверьте, может заданный диапазон не позволяет добавлять.

    Заданный диапазон точно позволяет) Тем более мне надо сдвинуть на 2-3 градуса. В сценариях когда-то был подобный баг и приходилось применять Number(x). Лог - легко, правда там действий особо-то не видно…смотрим на канал "ST_HEATING_SYS_01" он же - 31_35e977910902.

    Делаю "value+2"...видим, что прибавилось две тысячных...:

    18.10 11:29:10.156 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    18.10 11:29:10.239 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    18.10 11:29:10.239 megad4:  body: e46477910b02:31.06;666877911402:31.50;35e977910902:30.00
    18.10 11:29:10.241 IH: get [ { id: '31_e46477910b02', value: '31.06' },
      { id: '31_666877911402', value: '31.50' },
      { id: '31_35e977910902', value: '30.00' } ]
    set { ST_HEATING_SYS_02: { aval: 31.06, err: 0 },
      ST_HEATING_SYS_03: { aval: 31.5, err: 0 },
      ST_HEATING_SYS_01: { aval: 30.002, err: 0 } }
    
    

    Делаю "value-2"…видим, что отработало как надо:

    18.10 11:34:57.523 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    18.10 11:34:57.607 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    18.10 11:34:57.608 megad4:  body: e46477910b02:30.75;666877911402:31.18;35e977910902:29.68
    18.10 11:34:57.610 IH: get [ { id: '31_e46477910b02', value: '30.75' },
      { id: '31_666877911402', value: '31.18' },
      { id: '31_35e977910902', value: '29.68' } ]
    set { ST_HEATING_SYS_02: { aval: 30.75, err: 0 },
      ST_HEATING_SYS_03: { aval: 31.18, err: 0 },
      ST_HEATING_SYS_01: { aval: 27.68, err: 0 } }
    
    

    Делаю "value+60"…видим, что прибавилось почему-то 6 тысячных...совсем без комментариев:

    18.10 14:12:48.324 megad4: localhost => 192.168.11.24 HTTP GET /sec/?pt=31&cmd=list
    18.10 14:12:48.405 megad4: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    18.10 14:12:48.406 megad4:  body: e46477910b02:26.50;666877911402:26.87;35e977910902:26.00
    18.10 14:12:48.408 IH: get [ { id: '31_e46477910b02', value: '26.50' },
      { id: '31_666877911402', value: '26.87' },
      { id: '31_35e977910902', value: '26.00' } ]
    set { ST_HEATING_SYS_02: { aval: 26.5, err: 0 },
      ST_HEATING_SYS_03: { aval: 26.87, err: 0 },
      ST_HEATING_SYS_01: { aval: 26.006, err: 0 } }
    
    

    И еще бы поправить работу функции обработки значений (напомню - для портов MegaD в режиме I2C и 1WB функция не работает, усреднить показания за интервал времени не получается)! Первоначальный топик об этой проблеме - ТУТ.



  • @Alex_Jet:

    Заданный диапазон точно позволяет) Тем более мне надо сдвинуть на 2-3 градуса. В сценариях когда-то был подобный баг и приходилось применять Number(x). Лог - легко, правда там действий особо-то не видно…смотрим на канал "ST_HEATING_SYS_01" он же - 31_35e977910902.

    Делаю "value+2"...видим, что прибавилось две тысячных...:

    Делаю "value-2"...видим, что отработало как надо:

    Сделайте как и в сценариях: Number(value)+2, должно работать

    @Alex_Jet:

    И еще бы поправить работу функции обработки значений (напомню - для портов MegaD в режиме I2C и 1WB функция не работает, усреднить показания за интервал времени не получается)! Первоначальный топик об этой проблеме - ТУТ.

    Имеется в виду пользовательская функция, не формула. Да, это есть у нас в задачах, пока не успели сделать, там надо плагин поправлять 😞



  • По первому ответу - ок, буду пока делать так.

    По второму - буду ждать когда допилите плагин, надеюсь целиком по всем пожеланиям)



  • @Alex_Jet:

    И еще бы поправить работу функции обработки значений (напомню - для портов MegaD в режиме I2C и 1WB функция не работает, усреднить показания за интервал времени не получается)! Первоначальный топик об этой проблеме - ТУТ.

    На github опубликован новый релиз плагина, в котором измен вызов функций для каналов: https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.14

    Проверьте, пожалуйста 🙂 Если заработает, выложим как обновление



  • Здравствуйте. Для удобства, хочу реализовать следующее: при срабатывании порта megad на дисплей ssd1306 выводится сообщение. Например порт 1, на нем датчик дыма, он сработал, на дисплей вывелось сообщение записанное пользователем. Подскажите пожалуйста, как это можно сделать?



  • @artem521, посмотри тут



  • @intrapro, собственно ответил в личных сообщениях старого форума))



  • Чтото в ih перестали приходить события из megad. Точнее события приходят, а плагин не изменяет состояние датчика:
    550c5bd3-5539-4f13-ba7f-7c0cb8acb718-image.png
    sensor2 не падает в ноль

    upd^ все нормально. не в тот момент обнулял его в сценарии)



  • Небольшой вопрос на лентах ws2811 каналы цветов rgb перепутаны. Как можно выйти из ситуации что бы корректно отображался выбранный цвет?



  • Участник @intrahouse написал в Плагин MegaD:

    1. Чтение и управление для DS2413
      Запрос
      /sec/?pt=32&cmd=list

    Ответ содержит как DS18B20, так и DS2413: aad6a070000:25.43;85a56a070000:32.43;79c439000000:OFF/OFF;c6c439000000:ON/ON
    Канал DS18B20 формируется как обычно: 32_aad6a070000
    Каналы DS2413: 32_79c439000000_A, 32_79c439000000_B
    Время для опроса нужно как обычно выставить только в одном из каналов!!
    Больше никакой настройки не требуется, команды управления будут сформированы автоматически: /sec/?cmd=32A:1&addr=79c439000000

    Сделал небольшой апгрейд одного из контроллеров (заменил модуль 7I7O на 8I7O и добавил MegaD-2W/DS2413 на 35-канал) и при новом конфигурировании каналов плагина пришел к выводу что плагин к всевозможным конфигурациям MegaD заточить сложно...нужно иметь больше практических ситуаций. Сейчас имею вот такой "стартовый" лог:

    07.11 15:01:31.203 megad1: localhost => 192.168.11.21 HTTP GET /sec/?cmd=all
    07.11 15:01:31.335 megad1: localhost <= 192.168.11.21  response: statusCode=200 contentType = text/html
    07.11 15:01:31.337 megad1:  body: OFF/27;OFF/28;OFF/19;OFF/9;OFF/70;OFF/7;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;temp:26.10/hum:36.60;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;temp:2.50;temp:5.87;temp:4.06;;OFF;OFF/OFF;OFF;OFF
    07.11 15:01:31.341 IH: get [ { id: '7', value: '0' },
      { id: '8', value: '0' },
      { id: '9', value: '0' },
      { id: '10', value: '0' },
      { id: '11', value: '0' },
      { id: '12', value: '0' },
      { id: '13', value: '0' },
      { id: '22', value: '0' },
      { id: '23', value: '0' },
      { id: '24', value: '0' },
      { id: '25', value: '0' },
      { id: '26', value: '0' },
      { id: '27', value: '0' },
      { id: '28', value: '0' },
      { id: '30', value: '2.5' },
      { id: '31', value: '5.87' },
      { id: '32', value: '4.06' },
      { id: '14_1', value: '26.1' },
      { id: '14_2', value: '36.6' } ]
    set { LAMP1_01: { dval: 0, err: 0 },
      LAMP1_03: { dval: 0, err: 0 },
      LAMP1_05: { dval: 0, err: 0 },
      LAMP1_08: { dval: 0, err: 0 },
      LAMP1_10: { dval: 0, err: 0 },
      LAMP1_12: { dval: 0, err: 0 },
      LAMP1_13: { dval: 0, err: 0 },
      LAMP4_01: { dval: 0, err: 0 },
      LAMP4_02: { dval: 0, err: 0 },
      LAMP4_03: { dval: 0, err: 0 },
      LAMP1_02: { dval: 0, err: 0 },
      LAMP1_04: { dval: 0, err: 0 },
      LAMP1_06: { dval: 0, err: 0 },
      LAMP1_09: { dval: 0, err: 0 },
      ST_SEWERAGE1: { aval: 2.5, err: 0 },
      ST_SEWERAGE2: { aval: 5.87, err: 0 },
      ST_SEWERAGE3: { aval: 4.06, err: 0 },
      STEMP1_03: { aval: 26.1, err: 0 },
      SHUMIDITY1_03: { aval: 36.6, err: 0 } }
    
    1. Видим канал 35, к которому подключен один единственный DS2413 (канал MegaD в режиме "OUT->DS2413"), у него значения OFF/OFF - было бы очень хорошо, чтобы значения парсились и присваивались соответственно каналам: 35_A и 35_B. Однако сейчас ID каналов обязательно должны иметь вид 35_9a2938000000_A. Считаю, что в случае множества DS2413 со своими адресами ID-каналов должны иметь другой вид - 35_A_9a2938000000.
    2. У сложно-составных каналов (где, например, на шине 1-Wire висят и DS18B20, и DS2413 или множество датчиков I2C) по команде cmd=all никаких результатов нет (для примера, смотрим канал 33). Значит парсить нечего, но после запуска плагина нужно получить состояние выходов DS2413 - периодически его опрашивать считаю глупостью. Может быть для первого считывания показаний таких каналов необходим, например, чек-бокс "Опросить при запуске"? Таким образом, после разбора строки cmd=all, принудительно опрашиваем нужные каналы, чтобы получить актуальное состояние всех входов/выходов.
      То же относится к расширителю MCP20xxx - постоянно опрашивать его нет смысла. Если все порты расширителя используются в качестве выходов, то нужно его опросить только при запуске плагина, а если все порты - входы, то тоже самое поскольку изменение состояния входа приведет к тому что MegaD пошлет на сервер request.
    3. Еще касаемо сложно-составных каналов, расширителей каналов или многопараметрических датчиков I2C - не планируете сделать иерархичную структуру каналов как есть у http-плагина? По идее было бы удобнее ориентироваться в каналах, осуществлять какие-то общие настройки (тот же чек-бокс "Опросить при запуске") и прочее.
    4. Если для DS18B20 (в режиме DSen->1W), любого канала DHT22, датчика I2C (если в MegaD выбран конкретный dev) и прочих сенсоров включена "Функция обработки данных" (накопление, откидывание и усреднение значений), то при команде "cmd=all" iH данные из body "не видит", не присваивает их устройствам, а отправляет в массив "Функции обработки данных" в качестве первого накопленного значения.
      Хотелось бы чтобы при первоначальном опросе (парсинге body) значения датчиков присваивались устройствам, а не отправлялись в массив "Функции обработки данных" - это позволило бы эффективнее производить отладку)). А в массив попадали именно данные периодического опроса датчиков.

    PS: это возможные пути будущего развития/доработки плагина MegaD.



  • Подскажите что может быть за ошибка. Останавливается megad Текст ссылки перегружаю megad и через пару минут айпи адрес меги не отвечает.



  • @Alex_Jet может сложные места сниппетом забрать и все?



  • @amgstone, сервер кидает на Мегу свои запросы, а она ни на один не отвечает. Проверяйте сеть и почему MegaD недоступна с сервера.



  • @homa, согласен, что костыль решает многие проблемы), особенно если "голь на выдумки хитра"! Но вижу что плагин можно довести до кондиции - просто никто его не "юзал" во всевозможных конфигурациях чтобы убрать все "баги" и сделать "юзерфрендли".


Авторизуйтесь, чтобы ответить