Giter Site home page Giter Site logo

mpp-solar's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mpp-solar's Issues

I like to contribute

Dear John!

Sorry for opening an issue just for communication. I was not able to find your email address in the setup.py file.

A month ago I started to write exactly the same software you have already up and running.
I had only implemented the QPGSn cmd so far and I am still struggling with the timings. My target platform is also raspberryPI. Prometheus was my choice of DB but the frontend as in your case also grafana. It is nonsense to have two concurrent project doing the same. So I like to contribute my findings into your code.

My general aim is a bit broader than only monitoring Inverters. I like to come up with a small open source framework where several power related devices (Inverters, Ampere Counters, Battery management systems, Relays) can be monitored (Grafana) and orchestrated (Home assistant).

There are two goals:

  1. to optimize the configuration of the power grid dynamically. Your e-vehicle comes to the wall box for loading. If you can afford to have a multi phase wall box you are happy. If not the wall box typically only draws from a single phase and you are using only 1/3 of your current solar power for loading your car. So we have figured out a dynamic configuration working with an additional fourth inverter to bundle 2/3 of the solar capacity into one phase to the wall box.

  2. to prevent battery overloading. We are dealing with lithium ion batteries and it is quite complicated to just load them for 70% of their capacity (extending their lifetime tremendously) since the loading voltage is not linear with the load in this regime. So the idea is to measure all the currents in the power system and feed them into a physical simulation of the battery to derive the current battery loading.

Interested?

Cheers,

Volker

difference in values between queries QPIGS and QPGS0

hi, i have noticed that i have some difference in values returned from queries QPIGS and QPGS0
i don't have parallel controller.... and i don't know if that parameters are read wrong for that.

i write output from different queries:
mpp-solar -d /dev/hidraw0 -c QPIGS
ac_input_frequency 49.9 Hz
ac_input_voltage 225.1 V
ac_output_active_power 505 W
ac_output_apparent_power 551 VA
ac_output_frequency 49.9 Hz
ac_output_load 11 %
ac_output_voltage 229.8 V
battery_capacity 65 %
battery_charging_current 0 A
battery_discharge_current 3 A
battery_voltage 51.7 V
battery_voltage_from_scc 51.82 V
bus_voltage 357 V
inverter_heat_sink_temperature 35 Deg_C
is_ac_charging_on 0 True - 1/False - 0
is_battery_voltage_to_steady_while_charging 0 True - 1/False - 0
is_charging_on 1 True - 1/False - 0
is_configuration_changed 0 True - 1/False - 0
is_load_on 1 True - 1/False - 0
is_sbu_priority_version_added 0 True - 1/False - 0
is_scc_charging_on 1 True - 1/False - 0
is_scc_firmware_updated 0 True - 1/False - 0
pv_input_current_for_battery 7 A
pv_input_voltage 58.9 V
unknown_value_in_byte_response 010

mpp-solar -d /dev/hidraw0 -c QPGS0
ac_output_active_power 608 W
ac_output_apparent_power 621 VA
ac_output_frequency 50.02 Hz
ac_output_voltage 230.0 V
battery_capacity 47 %
battery_charging_current 0 A
battery_discharge_current 6 A
battery_voltage 49.9 V
charger_source_priority Solar first
fault_code No fault
grid_frequency 50.01 Hz
grid_voltage 226.8 V
is_ac_charging 0 True - 1/False - 0
is_battery_over_voltage 0 True - 1/False - 0
is_battery_under_voltage 0 True - 1/False - 0
is_configuration_changed 0 True - 1/False - 0
is_line_lost 0 True - 1/False - 0
is_load_on 1 True - 1/False - 0
is_scc_charging 1 True - 1/False - 0
is_scc_ok 1 True - 1/False - 0
load_percentage 12 %
max_ac_charger_current 2 A
max_charger_current 60 A
max_charger_range 140 A
output_mode single machine
parallel_instance_number valid
pv_input_current 7 A
pv_input_voltage 65.2 V
serial_number 92931908103931
total_ac_output_apparent_power 621 VA
total_ac_output_percentage 12 %
total_charging_current 0 A
total_output_active_power 608 W
work_mode Battery Mode

if i restart raspberry connected to inverter (PIP5048MK) the parameters returned are equal for a while... but after some time they return different.
the wrong are returned from QPGS0

i am simply using QPIGS ....

Obtain individual inverter information in a 3 phase installation

Dear all:

First of all I would like to thank you for the great work done in this repo and for putting this magnificent tool within everyone's reach.

I have an installation of 3 Axpert MKS inverter configured in a 3-phased way. The inverter number 1 is the one who is receiving the solar input and it is where I have connected my raspberry pi. Currently I am obtaing the aggregated information of all three with the QPIGS command,

I would like to know if it is possible to obtain the individual information of each inverter. I have tried out the QPGS and QP2GS commands but the answer is always "CRITICAL:MPP-Solar:Command not found".

Thank you very much for your help.

Best regards.

Francisco

All is installed but then how does it work ?

Hello,

Thank you for posting this mpp solar service.
I have installed all of the modules, mqtt, influx, telegraph, Grafana and of course mppsolar sucesfully according to your instructions.

But now , starting Graphana doesn't display anything. It seems I have to create and configure a data source (I suppose Influxdb) and a monitoring panel. Is this correct? If so, how do I configure the dashboards/panels to visualize the mpp solar data collected from the inverter ?
I 'm feeling I'm missing Something or that the instructions stopped Midway ?

All help welcome

Thanks

mppsolar Hybrid V2

Hi,
Hi,
I tried to use your software with an MPP Solar Hybrid V2 inverter.
But I don't get any data.

mpp-solar --device /dev/hidraw0 -D

INFO:MPP-Solar:command QID
INFO:MPP-Solar:Serial device used: /dev/hidraw0, baud rate: 2400
DEBUG:MPP-Solar:Device matches hidraw regex
INFO:MPP-Solar:Loading commands for inverter model: standard
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/f.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command F supported all inverters
INFO:MPP-Solar:... command F loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for F
DEBUG:MPP-Solar:Calculating CRC for b'F'
DEBUG:MPP-Solar:Generated CRC 29 2 2902
DEBUG:MPP-Solar:Full byte command: b'F)\x02\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/mchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MCHGC supported all inverters
INFO:MPP-Solar:... command MCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MCHGC'
DEBUG:MPP-Solar:Generated CRC 9d a2 9da2
DEBUG:MPP-Solar:Full byte command: b'MCHGC\x9d\xa2\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/mnchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MNCHGC supported all inverters
INFO:MPP-Solar:... command MNCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MNCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MNCHGC'
DEBUG:MPP-Solar:Generated CRC 57 23 5723
DEBUG:MPP-Solar:Full byte command: b'MNCHGCW#\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/muchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MUCHGC supported all inverters
INFO:MPP-Solar:... command MUCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MUCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MUCHGC'
DEBUG:MPP-Solar:Generated CRC bf 86 bf86
DEBUG:MPP-Solar:Full byte command: b'MUCHGC\xbf\x86\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbcv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBCV supported all inverters
INFO:MPP-Solar:... command PBCV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBCV
DEBUG:MPP-Solar:Calculating CRC for b'PBCV'
DEBUG:MPP-Solar:Generated CRC 64 5a 645a
DEBUG:MPP-Solar:Full byte command: b'PBCVdZ\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbdv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBDV supported all inverters
INFO:MPP-Solar:... command PBDV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBDV
DEBUG:MPP-Solar:Calculating CRC for b'PBDV'
DEBUG:MPP-Solar:Generated CRC fd cd fdcd
DEBUG:MPP-Solar:Full byte command: b'PBDV\xfd\xcd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbft.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBFT supported all inverters
INFO:MPP-Solar:... command PBFT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBFT
DEBUG:MPP-Solar:Calculating CRC for b'PBFT'
DEBUG:MPP-Solar:Generated CRC bb ed bbed
DEBUG:MPP-Solar:Full byte command: b'PBFT\xbb\xed\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbt.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBT supported all inverters
INFO:MPP-Solar:... command PBT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBT
DEBUG:MPP-Solar:Calculating CRC for b'PBT'
DEBUG:MPP-Solar:Generated CRC 2f 11 2f11
DEBUG:MPP-Solar:Full byte command: b'PBT/\x11\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pcp.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PCP supported all inverters
INFO:MPP-Solar:... command PCP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PCP
DEBUG:MPP-Solar:Calculating CRC for b'PCP'
DEBUG:MPP-Solar:Generated CRC 5c a4 5ca4
DEBUG:MPP-Solar:Full byte command: b'PCP\\xa4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pcvv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PCVV supported all inverters
INFO:MPP-Solar:... command PCVV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PCVV
DEBUG:MPP-Solar:Calculating CRC for b'PCVV'
DEBUG:MPP-Solar:Generated CRC af ec afec
DEBUG:MPP-Solar:Full byte command: b'PCVV\xaf\xec\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pepd.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PEPD supported all inverters
INFO:MPP-Solar:... command PEPD loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PEPD
DEBUG:MPP-Solar:Calculating CRC for b'PEPD'
DEBUG:MPP-Solar:Generated CRC 85 99 8599
DEBUG:MPP-Solar:Full byte command: b'PEPD\x85\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pf.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PF supported all inverters
INFO:MPP-Solar:... command PF loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PF
DEBUG:MPP-Solar:Calculating CRC for b'PF'
DEBUG:MPP-Solar:Generated CRC 26 bd 26bd
DEBUG:MPP-Solar:Full byte command: b'PF&\xbd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pgr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PGR supported all inverters
INFO:MPP-Solar:... command PGR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PGR
DEBUG:MPP-Solar:Calculating CRC for b'PGR'
DEBUG:MPP-Solar:Generated CRC b0 22 b022
DEBUG:MPP-Solar:Full byte command: b'PGR\xb0"\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pop.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command POP supported all inverters
INFO:MPP-Solar:... command POP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for POP
DEBUG:MPP-Solar:Calculating CRC for b'POP'
DEBUG:MPP-Solar:Generated CRC 19 c9 19c9
DEBUG:MPP-Solar:Full byte command: b'POP\x19\xc9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/popm.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command POPM supported all inverters
INFO:MPP-Solar:... command POPM loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for POPM
DEBUG:MPP-Solar:Calculating CRC for b'POPM'
DEBUG:MPP-Solar:Generated CRC d3 71 d371
DEBUG:MPP-Solar:Full byte command: b'POPM\xd3q\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/ppcp.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PPCP supported all inverters
INFO:MPP-Solar:... command PPCP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PPCP
DEBUG:MPP-Solar:Calculating CRC for b'PPCP'
DEBUG:MPP-Solar:Generated CRC 29 9f 299f
DEBUG:MPP-Solar:Full byte command: b'PPCP)\x9f\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/ppvokc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PPVOKC supported all inverters
INFO:MPP-Solar:... command PPVOKC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PPVOKC
DEBUG:MPP-Solar:Calculating CRC for b'PPVOKC'
DEBUG:MPP-Solar:Generated CRC af 9 af09
DEBUG:MPP-Solar:Full byte command: b'PPVOKC\xaf\t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/psdv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PSDV supported all inverters
INFO:MPP-Solar:... command PSDV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PSDV
DEBUG:MPP-Solar:Calculating CRC for b'PSDV'
DEBUG:MPP-Solar:Generated CRC 89 9e 899e
DEBUG:MPP-Solar:Full byte command: b'PSDV\x89\x9e\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pspb.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PSPB supported all inverters
INFO:MPP-Solar:... command PSPB loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PSPB
DEBUG:MPP-Solar:Calculating CRC for b'PSPB'
DEBUG:MPP-Solar:Generated CRC 14 9c 149c
DEBUG:MPP-Solar:Full byte command: b'PSPB\x14\x9c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/q1.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command Q1 supported all inverters
INFO:MPP-Solar:... command Q1 loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for Q1
DEBUG:MPP-Solar:Calculating CRC for b'Q1'
DEBUG:MPP-Solar:Generated CRC 1b fc 1bfc
DEBUG:MPP-Solar:Full byte command: b'Q1\x1b\xfc\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qboot.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QBOOT supported all inverters
INFO:MPP-Solar:... command QBOOT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QBOOT
DEBUG:MPP-Solar:Calculating CRC for b'QBOOT'
DEBUG:MPP-Solar:Generated CRC b 88 b88
DEBUG:MPP-Solar:Full byte command: b'QBOOT\x0b\x88\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qdi.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QDI supported all inverters
INFO:MPP-Solar:... command QDI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QDI
DEBUG:MPP-Solar:Calculating CRC for b'QDI'
DEBUG:MPP-Solar:Generated CRC 71 1b 711b
DEBUG:MPP-Solar:Full byte command: b'QDIq\x1b\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qflag.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QFLAG supported all inverters
INFO:MPP-Solar:... command QFLAG loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QFLAG
DEBUG:MPP-Solar:Calculating CRC for b'QFLAG'
DEBUG:MPP-Solar:Generated CRC 98 74 9874
DEBUG:MPP-Solar:Full byte command: b'QFLAG\x98t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qid.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QID supported all inverters
INFO:MPP-Solar:... command QID loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QID
DEBUG:MPP-Solar:Calculating CRC for b'QID'
DEBUG:MPP-Solar:Generated CRC d6 ea d6ea
DEBUG:MPP-Solar:Full byte command: b'QID\xd6\xea\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmchgcr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMCHGCR supported all inverters
INFO:MPP-Solar:... command QMCHGCR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMCHGCR'
DEBUG:MPP-Solar:Generated CRC d8 55 d855
DEBUG:MPP-Solar:Full byte command: b'QMCHGCR\xd8U\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmod.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMOD supported all inverters
INFO:MPP-Solar:... command QMOD loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMOD
DEBUG:MPP-Solar:Calculating CRC for b'QMOD'
DEBUG:MPP-Solar:Generated CRC 49 c1 49c1
DEBUG:MPP-Solar:Full byte command: b'QMODI\xc1\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmuchgcr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMUCHGCR supported all inverters
INFO:MPP-Solar:... command QMUCHGCR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMUCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMUCHGCR'
DEBUG:MPP-Solar:Generated CRC 26 34 2634
DEBUG:MPP-Solar:Full byte command: b'QMUCHGCR&4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qopm.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QOPM supported all inverters
INFO:MPP-Solar:... command QOPM loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QOPM
DEBUG:MPP-Solar:Calculating CRC for b'QOPM'
DEBUG:MPP-Solar:Generated CRC a5 c5 a5c5
DEBUG:MPP-Solar:Full byte command: b'QOPM\xa5\xc5\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qp2gs.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpgs-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpgs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPGS supported all inverters
INFO:MPP-Solar:... command QPGS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPGS
DEBUG:MPP-Solar:Calculating CRC for b'QPGS'
DEBUG:MPP-Solar:Generated CRC a3 8c a38c
DEBUG:MPP-Solar:Full byte command: b'QPGS\xa3\x8c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpi.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QPI supported all inverters
INFO:MPP-Solar:... command QPI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPI
DEBUG:MPP-Solar:Calculating CRC for b'QPI'
DEBUG:MPP-Solar:Generated CRC be ac beac
DEBUG:MPP-Solar:Full byte command: b'QPI\xbe\xac\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIGS supported all inverters
INFO:MPP-Solar:... command QPIGS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIGS
DEBUG:MPP-Solar:Calculating CRC for b'QPIGS'
DEBUG:MPP-Solar:Generated CRC b7 a9 b7a9
DEBUG:MPP-Solar:Full byte command: b'QPIGS\xb7\xa9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs2.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiri-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiri.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIRI supported all inverters
INFO:MPP-Solar:... command QPIRI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIRI
DEBUG:MPP-Solar:Calculating CRC for b'QPIRI'
DEBUG:MPP-Solar:Generated CRC f8 54 f854
DEBUG:MPP-Solar:Full byte command: b'QPIRI\xf8T\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiws.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QPIWS supported all inverters
INFO:MPP-Solar:... command QPIWS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIWS
DEBUG:MPP-Solar:Calculating CRC for b'QPIWS'
DEBUG:MPP-Solar:Generated CRC b4 da b4da
DEBUG:MPP-Solar:Full byte command: b'QPIWS\xb4\xda\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qvfw.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QVFW supported all inverters
INFO:MPP-Solar:... command QVFW loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QVFW
DEBUG:MPP-Solar:Calculating CRC for b'QVFW'
DEBUG:MPP-Solar:Generated CRC 62 99 6299
DEBUG:MPP-Solar:Full byte command: b'QVFWb\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qvfw2.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QVFW2 supported all inverters
INFO:MPP-Solar:... command QVFW2 loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QVFW2
DEBUG:MPP-Solar:Calculating CRC for b'QVFW2'
DEBUG:MPP-Solar:Generated CRC c3 f5 c3f5
DEBUG:MPP-Solar:Full byte command: b'QVFW2\xc3\xf5\r'
DEBUG:MPP-Solar:Searching for cmd 'QID'
INFO:MPP-Solar:DIRECT USB connection: executing QID
Device Serial Number inquiry
-- queries the device serial number

