Pulsar-heat Serial protocol error

а дебаг включать когда адрес вбит 00756271 или 756271 ?

вот когда 756271

May 28 11:55:15 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:756271]
May 28 11:55:15 wirenboard-AKUX5NII user.notice serial: Write: 00 75 62 71 01 0e 08 00 00 00 00 00 3a 6d
May 28 11:55:17 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:756271]
May 28 11:55:17 wirenboard-AKUX5NII user.notice serial: Write: 00 75 62 71 01 0e 10 00 00 00 00 00 39 b5

вот когда 00756271

May 28 11:57:40 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:40 wirenboard-AKUX5NII user.notice serial: Write: 00 25 31 13 01 0e 00 01 00 00 00 00 45 c8
May 28 11:57:42 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:42 wirenboard-AKUX5NII user.notice serial: Write: 00 25 31 13 01 0e 00 02 00 00 00 00 01 c8
May 28 11:57:44 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:44 wirenboard-AKUX5NII user.notice serial: Write: 00 25 31 13 01 0e 00 04 00 00 00 00 89 c8
May 28 11:57:46 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:47 wirenboard-AKUX5NII user.notice serial: Write: 00 25 31 13 01 0e 00 08 00 00 00 00 99 c9
May 28 11:57:49 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:49 wirenboard-AKUX5NII user.notice serial: Write: 00 25 31 13 01 0e 00 10 00 00 00 00 b9 cb
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: TSerialDevice::ReadRegisterRange(): warning: Serial protocol error: request timed out [slave_id is pulsar:253113]
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: modbus: read 2 holding(s) @ 270 of device modbus:208
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: Write: d0 03 01 0e 00 02 b6 75
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: ReadFrame: D0 03 04 FE 30 2F 8F 57 4D
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: modbus: read 1 input(s) @ 121 of device modbus:208
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: Write: d0 04 00 79 00 01 f2 52
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: ReadFrame: D0 04 02 59 D1 BF 2E
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: new val for <modbus:208:input: 121>: 59d1
May 28 11:57:51 wirenboard-AKUX5NII user.notice serial: register value change: <modbus:208:input: 121> <- 22.993

Без нулей который, 756271

ну он выше чуть чуть . я и тот и тот кинул

Да, похоже, что проблема. Ваш “Пульсар теплосчётчик ультразвук.” отличается от просто “Пульсар теплосчётчик” протоколом обмена и не поддерживается поддерживаться на уровне наших драйверов.

это можно решить? ну тоесть с него данные можно получать?

Нет, к сожалению. Напишем вам, если будут какие-то изменения.

Единственный способ, который я могу сейчас предложить, это отправлять команды из движка правил, см. документ https://wirenboard.com/wiki/index.php/Движок_правил_wb-rules
раздел “Отправка команд по RS-485”. Можно подсмотреть, как опрашивает счетчки родная программа и повторять побайтово запросы.
У этого способа есть одно но: порт, к которому подключены счетчики, опрашиваемые движком правил, не должен использоваться для других устройств, которые wb-mqtt-serial опрашивает по шаблонам, то есть для всех устройств, подключенных к порту, придется отправлять набор байтов и читать ответы через движок правил.

Я так думаю с водосчетчиком, который мы вам отправили такая же проблема. Когда я его подключаю вообще rs перестает работать, и в логе FATAL ERROR

Пока попробуем так.

У контроллера 2 интерфейса rs. Можно ли на второй интерфейс повесить несколько теплосчетчиков и опрашивать их? можно ли одновременно их опрашивать? на сколько понял в ответе от счетчика будет адрес того который ответил.
получается нужно на этот интерфейс просто повесить что то свое. что будет отправлять команды и принимать ответы, что дальше делать с ответами уже как захочу?

Да, Евгений, можно использовать второй интерфейс. Сейчас смотрю и понимаю, что будут сложности с чтением результатов, просто printf, который в примере, только отправляет команды. А так да, отправлять запросы, принимать ответы и их обрабатывать.

