Open lucasimons opened 3 years ago
Could you make a better photo of the rj45 connector? I want to make sure you have connected the correct pins. Ignore the color of the wires.
@avion23 Is the rs232 converter wired correctly?
I'll check again this weekend and upload photos
I use the original cable that came with the inverter and it have only 4 cable
I also have this converter but I search on internet how to connect them but I find different connections
You have to connect RX, TX and GND of the RJ45 cable to the Sub-D connector / pins. This circuit could/should help:
At the pin header you've to connect RX, TX, VCC3.3 and GND.
Don't connect the blue wire. In my opinion this is 12V VCC of the inverter. We don't need this voltage. ;-)
After checking I think I have connected in the correct way but I am waiting for confirmation because it does not work even now
The blue wire is 12v, don't connect it. 12v can drive a buck converter to power the ESP. Thus no need of external power. Try this pinout orange-white -> pin 2 solid orange -> pin 3 solid brown -> pin 5
Which converter do you use?
Which converter do you use?
I recently buyed a Voltronic Axpert VMIII 3kw/24v but I'm still having some issues with pipsolar.
I think that is similar to yours.
It communicates but seems that protocol is not good.
I also have a 2.4kw 24v easun rebranded voltronic, but looking at the logs I don't get any response from the inverter ... Do you have any signs of life from the inverter?
Did you try the increase the log level of the UART component to VERY_VERBOSE
? This would dump every transmitted/received byte to the log. This log would help to debug protocol issues.
Yes but i see that the esp send the command but the inverter not responding
[08:50:45][D][pipsolar:757]: timeout command to poll: QMOD
[08:50:45][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:50:45][VV][uart_esp8266:111]: Wrote 0b01000110 (0x46)
[08:50:45][VV][uart_esp8266:111]: Wrote 0b01001100 (0x4C)
[08:50:45][VV][uart_esp8266:111]: Wrote 0b01000001 (0x41)
[08:50:45][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[08:50:45][VV][uart_esp8266:101]: Wrote 0b10011000 (0x98)
[08:50:45][VV][uart_esp8266:101]: Wrote 0b01110100 (0x74)
[08:50:45][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:50:45][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[08:50:45][C][captive_portal:148]: Captive Portal:
[08:50:45][C][api:095]: API Server:
[08:50:45][C][api:096]: Address: sensor2.local:6053
[08:50:45][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=15936 (now=16938)
[08:50:46][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=16936 (now=17936)
[08:50:47][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=17936 (now=18936)
[08:50:48][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=18936 (now=19942)
[08:50:49][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=19936 (now=20938)
[08:50:50][D][pipsolar:757]: timeout command to poll: QFLAG
[08:50:50][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:50:50][VV][uart_esp8266:111]: Wrote 0b01010000 (0x50)
[08:50:50][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:50:50][VV][uart_esp8266:111]: Wrote 0b01010010 (0x52)
[08:50:50][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:50:50][VV][uart_esp8266:101]: Wrote 0b11111000 (0xF8)
[08:50:50][VV][uart_esp8266:101]: Wrote 0b01010100 (0x54)
[08:50:50][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:50:50][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[08:50:50][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=20936 (now=21942)
[08:50:51][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=21936 (now=22936)
[08:50:52][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=22936 (now=23936)
[08:50:53][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=23936 (now=24936)
[08:50:54][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=24936 (now=25939)
[08:50:55][D][pipsolar:757]: timeout command to poll: QPIRI
[08:50:55][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:50:55][VV][uart_esp8266:111]: Wrote 0b01010000 (0x50)
[08:50:55][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:50:55][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[08:50:55][VV][uart_esp8266:111]: Wrote 0b01010011 (0x53)
[08:50:55][VV][uart_esp8266:101]: Wrote 0b10110111 (0xB7)
[08:50:55][VV][uart_esp8266:101]: Wrote 0b10101001 (0xA9)
[08:50:55][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:50:55][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[08:50:55][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=25936 (now=26936)
[08:50:56][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=26936 (now=27943)
[08:50:57][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=27936 (now=28936)
[08:50:58][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=28936 (now=29939)
[08:50:59][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=29936 (now=30937)
[08:51:00][D][pipsolar:757]: timeout command to poll: QPIGS
[08:51:00][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:51:00][VV][uart_esp8266:111]: Wrote 0b01001101 (0x4D)
[08:51:00][VV][uart_esp8266:111]: Wrote 0b01001111 (0x4F)
[08:51:00][VV][uart_esp8266:111]: Wrote 0b01000100 (0x44)
[08:51:00][VV][uart_esp8266:101]: Wrote 0b01001001 (0x49)
[08:51:00][VV][uart_esp8266:101]: Wrote 0b11000001 (0xC1)
[08:51:00][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:51:00][D][pipsolar:840]: Sending polling command : QMOD with length 4
[08:51:00][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=30936 (now=31936)
[08:51:01][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=31936 (now=32938)
[08:51:02][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=32936 (now=33937)
[08:51:03][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=33936 (now=34939)
[08:51:04][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=34936 (now=35937)
[08:51:05][D][pipsolar:757]: timeout command to poll: QMOD
[08:51:05][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:51:05][VV][uart_esp8266:111]: Wrote 0b01000110 (0x46)
[08:51:05][VV][uart_esp8266:111]: Wrote 0b01001100 (0x4C)
[08:51:05][VV][uart_esp8266:111]: Wrote 0b01000001 (0x41)
[08:51:05][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[08:51:05][VV][uart_esp8266:101]: Wrote 0b10011000 (0x98)
[08:51:05][VV][uart_esp8266:101]: Wrote 0b01110100 (0x74)
[08:51:05][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:51:05][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[08:51:05][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=35936 (now=36936)
[08:51:06][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=36936 (now=37939)
[08:51:07][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=37936 (now=38936)
[08:51:08][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=38936 (now=39937)
[08:51:09][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=39936 (now=40936)
[08:51:10][D][pipsolar:757]: timeout command to poll: QFLAG
[08:51:10][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:51:10][VV][uart_esp8266:111]: Wrote 0b01010000 (0x50)
[08:51:10][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:51:10][VV][uart_esp8266:111]: Wrote 0b01010010 (0x52)
[08:51:10][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:51:10][VV][uart_esp8266:101]: Wrote 0b11111000 (0xF8)
[08:51:10][VV][uart_esp8266:101]: Wrote 0b01010100 (0x54)
[08:51:10][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:51:10][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[08:51:10][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=40936 (now=41936)
[08:51:11][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=41936 (now=42940)
[08:51:12][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=42936 (now=43936)
[08:51:13][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=43936 (now=44938)
[08:51:14][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=44936 (now=45936)
[08:51:15][D][pipsolar:757]: timeout command to poll: QPIRI
[08:51:15][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[08:51:15][VV][uart_esp8266:111]: Wrote 0b01010000 (0x50)
[08:51:15][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[08:51:15][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[08:51:15][VV][uart_esp8266:111]: Wrote 0b01010011 (0x53)
[08:51:15][VV][uart_esp8266:101]: Wrote 0b10110111 (0xB7)
[08:51:15][VV][uart_esp8266:101]: Wrote 0b10101001 (0xA9)
[08:51:15][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[08:51:15][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[08:51:15][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=45936 (now=46940)
[08:51:16][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=46936 (now=47936)
Please make sure the TX LED of the RS232 converter module is flashing periodically. If the RX LED is flashing the module isn't wired correctly.
I got it working, but not all values are good. Panel voltage and power are 0v and 0w, as you can see in my screenshot. Althought it's charging batteries and powering home from PV's.
In my converter , the smallest haven't led and the biggest ha a led but seems that not blinking
That's great can you send pictures of your converter and connections on the esp? @rem72
One thing to take into account for the small RS232-TTL converter, both wires, from rs232 and ttl should be connected at the same face. This is one of my previous errors. For the big one, check the gender of the big connector, if it's female, this are the right connections: If it is male I think you can use the cable instead of soldering.
Now I got it working with a small one.
Now I connect the tx of the converter with the tx of wemos d1 mini and I see blinking the led but I don't see any data in the log.... the converter is the same of your converter female
Ah! And I used the hardware serial of the wemos d1 instead of a software one, this can be done if you change the logger uart. Which pins do you use for comms? This is my code:
esphome:
name: solar
platform: ESP8266
board: d1_mini
# Enable logging
logger:
hardware_uart: UART1
level: verbose
# Enable Home Assistant API
api:
ota:
password: !secret OTAPass
wifi:
ssid: !secret Wifi
password: !secret WifiPass
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Solar Fallback Hotspot"
password: !secret OTAPass
captive_portal:
uart:
- id: uart_bus
tx_pin: TX
rx_pin: RX
# most devices use 2400 as baud_rate
baud_rate: 2400
pipsolar:
- uart_id: uart_bus
id: inverter0
sensor:
- platform: pipsolar
pipsolar_id: inverter0
grid_rating_current:
id: inverter0_grid_rating_current
name: inverter0_grid_rating_current
ac_output_active_power:
id: inverter0_ac_output_active_power
name: inverter0_ac_output_active_power
ac_output_apparent_power:
id: inverter0_ac_output_apparent_power
name: inverter0_ac_output_apparent_power
ac_output_voltage:
id: inverter0_ac_output_voltage
name: inverter0_ac_output_voltage
battery_capacity_percent:
id: inverter0_battery_capacity_percent
name: inverter0_battery_capacity_percent
battery_charging_current:
id: inverter0_battery_charging_current
name: inverter0_battery_charging_current
battery_discharge_current:
id: inverter0_battery_discharge_current
name: inverter0_battery_discharge_current
battery_voltage:
id: inverter0_battery_voltage
name: inverter0_battery_voltage
grid_voltage:
id: inverter0_grid_voltage
name: inverter0_grid_voltage
inverter_heat_sink_temperature:
id: inverter0_inverter_heat_sink_temperature
name: inverter0_inverter_heat_sink_temperature
output_load_percent:
id: inverter0_output_load_percent
name: inverter0_output_load_percent
pv_charging_power:
id: inverter0_pv_charging_power
name: inverter0_pv_charging_power
pv_input_voltage:
id: inverter0_pv_input_voltage
name: inverter0_pv_input_voltage
text_sensor:
- platform: pipsolar
pipsolar_id: inverter0
device_mode:
id: inverter0_device_mode
name: inverter0_device_mode
last_qpigs:
id: inverter0_last_qpigs
name: inverter0_last_qpigs
last_qpiri:
id: inverter0_last_qpiri
name: inverter0_last_qpiri
switch:
- platform: pipsolar
pipsolar_id: inverter0
output_source_priority_utility:
name: inverter0_output_source_priority_utility
output_source_priority_solar:
name: inverter0_output_source_priority_solar
output_source_priority_battery:
name: inverter0_output_source_priority_battery
input_voltage_range:
name: inverter0_input_voltage_range
pv_power_balance:
name: inverter0_pv_power_balance
This is my code
esphome:
name: sensor2
platform: ESP8266
board: d1_mini
captive_portal:
# Enable logging
logger:
baud_rate: 0
level: VERY_VERBOSE
logs:
uart: VERY_VERBOSE
uart_esp8266: VERY_VERBOSE
api.service: WARN
ota: WARN
sensor: DEBUG
# Enable Home Assistant API
api:
ota:
substitutions:
name: pipsolar
uart:
id: uart0
baud_rate: 2400
tx_pin: GPIO1
rx_pin: GPIO3
pipsolar:
uart_id: uart0
id: inverter0
sensor:
- platform: pipsolar
pipsolar_id: inverter0
# QPIRI
grid_rating_voltage:
name: "Inverter grid_rating_voltage"
grid_rating_current:
name: "Inveter grid_rating_current"
ac_output_rating_voltage:
name: "Inveter ac_output_rating_voltage"
ac_output_rating_frequency:
name: "Inveter ac_output_rating_frequency"
ac_output_rating_current:
name: "Inveter ac_output_rating_current"
ac_output_rating_apparent_power:
name: "Inveter ac_output_rating_apparent_power"
ac_output_rating_active_power:
name: "Inveter ac_output_rating_active_power"
battery_rating_voltage:
name: "Inveter battery_rating_voltage"
battery_recharge_voltage:
name: "Inveter battery_recharge_voltage"
battery_under_voltage:
name: "Inveter battery_under_voltage"
battery_bulk_voltage:
name: "Inveter battery_bulk_voltage"
battery_float_voltage:
name: "Inveter battery_float_voltage"
battery_type:
name: "Inveter battery_type"
current_max_ac_charging_current:
name: "Inveter current_max_ac_charging_current"
current_max_charging_current:
name: "Inveter current_max_charging_current"
input_voltage_range:
name: "Inveter input_voltage_range"
output_source_priority:
name: "Inveter output_source_priority"
charger_source_priority:
name: "Inveter charger_source_priority"
parallel_max_num:
name: "Inveter parallel_max_num"
machine_type:
name: "Inveter machine_type"
topology:
name: "Inveter topology"
output_mode:
name: "Inveter output_mode"
battery_redischarge_voltage:
name: "Inveter battery_redischarge_voltage"
pv_ok_condition_for_parallel:
name: "Inveter pv_ok_condition_for_parallel"
pv_power_balance:
name: "Inveter pv_power_balance"
# QPIGS
grid_voltage:
name: "Inveter grid_voltage"
grid_frequency:
name: "Inveter grid_frequency"
ac_output_voltage:
name: "Inveter ac_output_voltage"
ac_output_frequency:
name: "Inveter ac_output_frequency"
ac_output_apparent_power:
name: "Inveter ac_output_apparent_power"
ac_output_active_power:
name: "Inveter ac_output_active_power"
output_load_percent:
name: "Inveter output_load_percent"
bus_voltage:
name: "Inveter bus_voltage"
battery_voltage:
name: "Inveter battery_voltage"
battery_charging_current:
name: "Inveter battery_charging_current"
battery_capacity_percent:
name: "Inveter battery_capacity_percent"
inverter_heat_sink_temperature:
name: "Inveter inverter_heat_sink_temperature"
pv_input_current_for_battery:
name: "Inveter pv_input_current_for_battery"
pv_input_voltage:
name: "Inveter pv_input_voltage"
battery_voltage_scc:
name: "Inveter battery_voltage_scc"
battery_discharge_current:
name: "Inveter battery_discharge_current"
battery_voltage_offset_for_fans_on:
name: "Inveter battery_voltage_offset_for_fans_on"
eeprom_version:
name: "Inveter eeprom_version"
pv_charging_power:
name: "Inveter pv_charging_power"
text_sensor:
- platform: pipsolar
pipsolar_id: inverter0
device_mode:
name: "Inveter device_mode"
last_qpigs:
name: "Inveter last_qpigs"
last_qpiri:
name: "Inveter last_qpiri"
last_qmod:
name: "Inveter last_qmod"
last_qflag:
name: "Inveter last_qflag"
binary_sensor:
- platform: pipsolar
pipsolar_id: inverter0
add_sbu_priority_version:
name: "Inveter add_sbu_priority_version"
configuration_status:
name: "Inveter configuration_status"
scc_firmware_version:
name: "Inveter scc_firmware_version"
load_status:
name: "Inveter load_status"
battery_voltage_to_steady_while_charging:
name: "Inveter battery_voltage_to_steady_while_charging"
charging_status:
name: "Inveter charging_status"
scc_charging_status:
name: "Inveter scc_charging_status"
ac_charging_status:
name: "Inveter ac_charging_status"
charging_to_floating_mode:
name: "Inveter charging_to_floating_mode"
switch_on:
name: "Inveter switch_on"
dustproof_installed:
name: "Inveter dustproof_installed"
silence_buzzer_open_buzzer:
name: "Inveter silence_buzzer_open_buzzer"
overload_bypass_function:
name: "Inveter overload_bypass_function"
lcd_escape_to_default:
name: "Inveter lcd_escape_to_default"
overload_restart_function:
name: "Inveter overload_restart_function"
over_temperature_restart_function:
name: "Inveter over_temperature_restart_function"
backlight_on:
name: "Inveter backlight_on"
switch:
- platform: pipsolar
pipsolar_id: inverter0
output_source_priority_utility:
name: "Inveter output_source_priority_utility"
output_source_priority_solar:
name: "Inveter output_source_priority_solar"
output_source_priority_battery:
name: "Inveter output_source_priority_battery"
input_voltage_range:
name: "Inveter input_voltage_range"
pv_ok_condition_for_parallel:
name: "Inveter pv_ok_condition_for_parallel"
pv_power_balance:
name: "Inveter pv_power_balance"
output:
- platform: pipsolar
pipsolar_id: inverter0
battery_recharge_voltage:
id: inverter0_battery_recharge_voltage_out
This are the connections
On the other hand, I think decoding of QPIGS isn't fine. Sissy, here is the verbose log:
[10:51:33][D][text_sensor:015]: 'inverter0_last_qpigs': Sending state '(226.7 49.9 226.7 49.9 0498 0479 016 427 27.00 005 100 0035 01.9 255.1 00.00 00000 10010110 00 00 00510 110'
[10:51:33][V][sensor:037]: 'inverter0_grid_voltage': Received new state 226.699997
[10:51:33][D][sensor:131]: 'inverter0_grid_voltage': Sending state 226.70000 V with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_ac_output_voltage': Received new state 226.699997
[10:51:33][D][sensor:131]: 'inverter0_ac_output_voltage': Sending state 226.70000 V with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_ac_output_apparent_power': Received new state 498.000000
[10:51:33][D][sensor:131]: 'inverter0_ac_output_apparent_power': Sending state 498.00000 VA with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_ac_output_active_power': Received new state 479.000000
[10:51:33][D][sensor:131]: 'inverter0_ac_output_active_power': Sending state 479.00000 W with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_output_load_percent': Received new state 16.000000
[10:51:33][D][sensor:131]: 'inverter0_output_load_percent': Sending state 16.00000 % with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_battery_voltage': Received new state 27.000000
[10:51:33][D][sensor:131]: 'inverter0_battery_voltage': Sending state 27.00000 V with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_battery_charging_current': Received new state 5.000000
[10:51:33][D][sensor:131]: 'inverter0_battery_charging_current': Sending state 5.00000 A with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_battery_capacity_percent': Received new state 100.000000
[10:51:33][D][sensor:131]: 'inverter0_battery_capacity_percent': Sending state 100.00000 % with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_inverter_heat_sink_temperature': Received new state 35.000000
[10:51:33][D][sensor:131]: 'inverter0_inverter_heat_sink_temperature': Sending state 35.00000 °C with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_pv_input_voltage': Received new state 0.900000
[10:51:33][D][sensor:131]: 'inverter0_pv_input_voltage': Sending state 0.90000 V with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_battery_discharge_current': Received new state 0.000000
[10:51:33][D][sensor:131]: 'inverter0_battery_discharge_current': Sending state 0.00000 A with 1 decimals of accuracy
[10:51:33][V][sensor:037]: 'inverter0_pv_charging_power': Received new state 0.000000
[10:51:33][D][sensor:131]: 'inverter0_pv_charging_power': Sending state 0.00000 W with 1 decimals of accuracy
[10:51:33][V][app:082]: A component took a long time in a loop() cycle (0.21 s).
[10:51:33][V][app:083]: Components should block for at most 20-30ms in loop().
But if you use the hardware uart = uart0 you have to send the logger output to the secondary uart = uart1. Check these lines:
logger: hardware_uart: UART1
Yes i see your code and i update my code, now i see that write ant read somethings
[11:23:14][D][pipsolar:840]: Sending polling command : QPIRI with length 5
[11:23:14][VV][uart_esp8266:132]: Read 0b10101010 (0xAA)
[11:23:14][VV][uart_esp8266:132]: Read 0b01001010 (0x4A)
[11:23:14][VV][uart_esp8266:132]: Read 0b10010101 (0x95)
[11:23:14][VV][uart_esp8266:132]: Read 0b11100001 (0xE1)
[11:23:14][VV][uart_esp8266:132]: Read 0b11111111 (0xFF)
[11:23:15][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=242368 (now=243373)
[11:23:16][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=243368 (now=244369)
[11:23:17][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=244368 (now=245372)
[11:23:18][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=245368 (now=246368)
[11:23:19][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=246368 (now=247376)
[11:23:19][D][pipsolar:757]: timeout command to poll: QPIRI
[11:23:19][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[11:23:19][VV][uart_esp8266:111]: Wrote 0b01010000 (0x50)
[11:23:19][VV][uart_esp8266:111]: Wrote 0b01001001 (0x49)
[11:23:19][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[11:23:19][VV][uart_esp8266:111]: Wrote 0b01010011 (0x53)
[11:23:19][VV][uart_esp8266:101]: Wrote 0b10110111 (0xB7)
[11:23:19][VV][uart_esp8266:101]: Wrote 0b10101001 (0xA9)
[11:23:19][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[11:23:19][D][pipsolar:840]: Sending polling command : QPIGS with length 5
[11:23:19][VV][uart_esp8266:132]: Read 0b10101010 (0xAA)
[11:23:19][VV][uart_esp8266:132]: Read 0b11101010 (0xEA)
[11:23:19][VV][uart_esp8266:132]: Read 0b01101010 (0x6A)
[11:23:19][VV][uart_esp8266:132]: Read 0b11110101 (0xF5)
[11:23:19][VV][uart_esp8266:132]: Read 0b11111111 (0xFF)
[11:23:20][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=247368 (now=248368)
[11:23:21][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=248368 (now=249375)
[11:23:22][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=249368 (now=250368)
[11:23:23][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=250368 (now=251371)
[11:23:24][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=251368 (now=252370)
[11:23:24][D][pipsolar:757]: timeout command to poll: QPIGS
[11:23:24][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[11:23:24][VV][uart_esp8266:111]: Wrote 0b01001101 (0x4D)
[11:23:24][VV][uart_esp8266:111]: Wrote 0b01001111 (0x4F)
[11:23:24][VV][uart_esp8266:111]: Wrote 0b01000100 (0x44)
[11:23:24][VV][uart_esp8266:101]: Wrote 0b01001001 (0x49)
[11:23:24][VV][uart_esp8266:101]: Wrote 0b11000001 (0xC1)
[11:23:24][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[11:23:24][D][pipsolar:840]: Sending polling command : QMOD with length 4
[11:23:24][VV][uart_esp8266:132]: Read 0b11111111 (0xFF)
[11:23:24][VV][uart_esp8266:132]: Read 0b11111110 (0xFE)
[11:23:24][VV][uart_esp8266:132]: Read 0b11111111 (0xFF)
[11:23:25][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=252368 (now=253370)
[11:23:26][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=253368 (now=254368)
[11:23:27][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=254368 (now=255368)
[11:23:28][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=255368 (now=256373)
[11:23:29][VV][scheduler:152]: Running interval 'update' with interval=1000 last_execution=256368 (now=257370)
[11:23:29][D][pipsolar:757]: timeout command to poll: QMOD
[11:23:29][VV][uart_esp8266:111]: Wrote 0b01010001 (0x51)
[11:23:29][VV][uart_esp8266:111]: Wrote 0b01000110 (0x46)
[11:23:29][VV][uart_esp8266:111]: Wrote 0b01001100 (0x4C)
[11:23:29][VV][uart_esp8266:111]: Wrote 0b01000001 (0x41)
[11:23:29][VV][uart_esp8266:111]: Wrote 0b01000111 (0x47)
[11:23:29][VV][uart_esp8266:101]: Wrote 0b10011000 (0x98)
[11:23:29][VV][uart_esp8266:101]: Wrote 0b01110100 (0x74)
[11:23:29][VV][uart_esp8266:101]: Wrote 0b00001101 (0x0D)
[11:23:29][D][pipsolar:840]: Sending polling command : QFLAG with length 5
[11:23:29][VV][uart_esp8266:132]: Read 0b11101010 (0xEA)
[11:23:29][VV][uart_esp8266:132]: Read 0b00001010 (0x0A)
[11:23:29][VV][uart_esp8266:132]: Read 0b01000110 (0x46)
[11:23:29][VV][uart_esp8266:132]: Read 0b11111111 (0xFF)
if i connect the TX of the converter with the RX of wemos i see that write something but doesn t read anythigs,
Good job! Please try to understand what you have changed in detail. So we can improve the configuration example at this repository.
@rem72 We can give it a try to understand and correct the QPIGS readings later the day!
I tried to put back the connections tx to tx and rx to rx but now in the log I only see something writing but it doesn't read anything, the right connection should be the inverted one so rx to tx @rem72
@syssi, these are the values for my inverter PV's
(225.8 49.9 225.8 49.9 0609 0565 020 427 27.00 005 100 0035 02.2 259.9 00.00 00000 10010110 00 00 00590 110 (aaa.a bb.b ccc.c dd.d eeee ffff ggg hhh ii.ii jjj kkk llll mm.m nnn.n oo.oo ppppp qqqqqqqq rr ss ttttt uuu
nnn.n = PV Voltage ttttt = PV input power
But I don't know how to change them
Ah but you have the inverter that can mix the grid with the panels because I noticed the voltage of the panels at 259v but I have the version with 40a mppt regulator but maximum voltage 100v anyway it shouldn't change anything because at the time I tried through software watchpower and PC and I had qpigs with the same organization
...
Instead how did you connect the converter to the wemos? @rem72
This is the code which needs to be improved to support your device:
https://github.com/syssi/esphome-pipsolar/blob/2424mse1/components/pipsolar/pipsolar.cpp#L449-L467
I've pushed a feature branch to improve the device support of the 2424mse1. This feature branch can be easily used by adding the following lines to the yaml:
external_components:
- source: github://syssi/esphome-pipsolar@2424mse1
refresh: 0s
This overrides the official component. Let's try introduce the required changes for your device here.
@lucasimons This is my actual configuration:
Thanks for the improvement, Maybe the right config can be done at yaml level instead of .cpp, I'll give a try and let you know the result.
Thanks now i have two wemos that the connection are correct, one is with the small converter in the first pics of this thread, one with the big converter i can use they to test the new code...
this is the log of my inverter connected with the pc debug-watchpower.zip
@rem72 At the moment it's not possible to change the QPIGS parsing via the yaml configuration. Is soon we've created a proper parser for your device we can introduce a device toggle at the configuration layer.
@lucasimons I've created a feature branch only (without any changes). It will take some time to update the parser. You could give it a try!
unfortunately I don't know how to help in modifying the code, I currently use solpiplog and it works but I don't know if you can get something by looking at that code, one other project is that https://github.com/daromer2/InverterOfThings/
Hi, looking at the code I can see a data type mismatch, that may cause the wrong parse for my power inverter, as said before, it's a VOLTRONIC Axpert VMIII 3KW/24volt Thank so much both, I'll wait until the device toggle. Great work!!!
Here are the promised pictures.
I know it's difficult to see. I fanned out the network cable to 1234 from the top and then 5678 to the right. If you build something like this then include a bulk capacitor (bottom). The ESP-Module sometimes sips 500mA
blue / white is rx / tx (I don't remember which one).
Thanks @avion23, Which inverter do you have?
Here are the promised pictures.
I know it's difficult to see. I fanned out the network cable to 1234 from the top and then 5678 to the right. If you build something like this then include a bulk capacitor (bottom). The ESP-Module sometimes sips 500mA
blue / white is rx / tx (I don't remember which one).
remeber the ESP is NOT TTL (5V) level. You need you uart signal at 3.3v Level. I had issues when directly connection the TTL-Level(5V). therefor perhaps the max3232 chip is better. Is made a board where i can directly connect 2 Invertes (but one works also ).. if there is the need i can make the data available.. or even let a pcb-fab do some for shipping?
Hi, I tried with a 24v inverter from easun which however is identical to the 2424MSE1 of MPP solar looking at the esphome log I see that it sends something but receives nothing I also checked the wiring and I had reversed the red and white cable on the rj45 side, now I believe they are right
@andreashergert1984 this is my converter but seems that write something but not receive anything from the inverter
I've pushed a fix for the QPIGS response:
https://github.com/syssi/esphome-pipsolar/commit/3fe7d85796518b445954d0dde61e5e8a2b549822
To illustrate the QPIGS parser I've introduced some comments:
Please give it a try by adding this external/fixed component to your YAML:
external_components:
- source: github://syssi/esphome-pipsolar@2424mse1
refresh: 0s
@lucasimons you also need 3.3V on the inverter side. The way it is right now, the high voltage side is not powered. The converter board has a little charge pump which generates the ~15V from your 3.3V.
Do not connect the 12V ;) Then you need a new converter.
I have some PIP-5048MS (?) Clone
@lucasimons you also need 3.3V on the inverter side. The way it is right now, the high voltage side is not powered. The converter board has a little charge pump which generates the ~15V from your 3.3V.
Do not connect the 12V ;) Then you need a new converter.
I have some PIP-5048MS (?) Clone
i actually us the ~15V to power the ESP32 Board. With a Step-Down. But it needs both inverters to deliver enough power.. so i will observe this...
This is my code
esphome: name: sensor2 platform: ESP8266 board: d1_mini captive_portal: # Enable logging logger: baud_rate: 0 level: VERY_VERBOSE logs: uart: VERY_VERBOSE uart_esp8266: VERY_VERBOSE api.service: WARN ota: WARN sensor: DEBUG # Enable Home Assistant API api: ota: substitutions: name: pipsolar uart: id: uart0 baud_rate: 2400 tx_pin: GPIO1 rx_pin: GPIO3 pipsolar: uart_id: uart0 id: inverter0 sensor: - platform: pipsolar pipsolar_id: inverter0 # QPIRI grid_rating_voltage: name: "Inverter grid_rating_voltage" grid_rating_current: name: "Inveter grid_rating_current" ac_output_rating_voltage: name: "Inveter ac_output_rating_voltage" ac_output_rating_frequency: name: "Inveter ac_output_rating_frequency" ac_output_rating_current: name: "Inveter ac_output_rating_current" ac_output_rating_apparent_power: name: "Inveter ac_output_rating_apparent_power" ac_output_rating_active_power: name: "Inveter ac_output_rating_active_power" battery_rating_voltage: name: "Inveter battery_rating_voltage" battery_recharge_voltage: name: "Inveter battery_recharge_voltage" battery_under_voltage: name: "Inveter battery_under_voltage" battery_bulk_voltage: name: "Inveter battery_bulk_voltage" battery_float_voltage: name: "Inveter battery_float_voltage" battery_type: name: "Inveter battery_type" current_max_ac_charging_current: name: "Inveter current_max_ac_charging_current" current_max_charging_current: name: "Inveter current_max_charging_current" input_voltage_range: name: "Inveter input_voltage_range" output_source_priority: name: "Inveter output_source_priority" charger_source_priority: name: "Inveter charger_source_priority" parallel_max_num: name: "Inveter parallel_max_num" machine_type: name: "Inveter machine_type" topology: name: "Inveter topology" output_mode: name: "Inveter output_mode" battery_redischarge_voltage: name: "Inveter battery_redischarge_voltage" pv_ok_condition_for_parallel: name: "Inveter pv_ok_condition_for_parallel" pv_power_balance: name: "Inveter pv_power_balance" # QPIGS grid_voltage: name: "Inveter grid_voltage" grid_frequency: name: "Inveter grid_frequency" ac_output_voltage: name: "Inveter ac_output_voltage" ac_output_frequency: name: "Inveter ac_output_frequency" ac_output_apparent_power: name: "Inveter ac_output_apparent_power" ac_output_active_power: name: "Inveter ac_output_active_power" output_load_percent: name: "Inveter output_load_percent" bus_voltage: name: "Inveter bus_voltage" battery_voltage: name: "Inveter battery_voltage" battery_charging_current: name: "Inveter battery_charging_current" battery_capacity_percent: name: "Inveter battery_capacity_percent" inverter_heat_sink_temperature: name: "Inveter inverter_heat_sink_temperature" pv_input_current_for_battery: name: "Inveter pv_input_current_for_battery" pv_input_voltage: name: "Inveter pv_input_voltage" battery_voltage_scc: name: "Inveter battery_voltage_scc" battery_discharge_current: name: "Inveter battery_discharge_current" battery_voltage_offset_for_fans_on: name: "Inveter battery_voltage_offset_for_fans_on" eeprom_version: name: "Inveter eeprom_version" pv_charging_power: name: "Inveter pv_charging_power" text_sensor: - platform: pipsolar pipsolar_id: inverter0 device_mode: name: "Inveter device_mode" last_qpigs: name: "Inveter last_qpigs" last_qpiri: name: "Inveter last_qpiri" last_qmod: name: "Inveter last_qmod" last_qflag: name: "Inveter last_qflag" binary_sensor: - platform: pipsolar pipsolar_id: inverter0 add_sbu_priority_version: name: "Inveter add_sbu_priority_version" configuration_status: name: "Inveter configuration_status" scc_firmware_version: name: "Inveter scc_firmware_version" load_status: name: "Inveter load_status" battery_voltage_to_steady_while_charging: name: "Inveter battery_voltage_to_steady_while_charging" charging_status: name: "Inveter charging_status" scc_charging_status: name: "Inveter scc_charging_status" ac_charging_status: name: "Inveter ac_charging_status" charging_to_floating_mode: name: "Inveter charging_to_floating_mode" switch_on: name: "Inveter switch_on" dustproof_installed: name: "Inveter dustproof_installed" silence_buzzer_open_buzzer: name: "Inveter silence_buzzer_open_buzzer" overload_bypass_function: name: "Inveter overload_bypass_function" lcd_escape_to_default: name: "Inveter lcd_escape_to_default" overload_restart_function: name: "Inveter overload_restart_function" over_temperature_restart_function: name: "Inveter over_temperature_restart_function" backlight_on: name: "Inveter backlight_on" switch: - platform: pipsolar pipsolar_id: inverter0 output_source_priority_utility: name: "Inveter output_source_priority_utility" output_source_priority_solar: name: "Inveter output_source_priority_solar" output_source_priority_battery: name: "Inveter output_source_priority_battery" input_voltage_range: name: "Inveter input_voltage_range" pv_ok_condition_for_parallel: name: "Inveter pv_ok_condition_for_parallel" pv_power_balance: name: "Inveter pv_power_balance" output: - platform: pipsolar pipsolar_id: inverter0 battery_recharge_voltage: id: inverter0_battery_recharge_voltage_out
This are the connections
I try the new code with the two converter but I don't see any response
This is my code
esphome: name: sensor2 platform: ESP8266 board: d1_mini captive_portal: # Enable logging logger: baud_rate: 0 level: VERY_VERBOSE logs: uart: VERY_VERBOSE uart_esp8266: VERY_VERBOSE api.service: WARN ota: WARN sensor: DEBUG # Enable Home Assistant API api: ota: substitutions: name: pipsolar uart: id: uart0 baud_rate: 2400 tx_pin: GPIO1 rx_pin: GPIO3 pipsolar: uart_id: uart0 id: inverter0 sensor: - platform: pipsolar pipsolar_id: inverter0 # QPIRI grid_rating_voltage: name: "Inverter grid_rating_voltage" grid_rating_current: name: "Inveter grid_rating_current" ac_output_rating_voltage: name: "Inveter ac_output_rating_voltage" ac_output_rating_frequency: name: "Inveter ac_output_rating_frequency" ac_output_rating_current: name: "Inveter ac_output_rating_current" ac_output_rating_apparent_power: name: "Inveter ac_output_rating_apparent_power" ac_output_rating_active_power: name: "Inveter ac_output_rating_active_power" battery_rating_voltage: name: "Inveter battery_rating_voltage" battery_recharge_voltage: name: "Inveter battery_recharge_voltage" battery_under_voltage: name: "Inveter battery_under_voltage" battery_bulk_voltage: name: "Inveter battery_bulk_voltage" battery_float_voltage: name: "Inveter battery_float_voltage" battery_type: name: "Inveter battery_type" current_max_ac_charging_current: name: "Inveter current_max_ac_charging_current" current_max_charging_current: name: "Inveter current_max_charging_current" input_voltage_range: name: "Inveter input_voltage_range" output_source_priority: name: "Inveter output_source_priority" charger_source_priority: name: "Inveter charger_source_priority" parallel_max_num: name: "Inveter parallel_max_num" machine_type: name: "Inveter machine_type" topology: name: "Inveter topology" output_mode: name: "Inveter output_mode" battery_redischarge_voltage: name: "Inveter battery_redischarge_voltage" pv_ok_condition_for_parallel: name: "Inveter pv_ok_condition_for_parallel" pv_power_balance: name: "Inveter pv_power_balance" # QPIGS grid_voltage: name: "Inveter grid_voltage" grid_frequency: name: "Inveter grid_frequency" ac_output_voltage: name: "Inveter ac_output_voltage" ac_output_frequency: name: "Inveter ac_output_frequency" ac_output_apparent_power: name: "Inveter ac_output_apparent_power" ac_output_active_power: name: "Inveter ac_output_active_power" output_load_percent: name: "Inveter output_load_percent" bus_voltage: name: "Inveter bus_voltage" battery_voltage: name: "Inveter battery_voltage" battery_charging_current: name: "Inveter battery_charging_current" battery_capacity_percent: name: "Inveter battery_capacity_percent" inverter_heat_sink_temperature: name: "Inveter inverter_heat_sink_temperature" pv_input_current_for_battery: name: "Inveter pv_input_current_for_battery" pv_input_voltage: name: "Inveter pv_input_voltage" battery_voltage_scc: name: "Inveter battery_voltage_scc" battery_discharge_current: name: "Inveter battery_discharge_current" battery_voltage_offset_for_fans_on: name: "Inveter battery_voltage_offset_for_fans_on" eeprom_version: name: "Inveter eeprom_version" pv_charging_power: name: "Inveter pv_charging_power" text_sensor: - platform: pipsolar pipsolar_id: inverter0 device_mode: name: "Inveter device_mode" last_qpigs: name: "Inveter last_qpigs" last_qpiri: name: "Inveter last_qpiri" last_qmod: name: "Inveter last_qmod" last_qflag: name: "Inveter last_qflag" binary_sensor: - platform: pipsolar pipsolar_id: inverter0 add_sbu_priority_version: name: "Inveter add_sbu_priority_version" configuration_status: name: "Inveter configuration_status" scc_firmware_version: name: "Inveter scc_firmware_version" load_status: name: "Inveter load_status" battery_voltage_to_steady_while_charging: name: "Inveter battery_voltage_to_steady_while_charging" charging_status: name: "Inveter charging_status" scc_charging_status: name: "Inveter scc_charging_status" ac_charging_status: name: "Inveter ac_charging_status" charging_to_floating_mode: name: "Inveter charging_to_floating_mode" switch_on: name: "Inveter switch_on" dustproof_installed: name: "Inveter dustproof_installed" silence_buzzer_open_buzzer: name: "Inveter silence_buzzer_open_buzzer" overload_bypass_function: name: "Inveter overload_bypass_function" lcd_escape_to_default: name: "Inveter lcd_escape_to_default" overload_restart_function: name: "Inveter overload_restart_function" over_temperature_restart_function: name: "Inveter over_temperature_restart_function" backlight_on: name: "Inveter backlight_on" switch: - platform: pipsolar pipsolar_id: inverter0 output_source_priority_utility: name: "Inveter output_source_priority_utility" output_source_priority_solar: name: "Inveter output_source_priority_solar" output_source_priority_battery: name: "Inveter output_source_priority_battery" input_voltage_range: name: "Inveter input_voltage_range" pv_ok_condition_for_parallel: name: "Inveter pv_ok_condition_for_parallel" pv_power_balance: name: "Inveter pv_power_balance" output: - platform: pipsolar pipsolar_id: inverter0 battery_recharge_voltage: id: inverter0_battery_recharge_voltage_out
This are the connections
I try the new code with the two converter but I don't see any response
could you provide a schematic of your connections?
@lucasimons If your inverter always responds with a very short answer you could try to increase the baud rate (4800, 9600, 19200).
@lucasimons If your inverter always responds with a very short answer you could try to increase the baud rate (4800, 9600, 19200).
good point. i would first try to directly connect a PC to the inverter.. and check if there an answer gets out at least an error (NACK) or else.
I am also using an rp4 with solpiplog and that works but it is connected via usb, however now I try to see if the esp sends something by connecting it to the PC via a ttl to usb converter
I am also using an rp4 with solpiplog and that works but it is connected via usb, however now I try to see if the esp sends something by connecting it to the PC via a ttl to usb converter
i would do a step by step check.. does you esp send the commands correctly out ? just loop your rx and tx pin on esp.. to another/same/arduino and listen to uart data. Then check the level shifter.. i also had some dead on arrival.
Hi, I tried with a 24v inverter from easun which however is identical to the 2424MSE1 of MPP solar looking at the esphome log I see that it sends something but receives nothing I also checked the wiring and I had reversed the red and white cable on the rj45 side, now I believe they are right