Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

maptin

Members
  • Joined

  • Last visited

  1. Many thanks for this. I need to get my head round Docker, MQTT, etc.
  2.    maptin reacted to a post in a topic: Raw access to Growatt Inverter Data
  3. This works for me on my SPA3000 - many thanks! The key part is to open the link in what Safari and Firefox call a Private Window (File/New Private Window)
  4. Many thanks for this. It may prove to be the way to go but I anticipate they may resist me foisting a different system on them for monitoring and it might just invalidate my warranty. I might still give it a try as I could always reconnect the Growatt dongle if necessary. I will try with the Node/js option first, if only because it presents me with a new challenge/learning opportunity. My first little hiccup with Solar Assistant is that, despite buying a license, when installed it tells me I'm on time-limited free trial! It also currently only works
  5. Hi Mike, like you I'me getting more and more frustrated with the instability of the Growatt server and the issues with the python scripts not being able to login. I put a fair bit of time to developing versions of your processToFiles.py that would produce CSV files and direct plots using mathplotlib which now appear to be useless! I have emailed the developer of the growattServer module to see if he can throw any light on the login issue. I understand from the company who installed my system that the instability problem with Shinephone and the web access is down to Growatt. I have been looking into other possible solutions using 3rd party software that will connect to the inverter, either via the Growatt dongle (not found anything yet) or via a serial-usb adapter, replacing the Growatt dongle - Solar Assistant seems to be the most likely but the issue then is the company that installed it won't have access to my data if I need their support, which I did initially because the battery/inverter they originally installed had to be replaced as it wouldn't recharge (I think they simply installed the ct sensors incorrectly but who am I to tell the pros how to do their job?! I am now interested in your solution using PLCHome - would you be willing to share the json parsing code you developed? I'm totally new to js but I understand the concept of RTFM (I was an assembler, FORTRAN, C and other high-level languages programmer in a former life) so I'm up for the challenge of getting my head round node/js. For my part, I'm happy to share my customised python script with anyone who cares to persevere with the growattServer module. I've attached "growatt-plot-dashboard-charts-generic.py" to this reply growatt-plot-dashboard-charts-generic.py
  6. I found using either "True" of "False" with a "my_user_agent_value" string seems to work. "True" will append a random string of decimal digits after the "my_user_agent_value" string whereas "False" just uses the string as is. I think the most useful info is available from api.dashboard_data(...) which seems to be working OK. I'd appreciate any input from others who are more experienced to understand why mix and tlx don't seem to work - maybe because I'm not passing the correct info as parameters?
  7. I had this problem starting a couple of days ago, too. I resolved it by ensuring I had these two statements BEFORE calling api.login: api = growattServer.GrowattApi(True,"newname") api.server_url = 'https://server.growatt.com/' This sets up a new UserAgent for each login - could it be that Growatt have blocked the default UA?
  8. Thanks for this - I found it very helpful. I also found the comments in the "growattServer/__init__.py script useful, too. Like many others I was getting the "None" type error because many of the "mix_***" functions simply return "None". I also had to change the url with "api.server_url = 'https://server.growatt.com/'" to get login to work. I use the flowing code to get the Year-by-month, Month-by-day and Day-by-5-min-time slot data using the "api.dashboard_data" function. Here's the code extract to achieve this: hour_data = api.dashboard_data(plant_id, growattServer.Timespan.hour, dayToProcess) day_data = api.dashboard_data(plant_id, growattServer.Timespan.day, dayToProcess) mon_data = api.dashboard_data(plant_id, growattServer.Timespan.month, dayToProcess) # deal with month = year-to-date data print("\nYear-to-date,\n") month = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] headers = "\nMonth, " for key_value in mon_data: if key_value == 'keyNames': for i in range(4): headers = headers + mon_data['keyNames'][i] +", " elif key_value != 'chartData': print(key_value + " :, " + mon_data[key_value]) print(headers) monchartData = mon_data['chartData'] for i in range(len(monchartData['ppv'])): print(month[i] + ", " + str(monchartData['ppv'][i]) + ", "\ + str(monchartData['sysOut'][i]) + ", "\ + str(monchartData['userLoad'][i]) + ", "\ + str(monchartData['pacToUser'][i])) # deal with day = month-to-date data print("\nMonth-to-date,\n") headers = "\nDate, " for key_value in day_data: if key_value == 'keyNames': for i in range(4): headers = headers + day_data['keyNames'][i] +", " elif key_value != 'chartData': print(key_value + " :, " + day_data[key_value]) print(headers) daychartData = day_data['chartData'] for i in range(len(daychartData['ppv'])): print(str(i+1) + ", " + str(daychartData['ppv'][i]) + ", "\ + str(daychartData['sysOut'][i]) + ", "\ + str(daychartData['userLoad'][i]) + ", "\ + str(daychartData['pacToUser'][i])) # deal with 'hour' data - actually 5-minute periods print("\nDaily data,\n") headers = "\nTime, " for key_value in hour_data: if key_value == 'keyNames': for i in range(4): headers = headers + hour_data['keyNames'][i] +", " elif key_value != 'chartData': print(key_value + " :, " + hour_data[key_value]) print(headers) hourchartData = hour_data['chartData'] for time_entry, data_points in hourchartData.items(): print(time_entry + ", " + str(round(float(data_points['ppv']),2)) + ", " \ + str(round(float(data_points['sysOut']),2)) + ", " \ + str(round(float(data_points['userLoad']),2)) + ", " \ + str(round(float(data_points['pacToUser']),2)) ) I used "print" statements whilst experimenting but it's a simple process to replace these with <file-handle>.write statements - just need to remember to add a trailing "\n". I realise that the "str(......)" functions in most of the the above code are in fact redundant - I'm a newbie to python is my excuse. I attach an excel spreadsheet showing the three lots of data from my system for yesterday. The sharp-eyed among you will notice that I'm getting very little from my battery. This system was only installed last week and has not worked properly in this respect. I've now asked the supplier to either replace it with something that does work, preferably from another manufacturer, or else remove it - so it looks like my work on this will be in vain unless someone else can make use of it. growatt-dashboard-charts-20230815.xlsx

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.