NEWS
Скрипт для счетчика Меркурий 200
-
Кто нибудь считывает по CAN/RS485 данные с эл. счётчика Меркурий 230 ?
Скрипт для Меркурий-200 у меня есть, переписал с php, но вот поменял эл. счётчик на Меркурий 230, может кто поделится готовым js-скриптом? `
Надо бы драйвер для счетчиков Меркурий написать, но у меня их нет.а 230 уже не читается как 200ый?
-
Кто нибудь считывает по CAN/RS485 данные с эл. счётчика Меркурий 230 ?
Скрипт для Меркурий-200 у меня есть, переписал с php, но вот поменял эл. счётчик на Меркурий 230, может кто поделится готовым js-скриптом? `
Надо бы драйвер для счетчиков Меркурий написать, но у меня их нет.а 230 уже не читается как 200ый? `
К сожалению 230 не считывается как 200. При этом у 230 гораздо больше функционала.Я конечно могу снова сконвертировать вручную из php в рабочий вариант. Но код будет ужасный. Допилишь до драйвера если доступ к серверу дам?
-
Кто нибудь считывает по CAN/RS485 данные с эл. счётчика Меркурий 230 ?
Скрипт для Меркурий-200 у меня есть, переписал с php, но вот поменял эл. счётчик на Меркурий 230, может кто поделится готовым js-скриптом? ` А можно срипт под 200й, у меня такой стоит дома, так пока ума и не дал
Отправлено с моего Nexus 5 через Tapatalk
-
Кто нибудь считывает по CAN/RS485 данные с эл. счётчика Меркурий 230 ?
Скрипт для Меркурий-200 у меня есть, переписал с php, но вот поменял эл. счётчик на Меркурий 230, может кто поделится готовым js-скриптом? ` А можно срипт под 200й, у меня такой стоит дома, так пока ума и не дал
Отправлено с моего Nexus 5 через Tapatalk `
Для начала надо сформировать команды запроса по инструкции:
https://github.com/mrkrasser/MercuryStats
Затем поправить на свои в cmd1 и в cmd2, изменить на свой порт (вместо '/dev/ttyUSB2').
Контрольную сумму не проверял, можно дописать если будут ошибки считывания.
createState("s1",0); createState('Uv'); createState('Ia'); createState('Ew'); createState('T1'); createState('T2'); var cmd1 = new Buffer ([0x00,0x07,0x74,0xBE,0x63,0x54,0xE7]); var cmd2 = new Buffer ([0x00,0x07,0x74,0xBE,0x27,0x54,0xD4]); var sendtype = 1; var cmd = cmd1; var cnt = 0; function isEven(value) { if (value%2 === 0) return true; else return false; } schedule("* * * * *", function () { cnt = cnt + 1; if (isEven(cnt) === true ) { sendtype=1; cmd=cmd1; buflen = 14; } else { sendtype = 2; cmd=cmd2; buflen = 23; } var SerialPort = require('serialport'); var port = new SerialPort('/dev/ttyUSB2', { parser: SerialPort.parsers.byteLength(buflen), baudrate: 9600, dataBits: 8, parity: 'none' }, function (err) { if (err) { return console.log('Error: ', err.message); } port.write(cmd, function(err) { if (err) { return console.log('Error on write: ', err.message); } }); }); setStateDelayed('s1', false, 10, false, function () { port.on('data', function (data) { if (sendtype == 1) { // if (Number(data.toString('hex',5,7)/10) < 300) { setState('Uv', Number(data.toString('hex',5,7)/10)); var Ia=Number(data.toString('hex',7,9)/100); if (Ia>60) { setState("sayit.0.tts.text",'ru;75;Перегрузка электросети'); } setState('Ia', Number(data.toString('hex',7,9)/100)); setState('Ew', Number(data.toString('hex',9,12)/1)); } // } if (sendtype == 2 ) { if (Number(data.toString('hex', 5, 9) / 100) ) { setState('T1', Number(data.toString('hex', 5, 9) / 100)); setState('T2', Number(data.toString('hex', 9, 13) / 100)); } } }); }); setStateDelayed('s1', false, 1000, false, function () { port.pause(); port.close(); // log('Port is closed'); }); });
-
Кто нибудь считывает по CAN/RS485 данные с эл. счётчика Меркурий 230 ?
Скрипт для Меркурий-200 у меня есть, переписал с php, но вот поменял эл. счётчик на Меркурий 230, может кто поделится готовым js-скриптом? ` А можно срипт под 200й, у меня такой стоит дома, так пока ума и не дал
Отправлено с моего Nexus 5 через Tapatalk `
Для начала надо сформировать команды запроса по инструкции:
https://github.com/mrkrasser/MercuryStats
Затем поправить на свои в cmd1 и в cmd2, изменить на свой порт (вместо '/dev/ttyUSB2').
Контрольную сумму не проверял, можно дописать если будут ошибки считывания.
createState("s1",0); createState('Uv'); createState('Ia'); createState('Ew'); createState('T1'); createState('T2'); var cmd1 = new Buffer ([0x00,0x07,0x74,0xBE,0x63,0x54,0xE7]); var cmd2 = new Buffer ([0x00,0x07,0x74,0xBE,0x27,0x54,0xD4]); var sendtype = 1; var cmd = cmd1; var cnt = 0; function isEven(value) { if (value%2 === 0) return true; else return false; } schedule("* * * * *", function () { cnt = cnt + 1; if (isEven(cnt) === true ) { sendtype=1; cmd=cmd1; buflen = 14; } else { sendtype = 2; cmd=cmd2; buflen = 23; } var SerialPort = require('serialport'); var port = new SerialPort('/dev/ttyUSB2', { parser: SerialPort.parsers.byteLength(buflen), baudrate: 9600, dataBits: 8, parity: 'none' }, function (err) { if (err) { return console.log('Error: ', err.message); } port.write(cmd, function(err) { if (err) { return console.log('Error on write: ', err.message); } }); }); setStateDelayed('s1', false, 10, false, function () { port.on('data', function (data) { if (sendtype == 1) { // if (Number(data.toString('hex',5,7)/10) < 300) { setState('Uv', Number(data.toString('hex',5,7)/10)); var Ia=Number(data.toString('hex',7,9)/100); if (Ia>60) { setState("sayit.0.tts.text",'ru;75;Перегрузка электросети'); } setState('Ia', Number(data.toString('hex',7,9)/100)); setState('Ew', Number(data.toString('hex',9,12)/1)); } // } if (sendtype == 2 ) { if (Number(data.toString('hex', 5, 9) / 100) ) { setState('T1', Number(data.toString('hex', 5, 9) / 100)); setState('T2', Number(data.toString('hex', 9, 13) / 100)); } } }); }); setStateDelayed('s1', false, 1000, false, function () { port.pause(); port.close(); // log('Port is closed'); }); }); ```` ` Спасибо, притащусь с работы посмотрю
Отправлено с моего Nexus 5 через Tapatalk
-
Наконец дошли руки проверить , сыпится ошибка
- javascript.0 2018-01-30 20:37:00.876 error at Object. (script.js.counter:34:28)
javascript.0 2018-01-30 20:37:00.875 error Error in callback: TypeError: SerialPort.parsers.byteLength is not a function
может неправильно составил запрос , № счётчика 02844114 08 ,соответственно взял 844114.
получилось :
var cmd1 = new Buffer ([0x00,0x0C,0xE1,0x52,0x63,0x9F,0xCB]);
var cmd2 = new Buffer ([0x00,0x0C,0xE1,0x52,0x27,0x82,0x9B]);
В чём ошибка ?
-
Наконец дошли руки проверить , сыпится ошибка
- javascript.0 2018-01-30 20:37:00.876 error at Object. (script.js.counter:34:28)
javascript.0 2018-01-30 20:37:00.875 error Error in callback: TypeError: SerialPort.parsers.byteLength is not a function
может неправильно составил запрос , № счётчика 0284114 08 ,соответственно взял 84114.
получилось :
var cmd1 = new Buffer ([0x00,0x0C,0xE1,0x52,0x63,0x9F,0xCB]);
var cmd2 = new Buffer ([0x00,0x0C,0xE1,0x52,0x27,0x82,0x9B]);
В чём ошибка ? `
Согласно https://www.npmjs.com/package/serialpor ... rs--objectbyteLength => ByteLength
-
Не работает, при parser: SerialPort.parsers.ByteLength(buflen),
пишет что не является функцией. Я так понимаю это связано с новым апи
SerialPort версии 5+.
Лог прилогаю
- javascript.0 2018-01-31 19:08:00.106 error at Object. (script.js.counter:43:28)
javascript.0 2018-01-31 19:08:00.106 error at Object.ByteLengthParser [as ByteLength] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/serialport/lib/parsers/byte-length.js:6:14) javascript.0 2018-01-31 19:08:00.105 error Error in callback: TypeError: Class constructors cannot be invoked without 'new' javascript.0 2018-01-31 19:07:00.207 error at Object. (script.js.counter:43:28) javascript.0 2018-01-31 19:07:00.205 error at Object.ByteLengthParser [as ByteLength] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/serialport/lib/parsers/byte-length.js:6:14) javascript.0 2018-01-31 19:07:00.203 error Error in callback: TypeError: Class constructors cannot be invoked without 'new' javascript.0 2018-01-31 19:06:58.109 info script.js.counter: registered 0 subscriptions and 3 schedules javascript.0 2018-01-31 19:06:57.908 info Start javascript script.js.counter
-
Не работает, при parser: SerialPort.parsers.ByteLength(buflen),
пишет что не является функцией. Я так понимаю это связано с новым апи
SerialPort версии 5+. `
К сожалению я уже вывел из эксплуатации Меркурий 200. Сейчас у меня Меркурий 230, а в нём уже актуализированная версия SerialPort.
Попробуйте использовать синтаксис SerialPort из скрипта для Меркурия 230 в соседней теме и разработать новый для Меркурия 200.
-
Камрады, а скрипт рабочий не появился ?
Или втут скрипт функциональный ?