NEWS
Скрипт для счетчика Меркурий 230
-
Инструкция по компиляции прошивки espeasy с плагином Меркурий 230.
1. Ставим atom по инструкции: https://letscontrolit.com/wiki/index.ph … Platformio
2. Скачиваем последний релиз espeasy https://github.com/letscontrolit/ESPEasy/releases
3. Разархивируем архив релиза, в папку src записываем файл https://github.com/Andrey2509/ESPEasy/b ... ury230.ino
4. В файле platformio.ini раскомментировать тип прошивки, например: env_default = normal_ESP8266_4096
5. В файле define_plugin_sets.h в секции #ifdef PLUGIN_SET_STABLE (соответствует прошивке normal) добавляем строку:
#define USES_P220 //Mercury 230
6. Компилируем.
Так как данных много, а в espeasy жёсткое ограничение по количеству значений для каждого плагина, в плагине меркурий 230 вшита отправка данных только по mqtt. При этом Надо обязательно создать подключение в настройках "Controllers" (OpenHAB MQTT).
На стороне иоброкера парсим mqtt строку в js:
on({id: "mqtt.0.Mercury230.Merc_data_json", change: 'any'}, function (obj) { var myjson=JSON.parse(obj.state.val); setState("javascript.0.Uv1",myjson['Uv1']); setState("javascript.0.Uv2",myjson['Uv2']); setState("javascript.0.Uv3",myjson['Uv3']); setState("javascript.0.Ia1",myjson['Ia1']); setState("javascript.0.Ia2",myjson['Ia2']); setState("javascript.0.Ia3",myjson['Ia3']); setState("javascript.0.Pw_total",myjson['Pw0']); setState("javascript.0.Pw1",myjson['Pw1']); setState("javascript.0.Pw2",myjson['Pw2']); setState("javascript.0.Pw3",myjson['Pw3']); setState("javascript.0.E_T1",myjson['T1']); setState("javascript.0.E_T2",myjson['T2']); }); on({id: "mqtt.0.Mercury230.Merc_stat_json", change: 'any'} || {id: "javascript.0.Energy_tarif", change: 'any'}, function (obj) { var myjson=JSON.parse(getState("mqtt.0.Mercury230.Merc_stat_json").val); var tarrif=getState("javascript.0.Energy_tarif").val; if (JSON.stringify(myjson).length>24) { var table_mer230 = [{"month":1,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":2,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":3,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":4,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":5,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":6,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":7,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":8,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":9,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":10,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":11,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}, {"month":12,"T1":0,"T2":0,"T1_potr":0,"T2_potr":0,"Total":0}]; console.log('start'); for(var i=1;i<13;i++) { table_mer230[i-1]["month"]=i; table_mer230[i-1]["T1"]=myjson['M'+i+'T1'];; table_mer230[i-1]["T2"]=myjson['M'+i+'T2']; table_mer230[i-1]["T1_potr"]=Math.round(myjson['M'+i+'T1']*tarrif); table_mer230[i-1]["T2_potr"]=Math.round(myjson['M'+i+'T2']*tarrif/2); table_mer230[i-1]["Total"]=Math.round(myjson['M'+i+'T1']*tarrif)+Math.round(myjson['M'+i+'T2']*tarrif/2); } //console.log('table='+JSON.stringify(table_mer230)); setState("javascript.0.History_mer230", JSON.stringify(table_mer230)); } });
-
Инструкция по компиляции прошивки espeasy с плагином Меркурий 230.
1. Ставим atom по инструкции: https://letscontrolit.com/wiki/index.ph … Platformio
2. Скачиваем последний релиз espeasy https://github.com/letscontrolit/ESPEasy/releases
3. Разархивируем архив релиза, в папку src записываем файл https://github.com/Andrey2509/ESPEasy/b ... ury230.ino
4. В файле platformio.ini раскомментировать тип прошивки, например: env_default = normal_ESP8266_4096
5. В файле define_plugin_sets.h в секции #ifdef PLUGIN_SET_STABLE (соответствует прошивке normal) добавляем строку:
#define USES_P220 //Mercury 230
6. Компилируем.
Так как данных много, а в espeasy жёсткое ограничение по количеству значений для каждого плагина, в плагине меркурий 230 вшита отправка данных только по mqtt. При этом Надо обязательно создать подключение в настройках "Controllers" (OpenHAB MQTT).
Добрый день, Сергей.
Ваш плагин для ESPEASY очень понравился, но у меня не получилось его запустить.
Все сделал по пунктам, прошил и достучался до espeasy. Подключил его к домашнему роутеру и даже но MQTT что то увидел НО главное включение плагина MERCURY 230 не происходит. Т.е. при выборе плагина, в его настройках указываю:
Device: Mercury 230
Name: d1
Enabled: YES
Sensor
1st GPIO: GPIO 12
2nd GPIO: GPIO 14
Read month stat: NO
Start time to read stat for every month, hour: 0
Start time to read stat for every month, min: 0
End time to read stat for every month, hour: 0
End time to read stat for every month, min: 0
Select MQTT controller to publish data in json format : 1
Note: MQTT topic to publish runtime data is: "Mercury230/Merc_data_json"
Note: MQTT topic to publish history data is: "Mercury230/Merc_stat_json"
Note: Interval (below) must be shorter then period between end and start
Data Acquisition
Send to Controller YES
❶
Interval: 5 [sec]
Давлю SUBMIT потом возвращаюсь в DEVICES и вижу что у меня напротив плагина Меркурий в столбце ENABLED стоит Х (не включено)
В MQTT ничего не видно
что делать? `
-
В дополнение у меня Nodemcu V3
-
В дополнение у меня Nodemcu V3 `
Плагин автодисейблиться может по причине:
1.В espeasy должен быть создан MQTT контроллер в соответствующей закладке (тестировал только тип Openhab).
2. Не правильно указаны GPIO RX/TX или неправильно подключен к конвертору RS232/RS485.
Я использую такой:
https://ru.aliexpress.com/item/Single-C … 57602.html
Напрямую к счётчику подключать нельзя!
-
Андрей, большое спасибо за быстрый отзыв.
У меня такой же модуль 485.
Все заработало.
Через 6 часов перестал работать опрос, перезагрузка (отключением питания) помогла
Сейчас опять стоит испытывается.
Скажите получилось победить утечку памяти?
В остальном у меня все передается, правда мне нужны были прямые топики в MQTT - переделал передачу отдельными командами.
Иногда не успевает передать. Перешел на Domoticz MQTT и убрал все задержки - стало лучше но некоторые параметры не проходят. Но это не проблема - у меня частота передачи сейчас стоит 10с (на 5с больше глюков). На верху у меня RapidScada с драйвером MQTT.
В любом случае спасибо за Вашу работу!!!
Для меня espeasy новое и с титаном не работал поэтому пришлось помучатся.
-
Скажите получилось победить утечку памяти? `
Та версия, которая на github (ссылка выше) - без утечки памяти.Проверяется просто - в espeasy ставится девайс "Generic - System Info ". Индикатор "Free RAM". далее штатно передаём через mqtt иоброкеру и сохраняем историю. У меня uptime уже 22 дня, память не уменьшается.
Были короткие uptime до замены БП, esp(nodemcu) оказалась очень чувствительна и к самому БП, и к проводам подводящим питание.
Сейчас БП и питание RS485 конвертора выставил ровно на 5.0 Вольт.
Частота запросов 10 с - на ней не тестировал, у меня 60 сек.
-
Обновил версию на github для espeasy.
Изменения:
-замена опасных функций (с указателями на данные) на безопасные,
-поддержка hardware serial (необходимо убрать галку использования serial самой espeasy),
-статистика передаётся в 2-х топиках: по месяцам и по предыдущему дню,
-период сбора статистики потребления задаётся в минутах, независимо от сбора оперативных данных.
-
Добрый день! Как вы считаете, реально переделать скетч под software serial или hardware? Хочу использовать в связке с Меркурий 231 (с ИК портом) - ествественно, через переходник...
-
Ау..есть кто живой?
-
Всем привет!
Пробовал заводской прогой опросить Меркурий 230, все получилось.
Теперь хочу запустить опрос счетчика Меркурий 230 через скрипт, что выше приведен.Копипастом не заработал...
Сейчас стоит Script Ingine 4.1.12.
В настройках прописал пакет serialport. Перезапустил службу, так же пробовал в ручную ставить через npm install serialport.В редакторе JS подсвечивает ошибки
Подскажите что не так делаю, и как заставить редактор видеть (установить) недостающие пакеты...
В ручную пробовал в папку iobroker ставить, ничего не меняется...