Плагин MegaD



  • Здравствуйте! устройство megad-2w (3 шт.). При формировании запроса плагин выдает в дебагере:
    localhost => 192.168.0.14 HTTP GET /sec/?cmd=32A:0&adr=92af39000000.
    а в инcтрукции написано что запрос должен быть : /sec/?cmd=32A:0&addr=92af39000000 (с двумя d);



  • @ted, интересно! У меня тоже выдает так:

    16.01 20:15:36.436 megad1: localhost => 192.168.11.21 HTTP GET /sec/?cmd=35A:1&adr=9a2938000000
    

    При этом канал включается и выключается!!! Хотя в описании написано так - Если к шине подключено несколько модулей, то для включения или выключения всех каналы "А" или "B" всех модулей достаточно исключить из запроса параметр "addr".
    Поэтому раз в команде есть adr, то контроллер его просто не видит...в итоге дает команду общую. А у меня на шине висит всего лишь один MegaD-2W



  • @ted
    Добрый день!
    Да, действительно 😞 Поправили

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



  • У устройства megaD есть режим термостат. Как сделать управление этим режимом.
    Screenshot_3.jpg

    То есть изменять значение в этом режиме по нажатию кнопки. Вверх добавить температуру вниз убавить. Ну и с вашего примера сценария управления тёплыми полами осталось управление.

    Screenshot_2.jpg



  • @cd1room, MegaD сделана так, чтобы без участия сервера с помощью контроллера можно было автономно выполнять какие-либо действия (включение света, управление термостатом и т.п.). Опять же - только в том случае если сервер отключен (по питанию, отсоединен патчкорд) или он по http не отвечает контроллеру! Поэтому все локальные функции контроллера - фактически являются байпасом сервера!
    Считаю, что сервером намного удобнее рулить теми или иными вещами. Например, реализовать тот же термостат используя любой датчик контроллера и любой выход контроллера.
    Хотя функционал "удаленного" изменения уставки термостата заложен его создателем, но не вижу смысла его применения когда для УД используется сервер.
    Вот элементарный мультисценарий, который завязан на уставки температурных датчиков:

    const heater = Device("ActorD", "Нагреватель");
      
    const dt = Device("SensorA", "Датчик температуры", [
      {"name":"hist", "note":"Гистерезис включения/отключения нагревателя, °C", "type":"number", "val":0.15}
      ]);
    const dt_ext = Device("SensorA", "Датчик уличной температуры");
    const dt_ext_rez  = Device("SensorA", "Датчик уличной температуры (резервный)");
    
    startOnChange(dt);
    
    script({
        ust_min: 0,
        ust_max: 0,
        text: "",
        sensor_ext: '',
    
        check() {
          //Определение уставок
          this.ust_min = dt.setpoint - dt.getParam("hist");
          this.ust_max = dt.setpoint + dt.getParam("hist");
          
          //Проверка работоспособности датчика уличной температуры
          //При его неисправности - работаем по резервному датчику
          if(!dt_ext.isError()) this.sensor_ext = dt_ext;
          else this.sensor_ext = dt_ext_rez;
    
          //Проверка основных условий
          return heater.auto && ( heater.isOff()&&(dt.value <= this.ust_min)&&(this.sensor_ext.value < this.sensor_ext.setpoint) || heater.isOn()&&(dt.value >= this.ust_max) );
        },
        
        start() {
          if(heater.isOff()) heater.turnOnSaveAuto();
          else heater.turnOffSaveAuto();
        }
    });
    

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



  • @intrapro спасибо !



  • @intrapro, очень хочу чтобы вы учли мои выкладки по тем же DS2413 в этом посте. А также допилили чтобы в каналах плагина OFF-состояние для каналов DS2413 отображалось 0, а не "-" как сейчас. И да, почему-то по этим каналам нет "онлайн"данных в столбце "Значение с канала".



  • @Alex_Jet, конечно, мы имеем в виду ваши замечания и предложения!
    Но в данный момент, как Вы знаете, доработка плагинов заморожена. Исправляем только баги, как в предыдущем случае, или функционал, без которого не обойтись.
    Новая версия плагина будет использовать новое API сервера и иерархическую модель каналов.

    И да, почему-то по этим каналам нет "онлайн"данных в столбце "Значение с канала".

    Вот это не понятно. То есть в устройство данные приходят, а в каналах не отображаются?



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

    Вот это не понятно. То есть в устройство данные приходят, а в каналах не отображаются?

    Да, именно так. Включаю канал, но 1 в столбце не появляется (появится только если переключиться на Отладчик/Расширения/Манифест и обратно на Каналы). Выключаю - то же самое, но при этом когда выключено отображается "-".
    Раз все снова будет переписываться (не знал о ваших дальнейших планах по плагинам, ожидаю только пятерку), то можем это считать не критичным багом.



  • @Alex_Jet Тогда как второй вопрос. Как можно по нажатию кнопки добавлять или убавлять температуру как на картинке выше? Нет ли у вас примера?



  • @cd1room, читаем тут. Надо сделать кнопку (button) в веб-интерфейсе, чтобы при нажатии на нее срабатывал выбранный сценарий с параметрами, например, {"ip":"192.168.11.11","act":"up"}

    Создать сценарий с таким кодом (не проверял, написал только что):

    script({
      //Параметры управления
      unit: "megad1",
      port: 24,
      temp: 20,
      max: 50,
      min: 10,
      step: 1,
    
      start(param) {
        const obj = JSON.parse(param);
           
        //Формирование команд управления
        if(obj.ip == "192.168.11.11") {
          if(obj.act == "up") {
            if(this.temp < this.max) this.temp = this.temp + this.step;
            else this.temp = this.max;
          }
          if(obj.act == "down") {
           if(this.temp > this.min) this.temp = this.temp - this.step;
           else this.temp = this.min;
          }
        }
    
        //Отправка команды плагину HTTP
        this.SendCommandToMegaD();
      },
      
      SendCommandToMegaD() {
        this.pluginCommand({unit: this.unit, command: "/sec/?pt=" +this.port+ "&misc=" +this.temp});
      }
    });
    


  • Здравствуйте. Подскажите пожалуйста как в IH настроить megad2561 с электросчетчиком по rs485 если следовать этой статье https://ab-log.ru/smart-house/ethernet/megad-rs485​ . За ранее большое спасибо!



  • @artem521, думаю все просто - из сценария соответствующему плагину нужно подать две команды - /?uart_tx=0103000C0001&mode=rs485 и /?uart_rx=1&mode=rs485 (скорее всего с небольшой паузой).
    Чтобы по последней команде получить ответ от контроллера нужно использовать то, что разработчики описали ТУТ - см. "// Анализируем body ...."



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

    @artem521, думаю все просто - из сценария соответствующему плагину нужно подать две команды - /?uart_tx=0103000C0001&mode=rs485 и /?uart_rx=1&mode=rs485 (скорее всего с небольшой паузой).
    Чтобы по последней команде получить ответ от контроллера нужно использовать то, что разработчики описали ТУТ - см. "// Анализируем body ...."

    Спасибо большое за информацию;)



  • Коллеги, прошу совета. Имею контроллер MegaD-2561 с установленным модулем SIM800 для использования в качестве sms-шлюза. При входящем sms запускается сценарий, в котром проверяется номер телефона и текст смс и выполняются определенные действия. Но есть проблема. В отладчике плагина в ответ на входящий запрос  /megad1?sms_phone=+79000001234&sms_text=arm пишется start scene..., затем arg {"sms_phone":" 79000001234", ...}. Т.е. при передачи параметров в сценарий вместо плюса передается пробел. Можно как-то решить эту проблему, или помогут только костыли. Типа, в сценарии обрезаем пробел с помщью функции такой-то, вручную добавляем "плюс" и т.д. Заранее спасибо



  • alt text
    подскажите причину почему intrahouse не видит статуса портов?



  • @amgstone, как будто не привязано устройство к каналу, хотя оно привязано. У меня у всех каналов (кроме DS2413), к которым привязано устройство, отображается либо 0, либо 1. А вот для DS2413 если канал выключен, то вместо 0 отображается "-".
    Попробуйте перезапустить плагин или перепривязать устройства.



  • @Alex_Jet на одной меге пересоздал устройство, делал принтскрин, помогло, у всех устройствах появился статус, но на 2 мегах там де висят вентиляторы, пересоздавал но статус "-"
    alt text



  • @amgstone, так пересоздавали или перепривязывали устройства? Мне кажестя, что достаточно будет перепривязать - отвязать и сохранить канал, снова привязать нужное устройство и сохранить.
    А вот где глюк - это, вероятно, поможет разобраться @intrapro



  • Добрый день! Для начала нужно попробовать вентилятор включить.
    Хотелось бы еще увидеть настройки канала.
    Кстати, какой порт используется? Если это обычный порт, то надо посмотреть, что приходит в cmd=all
    И учитывайте, что оперативного обновления таблички в PM нет 😞


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