Плагин MegaD
-
@Alex_Jet спасибо, все получилось))))
-
@Alex_Jet а нету у Вас сценария если мега недоступна то уведомлять в мобильное приложение?
-
@amgstone, мультисценарий для уведомлений в Телеграм о проблемах с плагинами:
/** * @name MegaD - уведомления от плагинов * @desc Сообщение в Telegram о проблемах с плагинами * @version 4 */ const dev = Device("SensorD"); startOnChange(dev); script({ start() { let string = ""; switch(dev.value) { case 0: string = "возникла ошибка"; break; case 1: string = "остановлен"; break; case 2: string = "запущен"; break; } this.info("telegram", "OWNER", dev.id+ ": " +string+ "; error - " +dev.error); }, GetDate() { return new Date().toLocaleString('ru-RU'); } });
-
@Alex_Jet Отключил сетевой кабель и посыпались сообщения, Stop и Run каждые 5 секунд, хотя кабель был отключен. Как сделать чтобы сообщение приходило 1 раз когда MegaD зависла и второе сообщение что работа восстановлена?
-
@amgstone, 1. Увеличьте время перезапуска плагина; 2. MegaD не зависает! Скорее будет проблема с патчкордом или коммутатором; 3. Сценарий по сути для отслеживания работы плагина (замечено, что почему-то иногда MegaD не отвечает на какой-нибудь запрос в течении более 30 секунд и плагин рестартует); 4. В состояниях плагина MegaD есть недоработка, в Berry это лучше работало, надеюсь разработчики когда-нибудь допилят этот момент.
-
Здравствуйте. Помогите пожалуйста разобраться с устройством подключенном к megad2561 по modbus К портам P32 RX
P33 TX подключен счетчик, dds238-1 zn ( ссылка на этот материал с сайта megad https://ab-log.ru/smart-house/ethernet/megad-rs485 )
Чтобы работать с этим счетчиком, нужно отправить 192.168.0.16/sec/?uart_tx=010300060001&mode=rs485 и принять запрос 192.168.0.16/sec/?uart_rx=1&mode=rs485
Но вот беда. Как эти значения получать в intrahouse ?
Как мне посоветовал Alex_Jet , попытаться сделать через сценарий.
Я создал датчик, настроил ( не знаю на сколько правильно ) в плагине megad, попытался сделать сценарий, но что дальше?
Помогите пожалуйста разобраться, я уже запутался.
Фото с моими настройками прилагаю.
-
@DM19, увы но придется распутаться и начать изучать js. Блок-схемы в iH только для очень простых случаев! Чтобы общаться со счетчиком надо кодить сценарий.
Вот что нужно использовать вам - из сценария давать команду на MegaD через плагин megad и анализировать ответ на уровне сценария. Собственно пример сценария уже приведен, нужно вставить свои данные.
-
@intrapro, приветствую! Походу дела в cherry никто не пользуется отправкой команд на контроллер MegaD кнопкой). Хотел реализовать одну задачу, но не работает... в отладчике плагина вот такой лог!
08.11 02:22:52.630 IH: plugin command { unit: 'megad10', clid: 'h/lwwEfrY7xK1iJkLSsKUA==', command: 'http://192.168.11.41/sec/?cmd=26:0', type: 'command' } 08.11 02:22:52.633 megad10: command: 'http://192.168.11.41/sec/?cmd=26:0' 08.11 02:22:52.776 megad10: 08.11 02:22:52.777 megad10: localhost => 192.168.11.41 HTTP GET http://192.168.11.41/sec/?cmd=26:0 08.11 02:22:52.809 megad10: localhost <= 192.168.11.41 response: statusCode=401
Если это же делать через плагин http, то в ответе будет Done. То же если набрать url в браузере)
-
Пользователь @Alex_Jet написал в Плагин MegaD:
@intrapro, приветствую! Походу дела в cherry никто не пользуется отправкой команд на контроллер MegaD кнопкой).
Я пользуюсь. Отлично работает.
Это ресет розетки, к которому подключено коммуникационное оборудование.
Если не послать команду на мегу целиком, то при выключении розетки мега потеряет сеть, и розетку будет уже не включить.
А так работает отлично. Мега берет команду, выключает розетку, теряет сеть, включает розетку, снова регистрируется в сети, продолжает работать.
-
@Alex_Jet, добрый день!
Странно, конечно. Судя по логу команда доходит, мега отвечает. Но происходит ошибка авторизации (401)? Может, символ какой вставился непечатный?
-
@intrapro, проверил. Так себя ведет MegaD если в "Команда/Дополнительный параметр" вставляешь полный url (http://192.168.11.41/sec/?cmd=26:0) или только команды и произвольные (cmd=26:0). Поэтому нужно использовать следующий формат - /sec/?cmd=26:0
-
Там все логично.
На каждую мегу свой экземпляр плагина.
В настройках кнопки ссылка на конкретный плагин, и IP адрес нужной меги есть в его свойствах.
-
@Erik, не очень логично. В настройках плагина есть и пароль (по умолчанию sec). Поэтому было бы логично плагину передавать только саму команду - cmd=26:0;p10;26:1...
-
@Alex_Jet Да. Тут согласен.
-
@intrapro
Добрый день.
Отказался от pzem, подключился к счетчику меркурий 200.02, получаю сейчас данные в десятичном виде (|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00).
Помогите пожалуйста переделать сниппет. Формат запроса и ответа остался прежний. Вероятно надо поменять
// 01|03|02|08|a1 - в таком виде ожидается ответ
const arr = data.split("|");
if (arr && arr.length > 4) {
const val = parseInt(arr[3]+arr[4], 16);
callback(null, val/10000);Сниппет такой
module.exports = callback => { const http = require('http'); http.get('http://192.168.1.151/sec/?uart_tx=010400030002&mode=rs485'); setTimeout(nextReq, 100); // 100 ms function nextReq() { http.get('http://192.168.1.151/sec/?uart_rx=1&mode=rs485', res => { let rawData = ''; res.on('data', chunk => { rawData += chunk; }); res.on('end', () => { const data = rawData; if (data.includes('CRC Error')) { callback('CRC Error'); // Контроллер вернул ошибку CRC return; } // 01|03|02|08|a1 - в таком виде ожидается ответ const arr = data.split("|"); if (arr && arr.length > 4) { const val = parseInt(arr[3]+arr[4], 16); callback(null, val/10000); } else { callback('Не удалось извлечь значение из строки: '+ data); // Данные получены, но парсинг неудачен } }); }); } };
-
Это сообщение удалено!
-
@sergeyygr, добрый день!
А какое показание должно получиться в результате?(|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00 => ??
В прежнем варианте брали четвертый и пятый байты
-
Пользователь @intrapro написал в Плагин MegaD:
@sergeyygr, добрый день!
А какое показание должно получиться в результате?(|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00 => ??
В прежнем варианте брали четвертый и пятый байты
Полностью ответ выглядит так
00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00
1 байт стартовый
234 - адрес счетчика
5 - код запроса , это все hex
Далее показания по тарифам как есть. Т1 - 024174,58. Т2 - 008445,92. Т3 - 000000,00. Т4 - 000000,00
-
Пользователь @sergeyygr написал в Плагин MegaD:
Полностью ответ выглядит так
00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00
1 байт стартовый
234 - адрес счетчика
5 - код запроса , это все hex
Далее показания по тарифам как есть. Т1 - 024174,58. Т2 - 008445,92. Т3 - 000000,00. Т4 - 000000,00Для варианта 00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00 так:
Но каждый тариф нужно будет отдельно запрашиватьconst arr = data.split("|"); if (arr && arr.length > 8) { const t1= parseInt(arr[5]+arr[6]+arr[7]+arr[8], 10); //2417458 callback(null, t1/100); // const t2= parseInt(arr[9]+arr[10]+arr[11]+arr[12], 10); //844592 // callback(null, t2/100); }
Если же в начале тоже есть |, приходит |00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00, то индекс сдвигается на 1:
const t1= parseInt(arr[6]+arr[7]+arr[8]+arr[9], 10); //2417458
-
Пользователь @intrapro написал в Плагин MegaD:
Пользователь @sergeyygr написал в Плагин MegaD:
Полностью ответ выглядит так
00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00
1 байт стартовый
234 - адрес счетчика
5 - код запроса , это все hex
Далее показания по тарифам как есть. Т1 - 024174,58. Т2 - 008445,92. Т3 - 000000,00. Т4 - 000000,00Для варианта 00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00 так:
Но каждый тариф нужно будет отдельно запрашиватьconst arr = data.split("|"); if (arr && arr.length > 8) { const t1= parseInt(arr[5]+arr[6]+arr[7]+arr[8], 10); //2417458 callback(null, t1/100); // const t2= parseInt(arr[9]+arr[10]+arr[11]+arr[12], 10); //844592 // callback(null, t2/100); }
Если же в начале тоже есть |, приходит |00|02|4c|f3|27|02|41|74|58|00|84|45|92|00|00|00|00|00|00|00|00, то индекс сдвигается на 1:
const t1= parseInt(arr[6]+arr[7]+arr[8]+arr[9], 10); //2417458
Спасибо большое, все работает!!!