Плагин MegaD



  • Пользователь @Alex_Jet написал в Плагин MegaD:

    @aleks-zonov, так что-то получилось или нет? В вашем случае "Формула расчета входного значения" должна выглядеть примерно так:

    ( ((840 - Number(value))/840) - 410 ) *100
    

    Проверить можете только вы, открыв отладчик плагина и посмотрев что приходит и что присваивается устройству.

    Да получилось, формула так и выглядит, щас мне надо рассчитать формулу для датчика давления там не 0-100% а 0-4 бар.



  • @aleks-zonov, я делаю в лоб - из отчетов АЦП преобразование в напряжение (надо знать значение опорного напряжения АЦП) и умножаю на коэффициент приведения напряжение - ед.изм. параметра. Например для аналогового датчика давления у меня получилась вот такая формула (скорее эмпирическая, нежели чем даташитная, но с давлением в MPa на манометре совпадает)

    ((value * 3.47/1024) - 0.5) * 2.8
    

    При всем при этом для АЦП не просто лучше, а крайне необходимо отбрасывать "бракованные" значения и усреднять оставшиеся. Поэтому надо использовать "Функция обработки значения" с простейшим скриптом:

    function (val, depo)
    {  var result;
       var avr;
       
       if (!depo.res) depo.res = [];
       depo.res.push(val);
       
       //Нужны еще измерения, значение не возвращаем
       if (depo.res.length < 5) return;
       //Иначе сортируем и усредняем "средние" значения
       else{
          depo.res.sort();
          avr = ((depo.res[1] + depo.res[2] + depo.res[3]) / 3).toFixed(2);
       }
       
       result = (((avr * 3.47/1024) - 0.5) * 2.8).toFixed(2);
       
       depo.res = []; //Перед следующими измерениями сбрасываем массив
       return result; //Возвращаем значение
    }
    


  • @Alex_Jet
    Спасибо попробую, теперь думаю точно разберусь.



  • @aleks-zonov, расскажите общественности что за датчики вы применяете совместно с MegaD?



  • Да вроде нечего рассказывать, датчики влажности почвы АЦП, датчики давления воды АЦП, и самодельный трёх фазный датчик тока с i2c расширителем портов подключен но ещё не выведен в интерфейс.



  • Пользователь @intrapro написал в Плагин MegaD:

    На github выложена новая версия плагина v1.1.15:
    https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.15

    В новой версии плагина в Расширениях добавлен флаг:
    Расширенный порт (одновременная сработка датчиков)

    Все датчики одного порта pt, которые могут сработать одновременно, нужно прописать в одном запросе (обратите внимание, что MCP расширения (ext) нумеруются с 0, а каналы на сервере с 1, т е ext0 - это 32_1 )

    Пример настройки расширений для порта 32:
    Входящее от контроллера:
    /?pt=32&ext0=*&ext1=*&ext2=*&ext3=*&ext4=*&ext5=*&ext6=*&ext7=*

    Установить состояния каналов:
    32_1=%ext0%&32_2=%ext1%&32_3=%ext2%&32_4=%ext3%&32_5=%ext4%&32_6=%ext5%&32_7=%ext6%&32_8=%ext7%

    Расширенный порт: Да

    В результате, например, такого входящего запроса /pt=32&ext1=1&ext7=0 будут присвоены значения 32_2=1 и 32_8=0

    Просьба счастливых обладателей расширенных портов протестировать функционал 🙂

    Сделал интеграцию СМК и датчиков движения в iH через MegaD-16I-XT. В расширениях для MCP сделал одну единственную! запись с установленным чек-боксом "Расширенный порт":

    //Входящее от контроллера:
    /mod_megad.php?pt=32&ext0=*&ext1=*&ext2=*&ext3=*&ext4=*&ext5=*&ext6=*&ext7=*&ext8=*&ext9=*&ext10=*&ext11=*&ext12=*&ext13=*&ext14=*&ext15=*
    
    //Установить состояние каналов:
    31_1=%ext0%&31_2=%ext1%&31_3=%ext2%&31_4=%ext3%&31_5=%ext4%&31_6=%ext5%&31_7=%ext6%&31_8=%ext7%&31_9=%ext8%&31_10=%ext9%&31_11=%ext10%&31_12=%ext11%&31_13=%ext12%&31_14=%ext13%&31_15=%ext14%&31_16=%ext15%
    

    Все изменения во всех каналах плагин "видит" отлично! Однако нумерация каналов с 1 (31_1) просто выносит мозг...особенно когда на самом модуле каналы считаются с 0 и контроллер присылает расширенные порты с 0 (ext0...ext15). В новой версии нужно это поправить для MCP, уведомив пользователей что внесли такую правку...

    25.08 00:16:42.546 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=31&cmd=get
    25.08 00:16:42.556 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    25.08 00:16:42.556 megad2:  body: OFF;OFF;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON;OFF;ON;ON
    25.08 00:16:42.557 IH: get [ { id: '31_3', value: '1' },
      { id: '31_13', value: '1' },
      { id: '31_14', value: '0' },
      { id: '31_15', value: '1' },
      { id: '31_16', value: '1' } ]
    set { SMOTION1_05: { dval: 0, err: 0 },
      SGERKON1_03: { dval: 0, err: 0 },
      SGERKON1_04: { dval: 1, err: 0 },
      SGERKON1_01: { dval: 0, err: 0 },
      SGERKON1_02: { dval: 0, err: 0 } }
    


  • Подскажите как можно визуализировать на мнемосхеме доступность в сети MegaD?



  • @amgstone, на любую мнемосхему можно добавить "устройство" плагина. Называются как "UNIT..." - в поиске устройств наберите unit. У устройства есть 3 состояния - можно все состояния визуализировать как хотите.
    У меня состояние плагинов отображается в виджете для ПК "Строка состояния":

    Строка_Состояния.png



  • @Alex_Jet спасибо, все получилось))))



  • @Alex_Jet а нету у Вас сценария если мега недоступна то уведомлять в мобильное приложение?



  • @amgstone, мультисценарий для уведомлений в Телеграм о проблемах с плагинами:

    /** 
    * @name MegaD - уведомления от плагинов 
    * @desc Сообщение в Telegram о проблемах с плагинами 
    * @version 4 
    */
    
    const dev = Device("SensorD");
    
    startOnChange(dev);
    
    script({
      start() {
        let string = "";
        
        switch(dev.value) {
          case 0: string = "возникла ошибка";
                  break;
          case 1: string = "остановлен";
                  break;
          case 2: string = "запущен";
                  break;
        }
        
        this.info("telegram", "OWNER", dev.id+ ": " +string+ "; error - " +dev.error);
      },
      
      GetDate() {
        return new Date().toLocaleString('ru-RU');
      }
    });
    


  • @Alex_Jet Отключил сетевой кабель и посыпались сообщения, Stop и Run каждые 5 секунд, хотя кабель был отключен. Как сделать чтобы сообщение приходило 1 раз когда MegaD зависла и второе сообщение что работа восстановлена?
    alt text
    alt text



  • @amgstone, 1. Увеличьте время перезапуска плагина; 2. MegaD не зависает! Скорее будет проблема с патчкордом или коммутатором; 3. Сценарий по сути для отслеживания работы плагина (замечено, что почему-то иногда MegaD не отвечает на какой-нибудь запрос в течении более 30 секунд и плагин рестартует); 4. В состояниях плагина MegaD есть недоработка, в Berry это лучше работало, надеюсь разработчики когда-нибудь допилят этот момент.



  • Здравствуйте. Помогите пожалуйста разобраться с устройством подключенном к megad2561 по modbus К портам P32 RX
    P33 TX подключен счетчик, dds238-1 zn ( ссылка на этот материал с сайта megad https://ab-log.ru/smart-house/ethernet/megad-rs485 )
    Чтобы работать с этим счетчиком, нужно отправить 192.168.0.16/sec/?uart_tx=010300060001&mode=rs485 и принять запрос 192.168.0.16/sec/?uart_rx=1&mode=rs485
    Но вот беда. Как эти значения получать в intrahouse ?
    Как мне посоветовал Alex_Jet , попытаться сделать через сценарий.
    Я создал датчик, настроил ( не знаю на сколько правильно ) в плагине megad, попытался сделать сценарий, но что дальше?
    Помогите пожалуйста разобраться, я уже запутался.
    Фото с моими настройками прилагаю.
    I2.png I1.png



  • @DM19, увы но придется распутаться и начать изучать js. Блок-схемы в iH только для очень простых случаев! Чтобы общаться со счетчиком надо кодить сценарий.
    Вот что нужно использовать вам - из сценария давать команду на MegaD через плагин megad и анализировать ответ на уровне сценария. Собственно пример сценария уже приведен, нужно вставить свои данные.



  • @intrapro, приветствую! Походу дела в cherry никто не пользуется отправкой команд на контроллер MegaD кнопкой). Хотел реализовать одну задачу, но не работает... в отладчике плагина вот такой лог!

    08.11 02:22:52.630 IH: plugin command { unit: 'megad10',
      clid: 'h/lwwEfrY7xK1iJkLSsKUA==',
      command: 'http://192.168.11.41/sec/?cmd=26:0',
      type: 'command' }
    08.11 02:22:52.633 megad10: command: 'http://192.168.11.41/sec/?cmd=26:0'
    08.11 02:22:52.776 megad10: 
    08.11 02:22:52.777 megad10: localhost => 192.168.11.41 HTTP GET http://192.168.11.41/sec/?cmd=26:0
    08.11 02:22:52.809 megad10: localhost <= 192.168.11.41  response: statusCode=401
    

    Если это же делать через плагин http, то в ответе будет Done. То же если набрать url в браузере)



  • Пользователь @Alex_Jet написал в Плагин MegaD:

    @intrapro, приветствую! Походу дела в cherry никто не пользуется отправкой команд на контроллер MegaD кнопкой).

    Я пользуюсь. Отлично работает.

    alt text

    Это ресет розетки, к которому подключено коммуникационное оборудование.
    Если не послать команду на мегу целиком, то при выключении розетки мега потеряет сеть, и розетку будет уже не включить.
    А так работает отлично. Мега берет команду, выключает розетку, теряет сеть, включает розетку, снова регистрируется в сети, продолжает работать.



  • @Alex_Jet, добрый день!
    Странно, конечно. Судя по логу команда доходит, мега отвечает. Но происходит ошибка авторизации (401)? Может, символ какой вставился непечатный?



  • @intrapro, проверил. Так себя ведет MegaD если в "Команда/Дополнительный параметр" вставляешь полный url (http://192.168.11.41/sec/?cmd=26:0) или только команды и произвольные (cmd=26:0). Поэтому нужно использовать следующий формат - /sec/?cmd=26:0



  • Там все логично.
    На каждую мегу свой экземпляр плагина.
    В настройках кнопки ссылка на конкретный плагин, и IP адрес нужной меги есть в его свойствах.


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