@aleks-zonov извиняюсь, не заглядывал давно, думал вообще не живая ветка. Вот мой рабочий вариант. Иногда проверяю работу через вызов плагина, но там без изменений, может я чего то упускаю, но раскопать не получилось и разрабы не комментируют. А судя по коду в плагине Megad, в моем скрипте делается так же, как и через плагин. // переменные должны совпадать с id на устройстве const voltage = Device("Mercury_200"); const current = Device("Mercury_200"); const power = Device("Mercury_200"); const rawError = Device("Mercury_200"); script({ boot() { return true; // Сценарий будет запускаться на старте и всегда будет активным }, start() { //this.startTimer('T2', 5, 'getMercury'); this.getMercury(); //this.startTimer('T2', 5, 'onTimeout'); }, getMercury() { require('http').get('http://192.168.2.14/sec/?uart_tx=000816F063&mode=rs485', res => { //C38D - посчитанный CRC16 для клнкретного счетчика if (res.statusCode == 200 ) { //this.log('Start sleep 100ms'); для проверки создаваемой задержки const date = Date.now(); let currentDate = null; do { currentDate = Date.now(); } while (currentDate - date < 100); // ждем XXX ms //this.log('End sleep 100ms'); // проверка созданной задержки let rawData =''; require('http').get('http://192.168.2.14/sec/?uart_rx=1&mode=rs485', res => { res.on("data", chunk => { rawData += chunk; }); res.on('end', () => { const arr = rawData.split("|"); //res.resume(); if (rawData.includes('CRC Error')) { this.log('rawData error= '+rawData); rawError.assign("rawError", rawData); return; } else { const volt = Number(arr[5]+arr[6])/10; const tok = Number(arr[7]+arr[8])/100; const watt = Number(arr[9]+arr[10]+arr[11]); const volts = String(arr[5]+arr[6])/10; voltage.assign("volt", volt); //require('http').get('http://192.168.2.14/sec/?pt=29&disp_cmd=1&row=1'); // вывод показаний на OLED //require('http').get('http://192.168.2.14/sec/?pt=29&disp_cmd=1&row=2'); //require('http').get('http://192.168.2.14/sec/?pt=29&disp_cmd=1&row=3'); //require('http').get('http://192.168.2.14/sec/?pt=29&text=String((arr[5]+arr[6])/10)'); current.assign("current", tok); power.assign("power", watt); this.log('getResponse body= '+rawData+ ' Volt='+(arr[5]+arr[6])/10 ); //this.exit(); } }); }); } else { res.resume(); this.log('Return code: '+res.statusCode); rawError("rawError", res.statusCode); voltage.assign("volt", 0); current.assign("current", 0); power.assign("power", 0); //return; } }); // Запрос следующего цикла через 3 сек this.startTimer('T1', 3, 'getMercury'); }, onTimeout() { this.log('Истек таймаут, ответ от megad не получен'); voltage.assign("volt", 0); current.assign("current", 0); power.assign("power", 0); } });