DEBUG:MPP-Solar:length of to_send: 6
DEBUG:MPP-Solar:1 chunk send
DEBUG:MPP-Solar:usb byte_response was: b'^0\x1b\xe3\r'
serial_number 0

mpp-solar --device /dev/hidraw0 -D -s

INFO:MPP-Solar:command QID
INFO:MPP-Solar:Serial device used: /dev/hidraw0, baud rate: 2400
DEBUG:MPP-Solar:Device matches hidraw regex
INFO:MPP-Solar:Loading commands for inverter model: standard
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/f.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command F supported all inverters
INFO:MPP-Solar:... command F loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for F
DEBUG:MPP-Solar:Calculating CRC for b'F'
DEBUG:MPP-Solar:Generated CRC 29 2 2902
DEBUG:MPP-Solar:Full byte command: b'F)\x02\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/mchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MCHGC supported all inverters
INFO:MPP-Solar:... command MCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MCHGC'
DEBUG:MPP-Solar:Generated CRC 9d a2 9da2
DEBUG:MPP-Solar:Full byte command: b'MCHGC\x9d\xa2\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/mnchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MNCHGC supported all inverters
INFO:MPP-Solar:... command MNCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MNCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MNCHGC'
DEBUG:MPP-Solar:Generated CRC 57 23 5723
DEBUG:MPP-Solar:Full byte command: b'MNCHGCW#\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/muchgc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command MUCHGC supported all inverters
INFO:MPP-Solar:... command MUCHGC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for MUCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MUCHGC'
DEBUG:MPP-Solar:Generated CRC bf 86 bf86
DEBUG:MPP-Solar:Full byte command: b'MUCHGC\xbf\x86\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbcv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBCV supported all inverters
INFO:MPP-Solar:... command PBCV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBCV
DEBUG:MPP-Solar:Calculating CRC for b'PBCV'
DEBUG:MPP-Solar:Generated CRC 64 5a 645a
DEBUG:MPP-Solar:Full byte command: b'PBCVdZ\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbdv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBDV supported all inverters
INFO:MPP-Solar:... command PBDV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBDV
DEBUG:MPP-Solar:Calculating CRC for b'PBDV'
DEBUG:MPP-Solar:Generated CRC fd cd fdcd
DEBUG:MPP-Solar:Full byte command: b'PBDV\xfd\xcd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbft.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBFT supported all inverters
INFO:MPP-Solar:... command PBFT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBFT
DEBUG:MPP-Solar:Calculating CRC for b'PBFT'
DEBUG:MPP-Solar:Generated CRC bb ed bbed
DEBUG:MPP-Solar:Full byte command: b'PBFT\xbb\xed\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pbt.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PBT supported all inverters
INFO:MPP-Solar:... command PBT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PBT
DEBUG:MPP-Solar:Calculating CRC for b'PBT'
DEBUG:MPP-Solar:Generated CRC 2f 11 2f11
DEBUG:MPP-Solar:Full byte command: b'PBT/\x11\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pcp.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PCP supported all inverters
INFO:MPP-Solar:... command PCP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PCP
DEBUG:MPP-Solar:Calculating CRC for b'PCP'
DEBUG:MPP-Solar:Generated CRC 5c a4 5ca4
DEBUG:MPP-Solar:Full byte command: b'PCP\\xa4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pcvv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PCVV supported all inverters
INFO:MPP-Solar:... command PCVV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PCVV
DEBUG:MPP-Solar:Calculating CRC for b'PCVV'
DEBUG:MPP-Solar:Generated CRC af ec afec
DEBUG:MPP-Solar:Full byte command: b'PCVV\xaf\xec\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pepd.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PEPD supported all inverters
INFO:MPP-Solar:... command PEPD loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PEPD
DEBUG:MPP-Solar:Calculating CRC for b'PEPD'
DEBUG:MPP-Solar:Generated CRC 85 99 8599
DEBUG:MPP-Solar:Full byte command: b'PEPD\x85\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pf.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PF supported all inverters
INFO:MPP-Solar:... command PF loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PF
DEBUG:MPP-Solar:Calculating CRC for b'PF'
DEBUG:MPP-Solar:Generated CRC 26 bd 26bd
DEBUG:MPP-Solar:Full byte command: b'PF&\xbd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pgr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PGR supported all inverters
INFO:MPP-Solar:... command PGR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PGR
DEBUG:MPP-Solar:Calculating CRC for b'PGR'
DEBUG:MPP-Solar:Generated CRC b0 22 b022
DEBUG:MPP-Solar:Full byte command: b'PGR\xb0"\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pop.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command POP supported all inverters
INFO:MPP-Solar:... command POP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for POP
DEBUG:MPP-Solar:Calculating CRC for b'POP'
DEBUG:MPP-Solar:Generated CRC 19 c9 19c9
DEBUG:MPP-Solar:Full byte command: b'POP\x19\xc9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/popm.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command POPM supported all inverters
INFO:MPP-Solar:... command POPM loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for POPM
DEBUG:MPP-Solar:Calculating CRC for b'POPM'
DEBUG:MPP-Solar:Generated CRC d3 71 d371
DEBUG:MPP-Solar:Full byte command: b'POPM\xd3q\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/ppcp.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PPCP supported all inverters
INFO:MPP-Solar:... command PPCP loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PPCP
DEBUG:MPP-Solar:Calculating CRC for b'PPCP'
DEBUG:MPP-Solar:Generated CRC 29 9f 299f
DEBUG:MPP-Solar:Full byte command: b'PPCP)\x9f\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/ppvokc.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PPVOKC supported all inverters
INFO:MPP-Solar:... command PPVOKC loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PPVOKC
DEBUG:MPP-Solar:Calculating CRC for b'PPVOKC'
DEBUG:MPP-Solar:Generated CRC af 9 af09
DEBUG:MPP-Solar:Full byte command: b'PPVOKC\xaf\t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/psdv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PSDV supported all inverters
INFO:MPP-Solar:... command PSDV loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PSDV
DEBUG:MPP-Solar:Calculating CRC for b'PSDV'
DEBUG:MPP-Solar:Generated CRC 89 9e 899e
DEBUG:MPP-Solar:Full byte command: b'PSDV\x89\x9e\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/pspb.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command PSPB supported all inverters
INFO:MPP-Solar:... command PSPB loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for PSPB
DEBUG:MPP-Solar:Calculating CRC for b'PSPB'
DEBUG:MPP-Solar:Generated CRC 14 9c 149c
DEBUG:MPP-Solar:Full byte command: b'PSPB\x14\x9c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/q1.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command Q1 supported all inverters
INFO:MPP-Solar:... command Q1 loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for Q1
DEBUG:MPP-Solar:Calculating CRC for b'Q1'
DEBUG:MPP-Solar:Generated CRC 1b fc 1bfc
DEBUG:MPP-Solar:Full byte command: b'Q1\x1b\xfc\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qboot.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QBOOT supported all inverters
INFO:MPP-Solar:... command QBOOT loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QBOOT
DEBUG:MPP-Solar:Calculating CRC for b'QBOOT'
DEBUG:MPP-Solar:Generated CRC b 88 b88
DEBUG:MPP-Solar:Full byte command: b'QBOOT\x0b\x88\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qdi.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QDI supported all inverters
INFO:MPP-Solar:... command QDI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QDI
DEBUG:MPP-Solar:Calculating CRC for b'QDI'
DEBUG:MPP-Solar:Generated CRC 71 1b 711b
DEBUG:MPP-Solar:Full byte command: b'QDIq\x1b\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qflag.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QFLAG supported all inverters
INFO:MPP-Solar:... command QFLAG loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QFLAG
DEBUG:MPP-Solar:Calculating CRC for b'QFLAG'
DEBUG:MPP-Solar:Generated CRC 98 74 9874
DEBUG:MPP-Solar:Full byte command: b'QFLAG\x98t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qid.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QID supported all inverters
INFO:MPP-Solar:... command QID loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QID
DEBUG:MPP-Solar:Calculating CRC for b'QID'
DEBUG:MPP-Solar:Generated CRC d6 ea d6ea
DEBUG:MPP-Solar:Full byte command: b'QID\xd6\xea\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmchgcr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMCHGCR supported all inverters
INFO:MPP-Solar:... command QMCHGCR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMCHGCR'
DEBUG:MPP-Solar:Generated CRC d8 55 d855
DEBUG:MPP-Solar:Full byte command: b'QMCHGCR\xd8U\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmod.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMOD supported all inverters
INFO:MPP-Solar:... command QMOD loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMOD
DEBUG:MPP-Solar:Calculating CRC for b'QMOD'
DEBUG:MPP-Solar:Generated CRC 49 c1 49c1
DEBUG:MPP-Solar:Full byte command: b'QMODI\xc1\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qmuchgcr.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QMUCHGCR supported all inverters
INFO:MPP-Solar:... command QMUCHGCR loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QMUCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMUCHGCR'
DEBUG:MPP-Solar:Generated CRC 26 34 2634
DEBUG:MPP-Solar:Full byte command: b'QMUCHGCR&4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qopm.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QOPM supported all inverters
INFO:MPP-Solar:... command QOPM loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QOPM
DEBUG:MPP-Solar:Calculating CRC for b'QOPM'
DEBUG:MPP-Solar:Generated CRC a5 c5 a5c5
DEBUG:MPP-Solar:Full byte command: b'QOPM\xa5\xc5\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qp2gs.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpgs-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpgs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPGS supported all inverters
INFO:MPP-Solar:... command QPGS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPGS
DEBUG:MPP-Solar:Calculating CRC for b'QPGS'
DEBUG:MPP-Solar:Generated CRC a3 8c a38c
DEBUG:MPP-Solar:Full byte command: b'QPGS\xa3\x8c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpi.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QPI supported all inverters
INFO:MPP-Solar:... command QPI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPI
DEBUG:MPP-Solar:Calculating CRC for b'QPI'
DEBUG:MPP-Solar:Generated CRC be ac beac
DEBUG:MPP-Solar:Full byte command: b'QPI\xbe\xac\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIGS supported all inverters
INFO:MPP-Solar:... command QPIGS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIGS
DEBUG:MPP-Solar:Calculating CRC for b'QPIGS'
DEBUG:MPP-Solar:Generated CRC b7 a9 b7a9
DEBUG:MPP-Solar:Full byte command: b'QPIGS\xb7\xa9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpigs2.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiri-lv.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiri.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIRI supported all inverters
INFO:MPP-Solar:... command QPIRI loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIRI
DEBUG:MPP-Solar:Calculating CRC for b'QPIRI'
DEBUG:MPP-Solar:Generated CRC f8 54 f854
DEBUG:MPP-Solar:Full byte command: b'QPIRI\xf8T\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qpiws.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QPIWS supported all inverters
INFO:MPP-Solar:... command QPIWS loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QPIWS
DEBUG:MPP-Solar:Calculating CRC for b'QPIWS'
DEBUG:MPP-Solar:Generated CRC b4 da b4da
DEBUG:MPP-Solar:Full byte command: b'QPIWS\xb4\xda\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qvfw.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QVFW supported all inverters
INFO:MPP-Solar:... command QVFW loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QVFW
DEBUG:MPP-Solar:Calculating CRC for b'QVFW'
DEBUG:MPP-Solar:Generated CRC 62 99 6299
DEBUG:MPP-Solar:Full byte command: b'QVFWb\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.3.1-py3.7.egg/mppsolar/commands/qvfw2.json
DEBUG:MPP-Solar:-----No supports
DEBUG:MPP-Solar:Command QVFW2 supported all inverters
INFO:MPP-Solar:... command QVFW2 loaded for inverter model: standard
DEBUG:MPP-Solar:Generate full byte command for QVFW2
DEBUG:MPP-Solar:Calculating CRC for b'QVFW2'
DEBUG:MPP-Solar:Generated CRC c3 f5 c3f5
DEBUG:MPP-Solar:Full byte command: b'QVFW2\xc3\xf5\r'
DEBUG:MPP-Solar:Searching for cmd 'QPIGS'
INFO:MPP-Solar:DIRECT USB connection: executing QPIGS
General Status Parameters inquiry
-- queries the value of various metrics from the Inverter

