Some inverter settings via cloud API fail since 11:pm last night

31 comments started 2024-03-11 last 2024-03-11
Home Automation
P
#1 Pootle

Since 23:10 last night I am getting inverter timeout from both my inverters on some (not all) settings.
The ones that fail always fail. The portal remote control though can still access the failing ones OK.
HELP!
These fail

  • AC Charge 1 Start Time
  • AC Charge 1 End Time
    but others I read (like AC Charge Upper % Limit) are still working fine
    here's the request info for 1 of the failures:
    "verb": "POST",
    "url": "https://api.givenergy.cloud/v1/inverter/xxxxxxxxxx/settings/17/read",
    "payload": null,
    "r_status": 201,
    "r_json": {
    "data": {
    "value": -1
    }
    }
D
#2 DD

Pootle That's odd... I thought these returned the values cached on the portal, rather than actually reading from the inverter. Oh well... always something new to learn.

When you say the portal can get them, you mean if you force it to re-read from inverter?

Hmm ... looks like my script may also have failed last night, at 2325

P
#3 Pootle

DD If i prod it manually through the remote control page of the web portal it works OK, if I try via the API service it fails - every time

and

V
#4 Vestas

The portal was playing up first thing this morning 0600(ish). Wouldn't populate anything correctly on the inverter remote control page. Also only logs a read if the data has changed from what the portal thinks it is.

D
#6 DD

Looks like my 7am script also failed.

V
#7 Vestas

hoggy Only a matter of time until they screw up people on G1 inverters with the non-beta firmware installed.....

#8 hoggy

Vestas hope not, I've got 2 (and a half!) of the old G1s and none of them have the capacitor in them to run the newer firmwares.

D
#9 DD

Doh! My problems may be my own fault - keys have probably expired 😥

S
#10 simont

I noticed I got no data via givctp overnight. I tried the restarting of inverter and givtcp but nothing, getting garbled response error in givtcp log. I turned off Is it on old firmware? setting and restarted and then turned it back on and now seems to be working again

V
#11 Vestas

hoggy It'll happen. From what I can see there isn't acceptable software build control taking place so its only a matter of time before they break it.

Edit - in fact they already have. Go to the portal, My Inverter->Remote Control then scroll down and press the "Read Category" button in Charge/Discharge Schedules and watch it fail. Every time.

S
#12 SJB

Vestas Edit - in fact they already have. Go to the portal, My Inverter->Remote Control then scroll down and press the "Read Category" button in Charge/Discharge Schedules and watch it fail. Every time.

I've seen this fail a number of times, but it worked for my Gen 1 inverter a few minutes ago. I suspect it is just a communications fault.

V
#13 Vestas

SJB What firmware is your Gen 1 Hybrid on?

S
#14 SJB

Vestas D0.450-A0.451

V
#15 Vestas

SJB That's odd. Just tells me it can't read the first charge slot register - timeout (which is -1 in the API).

Reading using the individual refresh icons for each charge/discharge slot works but isn't logged as having happened unless the value is different.

S
#16 SJB

Vestas Ah ... Read Category - you're right that doesn't work, must have not read that bit, sorry.

P
#17 Pootle

Vestas turn off "filter same value responses" at the bottom of the page and all is revealed!

V
#18 Vestas

Pootle Thank you.

Priceless that the default is now to filter errors.

D
#19 DD

Pootle For 17 ('Enable AC Charge Upper % Limit') I'm getting other errors:

read 17 got -6: retrying
read 17 got -6: retrying
read 17 got -2: retrying
read 17 got -2: retrying
read 17 got -2: retrying

I have multiple slots advertised as upper charge limit:

 77 AC Charge Upper % Limit                  : Value must be between 0 and 100
101 AC Charge 1 Upper SOC % Limit            : Value must be between 0 and 100
395 Charge SOC % Limit 1                     : Value must be between 4 and 100

I can read the first two, but the last just gives -1.

P
#20 Pootle

yup the percentages work OK
I can read 17, 24, 47, 56, 66, 71, 72, 73, 77 OK
363 and 364 fail to read (-1) and also fail to write with a timeout as well
looks like the updated the service at 11pm last night, and it is failing.
The help desk seem unusually busy as well !
I hope they have a roll back capability

P
#21 Pootle

DD Are your -6 and -2 errors hard? looks like they may be transient. -6 suggests they are tinkering with the service....

