Плагин MegaD
-
@sergeyygr Добрый день.
Сегодня сделали эмуляцию ответов от megad на запросы
'/sec/?uart_tx=010400000001&mode=rs485' (так как у нас такого железа нет)Скопировали Ваш сценарий, вот что видим в отладчике:
21.08 11:29:14.662 exec function nextParam 21.08 11:29:14.663 plugincCommand { unit: 'megad1', command: { url: '/sec/?uart_tx=010400000001&mode=rs485' } } 21.08 11:29:14.663 start timer T1 for 0.1 sek 21.08 11:29:14.664 start timer T2 for 1 sek 21.08 11:29:14.764 Done timer T1 21.08 11:29:14.765 exec function getRx 21.08 11:29:14.766 plugincCommand { unit: 'megad1', command: { url: '/sec/uart_rx=1&mode=rs485', onResponse: 'raw' } } 21.08 11:29:15.139 exec function getResponse 21.08 11:29:15.139 assign PZEM_Volt.value=223.5 21.08 11:29:15.672 Done timer T2 21.08 11:29:15.673 exec function nextParam 21.08 11:29:15.673 plugincCommand { unit: 'megad1', command: { url: '/sec/?uart_tx=010400030002&mode=rs485' } } 21.08 11:29:15.674 start timer T1 for 0.1 sek 21.08 11:29:15.674 start timer T2 for 1 sek 21.08 11:29:15.774 Done timer T1 21.08 11:29:15.775 exec function getRx 21.08 11:29:15.776 plugincCommand { unit: 'megad1', command: { url: '/sec/uart_rx=1&mode=rs485', onResponse: 'raw' } } 21.08 11:29:15.943 exec function getResponse 21.08 11:29:15.943 assign PZEM_Watt.value=2.237
То есть сценарий работает постоянно и циклически опрашивает.
Возможно, проблема в том, что для устройств остались активны сниппеты, и значение сбрасывается? Также устройства не должны быть привязаны к каналу.Если останется необходимость, можно подключиться удаленно.
-
Пользователь @sergeyygr написал в Плагин MegaD:
Привязка к конкретному каналу MegaD нет. Присутствует лишь стандартная строка запроса, но период опроса стоит «0». Может строку запроса удалить и оставить поле пустым?
Имеется в виду для плагина в целом? Опрос состояния всех устройств? Нет, это не должно никак влиять. У Вас другие входы-выходы работают с этим контроллером? Можно посмотреть отладчик плагина - там должны быть запросы от сценария.
Возможно, для тестирования время нужно увеличить - вместо 1 сек 5 секВ устройствах «Метод получения значения» стоит «Вычисляется сценарием».
Это не важно, можно оставить Стандарт
-
@sergeyygr, знака вопроса не хватало! Бывает, глаз замылился. А наш эмулятор проглотил Здорово, что получилось!
В сценарии есть еще глючок - нужно считать только до 6nextParam() { this.step = this.step < 6 ? this.step+1 : 1; // было this.step < 7 this.getTx(); }
А интервал 1 сек нормально отрабатывает?
-
Пользователь @sergeyygr написал в Плагин MegaD:
Спасибо большое!
Да не за что. Извините за опечатку
А можно в моем случае как-то корректировать значение кВт/час?
Что имеете в виду?
-
Пользователь @sergeyygr написал в Плагин MegaD:
Сейчас показания 3кВт/час, а надо установить 31кВт/час. Что бы показания совпадали со счетчиком на вводе.
Можно просто добавить смещение в сценарии
case 5: this.assign(kWh,"value", 28 + val/10 ); return;
Более универсально - добавить свойство устройству и редактировать его через интерфейс (правое меню устройства)
const kWh = Device("PZEM_kWh", "Мощность накопленная ", [ {"name":"offset", "note":"Базовое значение мощности", "type":"number", "val":28} ]); ... case 5: this.assign(kWh,"value", kWh.getParam("offset") + val/10 );
-
Подскажите как перевести показания АЦП порта меги в реальные показания, в плагине есть графа формула расчета но что то мне подсказывает что это не то.
-
Это сообщение удалено!
-
Подскажите как применить формулу для расчета показаний АЦП меги вот формула (840-х/840-410)*100=у где х-показания АЦП а y-в данном случае влажность в % ?
-
Забыл 840 это 0% влажности 420 это 100% из показаний ацп.
-
@aleks-zonov, другой пользователь о подобном уже спрашивал.
Ссылка на ab-log по расчету реального входного напряжения АЦП - тут
Ссылка на пример формулы расчета входого значения плагина megad - тут
-
Пользователь @Alex_Jet написал в Плагин MegaD:
@aleks-zonov, другой пользователь о подобном уже спрашивал.
Ссылка на ab-log по расчету реального входного напряжения АЦП - тут
Ссылка на пример формулы расчета входого значения плагина megad - тутНа ab-log перечитал там все вдоль и поперек в php все работало у меня, а вот с формулой расчета как ее правильно вставить мучялся вчера весь день вроде что-то получилось надо бы как-то в блог выложить чтобы другим легче было.
-
@aleks-zonov, так что-то получилось или нет? В вашем случае "Формула расчета входного значения" должна выглядеть примерно так:
( ((840 - Number(value))/840) - 410 ) *100
Проверить можете только вы, открыв отладчик плагина и посмотрев что приходит и что присваивается устройству.
-
Пользователь @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 состояния - можно все состояния визуализировать как хотите.
У меня состояние плагинов отображается в виджете для ПК "Строка состояния":