DEBUG:MPP-Solar:length of to_send: 8
DEBUG:MPP-Solar:1 chunk send
DEBUG:MPP-Solar:usb byte_response was: b'^0\x1b\xe3\r'
================ Status ==================
Parameter Value Unit
ac_input_voltage 0 V

In Solar Power I turned on the debug log and attached it to you.
It would be really great if this would also work with the Hybrid V2.
Unfortunately there is no ARM version of the SolarPower software.

2020-05-17.log

POP02

Hi have you tried testing executing POP02 on your inverter?
Some of the inverter does not accept POP02 (SBU)

What I´m doing wrong while Installaion

Hi,

I zhink this is also no direct Issue but I can´t install it on Raspi:

`pi@homecontrolx:~ $ sudo python /home/pi/mpp-solar/setup.py install
running install
running bdist_egg
running egg_info
creating mpp_solar.egg-info
writing requirements to mpp_solar.egg-info/requires.txt
writing mpp_solar.egg-info/PKG-INFO
writing top-level names to mpp_solar.egg-info/top_level.txt
writing dependency_links to mpp_solar.egg-info/dependency_links.txt
writing entry points to mpp_solar.egg-info/entry_points.txt
writing manifest file 'mpp_solar.egg-info/SOURCES.txt'
reading manifest file 'mpp_solar.egg-info/SOURCES.txt'
writing manifest file 'mpp_solar.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
warning: install_lib: 'build/lib.linux-armv7l-2.7' does not exist -- no Python modules to install

installing package data to build/bdist.linux-armv7l/egg
running install_data
creating build
creating build/bdist.linux-armv7l
creating build/bdist.linux-armv7l/egg
error: can't copy 'daemon/mpp-solar.service': doesn't exist or not a regular file`

Can someone help here?

Regards
Clemens

Q1 query protocol change?

this is what happens when I try q1 query on PIP-4024MSP:

Note this line DEBUG:MPP-Solar:usb byte_response was: b'(1 0 0000 15472 00001 00 00 03 000 026 019 028 00 00 000 0040 0000 0000 00.00 11\x0e\xc8\r' and compare with ["(00000 00000 01 01 00 059 045 053 068 00 00 000 0040 0580 0000 50.00 139", "39B9"] from here

They seem to have added 3 more values

pi@zero:/var/log $ mpp-solar -d /dev/hidraw0 -c Q1 -D
INFO:MPP-Solar:command Q1
INFO:MPP-Solar:Serial device used: /dev/hidraw0, baud rate: 2400
DEBUG:MPP-Solar:Device matches hidraw regex
INFO:MPP-Solar:Loading commands for inverter model: standard
[...snip...]
DEBUG:MPP-Solar:Searching for cmd 'Q1'
INFO:MPP-Solar:DIRECT USB connection: executing Q1
Q1 query


DEBUG:MPP-Solar:length of to_send: 5
DEBUG:MPP-Solar:1 chunk send
DEBUG:MPP-Solar:usb byte_response was: b'(1 0 0000 15472 00001 00 00 03 000 026 019 028 00 00 000 0040 0000 0000 00.00 11\x0e\xc8\r'
Traceback (most recent call last):
  File "/usr/local/bin/mpp-solar", line 11, in <module>
    load_entry_point('mpp-solar==0.4.1', 'console_scripts', 'mpp-solar')()
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/__init__.py", line 83, in main
    results = mp.getResponseDict(args.command)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mpputils.py", line 40, in getResponseDict
    return self.inverter.getResponseDict(cmd)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 215, in getResponseDict
    result = self.execute(cmd)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 351, in execute
    return self._doDirectUsbCommand(command)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 335, in _doDirectUsbCommand
    command.setByteResponse(response_line)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppcommand.py", line 139, in setByteResponse
    self.response_dict = self.getResponseDict()
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppcommand.py", line 443, in getResponseDict
    msgs[key] = [resp_format[2][int(result)], '']
IndexError: list index out of range

No handlers could be found for logger "MPP-Solar"

Hi this code works great on my pip 4048GE however I do get this annoying warning. Any idea how I can clear this error up? It happens every time I do a query although it does actually work. Thanks

Tests fail

Dear John!

Rebased my code and noticed that a test is failing:

======================================================================
ERROR: test_bulk_commands (tests.test_mppinverter.test_mppinverter)
Test all query commands

Traceback (most recent call last):
File "/home/volker/workspace/PYTHON/test_mpp/mpp-solar/tests/test_mppinverter.py", line 114, in test_bulk_commands
command = inverter.execute(cmd)
File "/home/volker/workspace/PYTHON/test_mpp/mpp-solar/mppsolar/mppinverter.py", line 348, in execute
return self._doTestCommand(command)
File "/home/volker/workspace/PYTHON/test_mpp/mpp-solar/mppsolar/mppinverter.py", line 248, in _doTestCommand
command.setByteResponse(command.getTestByteResponse())
File "/home/volker/workspace/PYTHON/test_mpp/mpp-solar/mppsolar/mppcommand.py", line 139, in setByteResponse
self.response_dict = self.getResponseDict()
File "/home/volker/workspace/PYTHON/test_mpp/mpp-solar/mppsolar/mppcommand.py", line 446, in getResponseDict
msgs[key] = [resp_format[2][result], '']
KeyError: '139'


Ran 22 tests in 2.564s

FAILED (errors=1)
Test failed: <unittest.runner.TextTestResult run=22 errors=1 failures=0>
error: Test failed: <unittest.runner.TextTestResult run=22 errors=1 failures=0>

Failed to start MPP Solar Service

Hello, I cannot start the service, I use a raspi2 and Raspbian Buster, when I enter this I get the following error.

pi@PIP5048MG:~ $ systemctl --user status mpp-solar
● mpp-solar.service - MPP Solar Service
   Loaded: loaded (/etc/systemd/user/mpp-solar.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2020-04-26 06:10:55 CEST; 2min 23s ago
  Process: 789 ExecStart=/usr/bin/python /usr/local/bin/mpp-solar-service -c /etc/mpp-solar/m
 Main PID: 789 (code=exited, status=1/FAILURE)

abr 26 06:10:55 PIP5048MG systemd[542]: Failed to start MPP Solar Service.
abr 26 06:10:55 PIP5048MG systemd[542]: mpp-solar.service: Service RestartSec=100ms expired,
abr 26 06:10:55 PIP5048MG systemd[542]: mpp-solar.service: Scheduled restart job, restart cou
abr 26 06:10:55 PIP5048MG systemd[542]: Stopped MPP Solar Service.
abr 26 06:10:55 PIP5048MG systemd[542]: mpp-solar.service: Start request repeated too quickly
abr 26 06:10:55 PIP5048MG systemd[542]: mpp-solar.service: Failed with result 'exit-code'.
abr 26 06:10:55 PIP5048MG systemd[542]: Failed to start MPP Solar Service.

Thanks

DEBUG:MPP-Solar:USB read error: [Errno 11] Resource temporarily unavailable

Hello, I have a PIP-4024MSP from MPPSolar and have discovered your awesome utility. First and foremost thanks.

I have a raspberry pi zero connected to the inverter, and after booting the pi it works fine, however after ~20 minutes no command can be executed any longer because of this error:

root@zero:/home/pi# mpp-solar -d /dev/hidraw0 -s -D
INFO:MPP-Solar:command QID
INFO:MPP-Solar:Serial device used: /dev/hidraw0, baud rate: 2400
DEBUG:MPP-Solar:Device matches hidraw regex
INFO:MPP-Solar:Loading commands for inverter model: standard
[...snip...]
DEBUG:MPP-Solar:Searching for cmd 'QPIGS'
INFO:MPP-Solar:DIRECT USB connection: executing QPIGS
General Status Parameters inquiry
 -- queries the value of various metrics from the Inverter

DEBUG:MPP-Solar:length of to_send: 8
DEBUG:MPP-Solar:1 chunk send
DEBUG:MPP-Solar:USB read error: [Errno 11] Resource temporarily unavailable
DEBUG:MPP-Solar:USB read error: [Errno 11] Resource temporarily unavailable
[...repeats...]
DEBUG:MPP-Solar:USB read error: [Errno 11] Resource temporarily unavailable
DEBUG:MPP-Solar:USB read error: [Errno 11] Resource temporarily unavailable
DEBUG:MPP-Solar:usb byte_response was: b''
Traceback (most recent call last):
  File "/usr/local/bin/mpp-solar", line 11, in <module>
    load_entry_point('mpp-solar==0.4.1', 'console_scripts', 'mpp-solar')()
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/__init__.py", line 64, in main
    fullStatus = mp.getFullStatus()
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mpputils.py", line 60, in getFullStatus
    data = self.getResponseDict("QPIGS")
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mpputils.py", line 40, in getResponseDict
    return self.inverter.getResponseDict(cmd)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 215, in getResponseDict
    result = self.execute(cmd)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 351, in execute
    return self._doDirectUsbCommand(command)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppinverter.py", line 335, in _doDirectUsbCommand
    command.setByteResponse(response_line)
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppcommand.py", line 139, in setByteResponse
    self.response_dict = self.getResponseDict()
  File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.1-py3.7.egg/mppsolar/mppcommand.py", line 434, in getResponseDict
    msgs[key] = [float(result), resp_format[2]]
ValueError: could not convert string to float: 
root@zero:/home/pi# 

I would appreciate a way to fix this without rebooting. Rebooting makes it work again for ~20 minutes but it feels stupid to reboot that often.

MPP 3048 support

The PC software works ok, whats involved in getting it working with your software?

trying to use with pip 2424msxe

can you tell me why i am getting this error and how to fix it.

after i run this command
mpp-info-pub -q localhost -c QID

i get this output
pi@grafpi ~ $ mpp-info-pub -q localhost -c QID
Traceback (most recent call last):
File "/usr/local/bin/mpp-info-pub", line 9, in
load_entry_point('mpp-solar==0.4.6', 'console_scripts', 'mpp-info-pub')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
['name'])
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.6-py2.7.egg/mppsolar/init.py", line 7, in
from .mpputils import mppUtils
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.6-py2.7.egg/mppsolar/mpputils.py", line 8, in
from .mppinverter import mppInverter
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.6-py2.7.egg/mppsolar/mppinverter.py", line 18, in
from .mppcommand import mppCommand
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.6-py2.7.egg/mppsolar/mppcommand.py", line 431
resp_format = ['string', f'Unknown value in byte_response {i}', '']
^
SyntaxError: invalid syntax

thanks for the help in advance.

pv_input_current appear to be an integer, needs to be a float