То есть, чтобы получить ответ, надо отправлять команду примерно так:
echo -n "00 00 00 00 0A 0C 01 00 79 E6 C3 4A" | serial_tool -b 9600 -p N -d 8 -s 1 -t 1 /dev/ttyRS481-2 | grep '<<' | cut -d '<' -f 3
и перехватывать вывод (движок правил это умеет, см. пример вызова runShellCommand с параметрами
captureOutput и exitCallback тут: https://github.com/contactless/wb-rules)

Ну, или вы можете написать свой софт (на том же python) используя как образец код нашего serial_tool (https://github.com/contactless/serial_tool)

Спасибо. посмотрим. Подскажите ещё, если не на питоне, контроллер вывезет Яву 8, Или go, или node. Вообще по опыту что лучше не использовать из языков на нем?

Да и я так понимаю у вас проделано много работы. Может быть можно нам самим попробовать драйвер для себя адаптировать.

Евгений, node точно работает, java – возможно, на go lang тоже можно что-то собирать. Да хоть С++. Архитектура процессора – такая же как у raspberry pi.

Возможно! (Код: https://github.com/contactless/wb-mqtt-serial/blob/master/pulsar_device.cpp)

Евгений, добрый день!
Общаюсь с техподждержкой Пульсара, хотел попросить вас прислать вывод TestAll при чтении параметров теплосчетчика с вкладки “Текущие”:
image

Добрый день! да конечно. вот он

вот лог
Определение сетевого адреса пульсара
Отправлено: [11 байтов]
F0 0F 0F F0 00 00 00 00 00 A5 44 …D

Получено: [10 байтов] [+00:091]
F0 0F 0F F0 00 75 62 71 08 3B …ubq.;

Определение модели пульсара, сет. адр. 00756271
Отправлено: [11 байтов]
00 75 62 71 03 02 46 00 01 E1 61 .ubq…F…a

Получено: [10 байтов] [+00:086]
00 75 62 71 03 02 18 01 7A C1 .ubq…z.

Определение модели пульсара, сет. адр. 00756271
Отправлено: [11 байтов]
00 75 62 71 03 02 46 00 01 E1 61 .ubq…F…a

Получено: [10 байтов] [+00:091]
00 75 62 71 03 02 18 01 7A C1 .ubq…z.

Чтение текущих с прибора: Пульсар теплосчётчик ультразвук. 00756271
Чтение параметров :K3; K4; K5; K6; K7; K8; K9; K10; K11; K12; K13; K20; K15; K21; K22; K23; K24; NPARAM0C; NPARAM0D;
Отправлено: [12 байтов]
00 75 62 71 0A 0C 0C 00 0F AE 5B D4 .ubq…[.

Получено: [18 байтов] [+00:101]
00 75 62 71 0A 12 81 04 00 00 00 00 00 00 0F AE 72 05 .ubq…r.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 0D 00 1F 75 17 B3 .ubq…u…

Получено: [18 байтов] [+00:102]
00 75 62 71 0A 12 80 04 00 00 00 00 00 00 1F 75 6E 5B .ubq…un[

Отправлено: [14 байтов]
00 75 62 71 01 0E FC 5F F8 00 CB BA 5C F7 .ubq…_…

Получено: [11 байтов] [+00:096]
00 75 62 71 00 0B 02 CB BA F1 AB .ubq…

вот еще настроечные.

Определение сетевого адреса пульсара
Отключено
Подключение: Тип Соединения = RS232; Время ожидания = 1500; Пауза перед запросом = 50; Повторные запросы = 3; Номер порта = 5; Скорость = 9600; Стоп биты = 1; Чётность = None; Биты данных = 8; Оптоголовка = False; Подключено
Определение сетевого адреса пульсара
Отправлено: [11 байтов]
F0 0F 0F F0 00 00 00 00 00 A5 44 …D

Получено: [10 байтов] [+00:090]
F0 0F 0F F0 00 75 62 71 08 3B …ubq.;

Определение модели пульсара, сет. адр. 00756271
Отправлено: [11 байтов]
00 75 62 71 03 02 46 00 01 E1 61 .ubq…F…a

Получено: [10 байтов] [+00:083]
00 75 62 71 03 02 18 01 7A C1 .ubq…z.

Чтение параметров :D; L; P; NPARAM20; NPARAM21; NPARAM23; NPARAM24; NPARAM26; NPARAM27; NPARAM29; NPARAM2A; NPARAM2C; NPARAM2D; NPARAM33; NPARAM34; NPARAM6; NPARAMD0; NPARAM0241; NPARAM0244; NPARAM1A; NPARAM1B; Чтение параметров :D; L; P; NPARAM20; NPARAM21; NPARAM23; NPARAM24; NPARAM26; NPARAM27; NPARAM29; NPARAM2A; NPARAM2C; NPARAM2D; NPARAM33; NPARAM34; NPARAM6; NPARAMD0; NPARAM0241; NPARAM0244; NPARAM1A; NPARAM1B;
Отправлено: [10 байтов]
00 75 62 71 04 0A 9D B9 98 95 .ubq…

Получено: [16 байтов] [+00:115]
00 75 62 71 04 10 13 06 03 0C 2C 2A 9D B9 F4 0A .ubq…,*…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 01 00 DD 89 45 C2 .ubq…E.

Получено: [18 байтов] [+00:100]
00 75 62 71 0A 12 00 00 00 00 00 00 00 00 DD 89 0A 52 .ubq…R

Отправлено: [12 байтов]
00 75 62 71 0A 0C 05 00 64 1B B6 CF .ubq…d…

Получено: [18 байтов] [+00:097]
00 75 62 71 0A 12 28 00 00 03 00 00 00 00 64 1B 4B EF .ubq…(…d.K.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 20 00 70 F2 73 4D .ubq…p.sM

Получено: [11 байтов] [+00:089]
00 75 62 71 00 0B 04 70 F2 63 6C .ubq…p.cl

Отправлено: [12 байтов]
00 75 62 71 0A 0C 21 00 69 C1 39 34 .ubq…!.i.94

Получено: [11 байтов] [+00:088]
00 75 62 71 00 0B 04 69 C1 28 E9 .ubq…i.(.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 23 00 03 A5 17 C7 .ubq…#…

Получено: [11 байтов] [+00:089]
00 75 62 71 00 0B 04 03 A5 07 A2 .ubq…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 24 00 EC A9 5A 86 .ubq…$…Z.

Получено: [11 байтов] [+00:076]
00 75 62 71 00 0B 04 EC A9 4B 97 .ubq…K.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 26 00 BC 92 26 ED .ubq…&…&.

Получено: [11 байтов] [+00:090]
00 75 62 71 00 0B 04 BC 92 36 44 .ubq…6D

Отправлено: [12 байтов]
00 75 62 71 0A 0C 27 00 A3 50 AE B0 .ubq…’…P…

Получено: [11 байтов] [+00:091]
00 75 62 71 00 0B 04 A3 50 BF E5 .ubq…P…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 29 00 EA 77 DB D2 .ubq…)…w…

Получено: [11 байтов] [+00:090]
00 75 62 71 00 0B 04 EA 77 C8 6F .ubq…w.o

Отправлено: [12 байтов]
00 75 62 71 0A 0C 2A 00 36 C9 03 26 .ubq…*.6…&

Получено: [11 байтов] [+00:089]
00 75 62 71 00 0B 04 36 C9 10 DF .ubq…6…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 2C 00 3E A1 05 80 .ubq…,.>…

Получено: [18 байтов] [+00:094]
00 75 62 71 0A 12 6F 12 83 3A 00 00 00 00 3E A1 76 24 .ubq…o…:…>.v$

Отправлено: [12 байтов]
00 75 62 71 0A 0C 2D 00 50 3E 68 74 .ubq…-.P>ht

Получено: [18 байтов] [+00:098]
00 75 62 71 0A 12 00 00 C8 42 00 00 00 00 50 3E 40 86 .ubq…B…P>@.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 33 00 F9 02 10 1D .ubq…3…

Получено: [18 байтов] [+00:334]
00 75 62 71 0A 12 11 15 8A 44 00 00 00 00 F9 02 7F EE .ubq…D…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 34 00 1F 6E 5B 24 .ubq…4…n[$

Получено: [18 байтов] [+00:334]
00 75 62 71 0A 12 19 03 8A 44 00 00 00 00 1F 6E 52 29 .ubq…D…nR)

Отправлено: [12 байтов]
00 75 62 71 0A 0C 06 00 EB D8 92 EA .ubq…

Получено: [18 байтов] [+00:098]
00 75 62 71 0A 12 00 00 01 00 00 00 00 00 EB D8 1D C2 .ubq…

Отправлено: [12 байтов]
00 75 62 71 0A 0C D0 00 15 2B AA 87 .ubq…+…

Получено: [18 байтов] [+00:094]
00 75 62 71 0A 12 00 00 00 00 00 00 00 00 15 2B DC 2B .ubq…+.+

Отправлено: [12 байтов]
00 75 62 71 0A 0C 41 02 E6 14 23 5B .ubq…A…#[

Получено: [18 байтов] [+00:098]
00 75 62 71 0A 12 00 00 00 00 00 00 00 00 E6 14 D8 CB .ubq…

Отправлено: [12 байтов]
00 75 62 71 0A 0C 44 02 B4 9D DF 51 .ubq…D…Q

Получено: [18 байтов] [+00:098]
00 75 62 71 0A 12 00 00 00 00 00 00 00 00 B4 9D 24 0D .ubq…$.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 1A 00 98 60 B0 38 .ubq…`.8

Получено: [18 байтов] [+00:087]
00 75 62 71 0A 12 00 22 00 00 00 00 00 00 98 60 79 ED .ubq…"…`y.

Отправлено: [12 байтов]
00 75 62 71 0A 0C 1B 00 A9 2F E5 A0 .ubq…/…

Получено: [18 байтов] [+00:097]
00 75 62 71 0A 12 CC 00 08 80 00 00 00 00 A9 2F E8 45 .ubq…/.E