GithubHelp home page GithubHelp logo

muppet3000 / homeassistant-grott Goto Github PK

View Code? Open in Web Editor NEW
72.0 6.0 17.0 1.65 MB

Home Assistant Integration for Grott - MQTT

License: MIT License

Python 100.00%
home-assistant home-automation homeassistant integration python3 grott growatt

homeassistant-grott's Introduction

Hi ๐Ÿ‘‹

I'm Chris Straffon, a full time DevOps Engineer/Team Lead. But in my spare time I like to geek out and contribute to open source projects focussing around my Solar Panel setup. Most notably the Home Assistant and PyPi_GrowattServer repos

Get your stat fix here

Github stats

Buy me a beer?

Shameless self-promotion and an opportunity to say 'thanks' if you feel like you want to. Just click on one of the below..... bmab_badge paypal_badge

Extras

  • Prioritised list of Home Assistant Growatt Server items that I'm working on: here

homeassistant-grott's People

Contributors

anteus avatar bobc76 avatar lalo3k avatar muppet3000 avatar saentist avatar

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

homeassistant-grott's Issues

HA mqtt failed to connect to mosquitto

Hi muppet3000!
thx for all the work you have put in to this.
i gave it a try but i'm stuck. (probably my fault) maybe you have an idea.

so, i have a working GROTT
i think i have a working mosquitto MQTT

Grott gets the data from my shinelink and works as a proxy (server.growatt.com also receives the data so thats good)
image

MQTT conf file:

Place your local configuration in /etc/mosquitto/conf.d/

A full description of the configuration file is at

/usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid
allow_anonymous true
listener 1883

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

the mqtt log:
image

so the ip 192.168.0.202 is the container where i am having grott and mqtt running.
so i believe grott is sending the data to mosquitto.

but when in home assistant i add the integration MQTT as in your documentation.
image

i'm getting this error:
image

so. i'm almost there. but here i am stuck.

my HA also runs in a docker container, in the same network segment. (192.168.0.242) so they can communicate with each other.

thx for your help!

Two important entities missing

Hi,
after adding grott I can see a lot of entity, but there is no: energy today and energy total (for me the most important).
pv_all_energy_total is not equal to energy total. In my case pv_all gives me more kWh than energy total.
the same with pv_today and energy_today
I am not good at explanation things in english, but my screenshots should explain everything :D

PS. I forgot to add my inverter type. I'm using MOD 5000 TL3-X (it's new to grott (backend addon))

This is all sensors data displayed by grott
data_grott

This is my raw data from grott (backend addon)

	 - Grott values retrieved:
		 -  datalogserial        :  XGD5BH62Q7
		 -  pvserial             :  REH3BHU0L7
		 -  pvstatus             :  1
		 -  pvpowerin            :  0.0
		 -  pv1voltage           :  64.0
		 -  pv1current           :  0.0
		 -  pv1watt              :  0.0
		 -  pv2voltage           :  142.0
		 -  pv2current           :  0.0
		 -  pv2watt              :  0.0
		 -  pvpowerout           :  0.0
		 -  pvfrequentie         :  50.0
		 -  pvgridvoltage        :  235.3
		 -  pvgridcurrent        :  0.4
		 -  pvgridpower          :  94.1
		 -  pvgridvoltage2       :  234.2
		 -  pvgridcurrent2       :  0.4
		 -  pvgridpower2         :  93.6
		 -  pvgridvoltage3       :  233.9
		 -  pvgridcurrent3       :  0.4
		 -  pvgridpower3         :  93.5
		 -  Vac_RS               :  406.1
		 -  Vac_ST               :  405.1
		 -  Vac_TR               :  407.0
		 -  pvenergytoday        :  37.6
		 -  pvenergytotal        :  7087.2
		 -  totworktime          :  5330.8
		 -  epv1today            :  19.2
		 -  epv1total            :  3623.6
		 -  epv2today            :  19.8
		 -  epv2total            :  3675.8
		 -  epvtotal             :  7299.4
		 -  pvtemperature        :  61.1
		 -  pvipmtemperature     :  33.8
		 -  pvboottemperature    :  32.3
		 -  uwBatVolt_DSP        :  39.6
		 -  pbusvolt             :  3132
		 -  nbusvolt             :  3123

I've added MQTT data by myself:
correct_data

[Question] Why use homeassistant-grott

Hi,

Like the title already implies, I'm missing a section on the readme file on why I should use this (HACS) integration. More explicitely: What benefit does this bring, over just having grott send all I need over MQTT to my HA instance?

Thanks!

homeassistant-grott sensors are not displayed in HASS energy dashboard setup

I have installed Grott and Homeassistant-grott, and managed to get the inverter data to HASS via MQTT. I can see sensors like
sensor.jne4a140b5_pv_all_energy_total, sensor.jne4a140b5_pv1_energy_today, etc. I also see that those sensors are updated on regular basis every 5 min.

However, those sensors are not showing up in the configuration of the energy dashboard, so I cannot configure solar production.

image
image

Add support for MAX/MID/MAC systems

Add support in the Grott integration for MAX/MID/MAC inverter.