pv_input_current appear to be an integer, needs to be a float. Watchpower shows 40W of power at 70v = 0.57a.
mpp-solar shows 0 for pv_input_current if it less than 1amp
version: 0.7.3 on pi4
Linux pi4 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

Load on/off command

Noticed that there's not a direct command to power on/off the load. Is there a way to achieve this?
Scenario: shut down the loads programmatically.

extra status label

I have an MPPsolar PIP5048MS and I have it connected via the serial port to an raspberry pi3 and i am running your script.
if i run the script like:
mpp-solar -d /dev/ttyUSB0 -b 2400 -c QPIGS

I get this:
ac_input_frequency 49.9 Hz
ac_input_voltage 233.6 V
ac_output_active_power 0386 W
ac_output_apparent_power 0437 VA
ac_output_frequency 50.0 Hz
ac_output_load 008 %
ac_output_voltage 230.1 V
battery_capacity 100 %
battery_charging_current 000 A
battery_discharge_current 00007 A
battery_voltage 53.60 V
battery_voltage_from_scc 53.61 V
bus_voltage 374 V
device_status
- Add SBU priority version - No
- Configuration unchanged
- SCC firmware version updated
- Load on
- Battery voltage not to steady while charging
- Charging on
- SCC charging on
- AC charging off
inverter_heat_sink_temperature 0035 Deg_C
pv_input_current_for_battery 0000 A
pv_input_voltage 070.7 V
unknown_value_in_response 010

I think the "unknown_value_in_response" is the Wattage of the PV. Becouse this is the only value that is different then when i look at the menu on the inverter it self.
I looked at the code to find out how I could add this to the influxdb but I can not figure it out.
Can you help me to add this?

Getting re-started... python issue?

I had mpp-solar installed briefly a couple of months ago, but didn't have time to pursue to completion.

Now I'm back to it. I pulled the latest using:

git clone https://github.com/jblance/mpp-solar.git
cd mpp-solar
sudo python ./setup.py install

That went fine.
sudo mpp-solar -h
gives me
[...]
MPP Solar Command Utility, version: 0.4.5

But now...
mpp-solar -M LV5048 -d /dev/hidraw0 -l
outputs:

Traceback (most recent call last):
  File "/usr/local/bin/mpp-solar", line 11, in <module>
    load_entry_point('mpp-solar==0.4.5', 'console_scripts', 'mpp-solar')()
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/__init__.py", line 50, in main
    mp = mppUtils(args.device, args.baud, args.model)
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/mpputils.py", line 31, in __init__
    self.inverter = mppInverter(serial_device, baud_rate, inverter_model)
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/mppinverter.py", line 146, in __init__
    self._commands = getCommandsFromJson(inverter_model)
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/mppinverter.py", line 100, in getCommandsFromJson
    help=getDataValue(data, 'help'), crc_function=getDataValue(data, 'crc'), prefix=getDataValue(data, 'prefix'), protocol=protocol))
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/mppcommand.py", line 124, in __init__
    self.byte_command = get_byte_command(self.cmd_str, self.crc_function)
  File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.4.5-py2.7.egg/mppsolar/mppcommand.py", line 78, in get_byte_command
    byte_cmd = bytes(cmd, 'utf-8')
TypeError: str() takes at most 1 argument (2 given)

Do I have a python problem here? Any help appreciated.

Communication with Pylontech batteries

Hi everyone:

I would like to ask you if anyone can recommend me a repository like this or any other information for connecting my Raspberry to my Pylontech US2000 Plus batteries.

I would like to improve my installation obtaining a better estimation of the State of Charge of the batteries compared with the one performed by my Axpert 5K inverters.

Thank you very much in advance.

Francisco

Problems connecting to a BMS JK-B2A24S15P

Hello,
thank you for providing this powerful package and the JK-BMS integration.
While trying to log my JK-B2A24S15P data I found the discussion in the jblance/jkbms repository.
I installed the mpp-solar (7.8) including all requirements on my raspi3 and had the following error:

mpp-solar -p 3C:A5:4A:DE:F6:52 -P JK02 -c getCellData
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 10, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/mppsolar/init.py", line 343, in main
device = device_class(name=args.name, port=args.port, protocol=args.protocol, baud=args.baud)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/devices/mppsolar.py", line 11, in init
self.set_port(port=kwargs["port"], baud=kwargs["baud"])
File "/usr/local/lib/python3.7/dist-packages/mppsolar/devices/device.py", line 117, in set_port
from mppsolar.io.jkbleio import JkBleIO
File "/usr/local/lib/python3.7/dist-packages/mppsolar/io/jkbleio.py", line 6, in
from .jkbledelegate import jkBleDelegate
File "/usr/local/lib/python3.7/dist-packages/mppsolar/io/jkbledelegate.py", line 40, in
self.notificationData = bytearray()
NameError: name 'self' is not defined

Installing mpp-solar 7.10 is resulting in the same error.

After (quick&dirty) commenting out the line "self.notificationData = bytearray()" at the bottom of jkbledelegate.py file,
mpp-solar -p 3C:A5:4A:DE:F6:52 -P JK02 -c getCellData
is working in 7.8, replying the correct cell voltages etc.

In the actual 7.10, after commenting out the line "self.notificationData = bytearray()", there are following more errors:

_mpp-solar -p 3C:A5:4A:DE:F6:52 -P JK02 -c getCellData
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 10, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/mppsolar/init.py", line 358, in main
results = device.run_command(command=args.command, show_raw=args.showraw)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/devices/mppsolar.py", line 45, in run_command
response = self._port.send_and_receive(command, show_raw, self._protocol)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/io/jkbleio.py", line 35, in send_and_receive
if self.ble_connect(self._device_path, protocol):
File "/usr/local/lib/python3.7/dist-packages/mppsolar/io/jkbleio.py", line 59, in ble_connect
self.device.withDelegate(jkBleDelegate(self, protocol, record_type))
NameError: name 'record_type' is not defined

_mpp-solar -p 3C:A5:4A:DE:F6:52 -P JK485 -c getBalancerData
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 10, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/mppsolar/init.py", line 361, in main
results = device.run_default_command(show_raw=args.showraw)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/devices/device.py", line 151, in run_default_command
return self.run_command(command=self._protocol.DEFAULT_COMMAND, show_raw=show_raw)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/devices/mppsolar.py", line 45, in run_command
response = self._port.send_and_receive(command, show_raw, self.protocol)
File "/usr/local/lib/python3.7/dist-packages/mppsolar/io/jkbleio.py", line 28, in send_and_receive
record_type = command_defn["record_type"]
KeyError: 'record_type'

Is there anything I'm doing wrong? As you recently added support for the combined JK BMS/Balancer, what protocol is the right one to use for the BMS type JK-B2A24S15P?

Thank you and
best regards

UnicodeDecodeError

I'm using the command:
sudo mpp-solar -s -d /dev/hidraw0 but I keep getting a failure and I can't figure out why. I've tried it on another pi and it works fine there so there is nothing wrong with the physical cable or the inverter etc, it must be something to do with the setup on my non working pi. The working pi has nothing else installed on it and the non working pi does (not sure if that is related to the issue or not). I've run the command above with the -D flag and this is the output:

2019-12-12 12:16:05,316 - MPP-Solar - init.py - DEBUG - command QID
2019-12-12 12:16:05,317 - MPP-Solar - init.py - DEBUG - Serial device used: /dev/hidraw0, baud rate: 2400
2019-12-12 12:16:05,317 - MPP-Solar - mppinverter.py - DEBUG - Device matches hidraw regex
2019-12-12 12:16:05,318 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/invalid.json
2019-12-12 12:16:05,319 - MPP-Solar - mppinverter.py - DEBUG - Error processing JSON in /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/invalid.json
2019-12-12 12:16:05,319 - MPP-Solar - mppinverter.py - DEBUG - Expecting property name: line 3 column 3 (char 25)
2019-12-12 12:16:05,320 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/mchgc.json
2019-12-12 12:16:05,320 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for MCHGC
2019-12-12 12:16:05,321 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for MCHGC
2019-12-12 12:16:05,321 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 9d a2 9da2
2019-12-12 12:16:05,321 - MPP-Solar - mppcommand.py - DEBUG - Full command: MCHGC��
2019-12-12 12:16:05,322 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/muchgc.json
2019-12-12 12:16:05,322 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for MUCHGC
2019-12-12 12:16:05,323 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for MUCHGC
2019-12-12 12:16:05,323 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC bf 86 bf86
2019-12-12 12:16:05,323 - MPP-Solar - mppcommand.py - DEBUG - Full command: MUCHGC��
2019-12-12 12:16:05,324 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/pbt.json
2019-12-12 12:16:05,324 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for PBT
2019-12-12 12:16:05,325 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for PBT
2019-12-12 12:16:05,325 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 2f 11 2f11
2019-12-12 12:16:05,326 - MPP-Solar - mppcommand.py - DEBUG - Full command: PBT/
2019-12-12 12:16:05,326 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/pcp.json
2019-12-12 12:16:05,327 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for PCP
2019-12-12 12:16:05,327 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for PCP
2019-12-12 12:16:05,328 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 5c a4 5ca4
2019-12-12 12:16:05,328 - MPP-Solar - mppcommand.py - DEBUG - Full command: PCP\�
2019-12-12 12:16:05,328 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/pcvv.json
2019-12-12 12:16:05,329 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for PCVV
2019-12-12 12:16:05,329 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for PCVV
2019-12-12 12:16:05,329 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC af ec afec
2019-12-12 12:16:05,330 - MPP-Solar - mppcommand.py - DEBUG - Full command: PCVV��
2019-12-12 12:16:05,330 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/pop.json
2019-12-12 12:16:05,331 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for POP
2019-12-12 12:16:05,331 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for POP
2019-12-12 12:16:05,331 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 19 c9 19c9
2019-12-12 12:16:05,332 - MPP-Solar - mppcommand.py - DEBUG - Full command: POP�
2019-12-12 12:16:05,332 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/psdv.json
2019-12-12 12:16:05,333 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for PSDV
2019-12-12 12:16:05,333 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for PSDV
2019-12-12 12:16:05,333 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 89 9e 899e
2019-12-12 12:16:05,334 - MPP-Solar - mppcommand.py - DEBUG - Full command: PSDV��
2019-12-12 12:16:05,334 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/q1.json
2019-12-12 12:16:05,334 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for Q1
2019-12-12 12:16:05,335 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for Q1
2019-12-12 12:16:05,335 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 1b fc 1bfc
2019-12-12 12:16:05,335 - MPP-Solar - mppcommand.py - DEBUG - Full command: Q1
2019-12-12 12:16:05,336 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qboot.json
2019-12-12 12:16:05,336 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QBOOT
2019-12-12 12:16:05,336 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QBOOT
2019-12-12 12:16:05,337 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC b 88 b88
2019-12-12 12:16:05,337 - MPP-Solar - mppcommand.py - DEBUG - Full command: QBOOT

