Плагин MegaD



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



  • @intrapro, подключил ленту WS2818 к контроллеру, в канале плагина вписал команду управления /%pwd%/?pt=%adr%&ws=%value%&chip=151. Все работает, однако братья китайцы где-то напутали и поменяли местами R и G... как итог лента не RGB, а GRB... стандартными средствами плагина можно выйти из положения?
    Еще момент по уровню яркости. Если установить какой-нибудь цвет, то слайдер L по умолчанию переходит в значение 50. Если его двигать в сторону 0, то яркость выбранного цвета уменьшается, однако если двигать к 100, то яркость увеличивается, но и цвет плывет причем на 100 получается просто белый цвет. Это явно не верный алгоритм.

    А еще поработать бы с самим устройством. По идее индикатор 1 - это RGB параметры, а индикатор 2 - это уровень яркости. Однако сейчас индикатор 2 отображает, например, "0,255,0", хотя при настройке устройства на мнемосхеме отображается уровень в виде "100". При нажатии на устройство - ничего не меняется - (картинки одинаковые), уровень остается тот же.



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

    @intrapro, подключил ленту WS2818 к контроллеру, в канале плагина вписал команду управления /%pwd%/?pt=%adr%&ws=%value%&chip=151. Все работает, однако братья китайцы где-то напутали и поменяли местами R и G... как итог лента не RGB, а GRB... стандартными средствами плагина можно выйти из положения?

    Попробуйте в канале на вкладке Обработка прописать:
    Формула расчета выходного значения для актуаторов: [ value[1],value[0],value[2] ]

    Ну и входное тоже нужно так же:
    Формула расчета входного значения: [ value[1],value[0],value[2] ]

    Еще момент по уровню яркости. Если установить какой-нибудь цвет, то слайдер L по умолчанию переходит в значение 50. Если его двигать в сторону 0, то яркость выбранного цвета уменьшается, однако если двигать к 100, то яркость увеличивается, но и цвет плывет причем на 100 получается просто белый цвет. Это явно не верный алгоритм.

    Это вопрос спорный. Сейчас нужно ориентироваться, что трушный цвет при L=50

    А еще поработать бы с самим устройством. По идее индикатор 1 - это RGB параметры, а индикатор 2 - это уровень яркости. Однако сейчас индикатор 2 отображает, например, "0,255,0", хотя при настройке устройства на мнемосхеме отображается уровень в виде "100". При нажатии на устройство - ничего не меняется - (картинки одинаковые), уровень остается тот же.

    Да, с индикаторами не очень 😞 Сейчас наверху выводится текущее значение массива, внизу должно быть дефолтное значение (для команды on) Cостояния on/off должны переключаться. Попробуйте нажать кнопку Выключить в боковом меню. Должны уйти нули, а устройство перейти в состояние выключено. Ну а картинку для активного состояния сами раскрасьте 🙂



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

    Попробуйте в канале на вкладке Обработка прописать:
    Формула расчета выходного значения для актуаторов: [ value[1],value[0],value[2] ]

    Прописал только это и теперь работает все правильно! Здорово, что есть такой функционал!

    Да, с индикаторами не очень 😞 Сейчас наверху выводится текущее значение массива, внизу должно быть дефолтное значение (для команды on) Cостояния on/off должны переключаться. Попробуйте нажать кнопку Выключить в боковом меню. Должны уйти нули, а устройство перейти в состояние выключено. Ну а картинку для активного состояния сами раскрасьте 🙂

    Не пойму что где выводится. При включении/выключении изменяется только верхний массив. Нижний не понял от чего меняется - может быть и правда - это выбранное дефолтное значение. В качестве примера:
    RGB_On_Off.png

    По поводу картинок - очень не хватает картинок для RGB. Может быть уважаемый @intrahouse добавит в "базу" svg что-то вроде этого:
    RGB_Lamp_Off.png


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