Получаю некорректные данные WB-MAP3E по Modbus ssh/homeassistant

0x1302 input s32 big endian (power) 0.00512 P L1 Активная мощность для фазы L1 Вт

Этот регистр нет.

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 ff ff dc 28 > 7 bytes
← [65535]
4866: 65535 0xffff
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 01 d6 5d 96 > 7 bytes
← [470]
4867: 470 0x1d6

Почему нет? Отрицательное же значение.
Покажите, куда стралка на трансформаторе.

Наверно, не то скопировал

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4866: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 01 d0 dd 94 > 7 bytes
← [464]
4867: 464 0x1d0

0.00512*0x1d0~2.4вт. при токе в 0.26А . А полная (кажущаяся) мощность?

@Djstrayk добрый день!

Пожалуйста,

  1. Прочитайте регистры напряжения по всем трём фазам.
  2. Отключите два неиспользуемых трансформатора.
  3. Сделайте новую серию фотографий, на которых чётко видно какие провода куда идут. Сейчас они не помешаются в кадр, уходят под стол и т.д.
  4. Сфотографируйте или напишите серийный номер устройства.
  5. Прочитайте регистры 0x14a0, 0x14a1, 0x14a2

Кажущаяся мощность для фазы L1

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4882
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 12 00 01 3c a0 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4882: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4883
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 13 00 01 6d 60 >
← < 9a 03 02 01 ce 5d 9c > 7 bytes
← [462]
4883: 462 0x1ce

1. Регистры напряжения по всем трём фазам

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5136
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 10 00 01 9c 14 >
← < 9a 03 02 57 63 a3 81 > 7 bytes
← [22371]
5136: 22371 0x5763
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5138
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 12 00 01 3d d4 >
← < 9a 03 02 1f cf 95 fc > 7 bytes
← [8143]
5138: 8143 0x1fcf
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5140
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 14 00 01 dd d5 >
← < 9a 03 02 1f c6 55 fa > 7 bytes
← [8134]
5140: 8134 0x1fc6
  1. Готово.

3-4. Новые фото и серийный номер





5 Регистры 0x14a0, 0x14a1, 0x14a2

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5280
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a0 00 01 9d f3 >
← < 9a 03 02 00 01 1c 58 > 7 bytes
← [1]
5280: 1 0x1
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5281
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a1 00 01 cc 33 >
← < 9a 03 02 00 02 5c 59 > 7 bytes
← [2]
5281: 2 0x2
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5282
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 a2 00 01 3c 33 >
← < 9a 03 02 00 03 9d 99 > 7 bytes
← [3]
5282: 3 0x3

С виду - все верно. Ошибок явных не вижу.
Отвлеченно: а почему не пользуетесь преобразованием сразу, неужели удобно считать каждый раз?
Вот так например, для активной мощности:

export DEV_PORT=/dev/ttyUSB0; export DEV_ADDR=154; HEXSTRING=$(modbus_client -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r0x1302 -c2| grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/  *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))

Этой утилиты у меня нет, собрать из исходников не получается, пользуюсь тем что есть. На вики у вас нет пакета для arm архитектуры.

@Djstrayk а ваша утилита умеет читать два регистра за раз?
Если да, то прочитайте пожалуйста ещё раз оба регистра активной мощности (т.е. 2 штуки начиная с 0x1302) за один запрос.

Умеет…

root@home-assistant:~/modbus-utils# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 00 02 51 3b > 9 bytes
← [0, 2]
4866: 0 0x0
4867: 2 0x2

Так?

root@home-assistant:~# HEXSTRING=$(modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867 | grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/  *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
330

лучше вот так, без sed-а, чтобы посылки было видно. Это с включенной лампочкой?

Это все выключено. Работает только сам счётчик.

интересно всё-таки на включенном. Ожидаю там настоящие 60 Вт

Вот с лампочкой.

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867                                       Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 2e 49 0c ac > 9 bytes
← [0, 11849]
4866: 0 0x0
4867: 11849 0x2e49
root@home-assistant:~# HEXSTRING=$(modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867 | grep Data | sed -e 's/0x//g' -e 's/Data://' -e 's/s//g' -e 's/  *//g' -e 's/\t//g'); echo $(( $((16#$HEXSTRING))*0,00512))
330

Данные регистра по току, при работающей лампочке.

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 5142
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 14 16 00 01 7c 15 >
← < 9a 03 02 00 10 dc 54 > 7 bytes
← [16]
5142: 16 0x10

это 60.66 Вт

echo $(( $((16#$HEXSTRING))*0,00512))

баш не умеет в дробные числа

1 лайк

Добрый день. Данные плучаются верные?

Собственно проблема видимо была из-за того, что есть разница в значениях если спрашивать один регистр или два. Ниже пример.

root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 02 7d 64 >
← < 9a 03 04 00 00 4c d9 25 a0 > 9 bytes
← [0, 19673]
4866: 0 0x0
4867: 19673 0x4cd9
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4866
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 02 00 01 3d 65 >
← < 9a 03 02 00 00 dd 98 > 7 bytes
← [0]
4866: 0 0x0
root@home-assistant:~# modbus -b 9600 -s 154 -v /dev/ttyUSB0 4867
Parsed 0 registers definitions from 1 files
Serial port /dev/ttyUSB0. Parameters: 9600 baud, 1 stop bit(s), parity: N, timeout 5.0s.
→ < 9a 03 13 03 00 01 6c a5 >
← < 9a 03 02 02 0b 9d 3f > 7 bytes
← [523]
4867: 523 0x20b