Solar Inverter Protocol Identification

I have made a very small progress, as @syssi informed that SmartESS APP using inverter will be
esphome-smg-ii

The baud rate of my inverter is 2400. A very small step but for me its progress :slight_smile:

Which inverter are you trying to connect to?

I am quite sure that this is an OEM in my country. the inverter uses the following application

Please correct me if I am wrong (ignore my ignorance) . I am not proficient at this at all. But I think that my esp32 is faulty. Because no matter if I connect the RS232 or not, I still get the same results as shown in the following link

Any comments ?

I’m from the same country. What’s the brand name of the inverter?
From the logs your esp32 looks ok to me.

Hi syssi,
I am trying pipsolar with HA GitHub - syssi/esphome-pipsolar: ESPHome component to monitor and control a pipsolar inverter via RS232
Inverter DAXTROMN 6.2kW, looks the same like PowMr and many others.
uart debug string shows real values from inverter, pipsolar crc ok, but to HA are sent only zeroes.

[14:39:48][D][pipsolar:839]: Sending polling command : QPIRI with length 5
[14:39:48][D][uart_debug:158]: <<< “QPIRI\xF8T\r”
[14:39:48][D][pipsolar:773]: checking crc on incoming message
[14:39:48][D][pipsolar:776]: CRC OK
[14:39:48][D][pipsolar:430]: Decode QPIRI
[14:39:48][D][text_sensor:064]: ‘inverter0_last_qpiri’: Sending state ‘QPIRI’
[14:39:48][D][sensor:094]: ‘inverter0_grid_rating_voltage’: Sending state 0.00000 V with 1 decimals of accuracy
[14:39:48][D][sensor:094]: ‘inverter0_grid_rating_current’: Sending state 0.00000 A with 1 decimals of accuracy
[14:39:48][D][sensor:094]: ‘inverter0_ac_output_rating_current’: Sending state 0.00000 A with 1 decimals of accuracy
[14:39:48][D][sensor:094]: ‘inverter0_output_source_priority’: Sending state 0.00000 with 1 decimals of accuracy
[14:39:48][D][sensor:094]: ‘inverter0_charger_source_priority’: Sending state 0.00000 with 1 decimals of accuracy
[14:39:48][D][sensor:094]: ‘inverter0_pv_power_balance’: Sending state 0.00000 with 1 decimals of accuracy
[14:39:48][W][component:214]: Component esphome.coroutine took a long time for an operation (0.06 s).
[14:39:48][W][component:215]: Components should block for at most 20-30ms.
[14:39:49][D][uart_debug:158]: <<< “(230.0 26.9 230.0 50.0 26.9 6200 6200 48.0 42.0 42.0 49.2 48.2 2 020 040 1 1 1 1 01 0 0 49.0 0 1\x16\xE8\r”
[14:39:49][D][uart_debug:158]: >>> “QPIGS\xB7\xA9\r”
[14:39:49][D][pipsolar:839]: Sending polling command : QPIGS with length 5
[14:39:49][D][uart_debug:158]: <<< “QPIGS\xB7\xA9\r”
[14:39:49][D][pipsolar:773]: checking crc on incoming message
[14:39:49][D][pipsolar:776]: CRC OK
[14:39:49][D][pipsolar:449]: Decode QPIGS
[14:39:49][D][text_sensor:064]: ‘inverter0_last_qpigs’: Sending state ‘QPIGS’
[14:39:49][D][sensor:094]: ‘inverter0_grid_voltage’: Sending state 0.00000 V with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_grid_frequency’: Sending state 0.00000 Hz with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_ac_output_voltage’: Sending state 0.00000 V with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_ac_output_frequency’: Sending state 0.00000 Hz with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_ac_output_apparent_power’: Sending state 0.00000 VA with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_ac_output_active_power’: Sending state 0.00000 W with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_output_load_percent’: Sending state 0.00000 % with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_battery_voltage’: Sending state 0.00000 V with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_battery_charging_current’: Sending state 0.00000 A with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_battery_capacity_percent’: Sending state 0.00000 % with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_inverter_heat_sink_temperature’: Sending state 0.00000 °C with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_pv_input_current_for_battery’: Sending state 0.00000 A with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_pv_input_voltage’: Sending state 0.00000 V with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_battery_discharge_current’: Sending state 0.00000 A with 1 decimals of accuracy
[14:39:49][D][sensor:094]: ‘inverter0_pv_charging_power’: Sending state 0.00000 W with 1 decimals of accuracy
[14:39:49][W][component:214]: Component esphome.coroutine took a long time for an operation (0.15 s).
[14:39:50][W][component:215]: Components should block for at most 20-30ms.
[14:39:50][D][uart_debug:158]: <<< “(223.4 49.9 000.0 00.0 0000 0000 000 001 03.40 000 000 0032 00.0 000.0 00.00 00000 00000000 00 00 00000 000b\xD7\r”
[14:39:50][D][uart_debug:158]: >>> “QMODI\xC1\r”
[14:39:50][D][pipsolar:839]: Sending polling command : QMOD with length 4
[14:39:50][D][uart_debug:158]: <<< “QMODI\xC1\r”
[14:39:50][D][pipsolar:773]: checking crc on incoming message
[14:39:50][D][pipsolar:776]: CRC OK
[14:39:50][D][pipsolar:472]: Decode QMOD

Could you create an issue at the mentioned Github project? I will have a look.

I am not familliar with github, but will try.

Follow-up: Daxtromn 6.2kW issue · Issue #98 · syssi/esphome-pipsolar · GitHub

Hello
I have the same inverter. Can you describe how you established communication with the inverter?I try with ESPhome but it doesn’t read the data

Hello, I used your code but it cannot connect to homeassistant successfully. Can you make an example for me?

Is this your first ESPHome device? Did you enable the ESPHome integration?


I added the API snippet it was added to Homeassistant. But the sensors don’t have any data. I suspect my rs232 port has a different structure. Can I use a power meter to check GND?

Could you provide some details about your inverter? Are you sure about the protocol? Are you able to talk to your inverter using some other application f.e. a windows application of the manufacturer?


i am using arnen evo6200 inverter. This is the document I obtained from the manufacturer. I’m using this circuit to connect it to the 8266, maybe this circuit doesn’t work, I’ll look for a circuit similar to yours.

Hey Syssi, I have the same problem “duymelody9x”. My inverter was a Axpert King 5kw and i just have this in the log:

16:45:55 [D] [sensor:093] ‘PIP Solar WiFi RSSI’: Sending state -76.00000 dBm with 0 decimals of accuracy
16:45:55 [D] [pipsolar:756] timeout command to poll: QFLAG
16:45:56 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:46:00 [D] [pipsolar:756] timeout command to poll: QPIRI
16:46:01 [D] [pipsolar:837] Sending polling command : QPIGS with length 5
16:46:05 [D] [pipsolar:756] timeout command to poll: QPIGS
16:46:06 [D] [pipsolar:837] Sending polling command : QMOD with length 4
16:46:10 [D] [pipsolar:756] timeout command to poll: QMOD
16:46:11 [D] [pipsolar:837] Sending polling command : QFLAG with length 5
16:46:15 [D] [pipsolar:756] timeout command to poll: QFLAG
16:46:16 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:46:20 [D] [text_sensor:064] ‘PIP Solar Uptime’: Sending state ‘1h 36m 30s’
16:46:21 [D] [sensor:093] ‘PIP Solar Uptime Sensor’: Sending state 5790.38477 s with 0 decimals of accuracy
16:46:21 [D] [pipsolar:756] timeout command to poll: QPIRI
16:46:21 [D] [pipsolar:837] Sending polling command : QPIGS with length 5
16:46:26 [D] [pipsolar:756] timeout command to poll: QPIGS
16:46:26 [D] [pipsolar:837] Sending polling command : QMOD with length 4
16:46:31 [D] [pipsolar:756] timeout command to poll: QMOD
16:46:31 [D] [pipsolar:837] Sending polling command : QFLAG with length 5
16:46:36 [D] [pipsolar:756] timeout command to poll: QFLAG
16:46:36 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:46:41 [D] [pipsolar:756] timeout command to poll: QPIRI
16:46:41 [D] [pipsolar:837] Sending polling command : QPIGS with length 5
16:46:46 [D] [pipsolar:756] timeout command to poll: QPIGS
16:46:46 [D] [pipsolar:837] Sending polling command : QMOD with length 4
16:46:51 [D] [pipsolar:756] timeout command to poll: QMOD
16:46:51 [D] [pipsolar:837] Sending polling command : QFLAG with length 5
16:46:55 [D] [sensor:093] ‘PIP Solar WiFi RSSI’: Sending state -79.00000 dBm with 0 decimals of accuracy
16:46:56 [D] [pipsolar:756] timeout command to poll: QFLAG
16:46:56 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:47:01 [D] [pipsolar:756] timeout command to poll: QPIRI
16:47:01 [D] [pipsolar:837] Sending polling command : QPIGS with length 5
16:47:06 [D] [pipsolar:756] timeout command to poll: QPIGS
16:47:06 [D] [pipsolar:837] Sending polling command : QMOD with length 4
16:47:11 [D] [pipsolar:756] timeout command to poll: QMOD
16:47:11 [D] [pipsolar:837] Sending polling command : QFLAG with length 5
16:47:16 [D] [pipsolar:756] timeout command to poll: QFLAG
16:47:16 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:47:20 [D] [text_sensor:064] ‘PIP Solar Uptime’: Sending state ‘1h 37m 30s’
16:47:21 [D] [sensor:093] ‘PIP Solar Uptime Sensor’: Sending state 5850.38379 s with 0 decimals of accuracy
16:47:21 [D] [pipsolar:756] timeout command to poll: QPIRI
16:47:21 [D] [pipsolar:837] Sending polling command : QPIGS with length 5
16:47:26 [D] [pipsolar:756] timeout command to poll: QPIGS
16:47:26 [D] [pipsolar:837] Sending polling command : QMOD with length 4
16:47:31 [D] [pipsolar:756] timeout command to poll: QMOD
16:47:31 [D] [pipsolar:837] Sending polling command : QFLAG with length 5
16:47:36 [D] [pipsolar:756] timeout command to poll: QFLAG
16:47:36 [D] [pipsolar:837] Sending polling command : QPIRI with length 5
16:47:41 [D] [pipsolar:756] timeout command to poll: QPIRI

Please double check your wiring and try to verify the health of your RS232 converter module. This thread could help: https://powerforum.co.za/topic/10589-esphome-axpert-5k-rs232-pinout/

image
I bought a new rs232 to ttl module, and it worked, thank you very much

@syssi * charger_source_priority (Optional): charger source priority;

  • possible_values (Optional, list): a list of possible values default: 0,1,2,3
    i want to add this setting can you give me example code?