2019-12-12 12:16:05,337 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qdi.json
2019-12-12 12:16:05,337 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QDI
2019-12-12 12:16:05,337 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QDI
2019-12-12 12:16:05,338 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 71 1b 711b
2019-12-12 12:16:05,338 - MPP-Solar - mppcommand.py - DEBUG - Full command: QDIq
019-12-12 12:16:05,338 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qflag.json
2019-12-12 12:16:05,338 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QFLAG
2019-12-12 12:16:05,338 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QFLAG
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 98 74 9874
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - DEBUG - Full command: QFLAG�t
2019-12-12 12:16:05,339 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qid.json
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QID
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QID
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC d6 ea d6ea
2019-12-12 12:16:05,339 - MPP-Solar - mppcommand.py - DEBUG - Full command: QID��
2019-12-12 12:16:05,340 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qmchgcr.json
2019-12-12 12:16:05,340 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QMCHGCR
2019-12-12 12:16:05,340 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QMCHGCR
2019-12-12 12:16:05,340 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC d8 55 d855
2019-12-12 12:16:05,340 - MPP-Solar - mppcommand.py - DEBUG - Full command: QMCHGCR�U
2019-12-12 12:16:05,340 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qmod.json
2019-12-12 12:16:05,341 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QMOD
2019-12-12 12:16:05,341 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QMOD
2019-12-12 12:16:05,341 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 49 c1 49c1
2019-12-12 12:16:05,341 - MPP-Solar - mppcommand.py - DEBUG - Full command: QMODI�
2019-12-12 12:16:05,342 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qmuchgcr.json
2019-12-12 12:16:05,342 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QMUCHGCR
2019-12-12 12:16:05,342 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QMUCHGCR
2019-12-12 12:16:05,342 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 26 34 2634
2019-12-12 12:16:05,342 - MPP-Solar - mppcommand.py - DEBUG - Full command: QMUCHGCR&4
2019-12-12 12:16:05,343 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qopm.json
2019-12-12 12:16:05,343 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QOPM
2019-12-12 12:16:05,343 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QOPM
2019-12-12 12:16:05,343 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC a5 c5 a5c5
2019-12-12 12:16:05,343 - MPP-Solar - mppcommand.py - DEBUG - Full command: QOPM��
2019-12-12 12:16:05,343 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qpgs.json
2019-12-12 12:16:05,344 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QPGSn
2019-12-12 12:16:05,344 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QPGSn
2019-12-12 12:16:05,345 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 84 e1 84e1
2019-12-12 12:16:05,345 - MPP-Solar - mppcommand.py - DEBUG - Full command: QPGSn��
2019-12-12 12:16:05,345 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qpi.json
2019-12-12 12:16:05,345 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QPI
2019-12-12 12:16:05,345 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QPI
2019-12-12 12:16:05,346 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC be ac beac
2019-12-12 12:16:05,346 - MPP-Solar - mppcommand.py - DEBUG - Full command: QPI��
2019-12-12 12:16:05,346 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qpigs.json
2019-12-12 12:16:05,346 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QPIGS
2019-12-12 12:16:05,346 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QPIGS
2019-12-12 12:16:05,347 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC b7 a9 b7a9
2019-12-12 12:16:05,347 - MPP-Solar - mppcommand.py - DEBUG - Full command: QPIGS��
2019-12-12 12:16:05,347 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qpiri.json
2019-12-12 12:16:05,347 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QPIRI
2019-12-12 12:16:05,347 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QPIRI
2019-12-12 12:16:05,348 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC f8 54 f854
2019-12-12 12:16:05,348 - MPP-Solar - mppcommand.py - DEBUG - Full command: QPIRI�T
2019-12-12 12:16:05,348 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qpiws.json
2019-12-12 12:16:05,348 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QPIWS
2019-12-12 12:16:05,348 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QPIWS
2019-12-12 12:16:05,348 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC b4 da b4da
2019-12-12 12:16:05,349 - MPP-Solar - mppcommand.py - DEBUG - Full command: QPIWS��
2019-12-12 12:16:05,349 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qvfw.json
2019-12-12 12:16:05,349 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QVFW
2019-12-12 12:16:05,349 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QVFW
2019-12-12 12:16:05,349 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC 62 99 6299
2019-12-12 12:16:05,349 - MPP-Solar - mppcommand.py - DEBUG - Full command: QVFWb�
2019-12-12 12:16:05,350 - MPP-Solar - mppinverter.py - DEBUG - Loading command information from /usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/commands/qvfw2.json
2019-12-12 12:16:05,350 - MPP-Solar - mppcommand.py - DEBUG - Generate full command for QVFW2
2019-12-12 12:16:05,350 - MPP-Solar - mppcommand.py - INFO - Calculating CRC for QVFW2
2019-12-12 12:16:05,350 - MPP-Solar - mppcommand.py - DEBUG - Generated CRC c3 f5 c3f5
2019-12-12 12:16:05,350 - MPP-Solar - mppcommand.py - DEBUG - Full command: QVFW2��
2019-12-12 12:16:05,350 - MPP-Solar - mppinverter.py - DEBUG - Searching for cmd 'Q1'
2019-12-12 12:16:05,350 - MPP-Solar - mppinverter.py - DEBUG - DIRECT USB connection: executing Q1
Q1 query

Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 11, in
load_entry_point('mpp-solar==0.1.3', 'console_scripts', 'mpp-solar')()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/init.py", line 44, in main
fullStatus = mp.getFullStatus()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mpputils.py", line 51, in getFullStatus
data = self.getResponseDict("Q1")
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mpputils.py", line 37, in getResponseDict
return self.inverter.execute(cmd).getResponseDict()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mppinverter.py", line 242, in execute
return self._doDirectUsbCommand(command)
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mppinverter.py", line 208, in _doDirectUsbCommand
os.write(usb0, send.encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 3: ordinal not in range(128)

It seems to be an issue with a character in the message it is trying to send to the mpp?

Thanks

Nick

Not able to connect to MPP Hybrid LV2424 Inverter

This looks similar to #25, but that issue is closed, and I'm not sure it's actually dealing with the same model (as the model numbering is still a little confusing to me). The "model name" is marked (both on the box and on the inverter itself) as "HV LV 2424." Using release 0.4.6, I'm not able to connect to--or at least retrieve useful information from--the inverter. Using some of the troubleshooting commands in the other issue, it looks like it's using protocol 18:

pi@solpiplog:~ $ sudo mpp-solar -c PI -M PI18 -d /dev/hidraw0
protocol_version              	18              

But it won't even retrieve the device's serial number:

pi@solpiplog:~ $ sudo mpp-solar -M PI18 -d /dev/hidraw0
serial_number                 	                

And an information query returns an error:

pi@solpiplog:~ $ sudo mpp-solar -c QPIRI -M PI18 -d /dev/hidraw0
error                         	Invalid byte_response 
response                      	                

Debug information below:

pi@solpiplog:~ $ sudo mpp-solar -c PI -D -M PI18 -d /dev/hidraw0
INFO:MPP-Solar:command PI
INFO:MPP-Solar:Serial device used: /dev/hidraw0, baud rate: 2400
DEBUG:MPP-Solar:Device matches hidraw regex
INFO:MPP-Solar:Loading commands for inverter model: PI18
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/_pi18_et.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command ET supported by model PI18
INFO:MPP-Solar:... command ET loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for ^P005ET
DEBUG:MPP-Solar:Calculating CRC for b'^P005ET'
DEBUG:MPP-Solar:Generated CRC 4e 91 4e91
DEBUG:MPP-Solar:Full byte command: b'^P005ETN\x91\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/_pi18_gs.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command GS supported by model PI18
INFO:MPP-Solar:... command GS loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for ^P005GS
DEBUG:MPP-Solar:Calculating CRC for b'^P005GS'
DEBUG:MPP-Solar:Generated CRC 58 14 5814
DEBUG:MPP-Solar:Full byte command: b'^P005GSX\x14\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/_pi18_mod.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command MOD supported by model PI18
INFO:MPP-Solar:... command MOD loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for ^P006MOD
DEBUG:MPP-Solar:Calculating CRC for b'^P006MOD'
DEBUG:MPP-Solar:Generated CRC dd be ddbe
DEBUG:MPP-Solar:Full byte command: b'^P006MOD\xdd\xbe\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/_pi18_pi.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PI supported by model PI18
INFO:MPP-Solar:... command PI loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for ^P005PI
DEBUG:MPP-Solar:Calculating CRC for b'^P005PI'
DEBUG:MPP-Solar:Generated CRC 71 8b 718b
DEBUG:MPP-Solar:Full byte command: b'^P005PIq\x8b\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/f.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command F supported all inverters
INFO:MPP-Solar:... command F loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for F
DEBUG:MPP-Solar:Calculating CRC for b'F'
DEBUG:MPP-Solar:Generated CRC 29 2 2902
DEBUG:MPP-Solar:Full byte command: b'F)\x02\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/mchgc.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command MCHGC supported all inverters
INFO:MPP-Solar:... command MCHGC loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for MCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MCHGC'
DEBUG:MPP-Solar:Generated CRC 9d a2 9da2
DEBUG:MPP-Solar:Full byte command: b'MCHGC\x9d\xa2\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/mnchgc.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command MNCHGC supported all inverters
INFO:MPP-Solar:... command MNCHGC loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for MNCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MNCHGC'
DEBUG:MPP-Solar:Generated CRC 57 23 5723
DEBUG:MPP-Solar:Full byte command: b'MNCHGCW#\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/muchgc.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command MUCHGC supported all inverters
INFO:MPP-Solar:... command MUCHGC loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for MUCHGC
DEBUG:MPP-Solar:Calculating CRC for b'MUCHGC'
DEBUG:MPP-Solar:Generated CRC bf 86 bf86
DEBUG:MPP-Solar:Full byte command: b'MUCHGC\xbf\x86\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pbcv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PBCV supported all inverters
INFO:MPP-Solar:... command PBCV loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PBCV
DEBUG:MPP-Solar:Calculating CRC for b'PBCV'
DEBUG:MPP-Solar:Generated CRC 64 5a 645a
DEBUG:MPP-Solar:Full byte command: b'PBCVdZ\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pbdv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PBDV supported all inverters
INFO:MPP-Solar:... command PBDV loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PBDV
DEBUG:MPP-Solar:Calculating CRC for b'PBDV'
DEBUG:MPP-Solar:Generated CRC fd cd fdcd
DEBUG:MPP-Solar:Full byte command: b'PBDV\xfd\xcd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pbft.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PBFT supported all inverters
INFO:MPP-Solar:... command PBFT loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PBFT
DEBUG:MPP-Solar:Calculating CRC for b'PBFT'
DEBUG:MPP-Solar:Generated CRC bb ed bbed
DEBUG:MPP-Solar:Full byte command: b'PBFT\xbb\xed\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pbt.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PBT supported all inverters
INFO:MPP-Solar:... command PBT loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PBT
DEBUG:MPP-Solar:Calculating CRC for b'PBT'
DEBUG:MPP-Solar:Generated CRC 2f 11 2f11
DEBUG:MPP-Solar:Full byte command: b'PBT/\x11\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pcp.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PCP supported all inverters
INFO:MPP-Solar:... command PCP loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PCP
DEBUG:MPP-Solar:Calculating CRC for b'PCP'
DEBUG:MPP-Solar:Generated CRC 5c a4 5ca4
DEBUG:MPP-Solar:Full byte command: b'PCP\\\xa4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pcvv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PCVV supported all inverters
INFO:MPP-Solar:... command PCVV loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PCVV
DEBUG:MPP-Solar:Calculating CRC for b'PCVV'
DEBUG:MPP-Solar:Generated CRC af ec afec
DEBUG:MPP-Solar:Full byte command: b'PCVV\xaf\xec\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pepd.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PEPD supported all inverters
INFO:MPP-Solar:... command PEPD loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PEPD
DEBUG:MPP-Solar:Calculating CRC for b'PEPD'
DEBUG:MPP-Solar:Generated CRC 85 99 8599
DEBUG:MPP-Solar:Full byte command: b'PEPD\x85\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pf.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PF supported all inverters
INFO:MPP-Solar:... command PF loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PF
DEBUG:MPP-Solar:Calculating CRC for b'PF'
DEBUG:MPP-Solar:Generated CRC 26 bd 26bd
DEBUG:MPP-Solar:Full byte command: b'PF&\xbd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pgr.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PGR supported all inverters
INFO:MPP-Solar:... command PGR loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PGR
DEBUG:MPP-Solar:Calculating CRC for b'PGR'
DEBUG:MPP-Solar:Generated CRC b0 22 b022
DEBUG:MPP-Solar:Full byte command: b'PGR\xb0"\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pop.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command POP supported all inverters
INFO:MPP-Solar:... command POP loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for POP
DEBUG:MPP-Solar:Calculating CRC for b'POP'
DEBUG:MPP-Solar:Generated CRC 19 c9 19c9
DEBUG:MPP-Solar:Full byte command: b'POP\x19\xc9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/popm.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command POPM supported all inverters
INFO:MPP-Solar:... command POPM loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for POPM
DEBUG:MPP-Solar:Calculating CRC for b'POPM'
DEBUG:MPP-Solar:Generated CRC d3 71 d371
DEBUG:MPP-Solar:Full byte command: b'POPM\xd3q\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/ppcp.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PPCP supported all inverters
INFO:MPP-Solar:... command PPCP loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PPCP
DEBUG:MPP-Solar:Calculating CRC for b'PPCP'
DEBUG:MPP-Solar:Generated CRC 29 9f 299f
DEBUG:MPP-Solar:Full byte command: b'PPCP)\x9f\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/ppvokc.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PPVOKC supported all inverters
INFO:MPP-Solar:... command PPVOKC loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PPVOKC
DEBUG:MPP-Solar:Calculating CRC for b'PPVOKC'
DEBUG:MPP-Solar:Generated CRC af 9 af09
DEBUG:MPP-Solar:Full byte command: b'PPVOKC\xaf\t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/psdv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PSDV supported all inverters
INFO:MPP-Solar:... command PSDV loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PSDV
DEBUG:MPP-Solar:Calculating CRC for b'PSDV'
DEBUG:MPP-Solar:Generated CRC 89 9e 899e
DEBUG:MPP-Solar:Full byte command: b'PSDV\x89\x9e\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/pspb.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command PSPB supported all inverters
INFO:MPP-Solar:... command PSPB loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for PSPB
DEBUG:MPP-Solar:Calculating CRC for b'PSPB'
DEBUG:MPP-Solar:Generated CRC 14 9c 149c
DEBUG:MPP-Solar:Full byte command: b'PSPB\x14\x9c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/q1.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command Q1 supported all inverters
INFO:MPP-Solar:... command Q1 loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for Q1
DEBUG:MPP-Solar:Calculating CRC for b'Q1'
DEBUG:MPP-Solar:Generated CRC 1b fc 1bfc
DEBUG:MPP-Solar:Full byte command: b'Q1\x1b\xfc\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qboot.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QBOOT supported all inverters
INFO:MPP-Solar:... command QBOOT loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QBOOT
DEBUG:MPP-Solar:Calculating CRC for b'QBOOT'
DEBUG:MPP-Solar:Generated CRC b 88 b88
DEBUG:MPP-Solar:Full byte command: b'QBOOT\x0b\x88\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qdi.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QDI supported all inverters
INFO:MPP-Solar:... command QDI loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QDI
DEBUG:MPP-Solar:Calculating CRC for b'QDI'
DEBUG:MPP-Solar:Generated CRC 71 1b 711b
DEBUG:MPP-Solar:Full byte command: b'QDIq\x1b\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qflag.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QFLAG supported all inverters
INFO:MPP-Solar:... command QFLAG loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QFLAG
DEBUG:MPP-Solar:Calculating CRC for b'QFLAG'
DEBUG:MPP-Solar:Generated CRC 98 74 9874
DEBUG:MPP-Solar:Full byte command: b'QFLAG\x98t\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qgmn.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QGMN supported all inverters
INFO:MPP-Solar:... command QGMN loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QGMN
DEBUG:MPP-Solar:Calculating CRC for b'QGMN'
DEBUG:MPP-Solar:Generated CRC 49 29 4929
DEBUG:MPP-Solar:Full byte command: b'QGMNI)\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qid.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QID supported all inverters
INFO:MPP-Solar:... command QID loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QID
DEBUG:MPP-Solar:Calculating CRC for b'QID'
DEBUG:MPP-Solar:Generated CRC d6 ea d6ea
DEBUG:MPP-Solar:Full byte command: b'QID\xd6\xea\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qmchgcr.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QMCHGCR supported all inverters
INFO:MPP-Solar:... command QMCHGCR loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QMCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMCHGCR'
DEBUG:MPP-Solar:Generated CRC d8 55 d855
DEBUG:MPP-Solar:Full byte command: b'QMCHGCR\xd8U\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qmn.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QMN supported all inverters
INFO:MPP-Solar:... command QMN loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QMN
DEBUG:MPP-Solar:Calculating CRC for b'QMN'
DEBUG:MPP-Solar:Generated CRC bb 64 bb64
DEBUG:MPP-Solar:Full byte command: b'QMN\xbbd\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qmod.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QMOD supported all inverters
INFO:MPP-Solar:... command QMOD loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QMOD
DEBUG:MPP-Solar:Calculating CRC for b'QMOD'
DEBUG:MPP-Solar:Generated CRC 49 c1 49c1
DEBUG:MPP-Solar:Full byte command: b'QMODI\xc1\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qmuchgcr.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QMUCHGCR supported all inverters
INFO:MPP-Solar:... command QMUCHGCR loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QMUCHGCR
DEBUG:MPP-Solar:Calculating CRC for b'QMUCHGCR'
DEBUG:MPP-Solar:Generated CRC 26 34 2634
DEBUG:MPP-Solar:Full byte command: b'QMUCHGCR&4\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qopm.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QOPM supported all inverters
INFO:MPP-Solar:... command QOPM loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QOPM
DEBUG:MPP-Solar:Calculating CRC for b'QOPM'
DEBUG:MPP-Solar:Generated CRC a5 c5 a5c5
DEBUG:MPP-Solar:Full byte command: b'QOPM\xa5\xc5\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qp2gs.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpgs-lv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpgs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPGS supported all inverters
INFO:MPP-Solar:... command QPGS loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QPGS
DEBUG:MPP-Solar:Calculating CRC for b'QPGS'
DEBUG:MPP-Solar:Generated CRC a3 8c a38c
DEBUG:MPP-Solar:Full byte command: b'QPGS\xa3\x8c\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpi.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QPI supported all inverters
INFO:MPP-Solar:... command QPI loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QPI
DEBUG:MPP-Solar:Calculating CRC for b'QPI'
DEBUG:MPP-Solar:Generated CRC be ac beac
DEBUG:MPP-Solar:Full byte command: b'QPI\xbe\xac\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpigs-lv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpigs.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIGS supported all inverters
INFO:MPP-Solar:... command QPIGS loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QPIGS
DEBUG:MPP-Solar:Calculating CRC for b'QPIGS'
DEBUG:MPP-Solar:Generated CRC b7 a9 b7a9
DEBUG:MPP-Solar:Full byte command: b'QPIGS\xb7\xa9\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpigs2.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpiri-lv.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpiri.json
DEBUG:MPP-Solar:-----No supports ['LV5048']
DEBUG:MPP-Solar:Command QPIRI supported all inverters
INFO:MPP-Solar:... command QPIRI loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QPIRI
DEBUG:MPP-Solar:Calculating CRC for b'QPIRI'
DEBUG:MPP-Solar:Generated CRC f8 54 f854
DEBUG:MPP-Solar:Full byte command: b'QPIRI\xf8T\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qpiws.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QPIWS supported all inverters
INFO:MPP-Solar:... command QPIWS loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QPIWS
DEBUG:MPP-Solar:Calculating CRC for b'QPIWS'
DEBUG:MPP-Solar:Generated CRC b4 da b4da
DEBUG:MPP-Solar:Full byte command: b'QPIWS\xb4\xda\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qvfw.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QVFW supported all inverters
INFO:MPP-Solar:... command QVFW loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QVFW
DEBUG:MPP-Solar:Calculating CRC for b'QVFW'
DEBUG:MPP-Solar:Generated CRC 62 99 6299
DEBUG:MPP-Solar:Full byte command: b'QVFWb\x99\r'
DEBUG:MPP-Solar:Loading command information from /usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.6-py3.7.egg/mppsolar/commands/qvfw2.json
DEBUG:MPP-Solar:-----No supports 
DEBUG:MPP-Solar:Command QVFW2 supported all inverters
INFO:MPP-Solar:... command QVFW2 loaded for inverter model: PI18
DEBUG:MPP-Solar:Generate full byte command for QVFW2
DEBUG:MPP-Solar:Calculating CRC for b'QVFW2'
DEBUG:MPP-Solar:Generated CRC c3 f5 c3f5
DEBUG:MPP-Solar:Full byte command: b'QVFW2\xc3\xf5\r'
DEBUG:MPP-Solar:Searching for cmd 'PI'
INFO:MPP-Solar:DIRECT USB connection: executing PI
Device Protocol Version inquiry
 -- queries the device protocol version

DEBUG:MPP-Solar:length of to_send: 10
DEBUG:MPP-Solar:2 chunk send
DEBUG:MPP-Solar:usb byte_response was: b'^D00518;\x03\r'
DEBUG:MPP-Solar:Byte_Response length: 10
DEBUG:MPP-Solar:CRC resp	 59, 3
DEBUG:MPP-Solar:Calculating CRC for b'^D00518'
DEBUG:MPP-Solar:Generated CRC 3b 3 3b03
DEBUG:MPP-Solar:CRC calc	 59 3
DEBUG:MPP-Solar:CRCs match
DEBUG:MPP-Solar:getResponse with protocol = PI18
DEBUG:MPP-Solar:Response valid as no invalid situations found
DEBUG:MPP-Solar:getResponse with protocol = PI18
DEBUG:MPP-Solar:getResponse with protocol = PI18
protocol_version              	18              
pi@solpiplog:~ $ 

Serial read error: unicode strings are not supported, please encode to bytes:

Dear John!

Python 3.7.3 pipenv environment on a vanilla[*] buster raspberryPi Zero W.

$git clone ...; cd ...
$pipenv install
$pipenv shell
$python setup.py develop
(mpp-solar-ZAEQa1-O) pi@controller:~/workspace/mpp-solar $ mpp-solar -d /dev/ttyAMA0 
WARNING:MPP-Solar:Serial read error: unicode strings are not supported, please encode to bytes: 'QIDÖê\r'
error                         	No response

The exception is purely python related and has nothing to do with the actual hardware and is easily fixed:

(mpp-solar-ZAEQa1-O) pi@controller:~/workspace/mpp-solar/mppsolar $ diff mppinverter.py mppinverter.py~
258c258
<                     s.write(command.full_command.encode())
---
>                     s.write(command.full_command)

leading to

INFO:MPP-Solar:Invalid response
Traceback (most recent call last):
  File "/home/pi/.local/share/virtualenvs/mpp-solar-ZAEQa1-O/bin/mpp-solar", line 11, in <module>
    load_entry_point('mpp-solar', 'console_scripts', 'mpp-solar')()
  File "/home/pi/workspace/mpp-solar/mppsolar/__init__.py", line 81, in main
    results = mp.getResponseDict(args.command)
  File "/home/pi/workspace/mpp-solar/mppsolar/mpputils.py", line 37, in getResponseDict
    return self.inverter.getResponseDict(cmd)
  File "/home/pi/workspace/mpp-solar/mppsolar/mppinverter.py", line 209, in getResponseDict
    return result.getResponseDict()
  File "/home/pi/workspace/mpp-solar/mppsolar/mppcommand.py", line 414, in getResponseDict
    msgs['response'] = [self.response.replace('\r', ''), '']
TypeError: a bytes-like object is required, not 'str'

Is your code not python3 compatible? The setup.py states it is up too 3.8?

Additional information:

  1. I changed the boot process to avoid the HID driver to claim the usb-serial device as HID device by
    console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait usbhid.quirks=0x0665:0x5161:0x4

  2. According to https://www.raspberrypi.org/documentation/configuration/uart.md I have deactivated the usage of Bluetooth and assigned the PLO110 UART to the GPIO Pins which I use as /dev/ttyAMA0 to access the inverter.

Tomorrow I will try the USB interface.

Any help appreciated

Volker

Can't install on OrangePi Zero

I tried to install it on an OrangePi Zero but I get the following error.

root@SG-INVERTER:~/mpp-solar# sudo python3 ./setup.py install
/usr/lib/python3.4/distutils/dist.py:260: UserWarning: Unknown distribution option: 'long_description_content_type'
  warnings.warn(msg)
running install
Checking .pth file support in /usr/local/lib/python3.4/dist-packages/
/usr/bin/python3 -E -c pass
TEST PASSED: /usr/local/lib/python3.4/dist-packages/ appears to support .pth files
running bdist_egg
running egg_info
writing mpp_solar.egg-info/PKG-INFO
writing dependency_links to mpp_solar.egg-info/dependency_links.txt
writing top-level names to mpp_solar.egg-info/top_level.txt
writing entry points to mpp_solar.egg-info/entry_points.txt
writing requirements to mpp_solar.egg-info/requires.txt
reading manifest file 'mpp_solar.egg-info/SOURCES.txt'
writing manifest file 'mpp_solar.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/mppsolar
copying build/lib/mppsolar/version.py -> build/bdist.linux-armv7l/egg/mppsolar
copying build/lib/mppsolar/__init__.py -> build/bdist.linux-armv7l/egg/mppsolar
creating build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/hidrawio.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/testio.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/esp32io.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/__init__.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/baseio.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/serialio.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/jkbleio.py -> build/bdist.linux-armv7l/egg/mppsolar/io
copying build/lib/mppsolar/io/jkbledelegate.py -> build/bdist.linux-armv7l/egg/mppsolar/io
creating build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/jk04.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/protocol.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/pi30.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/__init__.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/jkabstractprotocol.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/protocol_helpers.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/pi16.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/pi18.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/pi41.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/pi00.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
copying build/lib/mppsolar/protocols/jk02.py -> build/bdist.linux-armv7l/egg/mppsolar/protocols
creating build/bdist.linux-armv7l/egg/mppsolar/devices
copying build/lib/mppsolar/devices/__init__.py -> build/bdist.linux-armv7l/egg/mppsolar/devices
copying build/lib/mppsolar/devices/device.py -> build/bdist.linux-armv7l/egg/mppsolar/devices
copying build/lib/mppsolar/devices/jk24s.py -> build/bdist.linux-armv7l/egg/mppsolar/devices
copying build/lib/mppsolar/devices/mppsolar.py -> build/bdist.linux-armv7l/egg/mppsolar/devices
creating build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/influx2_mqtt.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/hass_mqtt.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/screen.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/hass_config.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/__init__.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/influx_mqtt.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
copying build/lib/mppsolar/outputs/mqtt.py -> build/bdist.linux-armv7l/egg/mppsolar/outputs
byte-compiling build/bdist.linux-armv7l/egg/mppsolar/version.py to version.cpython-34.pyc
byte-compiling build/bdist.linux-armv7l/egg/mppsolar/__init__.py to __init__.cpython-34.pyc
  File "build/bdist.linux-armv7l/egg/mppsolar/__init__.py", line 33
    log.info(f"attempting to create output processor: {output}")
                                                              ^
SyntaxError: invalid syntax

byte-compiling build/bdist.linux-armv7l/egg/mppsolar/io/hidrawio.py to hidrawio.cpython-34.pyc
  File "build/bdist.linux-armv7l/egg/mppsolar/io/hidrawio.py", line 18
    log.info(f"full command {full_command} for command {command}")
                                                                ^
SyntaxError: invalid syntax

[...snip...]

then I tried: mpp-solar -h

root@SG-INVERTER:~/mpp-solar# mpp-solar -h
Traceback (most recent call last):
  File "/usr/local/bin/mpp-solar", line 9, in <module>
    load_entry_point('mpp-solar==0.7.8', 'console_scripts', 'mpp-solar')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 356, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2476, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2190, in load
    ['__name__'])
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 2164, in _find_spec
  File "<frozen importlib._bootstrap>", line 1940, in find_spec
  File "<frozen importlib._bootstrap>", line 1916, in _get_spec
  File "<frozen importlib._bootstrap>", line 1897, in _legacy_get_spec
  File "<frozen importlib._bootstrap>", line 863, in spec_from_loader
  File "<frozen importlib._bootstrap>", line 904, in spec_from_file_location
  File "/usr/local/lib/python3.4/dist-packages/mpp_solar-0.7.8-py3.4.egg/mppsolar/__init__.py", line 33
    log.info(f"attempting to create output processor: {output}")
                                                              ^
