Growatt Binding

Umm. I think via the + button at bottom right corner of Main UI things

Hi
I tried that, its not working.
Iam on version 4.0.4

What do you mean ‘its not working’?

image

image

image

Hi
when i do this the menu looks like this

no bridge or inverter thing to add.
Have uninstalled the binding and installed it again, no change
Could it be that something is wrong with the binding installation file from marketplace?

I have no idea.

I agree to Sebastian, there is no option to add things to the binding installed from marketplace.
If I am using the linked .jar file openhab is not recognizing the binding.

“The marketplace bundle was successfully installed but doesn’t start: Could not resolve module: org.openhab.binding.growatt [323]
Unresolved requirement: Import-Package: javax.measure; version=”[2.2.0,3.0.0)“”

The solution might be here (common issue with 4.1 versus 4.0.x)

You probably need to use a current milestone build.

With 4.1.0 M3 in docker container together with grott service the Bridge is online.
Grott receives Data.
But no Thing appears and manual thingk (with Inverter_Serial as ID) is not getting online.
What am I doing wrong?

Two things…

  1. Try http://[openhab-ip]:8080/growatt
  2. Can you turn on log:set TRACE ?

EDIT I would imagine that you need to create an inverter thing with the serial number from ‘pvserial’ as it’s config param. Note that the data logger usually pushes packets every 5 minutes, so it could take up to that length of time before the respective thing changes state to ‘online’…

EDIT2 the parameter data values from your screenshot above look a bit ‘fishy’ to me e.g mains freqency or phase voltages. What country are you in, and what model of inverter do you have?

Hi Andrew,

  1. Yes, it shows the bridge is working.
  2. The Thing is not recognizing all of the channels? I am keen on steering Charge/Discharge power based on SOC and PV Generation/Load/Grid Export/Import.
    The Thing “GZL0DA804M” is not showing any channels (CHNT 666 Smart Meter).
