(Weds 7th Oct 2026)
10:32 These don't seem to be working.
I will investigate today and maybe replace with ESPHome devices
(Weds 7th Oct 2026)
10:32 These don't seem to be working.
I will investigate today and maybe replace with ESPHome devices
(Weds 7th Oct 2026)
SunGrow has been running for a few days with HA and doing great. Also local data access at:
Nice!
So yesterday (Sun 4th Oct 2026) I shutdown cottage laptop which was running Home Assistant in a docker container and installed a Home Assistant image on the a RPi4 (was muc in Kilnageer).
Things went well but now I would like to create some devices of my own based on their MQTT topics.
I can access the RPi HA at http://192.168.1.188/home/overview
And yesterday I added to it three air sensors but not sure of their status.
So what I need is HA Discovery. This video explains: https://www.youtube.com/watch?v=s7SKzYWNVS8
And in fact the https://github.com/jesseklm/sungrowmodbus2mqtt code running on sionnach (192.168.1.153) already has a https://github.com/jesseklm/sungrowmodbus2mqtt/blob/master/ha_discovery.py file.
So let's try using it!
(Mon 5th Oct 2026)
21:07 What is sionnach running currently...
What does this MQTT publish?
My old Mint Linux laptop ("cottage") already runs Home Assistant as a docker container.
I now want to add a Sonoff USB zigbee dongle to provide zigbee2mqtt for it.
Following the instructions at: https://www.zigbee2mqtt.io/guide/installation/02_docker.html
I plugged in the ZBDongle-P (https://sonoff.tech/en-eu/products/sonoff-zigbee-3-0-usb-dongle-plus-zbdongle-p)
Now looking at http://172.28.207.40:8180/ I get the Zigbee2MQTT Onboarding control panel
Where I selected the USB dongle and set up access to my local MQTT server. But when I clicked on submit it crashed....
So tried using a docker-compose.yaml file next... It appears to be running and the onboarding URL still works.
But how to control it? The last time I used this it listed all devices allowed for joining, etc. Ah I need to enable the frontend (disable onbaording) in the configuration.yaml file and restart it!
Now keep getting start up errors:
So tried restarting the "cottage" laptop. Still keeps restarting due to above error..
Maybe a USB 3.0 port issue. I will try on a RPi 4 tomorrow... (My "cttage" laptop is old Lenovo ThinkPad T420 and doesn't have 3.0 USB ports just 2.0 ones)
https://www.productindetail.com/pn/lenovo-thinkpad-t420#specs
(19:39) Decided to burn a Home Assistant OS 18.3 image onto a RPi4 Model B..
https://www.raspberrypi.com/products/raspberry-pi-4-model-b/
Which has 2x USB 3 ports
Unfortunately, documentation can be tricky to hunt down. So this is what I know..
Version V6,4,02 of the JK-BMS android app reports:
Vendor ID: JK-BD6A32S10P
Hardware Option: HDCRE
Serial Number: 604135B6C000012
Hardware Version: V20H
Software Version: V20.11
Power-on Times: 23T
Total Time: 8H50M0S
First On Date: 2026-09-17
So it's a BD type JKBMS inverter and we need a UART 4-pin cable, and to wire up a 2-wire CAN bus to a RJ45 socket and a 2-wire RS485 to another RJ45 socket. The UART also needs to be wired to a RJ45 socket.
So let's dig in..
Some good info here: https://jkbms-ess.com/en-eu/blogs/news/jkbms-b-bd-series-smart-bms-interface-guide-jk-bxxxx-jk-bdxxxx
So the RS485 / CAN bus socket on the BMS is a A1254WF-4A socket
1 - CAN L (black)I have a plug with four wires going to two clip sockets
And the GPS / UART socket on the BMS is a :
So what pins to use on the CAN bus and RS485 RJ45 sockets?
There are wiring standards for this. If I look at the Sungrow SH3.0RS documentation it states..
On page 79 it mentions CAN bus and RS485 but gives no details...
6.9.2 Connecting the CAN Cable
The CAN cable enables the communication between the inverter and the Li-ion battery from SUNGROW and BYD. • Pin terminal connection Refer to the section 6.11 Meter Connectionfor details. Plug the wires into the H and L terminals according the labels on the bottom of the inverter. • RJ45 connection Refer to the section 6.13 DRM Connectionfor details. Plug the wires into the RJ45–CAN terminal on the bottom of the inverter.
6.9.3 Connecting the Enable Cable
The Enable cable along with the RS485 cable, are used for communication between the inverter and the Li-ion battery. For detailed connection description of the RS485 cable, refer to the section 6.12 RS485 Connection. For detailed connection description of the Enable cable, refer to the section 6.11 Meter Connection. Plug the wires into the EN_H and EN_G terminals according the labels on the bottom of the inverter.
So what next? Well it looks like the Sungrow SH3.0RS manual doesn't specify any wiring pin out for its RS485 and CAN bus. So I guess it expects you to get that from the battery manufacturer.
But I did find a great great website specify what different battery manufacturers do..
So I will make my battery emulate a Pylon HV battery :)
So I will make cables like this for my inverter with matching Can bus and RS485 socket wiring in my battery pipe :)
Though, I just ordered a "JIKONG Communication Interface Board P-Link-CR-V2.0 for Smart BMS Expansion" from Ebay.ie for the final battery unit. So I should really make my battery pipe socket pin outs compatible with this interface board. https://www.ebay.ie/itm/406532685503
Which has UART, RS485 and CAN bus. It supports PC ineterface over UART and battery over CAN bus and multiple batteries over RS485.
So what's its pin out? From https://manuals.plus/ae/1005008931931389
Happy days! I'm now ready to make my battery and inverter cables :)
For inverter I need power cables 2 meter with Sungrow clips at one end and crimp ring at the other.
Also need a 2-wire CAN bus cable ending in RJ45 plug. (Pin 4: CAN_H, Pin 5: CAN_L)
And a RS485 2-wire cable also ending in a RJ45 plug. (Pin 7: RS485 A, Pin 8: RS485 B)
I will then use the ESP32 DIN monitor to look for CAN bus comms from the inverter.
Great that this is also Pylon HV compatible wiring.
And here's the Sungrow SH3.0RS COM2 connector pin out
Here's the cables :)
Tues 22nd Sep 2026
(21:39) Based on the code at: https://github.com/syssi/esphome-jbd-bms
Got both "SP10S0009-L8S-100A-B-U" and "BR2262e-s" 24V LFP batteries monitored by HA
Happy days!
The goal of this project is to repurpose my 3x 24V LFP to a 96V battery for my Sungrow SH3.0RS inverter.
To do this I will need to create a RS485 JK-BMS comms to Sungrow CANBUS comms converter and start by using 32x 18650 3.7V Li-Ion batteries in place of the 24V LFP ones (I will need to buy another 24V LFP battery once I get the comms going.
(Tues 22nd Nov 2026)
Got ESPHome working using ESPHome Device Builder on rhubarb laptop (accessed via http://localhost:6052/)
And successfully got HA to see ESP32-C3 device pulling BMS data over BLE to MQTT and directly to HA.
including the state of all 32 cells..
Must make a dashboard next and test if I can turn CHARGE and DISCHARGE ON and OFF. Yep switches work fine :)
Based on code at https://github.com/syssi/esphome-jk-bms/blob/main/esp32-ble-v19-example.yaml
https://deepwiki.com/syssi/esphome-jk-bms/4.2-basic-uart-configuration
Now. How to make a HA dashboard? And replace BLE with UART connection to BMS
I will try this RS485 example next..
https://github.com/syssi/esphome-jk-bms/blob/main/esp8266-jk-pb-modbus-example.yaml
(Mon 21st Nov 2026)
(16:34) Giving up for now. Will try ESP32-C3 ESPHome project next! Say https://github.com/syssi/esphome-jk-bms
(Backed up Node Red to sionnach_after_jkbms_modbus_mqtt_added_flows.json)
(16:05) Maybe I should just cable the ON/OFF button,_96V and 0V power, UART, RS485 and CAN to the 6 inch pipe lid and then work on unit in the kitchen connected to laptop via USB/RS485 dongle?
Annoys me that some Modbus commands get a response of 0x8604 (error code?) but often nothing. Hanging?
Should I switch to using direct ESP32 to UART port (not RS485 port). Or get PC Windows software running? Cannot see a GPS UART protocol to select from in BLE app. Maybe "4G-GPS Remote module protocol V4.2" or maybe try an ESPhome project
(15:30) Cannot get any robust comms or sensible replies over RS485. Let me check the protocol assigned to UART-21 / UART-2. (Which is the real UART port and which is the RS485 port?)
https://www.gobelpower.com/jkbms-firmware-download_ap88.html
Are all these error code responses? Had to power OFF/ON BMS to get responses MODBUS again.
Last two above examples from http://www.jk-bms.com/en/Upload/2023-12-05/1559153362.pdf
Tried sending Modebus command 01 03 02 58 00 02 44 60 and got response 01 86 04 43 a3.
What does this mean?
Modbus RTU uses 8-bit Serial Communications to send Modbus messages. Format is:
And the response means..
So a success read of register 0x0258 returning 0x8604
http://www.jk-bms.com/en/Upload/2023-12-05/1559153362.pdf
01 03 00 05 00 02 D4 0A
https://koeed.com/pages/modbus-crc-calculator
Cannot get any robust comms or sensible replies over RS485. Let' sme chekc the protocol assigned to UART-21 / UART-2
So added code to NodeRed "Sungrow Inverter" tab at http://192.168.1.153:1880/ to send and receive Modbus messages
But what do I send to get a response?
It looks like the Waveshare converter should work with the Sungrow SH3.0RS inverter once I get the BMS comms going..
https://www.waveshare.com/wiki/ESP32-S3-RS485-CAN-Web
| Sungrow | SH3.0/3.6/4.0/5.0/6.0RS | 1 | ( ⭐⭐ ) | 80 / 460 | BYD protocol |
https://github.com/dalathegreat/Battery-Emulator/discussions/2164
"BYD Protocol" being.. "BYD Battery-Box Premium HVS over CAN bus"
(Sun 20th Sept 2026)
I soldered the RS485 converter to the ESP32-C3 board and made some push connectors for the RS485 A- and B+ wires.
Powering up JK-BMS caused a few messages to be received by the ESP32 monitor (used "IoT MQTT Panel" app to subscribe to MQTT topic "home/solar/esp32c3_jkbms_monitor/#" )
home/solar/esp32c3_jkbms_monitor/RxByte "e0e0" followed by "cf"
(Sat 19th Sept 2026)
I created an Arduino sketch for the BMS comms and burned it into a ESP32-C3. Code in directory:
/home/coderdojo/Arduino/esp32c3/esp32c3_jkbms_monitor
(Fri 18th Sept 2026)
Have code programmed into Waveshare protocol adaptor and added it to the Tola Park SSID WiFi network.
But now need it to talk to the JK-BMS over RS485 and to the Sungrow SH3.0RS hybrid inverter over CAN bus.
Here are the protocols on offer:
So I think I will go with:
1) Set the JK-BMS to use "005 – PYLON_low_voltage_Protocol_RS485_V3.5"
2) The Waveshare converter battery setting to "Pylon /Dryness compatible battery" / RS485 and its Inverter setting to "Pylon HV battery over CAN bus" / CAN (Native)
I should be able to monitor things over the USB-C UART debug connection and, if successful, over MQTT broker
(Thurs 17th Sept 2026)
The Waveshare-ESP32-C3-RS485-CAN DIN module should be ideal to act as the comms converter and the software is available for it at:
https://github.com/dalathegreat/Battery-Emulator
See Sungrow SH3.0RS entry in table at:
https://dalathegreat.github.io/Battery-Emulator-Wiki/inverter/
Vendor Product Name AC Phases Compatibility level Voltage min / max (V) Notes
| Sungrow | SH3.0/3.6/4.0/5.0/6.0RS | 1 | ( ⭐⭐ ) | 80 / 460 | BYD protocol |
https://www.waveshare.com/wiki/ESP32-S3-RS485-CAN
This discussion also helpful
https://github.com/dalathegreat/Battery-Emulator/discussions/2164
I had problems with App not talking to BMS but latest version of App worked fine.
I finished wiring up 32x 18650 3,7V Li-Ion batteries to the 32s JK-BMS and got the BLE app going.
(Weds 26 August 2026)
Well, I got my two ESP32-C3s shipping data from my Sungrow S100 meter via MQTT and Node-Red to my Sungrow SH3.0RS Hybrid Inverter last week. But after a firmware update to the inverter on Monday it stopped working.
So, it looks like my code was marginal and the new inverter has now less than 100 mSec between inverter Modbus transmissions at 9600 baud. So later today I will reflash the ESP32s with a 10 mSec inter-byte time-out but for now I will fix it in Node-Red :)
This means processing MQTT messages received on topic: home/solar/sungrow/esp32c3_s100_emulator/RxBytes to chop and tail inverter messages that have been fused together.
So these rx messages:
fe03003f0001a009
f604101f0001118b
207300000001c370
fe03500000018105
fe03003f0001a009
f604101f0001118b
etc.
Huh? This looks OK. So how is the S100 meter responding? Battery was low so after changing it I got more garbled rx data from the inverter
207300000001c370 got S100 response 20730203275e69
fe03500000018105
fe03003f0001a009
f604101f0001118b
207300000001c370 got S100 response 20730203275e69
030000000d82be20030000000d82be20030000000d82be20030000000d82be20030000000d82be
fe03500000018105
So I will clip the garbled 207300000001c370 message in Node-Red and send the cleaned up one to the S100 ESP32
This caused the S100 meter to eventually respond with:
But the inverter is only seeing these every 30 seconds or so...
(11:24) So I think I need to try fixing the ESP32 firmware next...
Looking at the existing it is crashing! So that needs to be fixed :)
I'll post the code to Github later :)
So lets change
// Changing the Modbus inter-byte timeout to 10 mSec (from 100 mSec)
// Modbus is operating at 9600 baud so a 10-bit transmittion takes about 1 mSec
#define MODBUS_RX_TIMEOUT 10
And take it for a spin..
After turning off serial debug in the code I got the inverter to report in grid power in the iSolarClod app. Job done! :)
12:15:48.963 ->
12:15:48.963 ->
12:15:48.963 ->
12:15:48.963 -> Sungrow esp32c3_s100_emulator.ino v2.1
12:15:48.963 ->
12:15:48.963 ->
12:15:48.963 -> Connecting to Tola Park
12:15:49.527 -> ...
12:15:50.522 -> WiFi connected
12:15:50.522 -> IP address:
12:15:50.522 -> 192.168.1.198
12:15:50.555 -> Attempting MQTT connection...connected
(Mon 27th Jul 2026 21:54)
Created an emulator ESP32 devicewhich is tested by the working monitor ESP32 device (which was tested talking to a Sungrow S100 meter)
2026-07-27T21:53:40+0100{"tst":"2026-07-27T21:53:40.899401+0100","topic":"home/solar/sungrow/MonTxBytes","qos":0,"retain":0,"payloadlen":18,"payload":"20030009000212b8"}
2026-07-27T21:53:51+0100{"tst":"2026-07-27T21:53:51.504754+0100","topic":"home/solar/sungrow/MonTxBytes","qos":0,"retain":0,"payloadlen":18,"payload":"20030009000212b8"}
2026-07-27T21:53:52+0100{"tst":"2026-07-27T21:53:52.199721+0100","topic":"home/solar/sungrow/EmuRxBytes","qos":0,"retain":0,"payloadlen":18,"payload":"20030009000212b8"}
2026-07-27T21:53:52+0100{"tst":"2026-07-27T21:53:52.324962+0100","topic":"home/solar/sungrow/Emulated_power","qos":0,"retain":0,"payloadlen":5,"payload":220}
2026-07-27T21:53:52+0100{"tst":"2026-07-27T21:53:52.334065+0100","topic":"home/solar/sungrow/EmuTxBytes","qos":0,"retain":0,"payloadlen":20,"payload":"20030400000898cd5b"}
2026-07-27T21:53:53+0100{"tst":"2026-07-27T21:53:53.272921+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":220}
2026-07-27T21:53:53+0100{"tst":"2026-07-27T21:53:53.282750+0100","topic":"home/solar/sungrow/MonRxBytes","qos":0,"retain":0,"payloadlen":22,"payload":"8:20030400000898cd5b"}
2026-07-27T21:54:04+0100{"tst":"2026-07-27T21:54:04.145330+0100","topic":"home/solar/sungrow/MonTxBytes","qos":0,"retain":0,"payloadlen":18,"payload":"20030009000212b8"}
2026-07-27T21:54:04+0100{"tst":"2026-07-27T21:54:04.636205+0100","topic":"home/solar/sungrow/EmuRxBytes","qos":0,"retain":0,"payloadlen":18,"payload":"20030009000212b8"}
2026-07-27T21:54:04+0100{"tst":"2026-07-27T21:54:04.826091+0100","topic":"home/solar/sungrow/Emulated_power","qos":0,"retain":0,"payloadlen":5,"payload":316}
2026-07-27T21:54:04+0100{"tst":"2026-07-27T21:54:04.829405+0100","topic":"home/solar/sungrow/EmuTxBytes","qos":0,"retain":0,"payloadlen":20,"payload":"20030400000c58cfcb"}
^C(base) coderdojo@rhubarb:~$
So every few requests from the Monitor (made once every 10 secs) it sees the response from the Emulator
'2026-07-27T22:00:10+0100{"tst":"2026-07-27T22:00:10.879481+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":351}
2026-07-27T22:00:23+0100{"tst":"2026-07-27T22:00:23.306534+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":156}
2026-07-27T22:00:45+0100{"tst":"2026-07-27T22:00:45.020536+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":268}
2026-07-27T22:01:07+0100{"tst":"2026-07-27T22:01:07.447752+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":178}
2026-07-27T22:01:19+0100{"tst":"2026-07-27T22:01:19.742903+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":266}
2026-07-27T22:02:03+0100{"tst":"2026-07-27T22:02:03.681408+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":247}
2026-07-27T22:02:16+0100{"tst":"2026-07-27T22:02:16.184611+0100","topic":"home/solar/sungrow/Feeder_power","qos":0,"retain":0,"payloadlen":5,"payload":137}
So next is to connect Monitor to S100 near ESB meter and change Emulator to use values posted to topic "home/solar/sungrow/Feeder_power" rather than the random ones :)
(Sat 25th Jul 2026 16:42)
It is working over RS485 to the SH3.0RS over two wires (A,B). But the CT sensor needs to be between the consumer unit and the ESB meter clamped on the live wire the correct way round. Otherwise it won't know how much energy from the inverter is being consumed within the house.
My plan is to relay this information using ESP32 devices.
The first step is to capture th current comms between the inverter and the S100 meter. I'm expecting the inverter to be sending read commands every few seconds to the meter to which it responds.
I have found a blue USB RS485 dongle and a MAX485 board attached to a Heltec CubeCell Board Plus.
So I'd like to get something lik Modbus Poll running on my Rhubarb Linux laptop first. However..
(base) coderdojo@rhubarb:~$ date
Sat 25 Jul 2026 16:49:26 IST
(base) coderdojo@rhubarb:~$ ldd --version
ldd (Ubuntu GLIBC 2.39-0ubuntu8.7) 2.39
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
(base) coderdojo@rhubarb:~$ cd Downloads/
(base) coderdojo@rhubarb:~/Downloads$ ./"Modbus Poll_0.1.5_amd64.AppImage"
modbus-poll: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.43' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/libglib-2.0.so.0)
modbus-poll: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.43' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/libwebkit2gtk-4.1.so.0)
modbus-poll: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.42' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/libwebkit2gtk-4.1.so.0)
modbus-poll: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.43' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/libjavascriptcoregtk-4.1.so.0)
modbus-poll: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.43' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/liblcms2.so.2)
modbus-poll: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.43' not found (required by /tmp/.mount_ModbusLFngMe/usr/lib/libjxl.so.0.11)
(base) coderdojo@rhubarb:~/Downloads$
(base) coderdojo@rhubarb:~$ dmesg -w
[ 299.296263] usb 1-3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.62
[ 299.296281] usb 1-3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 299.296289] usb 1-3: Product: USB2.0-Serial
[ 299.346087] usbcore: registered new interface driver usbserial_generic
[ 299.346102] usbserial: USB Serial support registered for generic
[ 299.347405] usbcore: registered new interface driver ch341
[ 299.347423] usbserial: USB Serial support registered for ch341-uart
[ 299.347437] ch341 1-3:1.0: ch341-uart converter detected
[ 299.347902] usb 1-3: ch341-uart converter now attached to ttyUSB0
https://github.com/gavinying/modpoll
(base) coderdojo@rhubarb:~$ pip3 install 'modpoll[serial]'
(base) coderdojo@rhubarb:~$ modpoll
Modpoll v1.6.0 - A New Command-line Tool for Modbus and MQTT
usage: modpoll [-h] [-v] -f CONFIG [CONFIG ...] [-d] [-r RATE] [-1] [--interval INTERVAL] [--tcp TCP] [--tcp-port TCP_PORT]
[--udp UDP] [--udp-port UDP_PORT] [--serial SERIAL] [--serial-baud SERIAL_BAUD]
[--serial-parity {none,odd,even}] [--timeout TIMEOUT] [-o EXPORT] [--mqtt-version {3.1.1,5.0}]
[--mqtt-host MQTT_HOST] [--mqtt-port MQTT_PORT] [--mqtt-clientid MQTT_CLIENTID]
[--mqtt-publish-topic-pattern MQTT_PUBLISH_TOPIC_PATTERN]
[--mqtt-subscribe-topic-pattern MQTT_SUBSCRIBE_TOPIC_PATTERN]
[--mqtt-diagnostics-topic-pattern MQTT_DIAGNOSTICS_TOPIC_PATTERN] [--mqtt-qos {0,1,2}]
[--mqtt-user MQTT_USER] [--mqtt-pass MQTT_PASS] [--mqtt-use-tls] [--mqtt-insecure]
[--mqtt-cacerts MQTT_CACERTS] [--mqtt-tls-version {tlsv1.2,tlsv1.1,tlsv1}] [--mqtt-single]
[--diagnostics-rate DIAGNOSTICS_RATE] [--autoremove] [--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
[--timestamp] [--delay DELAY] [--framer {default,ascii,rtu,socket}]
modpoll: error: the following arguments are required: -f/--config
(base) coderdojo@rhubarb:~$ modpoll --serial /dev/ttyUSB0
(base) coderdojo@rhubarb:~$ git clone https://github.com/gavinying/modpoll.git
Cloning into 'modpoll'...
remote: Enumerating objects: 1871, done.
remote: Counting objects: 100% (336/336), done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 1871 (delta 267), reused 226 (delta 226), pack-reused 1535 (from 2)
Receiving objects: 100% (1871/1871), 16.17 MiB | 1.71 MiB/s, done.
Resolving deltas: 100% (1093/1093), done.
(base) coderdojo@rhubarb:~$ cat modpoll/contrib/eniwise/scpms6.csv
device,scpm001,1,,,
poll,holding_register,46001,6,BE_BE,
ref,CT_TYPE,46001,uint16,rw,
ref,CT_RATING,46002,uint16,rw,
ref,DATA_SCALAR,46003,uint16,rw,
ref,ReservedA,46004,uint16,rw,
ref,ReservedB,46005,uint16,rw,
ref,SIGNED_MODE,46006,uint16,rw,
poll,holding_register,46011,92,BE_BE,
ref,Hz,46011,int16,r,Hz,1
ref,V,46012,int16,r,V,1
ref,CH1_A,46013,int16,r,A,1
ref,CH2_A,46014,int16,r,A,1
ref,CH3_A,46015,int16,r,A,1
ref,CH4_A,46016,int16,r,A,1
ref,CH5_A,46017,int16,r,A,1
ref,CH6_A,46018,int16,r,A,1
ref,CH1_kWh,46019,uint32,r,kWh,1
ref,CH2_kWh,46021,uint32,r,kWh,1
ref,CH3_kWh,46023,uint32,r,kWh,1
ref,CH4_kWh,46025,uint32,r,kWh,1
ref,CH5_kWh,46027,uint32,r,kWh,1
ref,CH6_kWh,46029,uint32,r,kWh,1
ref,CH1_kWh_P,46031,uint32,r,kWh,1
ref,CH2_kWh_P,46033,uint32,r,kWh,1
ref,CH3_kWh_P,46035,uint32,r,kWh,1
ref,CH4_kWh_P,46037,uint32,r,kWh,1
ref,CH5_kWh_P,46039,uint32,r,kWh,1
ref,CH6_kWh_P,46041,uint32,r,kWh,1
ref,CH1_kWh_N,46043,uint32,r,kWh,1
ref,CH2_kWh_N,46045,uint32,r,kWh,1
ref,CH3_kWh_N,46047,uint32,r,kWh,1
ref,CH4_kWh_N,46049,uint32,r,kWh,1
ref,CH5_kWh_N,46051,uint32,r,kWh,1
ref,CH6_kWh_N,46053,uint32,r,kWh,1
ref,CH1_kVARh,46055,uint32,r,kVARh,1
ref,CH2_kVARh,46057,uint32,r,kVARh,1
ref,CH3_kVARh,46059,uint32,r,kVARh,1
ref,CH4_kVARh,46061,uint32,r,kVARh,1
ref,CH5_kVARh,46063,uint32,r,kVARh,1
ref,CH6_kVARh,46065,uint32,r,kVARh,1
ref,CH1_kVARh_P,46067,uint32,r,kVARh,1
ref,CH2_kVARh_P,46069,uint32,r,kVARh,1
ref,CH3_kVARh_P,46071,uint32,r,kVARh,1
ref,CH4_kVARh_P,46073,uint32,r,kVARh,1
ref,CH5_kVARh_P,46075,uint32,r,kVARh,1
ref,CH6_kVARh_P,46077,uint32,r,kVARh,1
ref,CH1_kVARh_N,46079,uint32,r,kVARh,1
ref,CH2_kVARh_N,46081,uint32,r,kVARh,1
ref,CH3_kVARh_N,46083,uint32,r,kVARh,1
ref,CH4_kVARh_N,46085,uint32,r,kVARh,1
ref,CH5_kVARh_N,46087,uint32,r,kVARh,1
ref,CH6_kVARh_N,46089,uint32,r,kVARh,1
ref,CH1_kVA,46091,int16,r,kVA,1
ref,CH2_kVA,46092,int16,r,kVA,1
ref,CH3_kVA,46093,int16,r,kVA,1
ref,CH4_kVA,46094,int16,r,kVA,1
ref,CH5_kVA,46095,int16,r,kVA,1
ref,CH6_kVA,46096,int16,r,kVA,1
ref,CH1_PF,46097,int16,r,,1
ref,CH2_PF,46098,int16,r,,1
ref,CH3_PF,46099,int16,r,,1
ref,Reserved1,46100,int16,r,
ref,Reserved2,46101,int16,r,
ref,Reserved3,46102,int16,r,
(base) coderdojo@rhubarb:~$ modpoll --serial /dev/ttyUSB0 --serial-baud 9600 --config modpoll/contrib/eniwise/scpms6.csv
Modpoll v1.6.0 - A New Command-line Tool for Modbus and MQTT
2026-07-25 17:00:44,347 | I | modpoll.main | No MQTT host specified, skip MQTT setup.
2026-07-25 17:00:44,347 | I | modpoll.modbus_task | Loading config from: modpoll/contrib/eniwise/scpms6.csv
2026-07-25 17:00:44,348 | I | modpoll.modbus_task | Added 1 device(s)...
2026-07-25 17:00:44,348 | I | modpoll.main | Loaded 1 Modbus config(s).
2026-07-25 17:00:44,348 | I | modpoll.main | === Modpoll is polling at rate:10.0s, actual:10.0s ===
^C2026-07-25 17:00:55,487 | I | modpoll.main | Exiting /home/coderdojo/anaconda3/bin/modpoll
2026-07-25 17:00:56,363 | E | pymodbus.logging | No response received after 3 retries, continue with next request
2026-07-25 17:00:56,363 | E | modpoll.modbus_task | Modbus exception: scpm001 3 46001 6
Device: scpm001
+-------------+-------+-------+
| Reference | Value | Unit |
+-------------+-------+-------+
| CT_TYPE | None | |
| CT_RATING | None | |
| DATA_SCALAR | None | |
| ReservedA | None | |
| ReservedB | None | |
| SIGNED_MODE | None | |
| Hz | None | Hz |
| V | None | V |
| CH1_A | None | A |
| CH2_A | None | A |
| CH3_A | None | A |
| CH4_A | None | A |
| CH5_A | None | A |
| CH6_A | None | A |
| CH1_kWh | None | kWh |
| CH2_kWh | None | kWh |
| CH3_kWh | None | kWh |
| CH4_kWh | None | kWh |
| CH5_kWh | None | kWh |
| CH6_kWh | None | kWh |
| CH1_kWh_P | None | kWh |
| CH2_kWh_P | None | kWh |
| CH3_kWh_P | None | kWh |
| CH4_kWh_P | None | kWh |
| CH5_kWh_P | None | kWh |
| CH6_kWh_P | None | kWh |
| CH1_kWh_N | None | kWh |
| CH2_kWh_N | None | kWh |
| CH3_kWh_N | None | kWh |
| CH4_kWh_N | None | kWh |
| CH5_kWh_N | None | kWh |
| CH6_kWh_N | None | kWh |
| CH1_kVARh | None | kVARh |
| CH2_kVARh | None | kVARh |
| CH3_kVARh | None | kVARh |
| CH4_kVARh | None | kVARh |
| CH5_kVARh | None | kVARh |
| CH6_kVARh | None | kVARh |
| CH1_kVARh_P | None | kVARh |
| CH2_kVARh_P | None | kVARh |
| CH3_kVARh_P | None | kVARh |
| CH4_kVARh_P | None | kVARh |
| CH5_kVARh_P | None | kVARh |
| CH6_kVARh_P | None | kVARh |
| CH1_kVARh_N | None | kVARh |
| CH2_kVARh_N | None | kVARh |
| CH3_kVARh_N | None | kVARh |
| CH4_kVARh_N | None | kVARh |
| CH5_kVARh_N | None | kVARh |
| CH6_kVARh_N | None | kVARh |
| CH1_kVA | None | kVA |
| CH2_kVA | None | kVA |
| CH3_kVA | None | kVA |
| CH4_kVA | None | kVA |
| CH5_kVA | None | kVA |
| CH6_kVA | None | kVA |
| CH1_PF | None | |
| CH2_PF | None | |
| CH3_PF | None | |
| Reserved1 | None | |
| Reserved2 | None | |
| Reserved3 | None | |
+-------------+-------+-------+
(base) coderdojo@rhubarb:~$ ^C
(base) coderdojo@rhubarb:~$ date
Sat 25 Jul 2026 17:00:59 IST
(base) coderdojo@rhubarb:~$
Can I set this up to interoogate my simulation of the Sungrow S100 meter?
https://github.com/Linux-RISC/Sungrow-Meter-cheater/issues/1