D
#22 DD

Pootle I am now able to read setting #17

363 is 'AC Charge 1 Start Time', but there's also one of those at 64.

 64 AC Charge 1 Start Time                   : Value format should be HH:mm. Use correct time range for hour and minutes
 65 AC Charge 1 End Time                     : Value format should be HH:mm. Use correct time range for hour and minutes
 66 AC Charge Enable                         : Value must be either true or false
360 Charge Power Rate                        : Value must be between 1 and 100
361 Charge Up To %                           : Value must be between 5 and 100
362 Enable AC Charge                         : Value must be either true or false
363 AC Charge 1 Start Time                   : Value format should be HH:mm. Use correct time range for hour and minutes
364 AC Charge 1 End Time                     : Value format should be HH:mm. Use correct time range for hour and minutes
365 AC Charge 2 Start Time                   : Value format should be HH:mm. Use correct time range for hour and minutes
366 AC Charge 2 End Time                     : Value format should be HH:mm. Use correct time range for hour and minutes

I get

64 00:30
read 363 got -1: retrying
read 363 got -1: retrying
read 363 got -1: retrying
read 363 got -1: retrying
...
P
#23 Pootle

DD well spotted. Dunno why they do this weird shit, but I changed my code to use the lower valued entry and that works OK.
I see that 'AC Charge 2 Start Time' now has 3 values 28, 102 and 365. Strewth!
Well my scheduler is working again, I shall retire to a safe distance and not touch anything!

D
#24 DD

Pootle A problem I recently found was that we have

 77 AC Charge Upper % Limit                  : Value must be between 0 and 100
101 AC Charge 1 Upper SOC % Limit            : Value must be between 0 and 100

and (I think) the app and portal modify #77, but my hybrid inverter actually uses #101. Which isn't ideal.

P
#25 Pootle

It all looks a bit grewsome to me, I'm beginning to think software using this api needs to have a variety of options that it tries and then chooses the one that works!

D
#26 DD

Pootle I'm beginning to think software using this api needs to have a variety of options that it tries and then chooses the one that works!

I imagine it certainly makes it tough for @Wonder Watt which has to work on multiple hardware and firmware revisions. Not quite so bad for those of us who (for the most part) can just find the registers that work on their own hardware.

#27 Wonder Watt

DD Yeah, we don't touch the high hundred registers, and try and stick to the fairly lower 'vanilla' registers.

So far, they've been pretty backwards compatible....famous last words... 😆

#28 Wonder Watt

DD I think the 77 value is the global value, right?

The 101 is the grouped setting associated with the "AC Charge 1" group settings?

#30 Wonder Watt

DD

Correct. 77 seems to be the one the app modifies, but my inverter doesn't seem to honour that one.

Right. That sounds like a mapping issue on your inverter's firmware? Or possibly from Giv backend middleware mapping -> inverter instruction.

D
#31 DD

Wonder Watt I do have some code somewhere to read the registers directly from the inverter. (The givenergy-modbus stuff.) I kept the output from last time I ran it, and it does show two distinct registers (holding different values).

HR:094                 CHARGE_SLOT_1_START: 00:32                 |  TIME             UNIT   0x0020          32
HR:095                   CHARGE_SLOT_1_END: 04:29                 |  TIME             UNIT   0x01ad         429
HR:116                   CHARGE_TARGET_SOC: 60                    |  PERCENT          UNIT   0x003c          60
HR:242                 CHARGE_TARGET_SOC_1: 100                   |  PERCENT          UNIT   0x0064         100
HR:243                 CHARGE_SLOT_2_START: 00:00                 |  TIME             UNIT   0x0000           0
HR:244                   CHARGE_SLOT_2_END: 00:00                 |  TIME             UNIT   0x0000           0
HR:245                 CHARGE_TARGET_SOC_2: 100                   |  PERCENT          UNIT   0x0064         100
HR:246                 CHARGE_SLOT_3_START: 00:00                 |  TIME             UNIT   0x0000           0
HR:247                   CHARGE_SLOT_3_END: 00:00                 |  TIME             UNIT   0x0000           0
HR:248                 CHARGE_TARGET_SOC_3: 100                   |  PERCENT          UNIT   0x0064         100

I'll get round to playing again and confirm which API slots write to which holding registers.