Плагин MegaD



  • Для amgstone
    5a9b5418-39fa-4c74-83f2-cec336ed9dea-image.png



  • Хочется по пробывать эту платформу, есть MedaD-328, прочитал первоначальную инструкцию:
    Пример 1: Реле на MegaD.
    Используем стандартный тип устройства - Актуатор бинарный.
    Создаем типовой канал MegaD, ставим галочку Запись.
    Привязываем канал к свойству state. На этом привязка закончена.
    Встроенные обработчики команд on/off будут переключать свойство state через привязанный канал.
    Команды к каналам привязывать не надо.
    В поле пишу команду и отправляю, но состояние порта не изменяется
    Сделал скины, укажите на ошибку, ещё где создаётся канал нет шестерни (отладчик) как на скинах в форуме.
    настройка меги.jpg настройка меги 1.jpg команда 1.jpg команда 2.jpg команда 3.jpg
    менял название канал одной цифрой, результата нет
    команда 4.jpg



  • @rodik А почему тип порта у вас Analog OUT? Для реле должен быть Digital Output.



  • @Lost результат тот же, и поле с командами где можно было вписать тут нет
    команда 5.jpg



  • @rodik Я сам с 5 версией еще толком не разбирался. Мутновато по сравнению с 4-кой. Попробуйте поставить четверку и попробовать с ней. А как разберетесь так и пятерку можно попробовать освоить.



  • @rodik А так нормальное описание по плагину MEGAD вот здесь https://intrahouse.ru/product/plugin-megad/



  • @Lost Спасибо!
    Буду ждать подсказки или какой то инструкции от админов.



  • Просьба к разработчиках дать хоть какую ту маломальскую инструкцию для MegaD в 5-й версии.



  • @rodik В настоящее время занимаемся движком плагинов. В том числе для Меги.
    Как закончим, опубликуем и сообщим.



  • Подскажите как правильно настроить выключатели, для MegaD-328 + реле.

    1. Установил плагин и запустил
    2. Создал устройства розетки
    3. Создал каналы для розеток
    4. Сделал экран, мнемосхему и привязал выходные каналы.

    Всё работает с планшета как положено, но не работают физические кнопки по управлению выходными каналами, если отключаю Мегу от интернета, тогда работают.

    1. Создал устройства выключатели
    2. Добавил новые каналы как входы.

    Кнопки также не работают

    1. Добавил в расширениях с разными вариантами команд

    Кнопки не работают.
    Какие действия неправильные?
    328_0.jpg 328_1.jpg 328_2.jpg 328_3.jpg



  • В вебе меги прописан сервер и порт?



  • @thunder_d 328_4.jpg
    дело в том что с планшета всё работает
    328_5.jpg



  • This post is deleted!


  • всё, разобрался, для того чтобы работали физические кнопки,
    нужно было прописать скрипт.
    328_6.jpg



  • Хочу одной кнопкой выключать одновременно выключать несколько нагрузок, создал на мнемосхеме кнопку, в этой ветке нашёл команду которая будет запускаться через кнопку, но пока не удаётся,
    настройки такие
    328_7.jpg
    в отладчике вот это, что можно увидеть где ошибка?

    16.07 22:34:18.951 megad4: 
    16.07 22:34:18.952 megad4: localhost => 192.168.1.34 HTTP GET /sec/?pt=8&cmd=get
    16.07 22:34:18.956 megad4: localhost <= 192.168.1.34  response: statusCode=200 contentType = text/html
    16.07 22:34:18.956 megad4:  body: ON
    16.07 22:34:18.956 IH: get [ { id: '8', value: '1' } ]
    set { Roz_328_8: { dval: 1, err: 0 } }
    16.07 22:34:19.041 IH: plugin command { unit: 'megad4',
      clid: 'EHomCfealNm5NKWvB2Zm3Q==',
      command: 'this.pluginCommand({unit:\'megad4\', command:{url:\'/sec/?cmd=11:2;12:2\', onResponse:[{id:"11",value:2},{id:"12",value:"TOGGLE"}]});',
      arg: 
       { parentId: '2',
         parentType: 'WIDGET_MNEMOSCHEMES',
         targetId: '10',
         targetType: 'button',
         targetValue: null,
         layoutId: [ '7' ],
         inputs: {},
         arg: 'this.pluginCommand({unit:\'megad4\', command:{url:\'/sec/?cmd=11:2;12:2\', onResponse:[{id:"11",value:2},{id:"12",value:"TOGGLE"}]});' },
      type: 'command' }
    16.07 22:34:19.042 megad4: command: 'this.pluginCommand({unit:\'megad4\', command:{url:\'/sec/?cmd=11:2;12:2\', onResponse:[{id:"11",value:2},{id:"12",value:"TOGGLE"}]});'
    16.07 22:34:19.151 megad4: 
    16.07 22:34:19.151 megad4: localhost => 192.168.1.34 HTTP GET this.pluginCommand({unit:'megad4', command:{url:'/sec/?cmd=11:2;12:2', onResponse:[{id:"11",value:2},{id:"12",value:"TOGGLE"}]});
    16.07 22:34:19.151 megad4: Http request error: Request path contains unescaped characters
    16.07 22:34:19.352 megad4: 
    


  • Вопрос отпал. Не достаток информации, приходится много искать на форуме, достаточно было команды

    /sec/?cmd=a:0
    

    чтобы выключить все выходы, подсмотрел в ответе от Alex_Jet, спасибо.



  • Всем привет!
    Разбираюсь сейчас с плагином системой Интрахаус и привязкой к МегаД.
    У меня к МегаД подключен частотник, по протоколу ModBus.
    Управлять в принципе им получаеться, отправляя команду плагину из сценария. ```
    this.pluginCommand({unit:'megad1', command:'/sec/?uart_tx=010601100000&mode=rs485'})

    Но хотелось бы получать от частотника и обратную связь.
    Для этого создал канал с произвольным именем, тип Аналоговый вход, и прописал в строку запроса состояния нужный запрос: 
    

    /sec/?uart_rx=1&mode=rs485&cmd=get

    Далее планировал его обработать с помощью обработки данных на плагине, чтобы из ответа контроллера выделить цифру.
    Однако, не могу получит данные в канал.
    Интрахауз дает запрос, получает ответ:
    

    13.11 21:29:41.239 megad1: localhost => 192.168.0.14 HTTP GET /sec/?uart_rx=1&mode=rs485&cmd=get
    13.11 21:29:41.248 megad1: localhost <= 192.168.0.14 response: statusCode=200 contentType = text/html
    13.11 21:29:41.249 megad1: body: 01|06|01|10|11|30

    одако этих данных ( 01|06|01|10|11|30 ) на канале не появляеться. 
    Подскажите, может я где то не так делаю?


  • @AlexMer, добрый день
    Канал МегаД принимает только результат в виде числа, body нужно предварительно обработать с помощью формулы обработки, сниппета или сценария.
    Чтение данных с uart разбиралось здесь:
    Там несколько вариантов предлагается, но смысл в том, что нужно сырые данные распарсить, а результат уже передать в устройство

    Один из вариантов - сценарий чтения данных со счетчика.

    const power = Device("SensorA", "Power"); 
    script({
      start() {
        this.pluginCommand({unit:'megad1', command:{url:'/sec/?uart_tx=010400030002&mode=rs485'}});
    
        // Следующий запрос через 100 мсек
        this.startTimer('T1', 0.1, 'getNext');
        // Взвести таймер на случай, если ответа от контроллера нет
        this.startTimer('T2', 2, 'onTimeout');
      },
    
      getNext() {
        // Передать запрос на megad1, ответ без обработки придет в сценарий (onResponse:'raw')
        this.pluginCommand({unit:'megad1', command:{url:'/sec/?pt=7&cmd=get', onResponse:'raw'}}, 'getResponse');
      },
    
      getResponse(body) {
        this.log('getResponse body= '+body);
       
        if (body.includes('CRC Error')) {
          this.log('CRC Error'); // Контроллер вернул ошибку CRC
          this.exit();
        }
    
        // 01|03|02|08|a1 - в таком виде ожидается ответ
        const arr = body.split("|");
        if (arr && arr.length > 4) {
          const val = parseInt(arr[3]+arr[4], 16);
          this.assign(power,"value",val/10000 );
        } else {
          this.log('Не удалось извлечь значение из строки: '+ body); // Данные получены, но парсинг неудачен
        }
        this.exit();
     },
    
      onTimeout() {
        this.log('Истек таймаут, ответ от megad не получен');
        this.exit();
      }
    });
    


  • Спасибо за подсказку, принцип понял, подправил код под себя, все работает.


Log in to reply