SyntaxError: invalid syntax

Any help?

LV5048 not recording pv_input_power in influxdb

The LV5048 protocol document indicates this parameter exists:
image

image

And the QPIGS query from mpp-solar appears to capture this data:
image

However the field doesn't exist in influxdb. Currently I'm calculating PV watt production from "pv_input_current_for_battery" and "pv_input_voltage" but this is proving inaccurate since PV power for inverter output isn't included in the results.

Is support for this parameter possible? Thanks for your help!

Need some help please :)

Hello, firstly thank you for the code, it's just what i've been looking for given that WatchPower is so bad!
I've managed to get the information from my inverter and can use mpp-solar -s to get the following:-
pi@raspberrypi:~ $ mpp-solar -s
No handlers could be found for logger "MPP-Solar"
================ Status ==================
Parameter Value Unit
ac_input_frequency 00.0 Hz
ac_input_voltage 001.0 V
ac_output_active_power 0000 W
ac_output_apparent_power 0000 VA
ac_output_frequency 50.0 Hz
ac_output_load 000 %
ac_output_voltage 228.0 V
battery_capacity 051 %
battery_charging_current 000 A
battery_discharge_current 00000 A
battery_voltage 25.05 V
battery_voltage_from_scc 25.12 V
bus_voltage 352 V
inverter_heat_sink_temperature 0636 Deg_C
is_ac_charging_on 0 True - 1/False - 0
is_battery_voltage_to_steady_while_charging 0 True - 1/False - 0
is_charging_on 1 True - 1/False - 0
is_configuration_changed 0 True - 1/False - 0
is_load_on 1 True - 1/False - 0
is_sbu_priority_version_added 1 True - 1/False - 0
is_scc_charging_on 1 True - 1/False - 0
is_scc_firmware_updated 0 True - 1/False - 0
pv_input_current_for_battery 0001 A
pv_input_voltage 035.3 V
unknown_value_in_response 000