21:48:52.247 [TRACE] [internal.handler.GrowattBridgeHandler] - handleGrottContent() json:"{\"device\": \"KLN0D6L034\", \"time\": \"2023-12-26T21:48:33\", \"buffered\": \"no\", \"values\": {\"pvserial\": \"KLN0D6L034\", \"pvstatus\": 1, \"pvpowerin\": 0, \"pv1voltage\": 669, \"pv1current\": 0, \"pv1watt\": 0, \"pv2voltage\": 695, \"pv2current\": 0, \"pv2watt\": 0, \"pv3voltage\": 0, \"pv3current\": 0, \"pv3watt\": 0, \"pv4voltage\": 0, \"pv4current\": 0, \"pv4watt\": 0, \"pvpowerout\": 4294966929, \"pvfrequentie\": 5001, \"pvgridvoltage\": 2359, \"pvgridcurrent\": 7, \"pvgridpower\": 1651, \"pvgridvoltage2\": 2367, \"pvgridcurrent2\": 8, \"pvgridpower2\": 1893, \"pvgridvoltage3\": 2379, \"pvgridcurrent3\": 8, \"pvgridpower3\": 1903, \"vacrs\": 4084, \"vacst\": 4118, \"vactr\": 4104, \"ptousertotal\": 8099, \"ptogridtotal\": 0, \"ptoloadtotal\": 8239, \"totworktime\": 79652, \"pvenergytoday\": 178, \"pvenergytotal\": 178, \"epvtotal \": 162, \"epv1today \": 79, \"epv1total\": 79, \"epv2today\": 83, \"epv2total\": 83, \"epv3today\": 0, \"epv3total\": 0, \"etousertoday\": 64, \"etousertotal\": 64, \"etogridtoday\": 1, \"etogridtotal\": 1, \"eloadtoday\": 237, \"eloadtotal\": 0, \"deratingmode\": 0, \"iso\": 15997, \"dcir\": 0, \"dcis\": 0, \"dcit\": 0, \"gfci\": 137645, \"pvtemperature\": 296, \"pvipmtemperature\": 410, \"temp3\": 296, \"temp4\": 0, \"temp5\": 319, \"pbusvoltage\": 3311, \"nbusvoltage\": 3265, \"ipf\": 20000, \"realoppercent\": 0, \"opfullwatt\": 150000, \"standbyflag\": 0, \"faultcode\": 0, \"warningcode\": 0, \"systemfaultword0\": 0, \"systemfaultword1\": 0, \"systemfaultword2\": 0, \"systemfaultword3\": 0, \"systemfaultword4\": 0, \"systemfaultword5\": 0, \"systemfaultword6\": 0, \"systemfaultword7\": 0, \"invstartdelaytime\": 60, \"bdconoffstate\": 1, \"drycontactstate\": 0, \"edischrtoday\": 103, \"edischrtotal\": 1843, \"echrtoday\": 91, \"echrtotal\": 3005, \"eacchrtoday\": 5, \"eacchrtotal\": 5, \"priority\": 1, \"epsfac\": 0, \"epsvac1\": 0, \"epsiac1\": 0, \"epspac1\": 0, \"epsvac2\": 0, \"epsiac2\": 0, \"epspac2\": 0, \"epsvac3\": 0, \"epsiac3\": 0, \"epspac3\": 0, \"epspac\": 0, \"loadpercent\": 0, \"pf\": 10000, \"dcv\": 0, \"bdc1_sysstatemode\": 513, \"bdc1_faultcode\": 0, \"bdc1_warncode\": 701, \"bdc1_vbat\": 6582, \"bdc1_ibat\": 0, \"bdc1_soc\": 11, \"bdc1_vbus1\": 6582, \"bdc1_vbus2\": 3303, \"bdc1_ibb\": 0, \"bdc1_illc\": 0, \"bdc1_tempa\": 409, \"bdc1_tempb\": 291, \"bdc1_pdischr\": 100, \"bdc1_pchr\": 0, \"bdc1_edischrtotal\": 1843, \"bdc1_echrtotal\": 3005, \"bdc1_flag\": 1, \"bdc2_sysstatemode\": 17, \"bdc2_faultcode\": 12, \"bdc2_warncode\": 248, \"bdc2_vbat\": 266, \"bdc2_ibat\": 223, \"bdc2_soc\": 19, \"bdc2_vbus1\": 49, \"bdc2_vbus2\": 11, \"bdc2_ibb\": 11, \"bdc2_illc\": 4, \"bdc2_tempa\": 0, \"bdc2_tempb\": 394, \"bdc2_pdischr\": 26214400, \"bdc2_pchr\": 0, \"bdc2_edischrtotal\": 0, \"bdc2_echrtotal\": 0, \"bdc2_flag\": 0, \"bms_status\": 4, \"bms_error\": 0, \"bms_warninfo\": 0, \"bms_soc\": 11, \"bms_batteryvolt\": 4041, \"bms_batterycurr\": 0, \"bms_batterytemp\": 0, \"bms_maxcurr\": 2200, \"bms_deltavolt\": 2200, \"bms_cyclecnt\": 0, \"bms_soh\": 100, \"bms_constantvolt\": 568, \"bms_bms_info\": 464, \"bms_packinfo\": 0, \"bms_usingcap\": 0, \"bms_fw\": 1400, \"bms_mcuversion\": 0, \"bms_commtype\": 1}}"
21:48:55.716 [TRACE] [internal.handler.GrowattBridgeHandler] - handleGrottContent() json:"{\"device\": \"GZL0DA804M\", \"time\": \"2023-12-26T21:48:36\", \"buffered\": \"no\", \"values\": {\"datalogserial\": \"GZL0DA804M\", \"pvserial\": \"KLN0D6L034\", \"voltage_l1\": 2355, \"voltage_l2\": 2374, \"voltage_l3\": 2376, \"Current_l1\": 22, \"Current_l2\": 15, \"Current_l3\": 12, \"act_power_l1\": 4909, \"act_power_l2\": 1710, \"act_power_l3\": 1478, \"app_power_l1\": 5058, \"app_power_l2\": 3321, \"app_power_l3\": 2712, \"react_power_l1\": -1222, \"react_power_l2\": -2847, \"react_power_l3\": -2275, \"powerfactor_l1\": 936, \"powerfactor_l2\": 481, \"powerfactor_l3\": 502, \"pos_rev_act_power\": 8098, \"pos_act_power\": 8098, \"rev_act_power\": 8098, \"app_power\": 11091, \"react_power\": -6346, \"powerfactor\": 690, \"frequency\": 500, \"L1-2_voltage\": 4095, \"L2-3_voltage\": 4113, \"L3-1_voltage\": 4097, \"pos_act_energy\": 9587, \"rev_act_energy\": 1387}}"
  1. The “fishy” data are OK for a 3phase net (I am in Germany) - (Lx/Ly Voltage)
    image

