Термостат работает - в программе в логе все появляется но окошки пустые
RS485 Термостат для теплого пола
Re: RS485 Термостат для теплого пола
Re: RS485 Термостат для теплого пола
Ясно, просто программа предполагает, что посылка от термостата будет приходить в едином блоке данных. А судя по скриншоту, у вас она разбивается на несколько блоков. Должна быть одна строка ответа на каждый запрос, а у вас по три. Происходит это скорей всего из-за кривого драйвера конвертора UART2USB - у меня на CH340 и под Win7 x64 работает нормально. В принципе, можно доработать алгоритм обработки входящих данных, чтобы программа "склеивала" пакеты, приходящие с малой задержкой друг относительно друга. Если очень надо - можем попробовать.
Re: RS485 Термостат для теплого пола
У меня FTDI чипAndrew_A писал(а): ↑09 июн 2018, 02:27Ясно, просто программа предполагает, что посылка от термостата будет приходить в едином блоке данных. А судя по скриншоту, у вас она разбивается на несколько блоков. Должна быть одна строка ответа на каждый запрос, а у вас по три. Происходит это скорей всего из-за кривого драйвера конвертора UART2USB - у меня на CH340 и под Win7 x64 работает нормально. В принципе, можно доработать алгоритм обработки входящих данных, чтобы программа "склеивала" пакеты, приходящие с малой задержкой друг относительно друга. Если очень надо - можем попробовать.
В своей программе я сделал так:
Сообщение считается новым если начинается с 500.
Потом все склеивается пока не будет длины в 28.
Сверяется подпись по последним двум знакам и они отбрасываются.
Отбрасывается 50 и код устройства(001 и тп) и передаются парсеру настройки из которого делается красивый объект.
Записывается в БД для истории.
По интервалу опрашивается каждые 5 минут. По надобности отдельно и после каждого изменения.
Чем понравилось решение в NodeJS: пакет для него написан на C++ и работает везде(включая Распберри), не требует консольных утилит, получается единое решение.
И легко пользоваться:
Код: Выделить всё
const SerialPort = require('serialport');
port = new SerialPort('COM3', { autoOpen: true, baudRate: 4800});
port.on('data', (data) => { // Данные пришли } );
port.write(signer(`a0${pid}0000000000000000`), 'hex'); // отправляем данные
Re: RS485 Термостат для теплого пола
Да, резонно. Рад, что все заработало.
Re: RS485 Термостат для теплого пола
Приветствую
Утилитка для работы с RS485 в OpenWrt, только собрал и выложил, думаю пригодится - https://github.com/ZigFisher/Glutinium/ ... modbus-cli
Утилитка для работы с RS485 в OpenWrt, только собрал и выложил, думаю пригодится - https://github.com/ZigFisher/Glutinium/ ... modbus-cli