However, i would like to send this information to an MQTT broker and send it maybe once every 30secs or so. Do you know how I could do this?
I'm not great with coding so might need a bit of help, but i'm learning fast!

Thanks in advance,
Martin

4048 MSD

hi got 2 PIP 4048 MSD they come with usb only connection
connected via us as /dev/usb/hiddev0+1
please help me get it fixed
this is what i got on my pi and the same on my laptop

pi@raspberrypi:~/Downloads/mpp-solar $ sudo mpp-solar -d /dev/usb/hiddev1 -s
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 11, in
load_entry_point('mpp-solar==0.1.3', 'console_scripts', 'mpp-solar')()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/init.py", line 37, in main
fullStatus = mp.getFullStatus()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mpputils.py", line 55, in getFullStatus
data = self.mp.execute("Q1").response_dict
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mppcommands.py", line 155, in execute
return self.doSerialCommand(command)
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mppcommands.py", line 125, in doSerialCommand
with serial.serial_for_url(self._serial_device, self._baud_rate) as s:
File "/usr/lib/python2.7/dist-packages/serial/init.py", line 88, in serial_for_url
instance.open()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 272, in open
self._reconfigure_port(force_update=True)
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 326, in _reconfigure_port
raise SerialException("Could not configure port: {}".format(msg))
serial.serialutil.SerialException: Could not configure port: (22, 'Invalid argument')

Error when attemp to use the programme

I got this error when I use your program:

ERROR: test_getfullstatus (main.test_mpputils)
Should return full status

Traceback (most recent call last):
File "test_mpputils.py", line 65, in test_getfullstatus
status = mp.getFullStatus()
File "/usr/local/lib/python2.7/dist-packages/mpp_solar-0.1.3-py2.7.egg/mppsolar/mpputils.py", line 64, in getFullStatus
data = self.mp.getResponseDict("Q1")
AttributeError: mppCommands instance has no attribute 'getResponseDict'

Support password-secured MQTT brokers

According to the docs page for MQTT/Influx/Grafana, "Password secured brokers are not currently supported." I'm wanting to log to a Kotori instance, which does implement a password for the MQTT broker, and I don't see that there's a way to bypass it. Would appreciated adding this capability.

New Protocol for new JK-BMS JK-B1A24S15P (fw 3.1.0 = Cryptograpĥic protocol)

Hi,

just for warning everybody about new firmware revision that add crypto on serial bl protocol, so i was unable to collect data over RS485, CAN or even directly tapped on bl module RX TX.

I would like to connect an esp32 or esp8266 to this great piece of cell balancer but the team choose to doing that forbidden, wtf!?
If you really need to extract data from bms, just choose another brand ;)

Here bless boot log at startup not bl connected, tapped on bl module :
rx bl module side :
0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 3D 20 20 20 20 28 43 29 20 43 4F 50 59 52 49 47 48 54 20 32 30 32 30 20 43 68 65 6E 67 44 75 20 4A 69 4B 6F 6E 67 20 54 65 63 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 0D 0A 3D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 0D 0A 3D 20 20 20 20 20 53 54 4D 33 32 46 31 30 33 78 43 38 20 62 6F 6F 74 6C 6F 61 64 65 72 20 28 56 65 72 73 69 6F 6E 20 31 2E 30 2E 33 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 0D 0A 3D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 0D 0A 3D 20 20 20 42 75 69 6C 64 20 44 65 63 20 31 35 20 32 30 32 30 20 20 31 34 3A 32 35 3A 31 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 20 5A 68 61 6E 67 50 65 6E 67 20 20 3D 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 54 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 41 54 0D 0A 41 54 2B 42 41 55 44 38 0D 0A 41 54 0D 0A 41 54 2B 44 49 53 43 0D 0A 41 54 2B 4E 41 4D 45 4A 4B 2D 42 31 41 32 34 53 31 35 50 0D 0A

tx bl module side :
4F 4B 0D 0A 2B 42 41 55 44 3D 38 0D 0A 4F 4B 0D 0A 4F 4B 0D 0A 4F 4B 0D 0A

Then i connecting app BL to bms
rx bl module side :
55 AA EB 90 03 00 4A 4B 2D 42 31 41 32 34 53 31 35 50 00 00 00 00 36 2E 58 00 00 00 00 00 36 2E 31 2E 30 53 00 00 79 69 00 00 37 00 00 00 4A 4B 2D 42 31 41 32 34 53 31 35 50 00 00 00 00 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 00 32 31 30 31 30 38 00 00 32 30 31 32 32 38 31 33 38 39 00 00 00 00 00 00 49 6E 70 75 74 20 55 73 65 72 64 61 74 61 00 00 30 30 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DB AA 55 90 EB C8 01 01 00 00 00 00 00 00 00 00 00 00 00 00 44 55 AA EB 90 01 00 58 02 00 00 22 0B 00 00 80 0C 00 00 36 10 00 00 04 10 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 0A 00 00 F0 49 02 00 1E 00 00 00 3C 00 00 00 48 E8 01 00 2C 01 00 00 3C 00 00 00 3C 00 00 00 2C 01 00 00 BC 02 00 00 58 02 00 00 BC 02 00 00 58 02 00 00 38 FF FF FF 9C FF FF FF 84 03 00 00 BC 02 00 00 03 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 70 17 00 00 DC 05 00 00 DC 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3E AA 55 90 EB C8 01 01 00 00 00 00 00 00 00 00 00 00 00 00 44 55 AA EB 90 02 00 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 2A 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 60 07 A8 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 14 09 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89 55 AA EB 90 02 01 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 28 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 5F 07 A9 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 46 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B9 55 AA EB 90 02 02 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 48 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 6F 07 A9 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 DF 07 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 82 55 AA EB 90 02 03 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 26 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 5E 07 AA 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 55 AA EB 90 02 04 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 48 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 6F 07 AA 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 46 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ED 55 AA EB 90 02 05 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 46 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 6E 07 AB 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 DF 07 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 85 55 AA EB 90 02 06 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 1C 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 59 07 AB 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 55 AA EB 90 02 07 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 42 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 6C 07 AB 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4F 55 AA EB 90 02 08 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 1A 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 58 07 AC 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 46 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AF 55 AA EB 90 02 09 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 1A 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 58 07 AC 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 14 09 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7F 55 AA EB 90 02 0A AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 3C 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 69 07 AD 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 14 09 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B3 55 AA EB 90 02 0B AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 52 01 00 00 18 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 57 07 AD 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 14 09 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7E 55 AA EB 90 02 0C AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 38 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 67 07 AE 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 55 AA EB 90 02 0D AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 12 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 54 07 AE 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 55 AA EB 90 02 0E AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 10 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 53 07 AE 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 DF 07 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 55 AA EB 90 02 0F AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 34 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 65 07 AF 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 46 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 55 AA EB 90 02 10 AD 0E 52 0E 53 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 70 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 2B 00 00 00 00 00 00 00 00 00 00 30 F8 30 F8 53 01 00 00 0C 01 00 00 C2 14 00 00 70 17 00 00 00 00 00 00 8F 01 00 00 00 00 51 07 AF 69 00 00 00 00 CB 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 11 04 00 00 00 00 92 4A 3B 40 00 00 00 00 AD 08 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C

tx bl module side :
2B 43 4F 4E 4E 45 43 54 45 44 0D 0A AA 55 90 EB 97 00 03 A3 2B C9 94 0E 5A 91 E8 44 14 05 1C 99 AA 55 90 EB 96 00 9D 20 DB 6E B5 72 A1 A8 E0 44 56 69 83 EC 2B 44 49 53 43 4F 4E 4E 45 43 54 45 44 0D 0A

Some data are different at each connection (roling code?, chalenge code?) so i think the better is to stop using this crapware.
Sorry for this bad news, hope it's help to choose better bms

After upgrading to version 0.7.22 hass_mqtt broken

jkbms -n 520585004 -T 520585004 -p XX:XX:XX:XX:XX:XX -P JK02 -o  hass_mqtt -q IP ADDRESS --mqttuser username --mqttpass password
Traceback (most recent call last):
  File "/home/pi/.local/bin/jkbms", line 11, in <module>
    load_entry_point('mpp-solar', 'console_scripts', 'jkbms')()
  File "/home/pi/src/mpp-solar/mppsolar/__init__.py", line 390, in main
    topic=parser.prog,
  File "/home/pi/src/mpp-solar/mppsolar/outputs/mqtt.py", line 62, in output
    msgs = self.build_msgs(data=data, tag=tag, topic=topic)
  File "/home/pi/src/mpp-solar/mppsolar/outputs/hass_mqtt.py", line 37, in build_msgs
    payload = f'{{"name": "pm_{tag}_{key}", "state_topic": "homeassistant/sensor/pm_{tag}_{key}/state", "unit_of_measurement": "{unit}"}}'
NameError: name 'unit' is not defined

Problem to start daemon

hi, i can use
mpp-info-pub -d /dev/hidraw0 -q 127.0.0.1 -c QPIGS
and mosquito receive datas

but if i try to start service i have:
/usr/bin/python3 /usr/local/bin/mpp-solar-service -c /etc/mpp-solar/mpp-solar.conf
MPP-Solar-Service: Initializing ...
MPP-Solar-Service: Config file: /etc/mpp-solar/mpp-solar.conf
MPP-Solar-Service: Config setting - pause: 5
MPP-Solar-Service: Config setting - mqtt_broker: 127.0.0.1
MPP-Solar-Service: Config setting - command sections found: 1
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar-service", line 11, in
load_entry_point('mpp-solar==0.4.3', 'console_scripts', 'mpp-solar-service')()
File "/usr/local/lib/python3.7/dist-packages/mpp_solar-0.4.3-py3.7.egg/mppsolar/mpp_solar_service.py", line 52, in main
systemd.daemon.notify('READY=1')
File "/usr/local/lib/python3.7/dist-packages/systemd/daemon.py", line 39, in notify
raise TypeError("state must be an instance of Notification")
TypeError: state must be an instance of Notification

i attach my mpp-solar.conf
[SETUP]
# Number of seconds to pause between command execution loop
# 0 is no pause, greater than 60 will cause service restarts
pause=5
mqtt_broker=127.0.0.1

[Inverter1]
model=standard
port=/dev/hidraw0
baud=2400
command=QPIGS
tag=Inverter1
format=influx2

any suggest?

Noob here. Please be gentle.

I do have mpp solar LV 5048 inverters. I am trying to incorporate what you doing here with my system. I can not get past this problem. Any insight would be helpful.

pi@raspberrypi:~ $ mpp-solar -l
Traceback (most recent call last):
File "/usr/local/bin/mpp-solar", line 11, in
load_entry_point('mpp-solar==0.1.3', 'console_scripts', 'mpp-solar')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2793, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2411, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2417, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
ImportError: No module named mppsolar

QPIGS update for PV power for a 2424LV

I needed the PV input power from the panels so I changed the QPIGS a little at the end to add some extra fields and fix the unknown byte issue, it seems to be working OK now for several weeks.

