Плагин MegaD
-
@ted
Добрый день!
Да, действительно ПоправилиНа github выложена новая версия плагина https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.17
-
У устройства megaD есть режим термостат. Как сделать управление этим режимом.
То есть изменять значение в этом режиме по нажатию кнопки. Вверх добавить температуру вниз убавить. Ну и с вашего примера сценария управления тёплыми полами осталось управление.
-
@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", ...}. Т.е. при передачи параметров в сценарий вместо плюса передается пробел. Можно как-то решить эту проблему, или помогут только костыли. Типа, в сценарии обрезаем пробел с помщью функции такой-то, вручную добавляем "плюс" и т.д. Заранее спасибо
-
подскажите причину почему intrahouse не видит статуса портов?
-
@amgstone, как будто не привязано устройство к каналу, хотя оно привязано. У меня у всех каналов (кроме DS2413), к которым привязано устройство, отображается либо 0, либо 1. А вот для DS2413 если канал выключен, то вместо 0 отображается "-".
Попробуйте перезапустить плагин или перепривязать устройства.
-
@Alex_Jet на одной меге пересоздал устройство, делал принтскрин, помогло, у всех устройствах появился статус, но на 2 мегах там де висят вентиляторы, пересоздавал но статус "-"
-
@amgstone, так пересоздавали или перепривязывали устройства? Мне кажестя, что достаточно будет перепривязать - отвязать и сохранить канал, снова привязать нужное устройство и сохранить.
А вот где глюк - это, вероятно, поможет разобраться @intrapro
-
Добрый день! Для начала нужно попробовать вентилятор включить.
Хотелось бы еще увидеть настройки канала.
Кстати, какой порт используется? Если это обычный порт, то надо посмотреть, что приходит в cmd=all
И учитывайте, что оперативного обновления таблички в PM нет
-
@intrapro, почему нет оперативного обновления? У меня как только что-то меняется или проходит первый cmd=all, то все значения обновляются!
-
@Alex_Jet перепривязал, но ничего не помогло.
Включение: 11.02 19:22:37.064 IH: command [ { dn: 'VENT2', prop: 'on' } ]
11.02 19:22:37.066 IH: send { type: 'act',
data:
[ { chan: '19',
id: '19',
set: '',
ks: 0,
desc: 'DO',
weight: 1,
reqsek: 0,
kh: 0,
req: '/%pwd%/?pt=%adr%&cmd=get',
value: 1,
script: '',
restore: true,
usescript: '',
nofb: false,
command: 'on' } ] }Выключение: 11.02 19:22:39.266 IH: command [ { dn: 'VENT2', prop: 'off' } ]
11.02 19:22:39.267 IH: send { type: 'act',
data:
[ { chan: '19',
id: '19',
set: '',
ks: 0,
desc: 'DO',
weight: 1,
reqsek: 0,
kh: 0,
req: '/%pwd%/?pt=%adr%&cmd=get',
value: 0,
script: '',
restore: true,
usescript: '',
nofb: false,
command: 'off' } ] }