This is an example for me?
I believe so.
This is an example of query from tecnical manual:
Single machine use, communication ID is set to 1, EMS communicates directly with
RBMS
Query operational status 00 00 00 00 00 06 01 03 11 00 00 2D(HEX)
Here is URL for this document: PDF Host - Edit
Could you please point me how should look HA modbus.yaml in this case?
0x1000 Total Voltage
0x1000 hex = 4096 decimal
- name: "Total Voltage" # 0x1000
slave: 1
address: 4096
input_type: holding
count: 1
data_type: uint16
precision: 1
scale: 0.1
unit_of_measurement: V
device_class: voltage
01 - slave
03 - function
11 00 - register
00 2D - count
Thank you very much @nikito7 will try it. Please is there some way how to have 2 modbus devices against single instance of HA? I have two devices, both communicating using Modbus TCP.
I found this: Ability to add multiple modbus hubs - #45 by wellsy
Now my modbus.yaml looks like this:
- name: "Nibe"
type: tcp
host: 192.168.1.102
port: 502
- name: "BMS"
type: tcp
host: 192.168.1.20
port: 502
sensors:
# Overview
- name: "Heatpump - Power Usage"
unique_id: "power_usage"
unit_of_measurement: "W"
data_type: int16
device_class: power
address: 2166
input_type: input
scale: 1
precision: 0
slave: 1
hub: Nibe
- name: "Heatpump - Priority"
unique_id: "operating_prioritisation"
data_type: int16 # int8
# 10: Off, 20: Hot Water, 30: Heat, 40: Pool, 60: Cooling
address: 1028
input_type: input # R/W
scale: 1
precision: 0
state_class: measurement
slave: 1
hub: Nibe
but there is an error preventing me to restart HASS: Invalid config for [modbus]: [hub] is an invalid option for [modbus]. Check: modbus->modbus->1->sensors->0->hub.
Any idea? I tried to set it as in this post: Ability to add multiple modbus hubs - #49 by cconnoruk
You can absolutely have two devices. They can be chained together and identified by different slave/unit IDs. Or you can have two modbus hubs with separate names (I’ve not done it with tcp though).
FWIW, I do not use quotes around the Name in my config.
identified by different slave/unit IDs
Can you please show me an example?
Now I have this error: Pymodbus: BMS: Exception Response(131, 3, IllegalAddress)
By using only this modbus.yaml:
- name: BMS
type: tcp
host: 192.168.1.20
port: 502 #your port number
sensors:
- name: "SOC" # 0x1000
slave: 1
address: 4102
input_type: holding
count: 1
data_type: uint16
precision: 1
scale: 0.1
This should show SOC of a battery so the result is in %…But Im not sure if this is the source of the error (not properly configured).
if it is communicating with SBMS, the unit identifier in the MBAP is 0x2F (47). If it is communicating with a single RBMS, the unit identifier in the MBAP is fixed to the 1
I communicate from PC to BMS: So I am not sure what is the proper answer to your question. What I can say is that communication between PC and BMS looks like this:
\par Receive Data: 192.168.1.20 Time: 2023-05-22 08:48:42 Address :2012 Pak:11 Length 22
\par 0000000000050103020000
\par 192.168.1.20 TCPIP SEND :00000000000601030100005B
\par Receive Data: 192.168.1.20 Time: 2023-05-22 08:48:42 Address :0100 Pak:191 Length 382
\par 0000000000B90103B609120011AAAA000F00000111FFE4002900640019000100010018000200020E32000200060E1C000100010000000000DF000F0000000F0000000F000000000000000D083B0000086000000017002701F3000001570000001B001300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0000
\par 192.168.1.20 TCPIP SEND :000000000006016602000060
\par Receive Data: 192.168.1.20 Time: 2023-05-22 08:48:43 Address :0100 Pak:206 Length 412
000000000006 01 03 0100 005B
slave 1
holding
address 0x0100, maybe decimal 256
There is no 0x1000 I think
@nikito7 here: TCPIP Protocol | PDF Host is a document. Please could you take a look at page 7 (find register 1006 - SOC) and show me how to prepare HA config for this? Seems I´m really lost. Thank you in advance.
Any register work for you?
Give me a working example.
Not working between HA and this BMS. Wotking between other software (BMSs monitoring) and BMS. Here is small part of a log of this communication:
{\rtf1\ansi\ansicpg1250\deff0\deflang1029{\fonttbl{\f0\fnil\fcharset134 ??;}}
\viewkind4\uc1\pard\f0\fs18 192.168.1.20 TCPIP SEND :000000000006010320120001
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:47 Address :2012 Pak:11 Length 22
\par 0000000000050103020000
\par 192.168.1.20 TCPIP SEND :00000000000601030100005B
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:47 Address :0100 Pak:191 Length 382
\par 0000000000B90103B60A480022AAAA000F000001110036006300640018000100010016000300071019000200060FD8000100020000000000DF000F0000000F0000000F000000000000000E092E000008EA0000001A002C023000000002000000000034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C300000
\par 192.168.1.20 TCPIP SEND :000000000006016602000060
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:47 Address :0100 Pak:206 Length 412
\par 0000000000C801660200006000C00FE50FD80FE210030FFA1010101110111011101310111012101110121012101200180018001800170018001800180017101310171016101710141019101610161011101510131014101210141014101200170017001700180017001800170018101110171013101610141017101410161012101610151015101310141014101200170017001700170017001700160017101210161013101710141017101510151015101610141016101410161015101400170018001700180018001800180018
\par 192.168.1.20 TCPIP SEND :000000000006010320120001
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:48 Address :2012 Pak:11 Length 22
\par 0000000000050103020000
\par 192.168.1.20 TCPIP SEND :00000000000601030100005B
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:48 Address :0100 Pak:191 Length 382
\par 0000000000B90103B60A480022AAAA000F00000111003E006300640018000100010016000300071017000300020FD7000100020000000000DF000F0000000F0000000F000000000000000E092E000008EA0000001A002C023000000002000000000034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C300000
\par 192.168.1.20 TCPIP SEND :000000000006016602000060
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:48 Address :0100 Pak:206 Length 412
\par 0000000000C801660200006000C00FE30FD70FE210030FF9100F100F1011100F101210111012101110121012101200180018001800170018001800180017101310161014101610141016101510161012101410121014101210141013101200170017001700180017001800170018101110171013101610141017101410161012101610151015101310141014101200170017001700170017001700160017101210161013101610131016101410161012101610141017101510161016101300170018001700180018001800180018
\par 192.168.1.20 TCPIP SEND :000000000006010320120001
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:49 Address :2012 Pak:11 Length 22
\par 0000000000050103020000
\par 192.168.1.20 TCPIP SEND :00000000000601030100005B
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:49 Address :0100 Pak:191 Length 382
\par 0000000000B90103B60A470022AAAA000F000001110042006300640018000100010016000300071017000200020FD7000100020000000000DF000F0000000F0000000F000000000000000E092E000008EA0000001A002C023000000002000000000034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C300000
\par 192.168.1.20 TCPIP SEND :000000000006016602000060
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:49 Address :0100 Pak:206 Length 412
\par 0000000000C801660200006000C00FE30FD70FE310030FF9100F100F1011100F101110111012101110131012101100180018001800170018001800180017101310171014101610141017101510161011101410121014101110131013101300170017001700180017001800170018101110161012101610141017101410141010101410141016101310131014101300170017001700170017001700160017101110151013101610121016101410151013101610131017101410161014101200170018001700180018001800180018
\par 192.168.1.20 TCPIP SEND :000000000006010320120001
\par Receive Data: 192.168.1.20 Time: 2023-05-25 17:01:50 Address :2012 Pak:11 Length 22
\par 0000000000050103020000
etc.
01 03 2012 0001
- name: "Test 0x2012"
slave: 1
address: 8210 # 0x2012
input_type: holding
count: 1
data_type: uint16
precision: 1
scale: 0.1
Result should be zero, but without any error in logs
01 03 0100 005B holding (03)
01 66 0200 0060 not supported (66)
01 03 2012 0001 holding
Address 0x0100 or 0x2012 should work
You need to convert to decimal I think
Pdf is wrong.
Change 10XX to 01XX
OK, but how exactly should look HA config? I really don´t know where to change 10XX to 01XX. Could oyu please point me?
I tried yours:
- name: BMS
type: tcp
host: 192.168.1.20
port: 502 #your port number
sensors:
- name: "Test 0x2012"
slave: 1
address: 8210 # 0x2012
input_type: holding
count: 1
data_type: uint16
precision: 1
scale: 0.1
with this result in log:
Source: components/modbus/modbus.py:403
Integration: Modbus (documentation, issues)
First occurred: 05:50:05 (1 occurrences)
Last logged: 05:50:05
Pymodbus: BMS: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)