My qpigs.json is
{
"name": "QPIGS",
"description": "General Status Parameters inquiry",
"help": " -- queries the value of various metrics from the Inverter",
"type": "QUERY",
"nosupports": ["LV5048"],
"response": [
["float", "AC Input Voltage", "V"],
["float", "AC Input Frequency", "Hz"],
["float", "AC Output Voltage", "V"],
["float", "AC Output Frequency", "Hz"],
["int", "AC Output Apparent Power", "VA"],
["int", "AC Output Active Power", "W"],
["int", "AC Output Load", "%"],
["int", "BUS Voltage", "V"],
["float", "Battery Voltage", "V"],
["int", "Battery Charging Current", "A"],
["int", "Battery Capacity", "%"],
["int", "Inverter Heat Sink Temperature", "Deg_C"],
["int", "PV Input Current for Battery", "A"],
["float", "PV Input Voltage", "V"],
["float", "Battery Voltage from SCC", "V"],
["int", "Battery Discharge Current", "A"],
["flags", "Device Status", [
"is_sbu_priority_version_added",
"is_configuration_changed",
"is_scc_firmware_updated",
"is_load_on",
"is_battery_voltage_to_steady_while_charging",
"is_charging_on",
"is_scc_charging_on",
"is_ac_charging_on"
]
],
["int", "RSV1", "A"],
["int", "RSV2", "A"],
["int", "PV Input Power", "W"] ,
["flags", "Device Status2", [
"is_charging_to_float",
"is_switched_on",
"is_reserved"

            ]
        ]

    ],
"test_responses": [
        ["(000.0 00.0 230.0 49.9 0161 0119 003 460 57.50 012 100 0069 0014 103.8 57.45 00000 00110110 00 00 00856 010", "248C"]
    ],
"regex": ""

}

Hope this helps

communication not working

Hi

I´m having some problems with communicating with the inverter
its connected Raspberry pi3+ direct usb inverter. I was hoping if you could help me..

usb 1-1.5: new low-speed USB device number 6 using dwc_otg
[  196.244185] usb 1-1.5: New USB device found, idVendor=0665, idProduct=5161, bcdDevice= 0.02
[  196.244196] usb 1-1.5: New USB device strings: Mfr=3, Product=1, SerialNumber=0
[  196.256988] hid-generic 0003:0665:5161.0002: hiddev96,hidraw0: USB HID v1.11 Device [HID 0665:5161] on usb-3f980000.usb-1.5/input0
pi@raspberrypi:~ $ lsusb
Bus 001 Device 006: ID 0665:5161 Cypress Semiconductor USB to Serial
Bus 001 Device 005: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Check service status systemctl --user status mpp-solar

mpp-solar.service - MPP Solar Service
   Loaded: loaded (/etc/systemd/user/mpp-solar.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-11-23 12:17:33 CET; 1min 4s ago
 Main PID: 586 (python3)
   CGroup: /user.slice/user-1000.slice/[email protected]/mpp-solar.service
           └─586 /usr/bin/python3 /usr/local/bin/mpp-solar-service -c /etc/mpp-solar/mpp-solar.conf

nov 23 12:17:23 raspberrypi systemd[511]: Starting MPP Solar Service...
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: Initializing ...
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: Config file: /etc/mpp-solar/mpp-solar.conf
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: Config setting - pause: 5
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: Config setting - mqtt_broker: localhost
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: Config setting - command sections found: 1
nov 23 12:17:33 raspberrypi python3[586]: MPP-Solar-Service: item {'mp': <mppsolar.mpputils.mppUtils object at 0x75c56770>, 'command': 'QPGS', 'format': '
nov 23 12:17:33 raspberrypi systemd[511]: Started MPP Solar Service.
nov 23 12:17:33 raspberrypi python3[586]: CRITICAL:MPP-Solar:Command not found
pi@raspberrypi:~ $ sudo mpp-solar -M LV5161 -d /dev/ttyUSB0 -c QPIGS
WARNING:MPP-Solar:Serial read error: [Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'
error                         	No byte_response 
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ mpp-solar -M LV5161 -d /dev/hidraw0 -c QPIGS
error                         	Invalid byte_response 
response                      	NAK             
pi@raspberrypi:~ $ 

when connecting other stuff to USB port it shows up as AMA0

pi@raspberrypi:~ $ sudo mpp-solar -M LV5161 -d /dev/ttyAMA0 -c QPIGS
WARNING:MPP-Solar:Serial read error: Write timeout
error                         	No byte_response 

my set up

[SETUP]
# Number of seconds to pause between command execution loop
# 0 is no pause, greater than 60 will cause service restarts
pause=5
mqtt_broker=localhost

[Inverter_1_L1]
model=standard
port=/dev/mppsolar/direct/0
baud=2400
command=QPGS
tag=Inverter1
format=influx2

MPP-SOLAR mpp-info-pub

Hi all,

Just starting and learning. I have an LV5048 with a Raspberry Pi 3 connected via serial port. Having difficult getting mpp-solar running as a service and the troubleshooting have a reference to mpp-info-hub and can't find it anywhere. What I'm missing?

/bin/sh: 1: /usr/local/bin/mpp-info-pub: not found

my conf file:

Required section

[SETUP]

Number of seconds to pause at the end of each loop (0 is no pause)

pause=5
#Hostname / IP address of the MQTT broker
#mqtt_broker=mqtthost
mqtt_broker=localhsot

This example would work on a single LV5048

[Inverter1_L1]
model=LV5048
port=/dev/ttyUSB0
baud=2400
command=QPIGS
tag=Inverter1
#format=influx2

[Inverter1_L2]
model=standard
port=/dev/ttyUSB0
baud=2400
command=QPIGS2
tag=Inverter1
#format=influx2

Thanks

mppsolar service not starting

Hi I'm getting this error when trying to start mpp-solar service

root@SG-INVERTER:~# systemctl --user status mpp-solar
● mpp-solar.service - MPP Solar Service
Loaded: loaded (/etc/systemd/user/mpp-solar.service; enabled)
Active: activating (start) since Sun 2020-12-27 17:16:18 AST; 2s ago
Main PID: 22997 (python3.6)
CGroup: /user.slice/user-0.slice/[email protected]/mpp-solar.service
└─22997 /usr/local/bin/python3.6 /usr/local/bin/mpp-solar -C /etc/mpp-solar/mpp-solar.conf

Dec 27 17:16:18 SG-INVERTER systemd[475]: Stopping MPP Solar Service...
Dec 27 17:16:18 SG-INVERTER systemd[475]: Starting MPP Solar Service...
root@SG-INVERTER:# systemctl --user daemon-reload
root@SG-INVERTER:
# systemctl --user restart mpp-solar
Job for mpp-solar.service failed. See 'systemctl status mpp-solar.service' and 'journalctl -xn' for details.
root@SG-INVERTER:~# journalctl -xn
-- Logs begin at Sun 2020-12-27 16:33:51 AST, end at Sun 2020-12-27 17:19:04 AST. --
Dec 27 17:19:03 SG-INVERTER python3.6[23250]: op.output(data=results, tag=_tag, mqtt_broker=mqtt_broker)
Dec 27 17:19:03 SG-INVERTER python3.6[23250]: File "/usr/local/lib/python3.6/site-packages/mppsolar/outputs/hass_mqtt.py", line 21, in output
Dec 27 17:19:03 SG-INVERTER python3.6[23250]: data.pop("_command", None)
Dec 27 17:19:03 SG-INVERTER python3.6[23250]: AttributeError: 'str' object has no attribute 'pop'
Dec 27 17:19:04 SG-INVERTER systemd[475]: mpp-solar.service: main process exited, code=exited, status=1/FAILURE
Dec 27 17:19:04 SG-INVERTER systemd[475]: Failed to start MPP Solar Service.
-- Subject: Unit UNIT has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- Unit UNIT has failed.

-- The result is failed.
Dec 27 17:19:04 SG-INVERTER systemd[475]: Unit mpp-solar.service entered failed state.
Dec 27 17:19:04 SG-INVERTER systemd[475]: mpp-solar.service holdoff time over, scheduling restart.
Dec 27 17:19:04 SG-INVERTER systemd[475]: Stopping MPP Solar Service...
-- Subject: Unit UNIT has begun shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- Unit UNIT has begun shutting down.
Dec 27 17:19:04 SG-INVERTER systemd[475]: Starting MPP Solar Service...
-- Subject: Unit UNIT has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

-- Unit UNIT has begun starting up.

Directory structure has changed?

Hi

Great video and thanks very much for providing the code too.

I am trying to do something very similar - I have an MPP Solar PIP 5048 MK attached to my solar panels and home-made battery (10kWh, made from recycled e-Bike batteries). The set-up is working fine but I need something much more than what WatchPower can provide.

While following your video, I noticed that the download image I used differed somewhat from the one used in the video. In particular, the directory structure was different. I don't mind doing the coding, but was hoping that your code would provide a very quick 'springboard' to my project.

I can't find the basic scripts that handle the interfacing with the RS232 output of the PIP.

Please can you direct me to where I can find these, or if they are not included in the image currently downloadable, are there some 'starter scripts' that you can provide for the PIP?

I don't have a Batrium (yet!), so the code for the Batrium interface doesn't help.

Many Thanks,

Support for HV LV 2424?

Hi,

I have the 2424 MPP Solar Hybrid inverter and I was trying to run your script against it. It seems to hang on execution though with no output with either DEBUG or the RAW flag. Is the device not supported?

If not, is there anything I can do to help get it working? I'd love to gather some metrics from this thing.

Error in test_mppinverter.py

In:
def test_execute_qid_usb_cmd(self):
""" test execute of QID command (Direct USB connection)"""

  •    inverter = mppinverter.mppInverter('/dev/hidraw1')
    
  •    inverter = mppinverter.mppInverter('/dev/hidraw0')
    

Esp32

Anyone know if can i work in micropython esp32? Thanks

everything installed but does not start!

Hello!
I have tried to make everything work but I am not successful.
everything is installed, but I have not seen anything in GRAFANA. I think I am missing some configuration.
the investor responds to the compando, here is an attached photo:
inv

After upgrade jkbms comman now fails

sudo  jkbms -n 520585004 -T 520585004 -p 3C:A5:4A:DE:F7:3C -P JK02 -o  hass_mqtt -D
INFO:MPP-Solar:Creating device "520585004" (type: "jkbms") on port "3C:A5:4A:DE:F7:3C (porttype=None)" using protocol "JK02" for command "None" (tag: 520585004)
DEBUG:MPP-Solar:device_class <class 'mppsolar.devices.jkbms.jkbms'>
DEBUG:MPP-Solar:jkbms __init__ args ()
DEBUG:MPP-Solar:jkbms __init__ kwargs {'name': '520585004', 'port': '3C:A5:4A:DE:F7:3C', 'protocol': 'JK02', 'baud': 2400, 'porttype': None, 'mqtt_broker': 'localhost', 'mqtt_port': 1883, 'mqtt_user': None, 'mqtt_pass': None}
DEBUG:MPP-Solar:device:get_port_type: port matches jkble ':'
INFO:MPP-Solar:Using jkbleio for communications
DEBUG:MPP-Solar:device.set_protocol with protocol JK02
DEBUG:MPP-Solar:jkbms __init__ name 520585004, port <mppsolar.io.jkbleio.JkBleIO object at 0x75ed5a50>, protocol <mppsolar.protocols.jk02.jk02 object at 0x75ed5a90>
DEBUG:MPP-Solar:Commands [(<mppsolar.devices.jkbms.jkbms object at 0x75ed59d0>, '', '520585004', 'hass_mqtt', None, None)]
INFO:MPP-Solar:Looping 1 commands
INFO:MPP-Solar:Getting results from device: jkbms device - name: 520585004, port: <mppsolar.io.jkbleio.JkBleIO object at 0x75ed5a50>, protocol: <mppsolar.protocols.jk02.jk02 object at 0x75ed5a90> for command: , tag: 520585004, outputs: hass_mqtt
INFO:MPP-Solar:JKBMS Running command
INFO:MPP-Solar:Using protocol b'JK02' with 2 commands
DEBUG:MPP-Solar:JkBLE get_command_defn for:
DEBUG:MPP-Solar:get_command_defn for:
INFO:MPP-Solar:No command_defn found for
DEBUG:MPP-Solar:self._command = , self._command_defn = None
DEBUG:MPP-Solar:No command_defn found
INFO:MPP-Solar:full command None for command
INFO:MPP-Solar:Using protocol b'JK02' with 2 commands
DEBUG:MPP-Solar:JkBLE get_command_defn for: None
DEBUG:MPP-Solar:get_command_defn: command is None
DEBUG:MPP-Solar:self._command = None, self._command_defn = None
DEBUG:MPP-Solar:No command_defn found
INFO:MPP-Solar:full command None for command None
DEBUG:MPP-Solar:JkBLE get_command_defn for: None
DEBUG:MPP-Solar:get_command_defn: command is None
Traceback (most recent call last):
  File "/usr/local/bin/jkbms", line 33, in <module>
    sys.exit(load_entry_point('mpp-solar', 'console_scripts', 'jkbms')())
  File "/home/pi/mpp-solar/src/mpp-solar/mppsolar/__init__.py", line 405, in main
    results = _device.run_command(command=_command)
  File "/home/pi/mpp-solar/src/mpp-solar/mppsolar/devices/jkbms.py", line 39, in run_command
    raw_response = self._port.send_and_receive(command=command, protocol=self._protocol)
  File "/home/pi/mpp-solar/src/mpp-solar/mppsolar/io/jkbleio.py", line 29, in send_and_receive
    record_type = command_defn["record_type"]
TypeError: 'NoneType' object is not subscriptable

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.