Details of my installations (for better correlation with the data) are:

  • MAX/MID/MAC 3 phase inverter
  • ShineWifi-X datalogger
  • SmartMeter
  • Total PV power installed is 11040W (24 x 460W panels, split in 2 strings - the inverter has only 2 strings - MPPT values in the charts are strings related from what I've seen)

I've tried to match grott message to what the app shows, but I think Growatt app processes slower and it doesn't necessarily show the time when it received the message...?

Grott log message:

  • Grott data record date/time processing started
  • date-time: 2023-06-23T16:20:34 (seems to match a bit with entry in the growatt app at 16:35 ??)

For the below values, Growatt App shows the following "interpretation":

  • Solar: 7.4 kW (most likely rounded from the Inverter PAC value which is 7388.9 W - PAC might mean Positive Active Power but it's not the value fom pos_act_power ??)

  • Exported to grid: 6.2 kW

  • Imported from grid: 0

  • Load consumption: 1.1 kW (most likely rounded)

  • Grott values retrieved:
    This is the current Voltage per phase (from inverter):

  • voltage_l1 : 238.1

  • voltage_l2 : 236.9

  • voltage_l3 : 239.1

This is the PV Current per phase:

  • Current_l1 : 8.3
  • Current_l2 : 8.5
  • Current_l3 : 9.9

Active power; Seems to be "Exported to grid" value; act_power_l1 + act_power_l2 + act_power_l3 = -6242.1 Watt (which is what app shows as exported to grid and same value as PAC - pos_act_power below);

  • act_power_l1 : -1853.5
  • act_power_l2 : -2019.0
  • act_power_l3 : -2369.6

Apparent power (zero the entire day?? don't know what this is)

  • app_power_l1 : 0.0
  • app_power_l2 : 0.0
  • app_power_l3 : 0.0

Reactive power (comming from the smartmeter);

  • react_power_l1 : -378.9
  • react_power_l2 : -168.8
  • react_power_l3 : -148.2

I think hte powerfactors are being used for voltage_l1 * current_l1 * powerfactor_l1 ???

  • powerfactor_l1 : -0.9

  • powerfactor_l2 : -1.0

  • powerfactor_l3 : -1.0

  • pos_rev_act_power : -6242.1

  • pos_act_power : -6242.1

  • rev_act_power : -6242.1

  • app_power : 0.0

  • react_power : -695.9 (this is SUM of react_power_l1 + react_power_l2 + react_power_l3 - but don't know what it's meaning actually is)

Power factor (don't know how it's used); I have values ranging from 0.2 -> 1.0;

  • powerfactor : -1.0

  • frequency : 50.0

  • L1-2_voltage : 411.3

  • L2-3_voltage : 412.2

  • L3-1_voltage : 413.2

  • pos_act_energy : 1032.7

  • rev_act_energy : 3223.4

Growatt_1

Missing 2nd & 3rd Phase Power SPH 6000 TL3 BH-UP

Hi & thanks a lot for Grott Integration!
I am missig the Values for Inverter Output Power (Second Phase) and Inverter Output Power (Third Phase)

2023-10-16 08_39_48-Einstellungen โ€“ Home Assistant โ€“ Mozilla Firefox

Edit: The other values (current & voltage) for third & sencond phase are present btw:

2023-10-16 08_50_57-Einstellungen โ€“ Home Assistant โ€“ Mozilla Firefox

state_class: total_increasing

For sensors/entities which go back to zero at the start of each day (like export today, generation today etc etc) could you change their state_class from total to total_increasing?

There is some documentation on it here if you're interested :

https://developers.home-assistant.io/docs/core/entity/sensor/

Basically I wanted to try out the standard energy dashboard in HA but it was getting screwed up at midnight when the values dropped back to zero. Using total_increasing tells HA that going back to zero is effectively the start of a new cycle. For the moment I've created template sensors with the new state class but using the values from your integration and that's working fine, but if the base integration could do this I think it would be cleaner. I don't think this would be a breaking change........

Reverting back to stock for a non-tech...

(moved from issue #1 thread)...

With all the HA stuff I've been doing I've been mindful of what would happen if for some reason I wasn't around. My wife isn't all technical, so I've always told her that everything HA can be stopped and she can go back to manual for everything just by unplugging the Pi4 which is running it all. And she can stop all the Alexa stuff around the house by just removing all the smart plugs and using the original on-off switches on things.

Switching to grott kind of breaks that for our solar stuff though - if we unplug the HA Pi then the shine app will stop working. I might buy a second datalogger and use that for this, then if we needed to go back to standard we could just swap the original datalogger back in.

So I will go ahead and get this new integration running, but wondering if anyone has thoughts on the easiest way to revert it back for a non-tech...

Checked "Calculate additional values from raw MQTT values" value is ignored when adding integration

When you initially configure the integration, it doesn't respect the option to "Calculate additional values from raw MQTT values".

To reproduce:

  1. In the Integrations panel click Add Integration.
  2. Search for "Grott" then click the Grott integration.
  3. In the configure pane, leave the Device ID blank but check "Calculate additional values from raw MQTT values".
  4. Click Submit.
  5. After the integration is added successfully, click Configure. Note that "Calculate additional values from raw MQTT values" is now unchecked.

I had to go back to Configure and check the box again before the entities were populated in order to get all 53 entities to show up. Otherwise it wouldn't detect the battery sensors, and I'd have 45 entities.

Screen Shot 2023-06-20 at 4 05 29 PM

energy/meter

Could you take the entities for an Energy/Meter from Grott? I still have a SDM630 installed in my installation. It is read out by Grott but unfortunately not displayed by you.

  • MQTT jsonmsg:
    {"device": "GPG0A271VP", "time": "2023-05-16T06:50:30", "buffered": "no",
    "values": {"datalogserial": "GPG0A271VP", "pvserial": "QCL0CGB0BC",
    "voltage_l1": 2323, "voltage_l2": 2332, "voltage_l3": 2330, "current_l1": 4,
    "current_l2": 8, "current_l3": 8, "act_power_l1": -334, "act_power_l2":
    -1208, "act_power_l3": -1122, "app_power_l1": 1125, "app_power_l2": 2029,
    "app_power_l3": 1924, "react_power_l1": 0, "react_power_l2": -1215,
    "react_power_l3": -1246, "powerfactor_l1": -305, "powerfactor_l2": -610,
    "powerfactor_l3": -582, "pos_rev_act_power": -2664, "pos_act_power",
    "rev_act_power": -2664, "app_power": 5049, "react_power": -2573,
    "powerfactor": -529, "frequency": 499, "L1-2_voltage": 4032, "L2-3_voltage":
    4038, "L3-1_voltage": 4030, "pos_act_energy": 2931, "rev_act_energy": 5289}}
    - Grott MQTT topic used : energy/meter
    - MQTT message message sent
    - Grott Send data to PVOutput disabled
    - Grott Send data to Influx disabled
    - Grott extension processing disabled

Translated with www.DeepL.com/Translator (free version)

Wrong values with MID-8KTL3-XL

Not sure if this issue belongs here, but getting weird values from some of the sensors.
eg:

  • sensor.enfgcf509k_inverter_output_power_third_phase <- shows an output of several million watts

Some of the sensor provide actual and real values, so it's still usable.
Let me know if this is the right place to upload some debug logs and I'll provide whatever is necessary :)

Skjermbilde 2023-09-04 kl  15 42 35
Skjermbilde 2023-09-04 kl  15 42 28

How it works - smaller improvements

I am referring to the 2 charts.

Please add the white background to the charts cause otherwise they are hard to understand with dark grey background and black arrows I had not seen first. I had to open the chart in an additional tab to get the white background.

I suggest to emphasize and mention in the text introduction that this solution is no longer using the api and therefore will not cause additional loads on Growatts side that could blocking due to too high use / abuse of their API access.

Yes, it has nothing to do with how it works, but it explains that this solution is no longer coming with huge risks like a full ban cause it is "growatt api free".

Yes, the chart shows this, but it is worth to mention that fact that this solution is not disturbing growatts data center by causing additional load or api calls or what not. It is a simple local data processing in our homes. While the api access is a kind of customer intrusion into the growatt data center world adding an unwanted load - we our selves also would not wanna carry or pay for if we would have to run the growatt datacenters - or if Growatt would put additional loads onto our system.

Therefore I also suggest a different chart model with 2 sides:

On the right we with in our BIG HOME with the growatt inverter in the middle (hightwise), our shinephone app (upper left), our Laptop with browser access (left middle) and a small innocent raspberry pi with a HA logo causing the "terrible (growatts operating view)" api calls just to show the implications of what Growatt would call a kind of NOT fair use:

Smartphone, tablet and Laptops are OK due to small and rare load and the small raspberry with a HA symbol is a big risk due too high loads which we are causing with the blind use of high volume api calls.

BTW: I can tell you that after reducing the amount of api calls the ban restrictions have vanished once I went above 2 minutes. I had been coming down from 5 minutes and at 2 minutes I had been banned massively yesterday even without any web browser acces and a very weird registration side where I should register at least 1 of the inverters while 4 others were still runninng.

Pretty scarry moment I must admit when you are abroad and have no access anymore.

Therefore I went back to 2,5 minutes with a solution provided by Johann I guess and 2:30 minutes had no impact, I could even login with my smartphone at 10 pm which I wasn't able yesterday around 4 pm , maybe even earlier I had been blocked.

I suggest to emphasize that HA is the intruder from Growatts POV cause that cause a load and computing power increase and therefore energy they have to pay for a free access where other inverter manufacturer want a fee for a data or acces plan.

Right now the tiny box on the lower right corner looks quite innocent and you usually would not think that this is the real troublemaker while the app and web usage might be 20 times a day where the raspi could run these 20 calls in less than 10 minutes.

I deleted the API box and communication in the GROTT chart cause it is no longer used nor necessary.
My troubles had been increasing over the last 2 weeks since I started the api adventure.

The cloud in the middle is the clearing point and I also added a tape with a one direction arrow too make clear that it is just an intercepting and the communication itself is not disturbed.

GROTT WORLD
image

pure API WORLD
image

These are free pictures and I can send you the source document which is of cause what ?

the best paint and pixel program:
excel

Still depending on Growatt servers?

So, the Growatt servers went offline for a while today. During that time Grott can't forward information, and if it can't forward to Growatt it won't push to MQTT either. Anyone worked out how to get around that? Someone asked the same question on the original grott (johanmeijer/grott#347) but no answers there either.

Show 2 inverter values in one place

Hi.

Is there a way to get HA to show both loggers/inverters in one? When Growatt worked, it had a total power generating and total power generated for the day, across both inverters.

Thanks

Step- Confuring MQTT in Home Assistant

Need help
I am stuck in Setup - HomeAssistant MQTT Broker

I have an existing mosquito add-on working so when I try to add again per instructions I get the following error
"MQTT
Already configured. Only a single configuration possible."

So I think the instructions are not clear. Most of us already have enabled this add-on and using it. So is the step 4 below to HA MQTT to listen to the MQTT that was setup separately as per 3 below?

Prerequisites
1.Grott
2.Inverter/DataLogger Config
3.MQTT
4.Home Assistant MQTT Broker

Sensor missing: Battery Charging Power

Great work on this integration, it's filled a gap in my HA instance that's been there for far too long.

Anyway, reviewing the sensors created by Grott I see a sensor for "Battery Discharging Power" but not the equivalent "Battery Charging Power". The discharge sensor seems to be created using pdischarge1 from Grott, but I don't see a sensor pulling the data from pcharge1.

Grott output below, and the resulting sensors following that. I've omitted the values Grott retrieved because this post would get really long otherwise, but you can see them in the MQTT json message along with the transmitted pcharge1 value.

For info:
HA-GROTT version: 1.0.1
Grott version: 2.8.2 (Beta)
Hardware: SPA3000TL ("AcCouple", with ShineWiFi-S logger)
I have the "additional sensors from raw MQTT values" option checked.

         - Grott values retrieved:
                 ...[omitted for brevity]...
                 -  pdischarge1          :  510.0
                 -  pcharge1             :  0.0
                 ...[omitted for brevity]...
         - MQTT jsonmsg: 
                         {"device": "WPDACBP067", "time": "2023-06-23T20:06:09", "buffered": "no",
                         "values": {"datalogserial": "JPC8CDH05J", "pvserial": "WPDACBP067",
                         "pvstatus": 6, "uwsysworkmode": 81, "systemfaultword0": 0,
                         "systemfaultword1": 0, "systemfaultword2": 0, "systemfaultword3": 0,
                         "systemfaultword4": 0, "systemfaultword5": 0, "systemfaultword6": 0,
                         "systemfaultword7": 0, "pdischarge1": 5100, "pcharge1": 0, "vbat": 529,
                         "SOC": 84, "pactouserr": 0, "pactousers": 0, "pactousert": 0,
                         "pactousertot": 0, "pactogridr": 0, "pactogrids ": 0, "pactogrid t": 0,
                         "pactogridtot": 0, "plocaloadr": 6800, "plocaloads": 0, "plocaloadt": 0,
                         "plocaloadtot": 6800, "ipm": 0, "battemp ": 261, "spdspstatus": 6,
                         "spbusvolt": 47656, "etouser_tod": 101, "etouser_tot": 25005, "etogrid_tod":
                         13, "etogrid_tot": 5251, "edischarge1_tod": 50, "edischarge1_tot": 13618,
                         "eharge1_tod": 74, "eharge1_tot": 14432, "elocalload_tod": 245,
                         "elocalload_tot": 52932, "dwexportlimitap": 0, "epsfac": 0, "epsvac1": 0,
                         "epsiac1": 0, "epspac1": 0, "epsvac2": 0, "epsiac2": 0, "epspac2": 0,
                         "epsvac3": 0, "epsiac3": 0, "epspac3": 0, "loadpercent": 0, "pf": 1000,
                         "bmsstatusold": 0, "bmsstatus": 99, "bmserrorold": 0, "bmserror": 0,
                         "bmssoc": 84, "bmsbatteryvolt": 5290, "bmsbatterycurr": 64606,
                         "bmsbatterytemp": 25, "bmsmaxcurr": 10420, "bmsgaugerm": 10370,
                         "bmsgaugefcc": 12240, "bmsfw": 34181, "bmsdeltavolt": 4, "bmscyclecnt": 232,
                         "bmssoh": 100, "bmsconstantvolt": 5680, "bmswarninfoold": 0, "bmswarninfo":
                         0, "bmsgaugeiccurr": 0, "bmsmcuversion": 34181, "bmsgaugeversion": 0,
                         "bmswgaugefrversionl": 0, "bmswgaugefrversionh": 0, "bmsbmsinfo": 16720,
                         "bmspackinfo": 16720, "bmsusingcap": 0, "bmscell1volt": 3312,
                         "bmscell2volt": 3308, "bmscell3volt": 1, "bmscell4volt": 3600,
                         "bmscell5volt": 3308, "bmscell6volt": 3309, "bmscell7volt": 3309,
                         "bmscell8volt": 3310, "bmscell9volt": 3310, "bmscell10volt": 3311,
                         "bmscell11volt": 3310, "bmscell12volt": 3311, "bmscell13volt": 3310,
                         "bmscell14volt": 3311, "bmscell15volt": 3310, "bmscell16volt": 3310,
                         "acchargeenergytoday": 81, "acchargeenergytotal": 17084, "acchargepower": 0,
                         "70%_invpoweradjust": 986, "extraacpowertogrid": 1700, "eextratoday": 181,
                         "eextratotal": 33992, "esystemtoday": 169, "esystemtotal": 34781,
                         "inverterstatus": 6, "pacs": 4532, "fac": 5005, "vac1": 2422, "iac1": 19,
                         "pac1": 4599, "eactoday": 47, "eactot": 13371, "timetotal": 59507185,
                         "Temp1": 334, "Temp2": 312, "Temp3": 200, "Temp4": 0, "uwbatvoltdsp": 530,
                         "pbusvoltage": 3946, "nbusvoltage": 3939, "remotectrlen": 0,
                         "remotectrlpower": 0, "eacchargetoday": 81, "eacchargetotal": 17084,
                         "priority": 0, "batterytype": 1, "autoproofreadcmd": 0}}

HA sensors built:
image

PV3 missing on tl3 configuration

Hello,
The values I have for home assistant:
image

Values on Grott
image

For example the PV3 is missing.

grott        |                   {"device": "hidden", "time": "2023-05-12T16:42:12", "buffered": "no",
grott        |                   "values": {"datalogserial": "hidden", "pvserial": "hidden",
grott        |                   "recortype1": 0, "recortype2": 124, "pvstatus": 1, "pvpowerin": 53067,
grott        |                   "pv1voltage": 5011, "pv1current": 31, "pv1watt": 15534, "pv2voltage": 4114,
grott        |                   "pv2current": 28, "pv2watt": 11519, "pv3voltage": 6846, "pv3current": 38,
grott        |                   "pv3watt": 26014, "pvpowerout": 53007, "pvfrequentie": 4998,
grott        |                   "pvgridvoltage": 2312, "pvgridcurrent": 77, "pvgridpower": 17802,
grott        |                   "pvgridvoltage2": 2371, "pvgridcurrent2": 81, "pvgridpower2": 19205,
grott        |                   "pvgridvoltage3": 2345, "pvgridcurrent3": 76, "pvgridpower3": 17822,
grott        |                   "Vac_RS": 4057, "Vac_ST": 4070, "Vac_TR": 4041, "pvenergytoday": 404,
grott        |                   "pvenergytotal": 46818, "totworktime": 13197357, "epv1today": 126,
grott        |                   "epv1total": 13133, "epv2today": 79, "epv2total": 12158, "epvtotal": 44057,
grott        |                   "pvtemperature": 718, "pvipmtemperature": 769, "pvboottemperature": 674,
grott        |                   "temp4": 0, "uwBatVolt_DSP": 0, "pbusvolt": 3533, "nbusvolt": 3503}}```

What inver-type to use in grott.ini

I am trying tot get grott working in docker. One of the things I need to set in the grott.ini is the inverter-type. I have a Growatt 3000MTL inverter, Which of the following inverter-type must I use:
default, sph, spf, max, tl3

Growatt 3600tl-xe compatibility

Hi, I tried the Grott integration using docker image. All data is pointed out properly into mqtt server, but I saw into Grott service log a ripetitive warning below.

Is the inverter model supported?

  • Growatt data decrypted V2
    • Growatt packet received:
      <socket.socket fd=5, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.5', 5279), raddr=('192.168.1.16', 1036)>

Where

  • 192.168.1 16 is the Growatt Shinelink
  • 172 17 is my docker farm lan

I guess the log verbose disabled, I will provide the full log soon

Thanks

Cant get ShineWiFi-X to send data to MQTT on home assistant

I have Mosquito broker & Grott installed, I have tried setting the IP via wifi hotspot to my home assistant PI's IP address but it kept reverting back to default.

After reading some documentation here: https://github.com/muppet3000/homeassistant-grott/issues/5#issuecomment-1545710398 I noticed that its possible to set via the growatt server. I have set it, but still no data visible on the mosquito log file.

Any idea what I'm doing wrong? Is there a way to check that the datalogger is accepting the IP change after setting via growatt server?

Anything I need to check/any way to be able to test my mosquito MQTT setup?

Any help is much appreciated!

Crashed - Connection reset by peer

This had been running great for a few days.

Then I find I was no longer receiving data updates.

Portainer shows it existed 3 days ago.
image

I check the logs;

	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0.7', 34384), raddr=('47.91.67.66', 5279)>
	 - Data less then minimum record length, data not processed
	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0.7', 34384)>
Traceback (most recent call last):
  File "/app/grott.py", line 35, in <module>
    proxy.main(conf)
  File "/app/grottproxy.py", line 144, in main
    self.on_recv(conf)
  File "/app/grottproxy.py", line 235, in on_recv
    self.channel[self.s].send(data)
ConnectionResetError: [Errno 104] Connection reset by peer

How do I add my second inverter?

Hi all.

I have somehow managed to scrape through and get it to work but only for one of my two inverters.

Anyone know how I can add the second?

In layman/s terms please as I am very new to this

SPF inverter sensors

Hi @muppet3000,

First thanks for all that you've done, this works pretty well.
However, the inverter that I use is an growatt-spf-6000t and a lot of the values that grott sends out for it are not in the current sensors_mqtt.py.

   "device":"X",
   "time":"2023-07-17T10:10:13",
   "buffered":"no",
   "values":{
      "datalogserial":"X",
      "pvserial":"X",
      "pvstatus":0,
      "vpv1":1335,
      "vpv2":1335,
      "ppv1":2940,
      "ppv2":2940,
      "buck1curr":108,
      "buck2curr":0,
      "op_watt":0,
      "pvpowerout":0,
      "op_va":0,
      "acchr_watt":0,
      "acchr_VA":0,
      "bat_Volt":5320,
      "batterySoc":50,
      "bus_volt":0,
      "grid_volt":0,
      "line_freq":0,
      "outputvolt":9,
      "pvgridvoltage":9,
      "outputfreq":0,
      "invtemp":389,
      "dcdctemp":413,
      "loadpercent":0,
      "buck1_ntc":0,
      "buck2_ntc":0,
      "OP_Curr":0,
      "Inv_Curr":3,
      "AC_InWatt":0,
      "AC_InVA":0,
      "faultBit":0,
      "warningBit":0,
      "faultValue":0,
      "warningValue":0,
      "constantPowerOK":0,
      "epvtoday":13,
      "pvenergytoday":13,
      "epvtotal":1802,
      "eacCharToday":0,
      "eacCharTotal":1082,
      "ebatDischarToday":0,
      "ebatDischarTotal":1254,
      "eacDischarToday":0,
      "eacDischarTotal":0,
      "ACCharCurr":0,
      "ACDischarWatt":0,
      "ACDischarVA":0,
      "BatDischarWatt":0,
      "BatDischarVA":0,
      "BatWatt":-5880
   }
}

I have hereby attached an excel with the readable names where I could find them with the correct dividers.

grott_spf_inverter.xlsx

When you have a minute could you add them to the sensors_mqtt.py?

Thanks in advance

source for the names:
https://raw.githubusercontent.com/johanmeijer/grott/60b802ecdac130c07730cff7da3bcd50ef4be61c/grottconf.py
https://github.com/johanmeijer/grott/blob/60b802ecdac130c07730cff7da3bcd50ef4be61c/examples/Home%20Assistent/grott_ha.py

Growatt Meter information missing

Hi. I installed Grott I integration using a docker image and the classic mosquito mqtt server. The Grott integration is working very well pointed out all Growatt inverter information, but all information managed by Growatt Meter is still missing. Where I wrong? Thanks.

MOD 10KTL3-X HA Energy usage graph

Hey all,

Just installed homeassistant-grott (thank you) and noticed that at the beginning of the day I get all the energy from grid (between when it goes off and comes back on) in one go. I noticed that the inverter goes off at night and it seems that it does not transmit anything until morning.

Is there anyway to set it so that it continues logging during night time? It's mostly because of the ugly looking Energy usage graph otherwise the data is correct as the smart meter is incrementing import and export during this time. Just the first hour when it comes back online is a large bar in HA.

Thanks

Screenshot 2023-10-03 112649

No battery values

Got my GROTT docker container set up, and it is talking with my MQTT docker, sending values into my HA container through the Grott integration from Chris. I still have the old integration active too so I can update over all of my automations but I noticed that there are several values missing. I have nothing that shows info related to the batteries. Is this a Grott service or an integration problem?

I only get 1 device coming through MQTT while the old integration had 2. They may have rolled up into one, since the other integration showed my Shinelink LAN box as ID and now I get the Shinelink RF Stick ID that is in my inverter that connects to the Lanbox

I only see 31 entities on my detected device in Home Assistant Grott and none of them contain the battery related values that are now part opf the MQTT message (I installed the latest beta version after talking to the creator of the Grott).

Can I do something to get these into my Home Assistant system?

  • Grott values retrieved:
    • pvserial : ADJ0B000000
    • pvstatus : 1
    • pvpowerin : 964.0
    • pv1voltage : 0.0
    • pv1current : 0.0
    • pv1watt : 0.0
    • pv2voltage : 246.4
    • pv2current : 3.9
    • pv2watt : 964.0
    • pv3voltage : 0.0
    • pv3current : 0.0
    • pv3watt : 0.0
    • pv4voltage : 0.0
    • pv4current : 0.0
    • pv4watt : 0.0
    • pvpowerout : 612.4
    • pvfrequentie : 49.9
    • pvgridvoltage : 241.0
    • pvgridcurrent : 2.6
    • pvgridpower : 612.7
    • pvgridvoltage2 : 0.0
    • pvgridcurrent2 : 0.0
    • pvgridpower2 : 0.0
    • pvgridvoltage3 : 0.0
    • pvgridcurrent3 : 0.0
    • pvgridpower3 : 0.0
    • vacrs : 241.0
    • vacst : 0.0
    • vactr : 0.0
    • ptousertotal : 0.0
    • ptogridtotal : 0.0
    • ptoloadtotal : 758.0
    • totworktime : 9795.5
    • pvenergytoday : 9.5
    • pvenergytotal : 6648.7
    • epvtotal : 7020.2
    • epv1today : 0.0
    • epv1total : 3489.0
    • epv2today : 11.1
    • epv2total : 3531.2
    • epv3today : 0.0
    • epv3total : 0.0
    • etousertoday : 1.2
    • etousertotal : 3517.6
    • etogridtoday : 0.1
    • etogridtotal : 2341.1
    • eloadtoday : 12.8
    • eloadtotal : 8391.6
    • deratingmode : 0
    • iso : 65530
    • dcir : 0.0
    • dcis : 0.0
    • dcit : 0.0
    • gfci : 0
    • pvtemperature : 34.6
    • pvipmtemperature : 34.6
    • temp3 : 0.0
    • temp4 : 0.0
    • temp5 : 41.1
    • pbusvoltage : 399.9
    • nbusvoltage : 0.0
    • ipf : 20000
    • realoppercent : 17
    • opfullwatt : 0.0
    • standbyflag : 0
    • faultcode : 0
    • warningcode : 0
    • systemfaultword0 : 0
    • systemfaultword1 : 0
    • systemfaultword2 : 758
    • systemfaultword3 : 758
    • systemfaultword4 : 117
    • systemfaultword5 : 0
    • systemfaultword6 : 0
    • systemfaultword7 : 0
    • invstartdelaytime : 60
    • bdconoffstate : 1
    • drycontactstate : 0
    • edischrtoday : 4.5
    • edischrtotal : 1652.3
    • echrtoday : 3.9
    • echrtotal : 1457.4
    • eacchrtoday : 0.0
    • eacchrtotal : 179.4
    • priority : 0
    • epsfac : 0.0
    • epsvac1 : 0.0
    • epsiac1 : 0.0
    • epspac1 : 0.0
    • epsvac2 : 0.0
    • epsiac2 : 0.0
    • epspac2 : 0.0
    • epsvac3 : 0.0
    • epsiac3 : 0.0
    • epspac3 : 0.0
    • epspac : 0.0
    • loadpercent : 0.0
    • pf : 1000.0
    • dcv : 0
    • bdc1_sysstatemode : 257
    • bdc1_faultcode : 0
    • bdc1_warncode : 0
    • bdc1_vbat : 212.8
    • bdc1_ibat : 0.9
    • bdc1_soc : 49
    • bdc1_vbus1 : 400.4
    • bdc1_vbus2 : 203.7
    • bdc1_ibb : 0.6
    • bdc1_illc : 0.6
    • bdc1_tempa : 28.4
    • bdc1_tempb : 0.0
    • bdc1_pdischr : 0.0
    • bdc1_pchr : 201.0
    • bdc1_edischrtotal : 1652.3
    • bdc1_echrtotal : 1457.4
    • bdc1_flag : 3
    • bdc2_sysstatemode : 41
    • bdc2_faultcode : 16
    • bdc2_warncode : 0
    • bdc2_vbat : 2.6
    • bdc2_ibat : 23.7
    • bdc2_soc : 2
    • bdc2_vbus1 : 1.6
    • bdc2_vbus2 : 0.0
    • bdc2_ibb : 0.0
    • bdc2_illc : 0.1
    • bdc2_tempa : 0.0
    • bdc2_tempb : 5.0
    • bdc2_pdischr : 327680.0
    • bdc2_pchr : 0.0
    • bdc2_edischrtotal : 0.0
    • bdc2_echrtotal : 0.0
    • bdc2_flag : 0
    • bms_status : 1
    • bms_error : 0
    • bms_warninfo : 0
    • bms_soc : 49
    • bms_batteryvolt : 213.0
    • bms_batterycurr : 1.2
    • bms_batterytemp : 39.9
    • bms_maxcurr : 25.0
    • bms_deltavolt : 25.0
    • bms_cyclecnt : 0
    • bms_soh : 100
    • bms_constantvolt : 227.2
    • bms_bms_info : 18880
    • bms_packinfo : 0
    • bms_usingcap : 0
    • bms_fw : 10400
    • bms_mcuversion : 0
    • bms_commtype : 0
  • MQTT jsonmsg:
    {"device": "ADJ0B00000", "time": "2023-05-29T16:48:20", "buffered": "no",
    "values": {"pvserial": "ADJ0B1302U", "pvstatus": 1, "pvpowerin": 9640,
    "pv1voltage": 0, "pv1current": 0, "pv1watt": 0, "pv2voltage": 2464,
    "pv2current": 39, "pv2watt": 9640, "pv3voltage": 0, "pv3current": 0,
    "pv3watt": 0, "pv4voltage": 0, "pv4current": 0, "pv4watt": 0, "pvpowerout":
    6124, "pvfrequentie": 4994, "pvgridvoltage": 2410, "pvgridcurrent": 26,
    "pvgridpower": 6127, "pvgridvoltage2": 0, "pvgridcurrent2": 0,
    "pvgridpower2": 0, "pvgridvoltage3": 0, "pvgridcurrent3": 0, "pvgridpower3":
    0, "vacrs": 2410, "vacst": 0, "vactr": 0, "ptousertotal": 0, "ptogridtotal":
    0, "ptoloadtotal": 7580, "totworktime": 70527314, "pvenergytoday": 95,
    "pvenergytotal": 66487, "epvtotal ": 70202, "epv1today ": 0, "epv1total":
    34890, "epv2today": 111, "epv2total": 35312, "epv3today": 0, "epv3total": 0,
    "etousertoday": 12, "etousertotal": 35176, "etogridtoday": 1,
    "etogridtotal": 23411, "eloadtoday": 128, "eloadtotal": 83916,
    "deratingmode": 0, "iso": 65530, "dcir": 0, "dcis": 0, "dcit": 0, "gfci": 0,
    "pvtemperature": 346, "pvipmtemperature": 346, "temp3": 0, "temp4": 0,
    "temp5": 411, "pbusvoltage": 3999, "nbusvoltage": 0, "ipf": 20000,
    "realoppercent": 17, "opfullwatt": 0, "standbyflag": 0, "faultcode": 0,
    "warningcode": 0, "systemfaultword0": 0, "systemfaultword1": 0,
    "systemfaultword2": 758, "systemfaultword3": 758, "systemfaultword4": 117,
    "systemfaultword5": 0, "systemfaultword6": 0, "systemfaultword7": 0,
    "invstartdelaytime": 60, "bdconoffstate": 1, "drycontactstate": 0,
    "edischrtoday": 45, "edischrtotal": 16523, "echrtoday": 39, "echrtotal":
    14574, "eacchrtoday": 0, "eacchrtotal": 1794, "priority": 0, "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": 257,
    "bdc1_faultcode": 0, "bdc1_warncode": 0, "bdc1_vbat": 21279, "bdc1_ibat": 9,
    "bdc1_soc": 49, "bdc1_vbus1": 4004, "bdc1_vbus2": 2037, "bdc1_ibb": 6,
    "bdc1_illc": 6, "bdc1_tempa": 284, "bdc1_tempb": 0, "bdc1_pdischr": 0,
    "bdc1_pchr": 2010, "bdc1_edischrtotal": 16523, "bdc1_echrtotal": 14574,
    "bdc1_flag": 3, "bdc2_sysstatemode": 41, "bdc2_faultcode": 16,
    "bdc2_warncode": 0, "bdc2_vbat": 259, "bdc2_ibat": 237, "bdc2_soc": 2,
    "bdc2_vbus1": 16, "bdc2_vbus2": 0, "bdc2_ibb": 0, "bdc2_illc": 1,
    "bdc2_tempa": 0, "bdc2_tempb": 50, "bdc2_pdischr": 3276800, "bdc2_pchr": 0,
    "bdc2_edischrtotal": 0, "bdc2_echrtotal": 0, "bdc2_flag": 0, "bms_status":
    1, "bms_error": 0, "bms_warninfo": 0, "bms_soc": 49, "bms_batteryvolt":
    21300, "bms_batterycurr": 120, "bms_batterytemp": 399, "bms_maxcurr": 2500,
    "bms_deltavolt": 2500, "bms_cyclecnt": 0, "bms_soh": 100,
    "bms_constantvolt": 22720, "bms_bms_info": 18880, "bms_packinfo": 0,
    "bms_usingcap": 0, "bms_fw": 10400, "bms_mcuversion": 0, "bms_commtype": 0}}
  • Grott MQTT topic used : energy/growatt
  • MQTT message message sent

how to get grott working for a beginner ?

hello muppet3000

i have the following question , i am trying to understand what to do / prepare so i can use the grott application .
this weekend i was trying to get it done the following way.
i am running home assistant OS on a thin client which is working fine. to run grott i have picked up another thin client and installed debian 12 on it and the docker desktop
then i get lost in the things i think i need to do . run grott and mqtt on this debian docker is already a problem
i think i am doing it wrong , can you help me out and make a manual or something so i can make it happen ?

what is the best home assisant installation needed to use grott ?(i need hacs and addons so i think the OS is the only one )
is it possible to run all of the needed software on 1 thin client or do i need a more powerfull PC
and if so , how ?
i was happy with the integration you have made and with my 2 hours intervall it worked perfect , never a problem untill now.
So i realy want to go to your "new" growatt solution but i do not understand how to start

hoping you find some time to explaine it , thinking there are more people who would like it this way but also do not understand how to realize it .

thanks

PV Output error

Hi muppet3000,

I have finally got the Docker Grott working 100%, thanks for your hard work.

I have seen an error in my logs PVOut: Update refused for JXG8BMJ001 due to time limitation, do you know what is causing this please?
Thanks

Incompatible with Grott HA Addon

Instead of manually running Grott in docker, I tried to use this extension in combination with https://github.com/egguy/grott-home-assistant-add-on -- it does not seem to be working. One thing I noticed is that the expected topic for this extension is hardcoded. The HA grott addon uses a different topic ("homeassistant/sensor/grott"). I changed that in the code, but then I run into the following error:

2023-10-02 11:41:19.141 WARNING (MainThread) [homeassistant.components.mqtt.mixins] MQTT entity name starts with the device name in your config {'name': 'RBL2CHV033 Datalogger serial', 'unique_id': 'grott_RBL2CHV033_datalogserial', 'state_topic': 'homeassistant/grott/RBL2CHV033/state', 'device': {'identifiers': ['RBL2CHV033'], 'name': 'RBL2CHV033', 'manufacturer': 'GrowWatt', 'connections': []}, 'value_template': Template<template=({{ value_json.datalogserial }}) renders=0>, 'payload_not_available': 'offline', 'enabled_by_default': True, 'availability_mode': 'latest', 'payload_available': 'online', 'force_update': False, 'encoding': 'utf-8', 'qos': 0}, this is not expected. Please correct your configuration. The device name prefix will be stripped off the entity name and becomes 'Datalogger serial'


2023-10-02 11:41:19.160 ERROR (MainThread) [homeassistant.util.logging] Exception in mqtt_message_received when handling msg on 'homeassistant/sensor/grott/RBL2CHV033_datalogserial/config': '{"name": "RBL2CHV033 Datalogger serial", "unique_id": "grott_RBL2CHV033_datalogserial", "state_topic": "homeassistant/grott/RBL2CHV033/state", "device": {"identifiers": ["RBL2CHV033"], "name": "RBL2CHV033", "manufacturer": "GrowWatt"}, "value_template": "{{ value_json.datalogserial }}"}'
Traceback (most recent call last):
  File "/config/custom_components/grott/sensor.py", line 70, in mqtt_message_received
    if (payload["buffered"] == "no"):
        ~~~~~~~^^^^^^^^^^^^
KeyError: 'buffered'

So couple of errors here, one being "MQTT entity name starts with the device name in your config this is not expected. Please correct your configuration" but i'm not sure how I should go about that.

The other error being it expecting a buffered property which doesn't exist. But maybe that is because of the previous configuration error?

Is this scenario I'm trying even supposed to be working? Should I change something in the Grott HA addon so this extension will work?

As a feature request I think it would make sense to make the MQTT topic configurable?

ShineWiFi-X support

Hi

Does it work with ShineWiFi-X dongles? I cannot seem to find configuration instruction for that as if I go to the IP assigned to that dongle in my network by the web browser it won't connect. There doesn't seem to be any port open on it at all.

Thanks!

SPH4~10k TL3 BH Inverter Import/Export values

Hi,

Can you please give me an help, on my installation I'm always have zero on importo to grid and export to grid sensors

immagine

.
this is my configuration:
_Generic:
version: 2.7.8
verbose: True
trace: False
config file: /config/grott/grott.ini
minrecl: 100
decrypt: True
compat: False
invtype: sph
invtypemap: {'KHH0B23036 ': 'sph', 'TNJ2BM201D': 'sph'}
include_all: True
blockcmd: False
noipf: False
time: auto
sendbuf: True
timezone: local
valueoffset: 6
offset: 6
inverterid: automatic
mode: proxy
grottip default
grottport 5279
_MQTT:
nomqtt True
mqttip: 192.168.1.81
mqttport: 1883
mqtttopic: energy/growatt
mqttmtopic: False
mqttmtopicname: energy/meter
mqttinverterintopic: True
mqtttretain: False
mqtttauth: True
mqttuser: grott
mqttpsw: secret
_Growatt server:
growattip: 47.91.67.66
growattport: 5279
_PVOutput:
pvoutput: True
pvdisv1: False
pvtemp: False
pvurl: https://pvoutput.org/service/r2/addstatus.jsp
pvapikey: 124550531f2b2b47d98a4d21f14863c795d81cb2
pvinverters: 2
pvsystemid: {1: '97864', 2: '97864'}
pvinvertid: {1: 'KHH0B23036', 2: 'TNJ2BM201D'}
_Influxdb:
influx: False
influx2: False
database: grottdb
ip: localhost
port: 8086
user: grott
password: secret
organization: grottorg
bucket: grottdb
token: secret
_Extension:
extension: True
extname: grott_ha
extvar: {'ha_mqtt_host': 'xxxxxxxxxxxxxx, 'ha_mqtt_port': '1883', 'ha_mqtt_user': 'grott', 'ha_mqtt_password': 'xxxxxxxxxx', 'ha_mqtt_retain': True}
Grott proxy mode started
**********************************************************************************
- Grott - libscrc not installed, no CRC checking only record validation on length!
**********************************************************************************
Hostname : 8ce4abae-grott-current

any suggest where to look at?

Thaks for any suggests

Growatt 6000TL3-S inverter serial is not recognized

I have Growatt 6000TL3-S 3 phase inverter with serial JNE4A140B5. I receive following error in the logs: - Inverter serial not recognised - using inverter type default.

However, some data are parsed and displayed via MQTT:

{"device": "JNE4A140B5", "time": "2023-10-03T16:49:10", "buffered": "no", "values": {"datalogserial": "DELETED", "pvserial": "JNE4A140B5", "pvstatus": 1, "pvpowerin": 6040, "pv1voltage": 3401, "pv1current": 9, "pv1watt": 3060, "pv2voltage": 2980, "pv2current": 10, "pv2watt": 2980, "pvpowerout": 5630, "pvfrequentie": 4993, "pvgridvoltage": 4062, "pvgridcurrent": 10, "pvgridpower": 2340, "pvgridvoltage2": 4093, "pvgridcurrent2": 9, "pvgridpower2": 2122, "pvgridvoltage3": 4062, "pvgridcurrent3": 10, "pvgridpower3": 2340, "pvenergytoday": 62, "pvenergytotal": 183548, "totworktime": 93620845, "pvtemperature": 336, "pvipmtemperature": 368, "epv1today": 37, "epv1total": 109628, "epv2today": 34, "epv2total": 96168, "epvtotal": 205796}}

Missing values eacDischarge etc, SPF5000 es inverter

Hi,
I'm using the grott addon and tried also your grott integration
I get this data from the grott logs
image

I get this in the mqtt device:
image
image

From your integration I get:
image

EDIT: I think the 6th sensor in the mqtt device is wrongly named/interpreted. This is the grid import or consumption today (not much sun, so on grid all day already, batteries charging only from sun)
Thanks!

Handle Buffered Data

My grott was down for a few days. Now that it's back, the data from the last 3 days is being sent inbetween fresh data. However, MQTT/homeassistant-grott doesn't seem to care that it is buffered/different timestamp, so I am seeing this.

image

These are the buffered messages coming in. See "time": "2023-05-28T13:43:31", "buffered": "yes"

	 - MQTT jsonmsg: 
			 {"device": "HMG9Cxxxx", "time": "2023-05-28T13:43:31", "buffered": "yes",
			 "values": {"datalogserial": "XGD6CAM1JY", "pvserial": "HMG9CAS01Z",
			 "pvstatus": 1, "pvpowerin": 32580, "pv1voltage": 3230, "pv1current": 48,
			 "pv1watt": 15539, "pv2voltage": 3266, "pv2current": 52, "pv2watt": 17041,
			 "pvpowerout": 31930, "pvfrequentie": 4996, "pvgridvoltage": 2481,
			 "pvgridcurrent": 134, "pvgridpower": 35147, "pvgridvoltage2": 0,
			 "pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0,
			 "pvgridcurrent3": 0, "pvgridpower3": 0, "totworktime": 1002532,
			 "pvenergytoday": 159, "pvenergytotal": 2522, "epvtotal": 2562, "epv1today":
			 88, "epv1total": 1333, "epv2today": 73, "epv2total": 1229, "pvtemperature":
			 490, "pvipmtemperature": 439}}

And the real-time data

	 - MQTT jsonmsg: 
			 {"device": "HMG9xxxx", "time": "2023-05-31T14:23:32", "buffered": "no",
			 "values": {"datalogserial": "XGDxxxx", "pvserial": "HMG9CAS01Z",
			 "pvstatus": 1, "pvpowerin": 2771, "pv1voltage": 3142, "pv1current": 4,
			 "pv1watt": 1447, "pv2voltage": 3160, "pv2current": 3, "pv2watt": 1324,
			 "pvpowerout": 2718, "pvfrequentie": 5004, "pvgridvoltage": 2401,
			 "pvgridcurrent": 20, "pvgridpower": 6435, "pvgridvoltage2": 0,
			 "pvgridcurrent2": 0, "pvgridpower2": 0, "pvgridvoltage3": 0,
			 "pvgridcurrent3": 0, "pvgridpower3": 0, "totworktime": 1237066,
			 "pvenergytoday": 69, "pvenergytotal": 2870, "epvtotal": 2916, "epv1today":
			 36, "epv1total": 1508, "epv2today": 34, "epv2total": 1408, "pvtemperature":
			 298, "pvipmtemperature": 335}}

Is there a way to

  1. Ignore buffered data - don't log to MQTT?
  2. Accept buffered data, but log to Home Assistant with the correct time stamp?
    Thanks

MIN TL-XH inverter format has different keys for battery info

My MIN-TL-XH inverter uses the T06NNNNXMIN.json format. The keys for the battery information are different between these inverters and e.g. the SPH inverters.

     "bms_status"         : {"value" : 1014,"length" : 2,"type" : "num","divide" : 1},
     "bms_error"          : {"value" : 1018,"length" : 2,"type" : "num","divide" : 1},
     "bms_warninfo"       : {"value" : 1022,"length" : 2,"type" : "num","divide" : 1},
     "bms_soc"            : {"value" : 1026,"length" : 2,"type" : "num","divide" : 1},
     "bms_batteryvolt"    : {"value" : 1030,"length" : 2,"type" : "num","divide" : 100},
     "bms_batterycurr"    : {"value" : 1034,"length" : 2,"type" : "num","divide" : 100},
     "bms_batterytemp"    : {"value" : 1038,"length" : 2,"type" : "num","divide" : 10},
     "bms_maxcurr"        : {"value" : 1042,"length" : 2,"type" : "num","divide" : 100},
     "bms_deltavolt"      : {"value" : 1046,"length" : 2,"type" : "num","divide" : 100},
     "bms_cyclecnt"       : {"value" : 1050,"length" : 2,"type" : "num","divide" : 1},
     "bms_soh"            : {"value" : 1054,"length" : 2,"type" : "num","divide" : 1},
     "bms_constantvolt"   : {"value" : 1058,"length" : 2,"type" : "num","divide" : 100},
     "bms_bms_info"        : {"value" : 1062,"length" : 2,"type" : "num","divide" : 1},
     "bms_packinfo"       : {"value" : 1066,"length" : 2,"type" : "num","divide" : 1},
     "bms_usingcap"       : {"value" : 1070,"length" : 2,"type" : "num","divide" : 1},
     "bms_fw"             : {"value" : 1074,"length" : 2,"type" : "num","divide" : 1},
     "bms_mcuversion"     : {"value" : 1078,"length" : 2,"type" : "num","divide" : 1},
     "bms_commtype"       : {"value" : 1082,"length" : 2,"type" : "num","divide" : 1}

E.g. bms_batteryvolt instead of vbat.

So none of the battery entities are created in HA.

Would people be interested in hosted Grott?

Just rattling a few ideas around in my head.

But, the crux of it would be:

  • If I could find a way to host grott & mqtt servers for people on a per-user/system basis - would people be interested?
  • Users would still need to update their wifi dongles/lan boxes to push data to my system
  • Users would be able to choose from 'push to Growatt' mode or 'no Growatt' mode

Note - If I found a way to do this (and there was significant enough uptake) I would likely have to charge some sort of premium to cover costs, but it's a sort of solution to the problem.

Displays EPVTotal, and not PVEnergyTotal

Hi,

epvtotal, epv1today, epv1total, epv2today and epv2total is the power generated on the DC (or PV) side.
pvenergytoday and pvenergytotal is on the AC side.

-  pvenergytoday        :  17.8
-  pvenergytotal        :  104.9
-  epvtotal             :  106.5
-  epv1today            :  9.9
-  epv1total            :  56.0
-  epv2today            :  8.1
-  epv2total            :  50.5

The difference between DC and AC will be the inverter efficiency (98% based on the epvtotal and pvenergytotal.

In Home Assistant, the value for pvenergytotal is missing. Instead, it is displaying epvtotal. When determining how much Solar was produced and consumed, you need to use the AC converted energy pvenergytotal.

Are you able to add pvenergytotal to Home Assistant?

image

old wifi dongle screenshot

Log in to the Dongle IP address as admin (you should know the password)
Go to STA Interface settings.
image

Cannot connect to ShineWiFi-X

Hello,
Not sure if the procedure for WiFi is different from the LAN version (seen in the example that the LAN model is mentioned), but with default ports 80 and 443 I cannot access the data logger. Is there another way to access the web interface?

My invertor: MID 20KTL3-X1 (set in grott.ini config as tl3).
Datalogger: ShineWiFi-X, firmware: 3.1.0.5

Thanks

Data becomes less frequent during day

I started using this integration because the Growatt Server Integration became unavailable after a few days of use. It's likely that Growatt noticed the frequent requests and blocked them. After setting up this integration, it worked fine for a day. However, now it starts perfectly every day but after a few hours, the data comes in less and less frequently, to the point where there's new data only every few hours or so. When I log in to the server.growatt.com website, it also shows that the forwarded data is incomplete.
Screenshot (72)
You can see how it's receiving data every 5 minutes like it should on day one. But on day 2 and 3, it works only up to ~11am. Is this Growatt blocking frequent requests again? I thought, this integration worked like:
ShineX --> Grott Integration --> Growatt Servers
So in theory, Growatt Servers shouldn't even notice, if I'm not mistaken.
However, I'm new to Home Assistant and I'm not an expert when it comes to this. So It's possible I've messed up, but where and what?

Setup:
Growatt mic 2000tl-x
ShineWiFi-X

Home Assistant OS on Raspberry Pi 4 8GB:
Home Assistant 2023.9.3
Supervisor 2023.09.2
Operating System 10.5
Frontend 20230911.0

Grott v1.1.0

Battery charge percentage - GROWATT-ARK-HV-12.8

Greetings,

I'm trying to read the battery charge of a GROWATT-ARK-HV-12.8 battery.
The problem is, that the data read by grott only contains SOC=0 (State of Charge), although I know that the battery is close to fully charged.
I'm helping a relative on this, so there might be other Growatt devices other than the battery sending data as well.

I suspect the problem is that the specific layout used is not yet supported by grott, but I'm not sure.

This is part of the output in HA:
image
I'm not well educated on those values, but they seem off to me. Also State of Charge is at 0,0%, although it should be close to 100%.

I see different kinds of layouts in the grott log:

T060104XSPH

	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.24.0.2', 35088), raddr=('47.91.67.66', 5279)>
	 - Growatt original Data:
		 \x00\x5f\x00\x06\x03\x3f\x01\x04\x1f\x35\x2b\x41\x22\x3e\x43\x77\x36\x5a\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x2c\x2f\x27\x42\x36\x75\x41\x5f\x47\x50\x74\x74\x47\x72\x6f\x77\x61\x74\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x76\x7d\x7f\x4c\x74\x63\x74\x62
		 \x9c\x70\x23\x72\x69\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x54\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x08\x60\x7e\xe7\x72\x38\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x60\x70\x74\x41\x6b\x0a\x77\x9b\x74\x74\x47\x72
		 \x6f\x77\x4c\xad\x74\x47\x72\x6f\x77\x61\x2e\x38\x47\x72\x6f\x68\x61\x74\x2f
		 \xe4\x72\x6f\x77\x50\x74\x74\x23\x14\x6f\x77\x61\x6b\x74\x47\xf4\xe9\x77\x61
		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\xc6
		 \x72\x6f\x77\x61\x74\x23\x4d\xd2\x6c\x85\x60\x23\x74\xbd\x73\x58\x65\xef\x74
		 \x74\x47\x79\x6f\xd6\x61\x10\x7f\x5f\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x4c\x6a\x66\x4f\x6c\x37\x79\x7f\x77
		 \x26\x76\x71\x75\x70\x47\x9f\x6e\x75\x64\x60\x74\x17\x72\x6a\x77\x36\x74\x71
		 \x47\x72\x6f\xf7\x61\x74\x70\x22\x76\x8e\x77\x59\x74\x74\x38\x69\x6f\x77\x13
		 \xac\x77\xaf\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x71
		 \x77\x61\x2e\xd9\x47\x72\x6f\x68\x61\x74\x2d\xb7\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x46\x72\x6c\xe4\x0d\x74\x75\x47\x71\xa8\xbd\x70\x8b
		 \x65\xb8\x63\x90\x66\x9e\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x23\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
		 \x74\x74\x47\x72\x6f\x77\x61\x75\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x75\xbf\x7f\x2d\x74\x72
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
		 \x74\x74\x46\x60\x6a\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x8d\x90
		 \xfa\x49\x74\x74\x46\xe2\x90\x88\xf7\x98\xe2\xab\xe4\x83\xe1\x8d\xe2\x98\xd1
		 \x9e\xf9\x9b\xf7\x98\xe2\xab\xe4\x83\xe1\x8d\x74\x74\x47\x72\x7c\xfd\x71\x72
		 \x74\x6e\x72\x6f\x04\xd4\x64\x6c\x47\x5b\x6f\x77\x61\x74\x64\x0f\x72\x46\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x75\x77\x61\x27\x04\x44\x89
		 \x31\xd4\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6e\xdb\x61\xbc\x75\xf7
		 \x72\x6f\x7d\xff\x6d\x10\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x59\x72\x6f\x2d\xcc\x74\x74\x47\x4a\x6f\x77
		 \x1e\x6f\x74\x47\x00\xb7\x77\x61\x74\x75\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\xd2\x34
	 - Grott automatic protocol detection
	 - Grott data record length 839
	 - layout   :  T060104XSPH
	 - no matching record layout found, try generic
	 - Record layout used :  T06NNNNXSPH
	 - Growatt data decrypted V2
	 - Grott Growatt data decrypted
	 - Growatt plain data:
		 005f0006033f010458474436434a3730443500000000000000000000000000000000000000004
		 3584636423233303031000000000000000000000000000000000000000017090b0b060c0303e8
		 046400060000000000000000002000000000000000000000000069140aa000570000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 000000000001040006196500fa0000000000002dd90000000000005a4c0000001f00005ba3000
		 00031000064660000001f00008686000000000000000000000000000000000000000000000000
		 000000000000000000000000000000810000000000570aa003f2015700fa0137128e0000000b0
		 0a100640b1800000000000000000000000000000000000000000b1809380d430d380549011001
		 0400ed010205140050000500570005000000800000046504e1003800007f1b000072d803e8000
		 0000000000000000000000000001e00005aad0000001f000059f0000000000000000000000000
		 00010003936c00010003c7ca11ff11ff11ff11ff0000000000000000000000000000000000510
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000100000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 0000000000007d0084c0006000000000000000000000000000000000000000000011205000000
		 000000000000000000ffff8d2800000190ffff96ec96ec96ec96ec96ec96ec96ec96ec96ec96e
		 c96ec00000000138a10060029000073b510180029000000001048002900000000000000000000
		 0000001a0000537003fb5ea300000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000001ac00c801b000000a9e19640000000000000000000000000000000000000000001e000
		 05aad0000003800007f1b000072d80000000100000000000000000000a555
	 - Growatt new layout processing
		 - decrypt       :  True
		 - offset        :  6
		 - record layout :  T06NNNNXSPH
	 - Grott data record date/time processing started
	 - date-time:  2023-09-11T11:06:12
	 - Grott values retrieved:
		 -  datalogserial        :  XGD6CJ70D5
		 -  pvserial             :  CXF6B23001
		 -  pvstatus             :  6
		 -  pvpowerin            :  0.0
		 -  pv1voltage           :  0.0
		 -  pv1current           :  0.0
		 -  pv1watt              :  209715.2
		 -  pv2voltage           :  0.0
		 -  pv2current           :  0.0
		 -  pv2watt              :  0.0
		 -  pvpowerout           :  0.0
		 -  pvfrequentie         :  0.0
		 -  pvgridvoltage        :  0.0
		 -  pvgridcurrent        :  0.0
		 -  pvgridpower          :  1703936.6
		 -  pvgridvoltage2       :  650.1
		 -  pvgridcurrent2       :  25.0
		 -  pvgridpower2         :  0.0
		 -  pvgridvoltage3       :  0.0
		 -  pvgridcurrent3       :  1173.7
		 -  pvgridpower3         :  0.0
		 -  totworktime          :  446.0
		 -  eactoday             :  203161.6
		 -  pvenergytoday        :  203161.6
		 -  eactotal             :  153740902.4
		 -  epvtotal             :  2038644.6
		 -  epv1today            :  168440627.2
		 -  epv1total            :  203161.6
		 -  epv2today            :  225692876.8
		 -  epv2total            :  0.0
		 -  pvtemperature        :  0.0
		 -  pvipmtemperature     :  1.1
		 -  pvboosttemp          :  16.1
		 -  bat_dsp              :  284.0
		 -  eacharge_today       :  8867048.0
		 -  eacharge_total       :  1703959.7
		 -  batterytype          :  5
		 -  uwsysworkmode        :  56
		 -  systemfaultword0     :  0
		 -  systemfaultword1     :  32539
		 -  systemfaultword2     :  0
		 -  systemfaultword3     :  29400
		 -  systemfaultword4     :  1000
		 -  systemfaultword5     :  0
		 -  systemfaultword6     :  0
		 -  systemfaultword7     :  0
		 -  pdischarge1          :  0.0
		 -  p1charge1            :  0.0
		 -  vbat                 :  3.0
		 -  SOC                  :  0
		 -  pactouserr           :  152128716.8
		 -  pactousertot         :  0.0
		 -  pactogridr           :  0.0
		 -  pactogridtot         :  6553.9
		 -  plocaloadr           :  335190886.3
		 -  plocaloadtot         :  0.0
		 -  spdspstatus          :  0.0
		 -  spbusvolt            :  0.0
		 -  etouser_tod          :  530841.6
		 -  etouser_tot          :  0.0
		 -  etogrid_tod          :  0.0
		 -  etogrid_tot          :  0.0
		 -  edischarge1_tod      :  0.0
		 -  edischarge1_tot      :  0.0
		 -  eharge1_tod          :  0.0
		 -  eharge1_tot          :  0.0
		 -  elocalload_tod       :  0.0
		 -  elocalload_tot       :  0.0
	 - MQTT jsonmsg: 
			 {"device": "CXF6B23001", "time": "2023-09-11T11:06:12", "buffered": "no",
			 "values": {"datalogserial": "XGD6CJ70D5", "pvserial": "CXF6B23001",
			 "pvstatus": 6, "pvpowerin": 0, "pv1voltage": 0, "pv1current": 0, "pv1watt":
			 2097152, "pv2voltage": 0, "pv2current": 0, "pv2watt": 0, "pvpowerout": 0,
			 "pvfrequentie": 0, "pvgridvoltage": 0, "pvgridcurrent": 0, "pvgridpower":
			 17039366, "pvgridvoltage2": 6501, "pvgridcurrent2": 250, "pvgridpower2": 0,
			 "pvgridvoltage3": 0, "pvgridcurrent3": 11737, "pvgridpower3": 0,
			 "totworktime": 3211264, "eactoday": 2031616, "pvenergytoday": 2031616,
			 "eactotal": 1537409024, "epvtotal": 20386446, "epv1today": 1684406272,
			 "epv1total": 2031616, "epv2today": 2256928768, "epv2total": 0,
			 "pvtemperature": 0, "pvipmtemperature": 11, "pvboosttemp": 161, "bat_dsp":
			 2840, "eacharge_today": 88670480, "eacharge_total": 17039597, "batterytype":
			 5, "uwsysworkmode": 56, "systemfaultword0": 0, "systemfaultword1": 32539,
			 "systemfaultword2": 0, "systemfaultword3": 29400, "systemfaultword4": 1000,
			 "systemfaultword5": 0, "systemfaultword6": 0, "systemfaultword7": 0,
			 "pdischarge1": 0, "p1charge1": 0, "vbat": 30, "SOC": 0, "pactouserr":
			 1521287168, "pactousertot": 0, "pactogridr": 0, "pactogridtot": 65539,
			 "plocaloadr": 3351908863, "plocaloadtot": 0, "spdspstatus": 0, "spbusvolt":
			 0, "etouser_tod": 5308416, "etouser_tot": 0, "etogrid_tod": 0,
			 "etogrid_tot": 0, "edischarge1_tod": 0, "edischarge1_tot": 0, "eharge1_tod":
			 0, "eharge1_tot": 0, "elocalload_tod": 0, "elocalload_tot": 0}}
	 - Grott MQTT topic used : energy/growatt
	 - MQTT message message sent

T060119SPH

	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.24.0.2', 35088), raddr=('47.91.67.66', 5279)>
	 - Growatt original Data:
		 \x00\x01\x00\x06\x00\x38\x01\x19\x1f\x35\x2b\x41\x22\x3e\x43\x77\x36\x5a\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x63\x61\x60\x2c\x1f\x2a\x37\x2f\x39\x2c\x2c\x1f\x2a\x37\x2f\x39\x2c\x2c
		 \x1f\x2a\x37\x2f\x39\x60\xcf
	 - Grott automatic protocol detection
	 - Grott data record length 64
	 - layout   :  T060119SPH
	 - no matching record layout found, try generic
	 - Record layout used :  T060119SPH
	 - Growatt data decrypted V2
	 - Grott Growatt data decrypted
	 - Growatt plain data:
		 000100060038011958474436434a3730443500000000000000000000000000000000000000000
		 0140014585858585858585858585858585858585858585814bb
	 - Grott data ack record or data record not defined no processing done

T060116SPH

	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.24.0.2', 35088), raddr=('47.91.67.66', 5279)>
	 - Growatt original Data:
		 \x00\x06\x00\x06\x03\x3f\x01\x03\x1f\x35\x2b\x41\x22\x3e\x43\x77\x36\x5a\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x2c\x2f\x27\x42\x36\x75\x41\x5f\x47\x50\x74\x74\x47\x72\x6f\x77\x61\x74\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x76\x7d\x7f\x4c\x76\x43\x74\x61
		 \x74\x74\x3b\x72\x6e\x5e\x29\x74\x74\x47\x4e\x6f\x13\x46\x64\x74\x47\x69\x37
		 \x77\x61\x2d\x3c\x76\x5c\x5f\x77\x3b\x30\x35\x06\x72\x6a\x77\x63\x74\x74\x42
		 \x0a\x6f\x4b\x61\x48\x74\x23\x72\x0b\x77\x61\x37\x2c\x01\x44\x2d\x45\x52\x44
		 \x44\x76\x63\x68\x81\xec\x74\x75\x47\x28\x6f\x77\x61\x74\x54\x67\x3c\x0a\x02
		 \x04\x54\x31\x29\x17\x1d\x10\x08\x11\x54\x67\x72\x6e\x79\xec\x74\x74\x40\x95
		 \x6f\x7e\x61\x7f\x74\x4c\x72\x6a\x77\x77\x74\x75\x4a\x48\x7e\x92\x73\xb4\x67
		 \xfd\x7e\x8c\x63\x5a\x66\x28\x53\x22\x6f\x77\x61\x74\x74\x47\x72\x6f\x7a\x5b
		 \x65\x6a\x54\x24\x7c\xeb\x61\x60\x74\x53\x72\x7b\x77\x75\x74\x60\x47\x66\x6f
		 \x73\x61\x70\x74\x47\x72\x6f\x77\x61\x74\x74\x56\x6c\x6f\x77\x38\x3c\x35\x06
		 \x42\x5b\x47\x57\x44\x41\x47\x72\x6e\x46\x61\x70\x74\x47\x61\xf3\x77\x49\x65
		 \x6a\x57\xbc\x61\x76\x6f\x25\x74\x53\x72\x7b\x67\x36\x7b\xe4\x47\x5a\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x77\x47\x72\x6e\xc3\x61\x8b\x3a\x67\x72
		 \x90\x39\x41\x74\x8b\x09\x52\x6f\x88\x2f\x54\x65\x40\x84\xe2\x66\x66\x65\x73
		 \x47\x72\x6f\x77\x61\x74\x77\xaf\x76\x0b\x77\xa9\x74\x74\x47\x72\x6f\x45\x60
		 \xa2\x76\x78\x72\x6f\x77\x61\x66\x71\x43\x3e\x6d\xcb\x65\x38\x76\x1f\x72\x6f
		 \x77\x61\x74\x74\x47\x73\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x71\x6f\x77\x61\x7e\x74\x4d\x72\x0b\x77
		 \x05\x74\x75\x47\x72\x6f\x13\x61\x10\x74\x47\x72\x6e\x77\x61\x74\x74\x47\x72
		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x75\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x05
		 \x74\x7e\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x0b\x77\x05\x74\x75\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x77\x60\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x76\x0a\x73\x80\x35\x25
		 \x0d\x41\x5f\x47\x51\x44\x46\x75\x43\x5b\x47\x51\x36\x23\x47\x72\x6f\x77\x61
		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74
		 \x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61
		 \x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f
		 \x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47
		 \x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74
		 \x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x25\x36\x06\x13\x4f\x05\x3b\x31\x35\x26\x52
		 \x63\xf0\xfa
	 - Grott automatic protocol detection
	 - Grott data record length 839
	 - layout   :  T060103XSPH
	 - no matching record layout found, try generic
	 - Record layout used :  T060103XSPH
	 - Growatt data decrypted V2
	 - Grott Growatt data decrypted
	 - Growatt plain data:
		 00060006033f010358474436434a3730443500000000000000000000000000000000000000004
		 3584636423233303031000000000000000000000000000000000000000017090b0b042c030000
		 007c000129480000003c0064271000001b5800005948312e30005a44414100050002000005780
		 03c003c006400640000435846364232333030311107f68d0001005a0000000020204e65756520
		 456e6572676965202000010e8d000007e70009000b000b0005001600010d3a11e512c013ba0ce
		 3143b125c145000000000000000000d3a111e1356139c00140014001400140014001400040004
		 0000000000000000111e0000594841413034303630350000013100040000139c0028111e10ce0
		 e010e510014001410570f900028000000000000000000000003000001b400ff4e2000ff4e2000
		 ff4e2000ff4e201107f68d1107110700000000000003e8046400c800000000003201d6023f000
		 000001205044c02bc044c02580000000000000001000000000000000000000000000000000000
		 0000000000000000000000000000000000000000000000030000000a000a00640064000100000
		 06400640000000100000000000000000000000000000000000000000000000100000000000000
		 00000000000000000000000064000a00000000000000000000000000000000000000000000000
		 00000000000000000000000000064006400010000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000001000000000
		 00000000000046504e141514a3330303030323231343030425700000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 00000000000000000000000000000000000000000000000000000000000000000000000000000
		 0000000000000000000000000000000005142416120725a454161200c879b
	 - Grott data ack record or data record not defined no processing done

T060119SPH

	 - Growatt packet received:
		  <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.24.0.2', 52996), raddr=('47.91.67.66', 5279)>
	 - Growatt original Data:
		 \x00\x01\x00\x06\x00\x25\x01\x19\x1f\x35\x2b\x41\x22\x3e\x43\x77\x36\x5a\x77
		 \x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72\x6f\x77\x61\x74\x74\x47\x72
		 \x6f\x73\x61\x75\x45\xf6\x66
	 - Grott automatic protocol detection
	 - Grott data record length 45
	 - layout   :  T060119SPH
	 - no matching record layout found, try generic

So only packets with the layout T060104XSPH are actually processed.

As the records with the layout T060103XSPH seem to be of about the same size as the T060104XSPH records, I'd suspect that they might contain the battery data I am looking for.

The grott config looks like this:

# Specify grott monitor configuration
# Defaults are described
# Remove # and update the value to enable the setting
# Last updated: 2022-11-04
# Version 2.7.0

[Generic]
# Specify verbose for extended messaging
#verbose = True

# Specify minrecl for debugging purposes only (default = 100)
minrecl = 1

# Specify mode (sniff or proxy)(> 2.1.0 proxy is default)
#mode = proxy

# Specify port and IP address to listen to (only proxy), default port 5279, 0.0.0.0 ==> own ip address
#ip = 0.0.0.0
#port = 5279  

# To blocks commands from outside (to channge inverter and shine devices settings) specify blockcmd = True,
# Specify noipf = True if you still want be able to set the destination ip addres from growatt server (advice 
# only to use this for a short time)
#blockcmd = True 
#noipf = True

# Time = auto/server parameter enable/disable date/time retrieval from data record (server), default is 
# auto: grott decides which time is used (data record if valid otherwise Server) 
# If time = server Grott server time is alwas used
#time = auto 

# Sendbuf = True / False parameter to enable  / disable sending historical (buffered) data. Default is sendbuf = True.
#sendbuf = True 

# Compat is True and valoffset needs to be set if offset / growatt protocol has been changed. 
#compat = False
#valueoffset = 6

# Specify inverter id (not necessary in version >2.1.0 if compat = false!)
#inverterid = ABC1234567
# Specify the type of the inverter (default/sph/spf/max)
invtype = sph

# Decrypt is False if growatt communication is not encrypted (older inverters), (not necessary in version
# >2.1.0 if compat = false!)
#decrypt = True

[Growatt] 
# Server name/IP address and port of Growatt server
# specify only if the IP address of server.growatt.com is changed
# The address as of Nov 2022 is 47.91.67.66

#ip = server.growatt.com
#ip = 47.91.67.66
#port = 5279                                                        

[MQTT]
# Mqtt parameters definitions
# Be aware nomqtt = True means no MQTT processing will be done!!!!!!

#nomqtt = False
ip = 192.168.2.22
port = 1883
topic= energy/growatt
auth = True
user = ***
password = ***

[PVOutput]
# PVOutput parameters definitions

#pvoutput = True
#apikey = yourapikey 
# Data upload limit (in minutes)
#pvuplimit = 5
# Use this if you have one inverter
#systemid = 12345

# Use this if you have multiple inverters
#pvinverters = 2
#systemid1 = 12345
#inverterid1 = inverter1
#systemid2 = 67890
#inverterid2 = inverter2

#systemid99 = 99999
#inverterid99 = inverter99

[influx]
# Influxdb parameters definitions

#influx = False
#influx2 = False
#dbname = grottdb
#ip = localhost
#port = 8086
#user = grott
#password = growatt2020
#token  = "influx_token"
#org  = "grottorg"
#bucket = "grottdb" 

[extension] 
# grott extension parameters definitions

#extension = True
#extname = grottext
#extvar = {"var1": "var1_content", "var2": "var2_content"}

The last ~10000 lines of the log file: https://pastebin.com/qZwQPvMP

The setup is HA OS with the Grott addon from egguy and your Grott custom integration.

I'd greatly appreciate any help, thanks!

What order do I do it all in?

Hi there.

I had been using the Growatt integration with no issues but today it all went to sh*t and I did a bit of investigation work and ended up amongst other places, here.

There appears to be several sections on here which tell you to do something but then says you have to have done something else first which is further down in the instructions so I am up and down and very lost.

I have opened up that many tabs and tried that many things, I am completely lost as to what to to do.

Is there a proper step by step guide anywhere?

I have the shine wifi S dongles if it makes a difference.

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.