Do you confirm that it shows this…

image

Do you have more than one inverter? And does either one or the other show correct data? i.e. is one working, and the other one not?

Can you please explain a bit further? Note: I am fully aware of how 3-phase electricity works – even in Germany – (I used to work for Siemens) … which is why a mains frequency of 278.7 Hz or RS, ST, TR voltages of 31.5V, 0V, 40.7V seem quite … well … ‘fishy’ to me…

image

Snag_8011b0b

GZL0DA804M is the Serial of the Smartmeter (CHNT 666).
With invtype=min (supported since Grott 2.8.2) values of smart meter looking fine to me:


Values of Inverter itself are fine too, except pvpowerout. Here some data from the smart meter are included, some not…
Both are found by the binding automatically and showing channels as soon as login data are entered.

@DirkNeumann sorry but I am a bit confused. In one of your prior posts you said that one of the things was showing no channels. But now you seem to be saying that both of them do show channels? Or??

Also can you please explain the purpose of the smart meter in your system? Is this meter in addition to the meter supplied by your utility company?


EDIT: apropos activating the battery charging program: could you please have a look at the Rule Actions chapter in the documentation? You may need to install the latest version of the binding to get support for that feature…

https://github.com/andrewfg/openhab-addons/blob/growatt/bundles/org.openhab.binding.growatt/README.md

Hi Andrew,

sorry to confuse you :wink:
That why I sent you you the trace log data.
My Growatt System is 1 Inverter (MID 15KTL3 XH with battery pack (APX 2.0)
and Smartmeter (CHNT 666)).
It is being lister in Grott as two devices (Smartmeter and Inverter), where
the inverter data also contain battery data.

=> Things are found, Data are available but the smart meter thing does not
get any channels.

Difference between these two things is the “Device ID”.
I guess the JSON format of the smart meter value is causing the issue (see
red marked code).

