lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
953 stars 225 forks source link

Live View - Inverter Limit mehr als 100% #447

Closed Waldo56 closed 1 year ago

Waldo56 commented 1 year ago

Platform

ESP8266

Model name

No response

nRF24L01+ Module

No response

Antenna

circuit board

Power Stabilization

~100uF Elko

Connection diagram

Connection diagram I used:

nRF24L01+ Pin ESP8266 GPIO
Pin 1 GND [*] GND
Pin 2 +3.3V +3.3V
Pin 3 CE GPIO2 CE D4
Pin 4 CSN GPIO15 CS D8
Pin 5 SCK GPIO14 SCLK D5
Pin 6 MOSI GPIO13 MOSI D7
Pin 7 MISO GPIO12 MISO D6
Pin 8 IRQ GPIO0 IRQ D3
nRF24L01+ Pin ESP32 GPIO
Pin 1 GND [*] GND
Pin 2 +3.3V +3.3V
Pin 3 CE GPIO4 CE D4
Pin 4 CSN GPIO5 CS D5
Pin 5 SCK GPIO18 SCLK D18
Pin 6 MOSI GPIO23 MOSI D23
Pin 7 MISO GPIO19 MISO D19
Pin 8 IRQ GPIO0 IRQ D0

Note: [*] GND Pin 1 has a square mark on the nRF24L01+ module

Connection picture

Version

0.5.41

Github Hash

dec333f

Build & Flash Method

ESP Tools (flash)

Desktop

Windows

Setup

Device Host Name

- Device Name: AHOY-DTU

WiFi

- SSID: YOUR_WIFI_SSID *don't paste here*
- Password: YOUR_WIFI_PWD *don't paste here*

Inverter

Inverter 0

- Address: 1141752123456
- Name: HM-600
- Active Power Limit: 65535
- Active Power Limit Control Type: no powerlimit
- Max Module Power (Wp): 375, 375
- Module Name: link, rech

General

- Interval [s]: 30
- Max retries per Payload: 5

NTP Server

- NTP Server / IP: pool.ntp.org
- NTP Port: 123

MQTT

- Broker / Server IP: 
- Port: 1883
- Username (optional): 
- Password (optional): 
- Topic: inverter

System Config

Pinout (Wemos)

- CS: D8 (GPIO15)
- CE: D4 (GPIO2)
- IRQ: D3 (GPIO0)

Radio (NRF24L01+)

- Amplifier Power Level: LOW

Serial Console

- print inverter data: [x]
- Serial Debug: [x]
- Interval [s]: 5

Debug Serial Log output

No response

Error description

Screenshot_20221121-163917_Chrome

Manchmal wird beim eingestellten Inverter Limit mehr wie 100% angezeigt. Ich vermute es passiert durch Übertragungsfehler bei der Kommunikation. Sind die empfangenen Daten nicht auch mit CRC geschützt? Vielleicht wäre ein Wertebereichscheck hilfreich. Sollte der Wert größer als 100% sein dann vielleicht n/a anzeigen.

stefan123t commented 1 year ago

Du hast einen HM-600 oder einen HM-800, Deine Angaben im Template widersprechen den Screenshots ? Hast Du das PowerLimit mit 100% permanent mal auf den Default gesetzt ?

Ich kann mich erinnern dass es ggf. bei auf 70% gedrosselten HM-300 sehr seltsame Zahlen herauskommen, da diese über das GridProfile entsprechend bereits auf 70% gedrosselt sind, d.h. bei 100% kommen irgendwelche Kommazahlen raus.

Aber das bei Dir sieht anders aus, kannst Du das Verhalten reproduzieren und ggf die Ausgabe der USB Serial Console beisteuern ? Dazu bitte ggf. die Option [x] Serial Debug unter System Config im Setup ankreuzen, speichern und neu booten.

Es interessieren vor allem das ActivePowerLimit 0x0B und das SystemConfigPara 0x05 Kommando

Waldo56 commented 1 year ago

Werde versuchen es zu reproduzieren. Wir haben 2xHM800. Der 2. HM800 (der diesen Wert zeigt) ist aber ca. 50m weit weg.

Argafal commented 1 year ago

I have the same issue with my HM-1500s. And interesting enough: I get the same wrong value 202.1%, so something seems to be special about it. I get the wrong value only sometimes, with no clear pattern when. I did not set a production limit.

AsFaBw commented 1 year ago

Gleiches Verhalten bei mir (die 202.1% bei einem HM-800). SW Version 0.5.28

DisplayHM800_200WattAbsolutLimitInWattPersistent_0_5_28

stefan123t commented 1 year ago

It is probably a wrong attribution of responses from the inverter on some of our commands. We ask for A and later for B and only then receive the response for A (or the other way round), which is eventually yielding the wrong value. We need some more evidence based on log files where the above commands are logged in. Make sure you enable [x] Serial Debug under Setup > System Config. Thanks!

Waldo56 commented 1 year ago

