Open DavidChrstn opened 1 year ago
Hello,
Same issue here. I am using the default appkey. Host: https://gateway.isolarcloud.eu
Hi Same issue here, also using default appkey
Same here, issue appears to start last week
https://augateway.isolarcloud.eu/
[3.0.7] - 2023-09-04
Tried
init: false Init: true hassio_role: default host_pid: true
Hello,
i have the same issue.
Thancks
Just got the same error 😢
Guess it is time to get that ethernet cable and move over to modbus.
Guess it is time to get that ethernet cable and move over to modbus.
Nooooooo 😭
Guess it is time to get that ethernet cable and move over to modbus.
Nooooooo 😭
Ive got a sparky coming on Friday to install a new smart meter and might as well ask him to lay some ethernet cabling to the inverter. Would end up being much less flaky and won't need maintenance/keeping in sync with dodgy 3rd party API such as iSolarCloud. This addon has been of great use to date, but sounds like they have finally started addressing the API vulnerabilities and in turn breaking this project.
How do you even integrate the inverter with modbus?
How do you even integrate the inverter with modbus?
How do you even integrate the inverter with modbus?
Thanks, Will give It a try
OML, so glad i found this thread, just spent 3hours trying to work remember how i installed this addon and got the APKEY all those months ago.
Plus 1 Also I do have the same issue, unfortuantely. Hoping that someone will find a solution. Cheers and have a great 1st of Advent
Just an educated guess, but my guess is that SunGrow has rotated the appkey that comes with the add-on.
Any clue on how to try and get the new one?
Waiting for any news as well. Really liked the Addon!
still no news on this? same issue here
I have the issue too. Hoping for a solution! Fingers crossed...
hi,
i found a fix in the issues of the Go Sungrow projekt. The Community over ther fixed the whole thing.
https://github.com/MickMake/GoSungrow/issues/101#issuecomment-1845634809
Yoe need the "Advanced SSH & Web Terminal" Addon and run it without web protection. Connect via ssh (e.g. putty) and run the shell command to replace the docker image. Add the new passkey to the go sungrow config and restart.
worked for me
In the meantime, I've added my hack to the same gist in case the same approach is useful for anyone else.
Thank you @Paraphraser for that helpful gist! I have no experience with HomeAssistant, but I've managed to build, push and test docker images for the addon on all platforms, here is a simplified way to do a hack now:
1. connect to the HA instance over ssh 2. run:
old_image=`docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1`; new_image=`echo $old_image | awk -F/ '{print"triamazikamno/"$2}'`; docker tag $old_image ${old_image}-backup; docker pull $new_image; docker tag $new_image $old_image;
3. go to the HomeAssistant GUI, Settings, Add-ons, GoSungrow, Configuration tab and change sungrow_appkey to `B0455FBE7AA0328DB57B59AA729F05D8`
Restart GoSungrow when it prompts.
Hi I tried the above approach but I get the following errors:
First command goes through without error.
Second command doesn't create any error
Third one:
docker tag $old_image
${old_image}-backup
creates the following: unknown shorthand flag: 'b' in -backup See 'docker tag --help'
What am I missing?
Sorry I am noew to the docker and ssh usage.
Many thanks
Dietger
It seems for like for me, that ${old_image} was not found. Do you have the Addon installed and is there a docker container installed?
Try this command: docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1
if it really goes through
@dimafemabo
The error message you got means you had a space between the }
and the -
. So, instead of ${old_image}-backup
being treated as a single argument, it was treated as two separate arguments ${old_image}
and -backup
, and then, because any argument to a Unix command starting with a dash is interpreted as an option to a command, the command went looking for -b
and didn't find it.
What you need to do is to follow this exactly. Use copy/paste. Don't re-type anything.
It seems for like for me, that ${old_image} was not found. Do you have the Addon installed and is there a docker container installed?
Try this command:
docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1
if it really goes through
I guess this is the issue. The addon is installed on a HASSIO system and there is no docker showing. I ssh into me system with root@hassio-ip-address When I enter "docker ps" it says unknown command. Do I only get access to the home assistant system and not to the dockers?
Indeed installing portainer helps me to see the containers, also there I don't see a container which would be for Sungrow. In the image tab, I can see a list of images and one called "unused:unused" contains information which is related to sungrow.
Maybe someone can guide me to the point where I can enter the above details? Many thanks
Just to make sure, are you using the "Advanced SSH & Web Terminal" Addon? There is a secure mode option. Try disabling this one and see if it helps.
Advanced SSH & Web Terminal
Bad me! The advanced seems to be the key to everything. Just installing, I'll keep you posted. THX
Unfortunately still the same.
When I enter this command: docker tag $old_image ${old_image}-backup
unknown shorthand flag: 'b' in -backup
See 'docker tag --help'.
In the command there is no "empty space" used
bagnging my head here :-(
My guess is, that this returns nothing:
docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1
And since $old_image is nothing, following seems to be executed: docker tag -backup
Does this return anything: docker image list
?
The command:
docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1
returns indeed nothing, just the prompt, should it return something?
The command docker image list
returns a nice list of repositories:
REPOSITORY TAG IMAGE ID CREATED SIZE
f8695bce14a1 2 hours ago 41.6MB ghcr.io/home-assistant/aarch64-hassio-supervisor 2023.12.0 e18c9dd86ab6 7 days ago 323MB ghcr.io/home-assistant/aarch64-hassio-supervisor latest e18c9dd86ab6 7 days ago 323MB ghcr.io/home-assistant/aarch64-base 3.16 d98f83db236d 9 days ago 41.6MB ghcr.io/alexbelgium/portainer-aarch64 2.19.4-3 8755ad924606 10 days ago 396MB ghcr.io/hassio-addons/ssh/aarch64 17.0.0 a305baf6b771 12 days ago 336MB d11097f030bd 2 weeks ago 521MB eeb054de/aarch64-addon-modbus_inverter 0.3.9 b662a5bf9baf 2 weeks ago 521MB ghcr.io/home-assistant/aarch64-hassio-cli 2023.11.0 7f39130b9251 4 weeks ago 129MB homeassistant/aarch64-addon-mosquitto 6.4.0 4cece12b2a0d 4 weeks ago 210MB homeassistant/aarch64-addon-ssh 9.8.1 b88a958e2f53 5 weeks ago 210MB ghcr.io/home-assistant/raspberrypi3-64-homeassistant 2023.11.1 4b9f6af13272 6 weeks ago 1.89GB 86f8e516bdcb 6 weeks ago 501MB ghcr.io/home-assistant/aarch64-hassio-audio 2023.10.0 0e25e5266546 7 weeks ago 162MB b0b94f8f6503 8 weeks ago 501MB ghcr.io/home-assistant/aarch64-base 81c12ba075a9 8 weeks ago 113MB ghcr.io/home-assistant/aarch64-base latest 40c0b5b95259 8 weeks ago 122MB bf9026bb6dc9 2 months ago 501MB 4a0b86523bfd 2 months ago 501MB ghcr.io/hassio-addons/vscode/aarch64 5.12.1 aee3da665843 2 months ago 952MB ghcr.io/home-assistant/aarch64-base 38221e77252e 2 months ago 122MB f6d48571890f 2 months ago 501MB ghcr.io/home-assistant/aarch64-base 5ef019e5ae9e 2 months ago 113MB ghcr.io/home-assistant/aarch64-base d3302f0a6b33 2 months ago 122MB ghcr.io/home-assistant/aarch64-hassio-dns 2023.06.2 9dd40b04adb7 5 months ago 140MB ghcr.io/home-assistant/aarch64-hassio-multicast 2023.06.2 b06077afe00c 5 months ago 125MB ghcr.io/home-assistant/aarch64-hassio-observer 2023.06.0 1b4771b44876 5 months ago 7.49MB homeassistant/aarch64-addon-samba 10.0.2 c64020e155b0 7 months ago 172MB
After looking into the image > none tag none and image ID f8695b.... I can see it contains a lot of environment variables with gosungrow.
@dimafemabo I suppose that's why the gist I pointed you to had:
echo
commands plus examples of the kind of output you should expect to see.If your question had been "the echo $old_image
doesn't return anything" we might've got here much faster.
Here's what I see when I run either docker images
or docker image list
(they're really the same command) on my own system right now (after the steps in the gist):
BEFORE I did the steps in the gist, my system looked like this:
The output from your system is a little bit tricky to interpret because I'm not 100% sure of what I'm seeing (a screen shot would help) but it looks to me like:
As an example of unused images, your output seems to contain six ghcr.io/home-assistant/aarch64-base
images while mine only has a single ghcr.io/home-assistant/amd64-base
image. In one sense, old unused images don't matter. All they do is occupy space on your disk. But, if HA should be cleaning up old images as it goes then the presence of old unused images might indicate that something else is wrong. I don't know enough about HA to say whether this is safe to ignore or not.
You could try cleaning up the old images by running:
# docker system prune -f
And then try installing the GoSungrow add-on. If you're about to tell me that GoSungrow is installed then I'd suggest:
docker system prune -f
command as above.If, after reinstalling, the echo
commands in gist step 4 still don't return sensible values then:
docker images
.If prune
doesn't get rid of images that only have imageIDs (ie no names) then you can try brute force:
# docker rmi <imageID>
Just copy/paste each <imageID>
in turn until they are all gone. Docker won't let you remove any images that are actually in use by a running container - but the fact that an unnamed <imageID>
is still in use can also tell you something about what's running so perhaps capture that output too if it happens.
THANKS ALOT!!! To start from scratch: Yes I used the "advanced"ssh tool. Sorry for not beeing able to produce that "echo $old_image" as I am a newbe on this one. However, let me thank you a thousand times!
docker system prune -f
really did the job and deleted a lot of unnamed images.
I am happy to report all worked well and all the information is back in the system. Thanks for the patience and help received here! Amazing!
But what does the new key look like? For all users not using a docker container...
@FHoevi it is not just the APIKEY that needs updating. You need to recompile GoSungrow as well. That's because the Sungrow cloud API changed too.
This gist has step by step instructions.
The first part of the gist is for people who are not using Docker. It explains how to recompile GoSungrow with the necessary patches, and then how to change the APIKEY for the runtime environment.
The second part of the gist (starting at "Hack - getting the new binary into HomeAssistant") is for people using the GoSungrow add-on with Home Assistant. It explains how to fake Home Assistant into using a replacement Docker image, and then how to change the APIKEY inside Home Assistant.
As a side note, there was a comment in one of the threads about this problem where the person was using Home Assistant but believed they were not using Docker. That was a misunderstanding by that person but I have no idea whether that is a common misunderstanding. So, just to be 100% sure: if you are using Home Assistant then you are using Docker, and the second part of the gist is what you need.
@Paraphraser Thanks a lot for this clarification, it's really helpful. And I have to confess that it's good to read anything first. Until now I did not know enough about Go, but what you state above makes perfect sense to me. But in general I wonder why this addon was not coded in Python instead of Go because of things like this overhead. I already asked MickMake whether he could provide some background on how the Sungrow API actually works to set up something similar in Python but so far there was no response. I've already started something with very limited success but maybe the necessary effort to dive deep enough into Go to understand how the addon works is limited, let's see.
hi,
i found a fix in the issues of the Go Sungrow projekt. The Community over ther fixed the whole thing.
MickMake/GoSungrow#101 (comment)
Yoe need the "Advanced SSH & Web Terminal" Addon and run it without web protection. Connect via ssh (e.g. putty) and run the shell command to replace the docker image. Add the new passkey to the go sungrow config and restart.
worked for me
In the meantime, I've added my hack to the same gist in case the same approach is useful for anyone else.
Thank you @Paraphraser for that helpful gist! I have no experience with HomeAssistant, but I've managed to build, push and test docker images for the addon on all platforms, here is a simplified way to do a hack now:
1. connect to the HA instance over ssh 2. run:
old_image=`docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1`; new_image=`echo $old_image | awk -F/ '{print"triamazikamno/"$2}'`; docker tag $old_image ${old_image}-backup; docker pull $new_image; docker tag $new_image $old_image;
3. go to the HomeAssistant GUI, Settings, Add-ons, GoSungrow, Configuration tab and change sungrow_appkey to `B0455FBE7AA0328DB57B59AA729F05D8`
Restart GoSungrow when it prompts.
Worked perfectly for me thanks!
hi, i found a fix in the issues of the Go Sungrow projekt. The Community over ther fixed the whole thing. MickMake/GoSungrow#101 (comment) Yoe need the "Advanced SSH & Web Terminal" Addon and run it without web protection. Connect via ssh (e.g. putty) and run the shell command to replace the docker image. Add the new passkey to the go sungrow config and restart. worked for me
In the meantime, I've added my hack to the same gist in case the same approach is useful for anyone else.
Thank you @Paraphraser for that helpful gist! I have no experience with HomeAssistant, but I've managed to build, push and test docker images for the addon on all platforms, here is a simplified way to do a hack now:
1. connect to the HA instance over ssh 2. run:
old_image=`docker image list --format 'table {{.Repository}}:{{.Tag}}' | grep gosungrow | grep -vE 'triamazikamno|backup' | head -1`; new_image=`echo $old_image | awk -F/ '{print"triamazikamno/"$2}'`; docker tag $old_image ${old_image}-backup; docker pull $new_image; docker tag $new_image $old_image;
3. go to the HomeAssistant GUI, Settings, Add-ons, GoSungrow, Configuration tab and change sungrow_appkey to `B0455FBE7AA0328DB57B59AA729F05D8`
Restart GoSungrow when it prompts.
Worked perfectly for me thanks!
Hi,
I was trying to get the GoSungrow add-on to work, but have the same as many: Error: appkey is incorrect 'er_invalid_appkey'.
What would be the correct way to handle in case like mine where HA is running as a virtual machine on my Synology NAS. Some help to get me on my way is much appreciated . tnx.
@seppil To answer your question, it should not matter. I'm running Home Assistant on top of Proxmox-VE on an old Intel-based Mac Mini. The fact that it's a guest VM doesn't affect anything. It all works just fine.
I understand that you might not think of saying more than "this is the error I am getting" but it will help the people trying to help you if you explain what steps you have already taken. I'm assuming you've already read through the earlier posts in this issue and, in particular, the bits you included as a quotation.
Questions:
Did you follow the steps in part 2 of this gist? It's a yes or no question. If you answer "no" then please follow the gist.
If you answer "yes" (or if you try following the gist and still get the error) then please go into the terminal session and type the following commands:
docker ps
docker images
You should get something like the screen shot below:
Please take a screen shot of what you see and include it in your reply.
Go to Home Assistant » Settings » Add-ons » GoSungrow. Click on the Configuration tab and confirm that the sungrow_appkey
is "B0455FBE7AA0328DB57B59AA729F05D8". In other words, I'm asking you to confirm both that you changed the AppKey and clicked the Save button to make the change stick.
Thank you @Paraphraser I my search on the issue I have completely missed the reference to the gist you mention at 1. I followed up on this and now the add-on starts.
Now to continue and have the info show up my energy dashboard..
Hi all, dear @Paraphraser, after quite a while of not being able to work on this I finally just got it working in my WSL following the lines of your gist for using GoSungrow from command line. Thanks a lot for that, very useful and excellent work! Anything's set up correctly now such that I can try to extract all the historic data I actually need. Current values are already tracked directly off the inverter and I would only need to add the historic data to my InfluxDB instance. Is there any advice on this task?
Best
@FHoevi I think the first question I need to ask you is:
If you are using InfluxDB 2.0 then I'm afraid I can't help you.
When I started down the MING-stack path (Mosquitto, InfluxDB, Node-RED, Grafana), InfluxDB was at 1.x and had advanced to 1.8 when InfluxDB 2.0 became the new kid on the block.
I've dipped a toe into the InfluxDB 2.0 waters on a few occasions but each time I've come away thinking that it's pretty much unsuitable for practical use. Opinions are, of course, like a-holes, but that's mine.
I've written about some of the problems I see with InfluxDB 2 here but the issues run deeper than that. I once helped someone on Discord figure out how to extract data from InfluxDB 2 in CSV. It took forever and the answer was closer to a case-specific hack than it was a general-purpose boilerplate solution which could be adapted to other cases. In particular, while it was just (barely) possible to get data out in CSV, I didn't find anything which led me to believe it was either possible or any simpler to get CSV-data into InfluxDB 2.
For all I know, there are trivial solutions to CSV export/import and I just didn't look hard enough. And that's the real problem I see with InfluxDB 2: useful documentation and useful concrete examples that you can learn from are incredibly scarce. Plus, because of how InfluxData is now focusing on InfluxDB 3, I doubt the situation for InfluxDB 2 will ever get any better.
All of which is a very long-winded way of saying:
Now, if your answer to the first question was "InfluxDB 1.8" then I can help you. You can easily populate databases using "line protocol". This is the syntax:
«measurement»{,«tagkey»=«tagvalue» ...} «fieldkey»=«fieldvalue»{,«fieldkey»=«fieldvalue» ...} «timestamp»
In words:
Tag values must be strings but should not be quoted. Tag values which contain embedded spaces can be a pain to deal with in queries so it's better to avoid that if possible. If you can't avoid embedded spaces then they need to be escaped with back-slashes (eg this\ and\ that
).
Field values may be strings (or integers, reals, Booleans). Strings should be enclosed in double quotes.
Here's a concrete example of a combined anemometer + wind-vane observation:
wind,device=gizmo compass="NNW",heading=341.6,wind=6.9,gust=8.6 1608531863682117605
So, basically, you get all the data you want to import into line format. In my experience, the trickiest bit is getting the timestamp right. If you only have hours, minutes, seconds then pad to nanoseconds with zeroes.
Once you have all your raw data in line format, you whack this header on the top:
# DDL
CREATE DATABASE «database»
# DML
# CONTEXT-DATABASE: «database»
Although that last line looks like a comment, I believe it's significant.
All up:
# DDL
CREATE DATABASE farm
# DML
# CONTEXT-DATABASE: farm
wind,device=gizmo compass="NNW",heading=341.6,wind=6.9,gust=8.6 1608531863682117605
…
wind,device=gizmo compass="ENE",heading=61.3,wind=2.2,gust=2.6 1713055768735674537
If you're running InfluxDB in a Docker container, you need to get the file somewhere the container can see it. That could be in a persistent store. I find it just as easy to copy the file into the container:
$ docker cp example.txt influxdb:/example.txt
Then, to perform the actual import:
$ docker exec influxdb influx -import -path=/example.txt
If you are running InfluxDB "natively" then you already know the path to the file and you just drop the docker exec influxdb
from the above.
Given that actual content in the file example.txt
(minus the line with …
) and running the import command above:
$ influx
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> use farm
Using database farm
> select * from wind
name: wind
time compass device gust heading wind
---- ------- ------ ---- ------- ----
2020-12-21T06:24:23.682117605Z NNW gizmo 8.6 341.6 6.9
2024-04-14T00:49:28.735674537Z ENE gizmo 2.6 61.3 2.2
> select * from wind tz('Australia/Sydney')
name: wind
time compass device gust heading wind
---- ------- ------ ---- ------- ----
2020-12-21T17:24:23.682117605+11:00 NNW gizmo 8.6 341.6 6.9
2024-04-14T10:49:28.735674537+10:00 ENE gizmo 2.6 61.3 2.2
> exit
$
One final thought. You can get away from expressing time in nanoseconds but you need to pass the precision
argument to the import command, such as -precision=s
if you only have data to the second, or -precision=ms
if you have it to milliseconds.
Dear @Paraphraser, thanks a lot for your exhaustive answer, it is really appreciated. According to the system's info InfluxDb 1.8.10 is installed such that I could go the way you outlined above. Would you recommend to walk through InfluxDb, at least in parts?
I'm sorry but I'm not sure I understand your question.
Yes, your link to the InfluxDB 1 documentation has any reference material you're likely to need.
What "system" are you talking about?
To try to set the scene, I spend most of my time over on IOTstack which, at its core, is an efficient way to set up a MING stack (Mosquitto, InfluxDB, Node-RED, Grafana). There's documentation on its wiki, and the main home page (first link) has a link to a Discord channel.
How I am using GoSungrow myself has nothing to do with any of that. I just have a cron
job which runs at 3am each day to download "yesterday's" data for some selected end-points, which is then loaded into an SQLite database. The variant of GoSungrow I'm using is the recompiled binary (gist part 1). I'm just continuing a time-series that began with an older SolaX inverter. I have never really cared all that much about what my inverter (either SolaX or Sungrow) is doing either "now" or "today" and, to the extent that I ever do, I just use the iSolarCloud app.
I mention that so you understand that what I say next is theoretical. If I did decide that I needed a Grafana dashboard with up-to-the-moment metrics from the Sungrow inverter, I'd probably:
docker-compose.yml
);Why step 1? So that the GoSungrow container could easily reference the Mosquitto container across the internal bridged network which is created automatically by docker-compose to be shared among the containers mentioned in the same docker-compose.yml
.
Why step 2? Because the work is already done by IOTstack. No need to reinvent any wheels.
There's some how-to on step 3 in another gist I wrote here.
Once the data is in InfluxDB, you can visualise it however you like in Grafana.
So, that would be my "system". What's yours?
And, irrespective of how you're using InfluxDB 1.8, you're probably going to get a better initial feeling for the things you might need to consider by reading the IOTstack InfluxDB documentation before reading the InfluxData docs. It's one of those things where it can help to have a bit of a handle on the language being used before you do a deep dive into the official stuff.
Hi @Paraphraser, sorry for not being precise enough, when I was talking about "system" I was referring to my HA installation which is running on a standard RPi4. Regarding the inverter HA is retrieving current realtime values directly from it via HACS Sungrow integration. These readings go straight into a MariaDB instance and, finally, into InfluxDB for long-term storage.
The only purpose for me using GoSungrow would be to extract historic readings from iSolarCloud, transform them and put them into InfluxDB. Hopefully I would only need to do it once.
That's pretty much it on my side.
i get an error that said Error: unknown error 'Missing parameter in request header: x-access-key' what is this key and how do i enter it
Hey together,
i noticed the addon crashing since this morning. The log shows an thrown 'er_invalid_appkey' error:
Is there a way to get an own api key instead of the default one?