Inverter: KLN0D6L034 UID: growatt:inverter:111c355902:KLN0D6L034
=> json:"{"device": "KLN0D6L034", "time": "2023-12-27T11:53:37",
"buffered": "no", "values": {"pvserial": "KLN0D6L034",
"pvstatus": 1, "pvpowerin": 39325, "pv1voltage": 5414,

Smartmeter: GZL0DA804M UID: growatt:inverter:111c355902:GZL0DA804M
=> json:"{"device": "GZL0DA804M", "time": "2023-12-27T11:52:14",
"buffered": "no", "values": {"datalogserial": "GZL0DA804M",
"pvserial": "KLN0D6L034", "voltage_l1\ …

I tried to change the Smartmeter Device ID to KLN0D6L034 which is causing
the following warnings.
I guess two things with the same Device ID are not possible.


Liebe Grüsse / Best Regards
Dirk

Don’t do that.

Yes. It seems that the Growatt engineers are using different JSON field names in different device models as synonyms for the same data. It is not only different between your inverter and your meter, but also different between your inverter and mine. (IMHO they use a kind of spaghetti code approach which is not very professional). I will need to make some JSON synonym mappings in the binding which should probably help you to see more channels.

In general that would be the normal thing since the inverter is charging the battery. But I still find your battery data rather confusing, since it looks like you have two of them (one at 65volt and the other at 26volt). Is that correct?


EDIT: you can download a revised Jar with the Json field synonyms now implemented for your devices HERE.

EDIT 2: your "pvpowerout": 4294966929 Json value still looks ‘fishy’ but it will now not break the binding, and I guess you can simply ignore that channel.

@DirkNeumann I think that your "pvpowerout": 4294966929 Json value may be due to a bug in Grott since they seem to have changed the handling of that register to allow negative values (see link below). Reason why I say that is that ‘4294966929’ is a huge positive integer, but if you consider it as a two’s complement negative integer, it is a fairly small value i.e. -36.5 Watt.

=> Can you please confirm that you are using the correct version of Grott? And if so, perhaps you can raise an issue with @johanmeijer on his GitHub page?

Hi There,

thanks for feed back.
I am using 2.8.2 thus I need support for invtype=min.
@johanmeijer => Bug known?

@

@DirkNeumann in the meantime I also applied a fix within the binding HERE. => You can get the latest Jar HERE

Great!

Here the results:
“Saldierte Leistung” => activereactive_power is not shown (but I can calculate this from the 3 single powers.
Naming issue:
"Inverter Output Power (#R) => Gridpower (positive=from grid (“Import” or “reactive”) negative=to grid (“Export” or “active”)

Grid Frequency => *10 please.

For the inverter Data there is a bug (values are cross mixed) I guess:

“Inverter Energy to Charge Battery Today” => “AC Energy to charge Battery today”
“Import Energy to Charge Battery Today” => “Battery Overall Charge today”

BTW:
What is “User Id as displayed ion the Shine App” ?

22:49:50.870 [TRACE] [internal.handler.GrowattBridgeHandler] - handleGrottContent() json:"{\"device\": \"KLN0D6L034\", \"time\": \"2023-12-28T22:44:02\", \"buffered\": \"no\", \"values\": {\"pvserial\": \"KLN0D6L034\", \"pvstatus\": 1, \"pvpowerin\": 0, \"pv1voltage\": 669, \"pv1current\": 0, \"pv1watt\": 0, \"pv2voltage\": 695, \"pv2current\": 0, \"pv2watt\": 0, \"pv3voltage\": 0, \"pv3current\": 0, \"pv3watt\": 0, \"pv4voltage\": 0, \"pv4current\": 0, \"pv4watt\": 0, \"pvpowerout\": 4294966922, \"pvfrequentie\": 5001, \"pvgridvoltage\": 2326, \"pvgridcurrent\": 7, \"pvgridpower\": 1628, \"pvgridvoltage2\": 2324, \"pvgridcurrent2\": 7, \"pvgridpower2\": 1626, \"pvgridvoltage3\": 2331, \"pvgridcurrent3\": 7, \"pvgridpower3\": 1631, \"vacrs\": 4023, \"vacst\": 4033, \"vactr\": 4036, \"ptousertotal\": 7546, \"ptogridtotal\": 0, \"ptoloadtotal\": 7606, \"totworktime\": 429483, \"pvenergytoday\": 221, \"pvenergytotal\": 587, \"epvtotal \": 552, \"epv1today \": 77, \"epv1total\": 264, \"epv2today\": 86, \"epv2total\": 288, \"epv3today\": 0, \"epv3total\": 0, \"etousertoday\": 72, \"etousertotal\": 276, \"etogridtoday\": 3, \"etogridtotal\": 7, \"eloadtoday\": 285, \"eloadtotal\": 0, \"deratingmode\": 0, \"iso\": 65530, \"dcir\": 0, \"dcis\": 0, \"dcit\": 0, \"gfci\": 137528, \"pvtemperature\": 295, \"pvipmtemperature\": 410, \"temp3\": 295, \"temp4\": 0, \"temp5\": 320, \"pbusvoltage\": 3252, \"nbusvoltage\": 3205, \"ipf\": 20000, \"realoppercent\": 0, \"opfullwatt\": 150000, \"standbyflag\": 0, \"faultcode\": 0, \"warningcode\": 0, \"systemfaultword0\": 0, \"systemfaultword1\": 0, \"systemfaultword2\": 0, \"systemfaultword3\": 0, \"systemfaultword4\": 0, \"systemfaultword5\": 0, \"systemfaultword6\": 0, \"systemfaultword7\": 0, \"invstartdelaytime\": 60, \"bdconoffstate\": 1, \"drycontactstate\": 0, \"edischrtoday\": 161, \"edischrtotal\": 2129, \"echrtoday\": 108, \"echrtotal\": 3329, \"eacchrtoday\": 8, \"eacchrtotal\": 66, \"priority\": 1, \"epsfac\": 0, \"epsvac1\": 0, \"epsiac1\": 0, \"epspac1\": 0, \"epsvac2\": 0, \"epsiac2\": 0, \"epspac2\": 0, \"epsvac3\": 0, \"epsiac3\": 0, \"epspac3\": 0, \"epspac\": 0, \"loadpercent\": 0, \"pf\": 10000, \"dcv\": 0, \"bdc1_sysstatemode\": 513, \"bdc1_faultcode\": 0, \"bdc1_warncode\": 701, \"bdc1_vbat\": 6454, \"bdc1_ibat\": 0, \"bdc1_soc\": 11, \"bdc1_vbus1\": 6454, \"bdc1_vbus2\": 3238, \"bdc1_ibb\": 0, \"bdc1_illc\": 0, \"bdc1_tempa\": 423, \"bdc1_tempb\": 296, \"bdc1_pdischr\": 70, \"bdc1_pchr\": 0, \"bdc1_edischrtotal\": 2129, \"bdc1_echrtotal\": 3329, \"bdc1_flag\": 1, \"bdc2_sysstatemode\": 37, \"bdc2_faultcode\": 12, \"bdc2_warncode\": 270, \"bdc2_vbat\": 303, \"bdc2_ibat\": 232, \"bdc2_soc\": 19, \"bdc2_vbus1\": 49, \"bdc2_vbus2\": 12, \"bdc2_ibb\": 11, \"bdc2_illc\": 4, \"bdc2_tempa\": 0, \"bdc2_tempb\": 394, \"bdc2_pdischr\": 26214400, \"bdc2_pchr\": 0, \"bdc2_edischrtotal\": 0, \"bdc2_echrtotal\": 0, \"bdc2_flag\": 0, \"bms_status\": 4, \"bms_error\": 0, \"bms_warninfo\": 0, \"bms_soc\": 11, \"bms_batteryvolt\": 4026, \"bms_batterycurr\": 0, \"bms_batterytemp\": 0, \"bms_maxcurr\": 2200, \"bms_deltavolt\": 2200, \"bms_cyclecnt\": 0, \"bms_soh\": 99, \"bms_constantvolt\": 568, \"bms_bms_info\": 464, \"bms_packinfo\": 0, \"bms_usingcap\": 0, \"bms_fw\": 1400, \"bms_mcuversion\": 0, \"bms_commtype\": 1}}"
22:49:50.986 [DEBUG] [ternal.handler.GrowattInverterHandler] - updateInverterValues() channel count 88 reduced by 25 to 63
22:49:51.114 [DEBUG] [ternal.handler.GrowattInverterHandler] - updateInverterValues() channel count 88 reduced by 75 to 13
22:49:57.022 [TRACE] [internal.handler.GrowattBridgeHandler] - handleGrottContent() json:"{\"device\": \"GZL0DA804M\", \"time\": \"2023-12-28T22:44:07\", \"buffered\": \"no\", \"values\": {\"datalogserial\": \"GZL0DA804M\", \"pvserial\": \"KLN0D6L034\", \"voltage_l1\": 2316, \"voltage_l2\": 2317, \"voltage_l3\": 2325, \"Current_l1\": 18, \"Current_l2\": 15, \"Current_l3\": 11, \"act_power_l1\": 3838, \"act_power_l2\": 1667, \"act_power_l3\": 1974, \"app_power_l1\": 4174, \"app_power_l2\": 3364, \"app_power_l3\": 2518, \"react_power_l1\": -1642, \"react_power_l2\": -2922, \"react_power_l3\": -1564, \"powerfactor_l1\": 892, \"powerfactor_l2\": 484, \"powerfactor_l3\": 749, \"pos_rev_act_power\": 7481, \"pos_act_power\": 7481, \"rev_act_power\": 7481, \"app_power\": 10056, \"react_power\": -6129, \"powerfactor\": 720, \"frequency\": 500, \"L1-2_voltage\": 4012, \"L2-3_voltage\": 4020, \"L3-1_voltage\": 4019, \"pos_act_energy\": 9934, \"rev_act_energy\": 1537}}"

If you log out of the shine app, then you need to login again with some credentials. Use the same in OH.