Will do.

stefan123t commented 1 year ago

@Waldo56, these are the three common 0x15 DeviceInfo Sub Commands that we execute in row after each other:

I: (#1) enqueuedCmd: 11 <-- SubCommand 0x0b RealTimeRunData_Debug
I: (#1) enqueuedCmd: 1 <-- SubCommand 0x01 InverterDevInform_All
I: (#1) enqueuedCmd: 5 <-- SubCommand 0x05 SystemConfigPara

@lumapu could we add the above SubCommand comments / explanation to the enqueuedCmd Informational message in order to make it more readable ?

They all use the sendTimePacket Method to send the command to the inverter together with the current timestamp.

I: TX 27B Ch40 |>15<75 21 23 45 87 65 43 21 80>0B<00 63 7F 71 26 00 00 00 00 00 00 00 00 14 5E EF 
...
I: TX 27B Ch61 |>15<75 21 23 45 87 65 43 21 80>01<00 63 7F 71 4A 00 00 00 00 00 00 00 00 1C A9 76 
...
I: TX 27B Ch75 |>15<75 21 23 45 87 65 43 21 80>05<00 63 7F 71 68 00 00 00 00 00 00 00 00 79 2C B0 

We cannot see from an individual response for which of the SubCommands the response by the inverter was actually meant for. We only see that it is a response to one of the 0x15 DeviceInfo Commands (REQ_ARW_DAT_ALL) we sent, as they all contain the answer code 0x95 which is the complement of the original query DeviceInfo command (REQ_ARW_DAT_ALL | 0x80). E.g.:

I: TX 27B Ch23 |>15<75 21 23 45 87 65 43 21 80>05<00 63 7F 71 68 00 00 00 00 00 00 00 00 79 2C B0 
I: RX 27B Ch61 |>95<75 21 23 45 75 21 23 45 81 00 01 03 E8 00 00 03 E8 FF FF FF FF 01 68 7D F8 F9 
I: procPyld: cmd:  5
I: procPyld: txid: 0x95
I: Payload (14): 00 01 03 E8 00 00 03 E8 FF FF FF FF 01 68 
mroenne2022 commented 1 year ago

Hallo, ich hab bei mir ebenfalls den Effekt das nach dem Updates eines meiner Ahoy's von 0.5.17 auf 0.5.41 das InverterLimit mit 202,1 % angzeigt wird. Ich hab da selbst noch nie irgendeinen Wert selbst eingegeben. Der andere Ahoy noch mit der FW Version 0.5.17 zeigt 100% richtig an. Ich hab einen HM600 in Betrieb, die beiden Ahoy sind ESP8266 / D1 Wemos Mini. Ich les hier mal mit um zu sehen wie das ggf gelöst wird. VG Michael Limit_Inverter

stefan123t commented 1 year ago

@mroenne2022 habt ihr da zwei DTUs parallel laufen, das verstärkt ggf. die Problematik dass die DTU nicht weiß auf welches Kommando der WR gerade antwortet.

mroenne2022 commented 1 year ago

Hallo stefan123t, nein nein .... immer nur EINE DTU zur Zeit in Betrieb, NIE zur gleichen Zeit. Ich hab mir lediglich mehrere gebaut , z.T. mit verschiedener HW (ESP32 WROOM und ESP8266 D1 Mini). Einmal weil ich Lust hatte dazu, um mal zu testen oder auch um Ersatz zu haben falls mal etwas nach Update nicht mehr läuft ! Heute hab ich die mit der 0.5.41er FW am laufen und hab das Limit über Serial Console einfach mal auf 100% gesetzt, nun ist die Anzeige im Ahoy auch in Ordnung und zeigt die 100% richtig an. Ich hatte den Pkt gestern erst vermisst, dann aber gelesen das er ab 0.5.28 zur Serial Console gewandert ist :-) Im übrigen ist das eine tolle Sache die ihr hier bei diesem Projekt leistet, Vielen Dank dafür ! Gruß Michael R.

Waldo56 commented 1 year ago

Ich habe nur eine DTU.

AsFaBw commented 1 year ago

Ich habe auch nur eine DTU. Was ich aber nicht ausschliessen kann, ist, dass ich eine Web Session via Rechner und eine Web Session via Phone Richtung Ahoy offen hatte. Kann es sein, dass die Refreshs der Beiden (Phone & Rechner) irgendwie eine Race condition innerhalb Ahoy erzeugen?

stefan123t commented 1 year ago

@Waldo56 und @mroenne2022 Das aktuelle Power Limit wird m.W. über das Kommando 0x05 SystemConfigPara abgefragt (siehe > Traces). Das wird aber nur beim Starten des ESP einmal oder nach dem Setzen des Power Limits enqueued und abgefragt.

Um Eure Problem näher zu einzugrenzen bräuchten wir die Antworten auf das SystemConfigPara Kommando:

11:25:37.358 > TX Channel: 61 --> >15< <71 60 35 46> <78 56 34 12> 80 >05< 00 63 30 1E 8B 00 00 00 00 00 00 00 00 16 A7 8D 
11:25:37.416 > RX >95< <71 60 35 46> <71 60 35 46> >81< 00 01 03 D4 00 00 <03 E8> FF FF FF FF 01 68 2D 38 55 

Hier wird das MainCmd 0x15 mit SubCmd 0x05 an den WR <71 60 35 46> von der DTU <78 56 34 12> per TX gesendet. Dann kommt die Antwort vom WR an die DTU per RX als 0x95 MainCmd mit einem Single Frame bzw. dem letzten Antwort Paket Nummer 0x81. Hier steht das aktuelle Power Limit in Prozent 0x03 E8 = 1000 das bedeutet als Zahl mit einer fixen Nachkommastelle: 100.0 %

mroenne2022 commented 1 year ago

Hallo Stefan, ich muss mal sehen ob der Effekt morgen überhaupt noch existiert. Ich hatte es ja nur nach dem Update auf 0.5.41 (von 0.5.17) bei der einen DTU zufällig gesehen, heute hab ich den Wert dann einfach im Menue Serial Console auf 100% gesetzt, seit dem wird er auch richtig angezeigt. Morgen am Tage werd ich sehen wie es aussieht, tritt das wieder auf werde ich versuchen die Outputs der Kommandos zu bekommen.

mroenne2022 commented 1 year ago

Moin @stefan123t , der Effekt mit der Limit Anzeige über 200% tritt nun nicht mehr auf. Kam nur direkt nach dem FW Update, seit ich den Wert dann in der Serial Console 1mal auf 100 gesetzt hab ist alles OK , auch heute morgen nachdem der WR wieder erwacht ist alles OK. Für mich ist das in Ordnung , läuft alles prima !! VG Michael Limit

Waldo56 commented 1 year ago

Hatte es heute wieder bei dem HM800, der zirka 40m weit von der DTU entfernt ist. Diesmal auch mit last alarm = unknown. Der HW Watchdog der DTU spricht etwa einmal pro Tag an. Werde jetzt mal den HM800 auf 100% konfigurieren und versuchen vom log einen Screenshot zu machen. Da es immer der gleiche Wert ist habe ich schon an ein Muster gedacht -> 2021 -> 07E5h.

Screenshot_20221201-140833_Chrome Screenshot_20221201-140634_Chrome

mroenne2022 commented 1 year ago

Oh shit 🤔 40m ist tatsächlich ne Menge. Bei mir ist der WR gerade mal 4-5m von der DTU entfernt, eine Ü-Ton Steinmauer dazwischen, aber die Verbindung klappt sehr gut. Läuft auch jetzt seit gestern problemlos mit der richtigen Limit-Anzeige.

Waldo56 commented 1 year ago

Bei mir war zwischen den falschen Anzeigen zirka eine Woche mit richtigen Werten. Nicht zu früh freuen.😀

mroenne2022 commented 1 year ago

Ok 😃 Ich werde es sowieso weiterhin beobachten, ggf melde ich mich hier wieder wenn es tatsächlich nochmal auftritt. Wie schon gesagt - nach dem Update auf 0.5.41 trat es dauerhaft auf, seit dem ich den Wert dann unter Serial Console einmal auf 100% gesetzt hab ist es in Ordnung. Das ganze ist aber erst wenige Tage her alles.

steve-zero commented 1 year ago

Bei mir kommt auch immer wieder nach einiger Zeit die 202.1%. Firmwareversion ist egal. Bin derzeit auf der 0.5.41 und habe es gerade wieder. Neusetzen hilft, aber wer weiß für wie lange...

mroenne2022 commented 1 year ago

Ich hab das mit der 0.5.17 nie gehabt, nur einmal nach Update auf 0.5.41 . Danach einmal neu gesetzt und bisher nicht wieder aufgetreten, ich beobachte es weiter ob es wieder auftritt.

stefan123t commented 1 year ago

We need some more evidence based on log files where the above 0x05 SystemConfigPara commands are logged in.

Make sure you enable [x] Serial Debug under Setup > System Config. Thanks!

mroenne2022 commented 1 year ago

@stefan123t : Sobald der Fall mit den 201% bei mir tasächlich nochmal auftritt werd ich versuchen die Outputs zu bekommen, oder ist das auch jetzt noch aussagekräftig wenn die Anzeige richtig 100% anzeigt. Falls JA , werd ich morgen mal Debug einschalten und gucken was kommt.

lumapu commented 1 year ago

ich sehe das auch an und zu, konnte aber noch keine Payload/ Debug print dazu einfangen. Bei mir sind es dann 202%

Ich kann mir vorstellen, dass es daran liegt, dass wir zwei Kommandos mit gleich langer Payload bekommen (FW Version und das Power-Limit). Als Abhilfe können wir die Reihenfolge der enqueue commands ändern, sodass zwischendrin eine längere Payload erwartet wird.