Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MqTT Push Intervall zu lange in Verbindung mit Shelly3EM für Kompletten Haus Verbrauch #542

Closed
7 of 21 tasks
BambuLap opened this issue Jan 1, 2023 · 14 comments
Closed
7 of 21 tasks
Labels
enhancement New feature or request fixed dev fixed question Further information is requested

Comments

@BambuLap
Copy link

BambuLap commented Jan 1, 2023

Hardware

  • ESP8266
  • ESP32
  • Raspberry Pi

Modelname: ______
Retailer URL: ______

nRF24L01+ Module

  • nRF24L01+ you verified this is a Plus model capable of the required 256kBit/s mode
  • square dot indicates original Nordic Semicon chip
  • round dot indicates copy-cat / counterfeit SI labs chip

Antenna:

  • circuit board
  • external antenna

Power Stabilization:

  • 100uF Electrolytic Capacitor
    connected between +3.3V and GND (Pin 1 & 2) of the NRF Module
  • Voltage stabilizing motherboard

Connection diagram:

  • Image of the your wiring attached

Connection diagram I used:

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

Software

  • AhoyDTU
  • OpenDTU

Version / Git SHA:

Version: 0.5.66
Github Hash: f8fe044 :: 0.5.66

Build & Flash Method:

  • Arduino
  • ESP Tools
  • Platform IO

Desktop OS:

  • Linux
  • Windows
  • Mac OS

Debugging:

  • USB Serial Log (attached)
  • Setup settings (use our templates ... to be added)

Ich komme von openDTU, hier kann man den

MqTT
Publish Interval: 5 seconds
angeben.

Ich erfasse meine Daten alles über mehrere Shelly3EM in verschieden Unterverteilungen.
Diese sind auf 10sec Push programmiert.
Shelly pusht 10mal wenn man glück hat auch die Ahoy 1mal.
Daher passiert es ständig das Daten nicht kommen und somit
meine Berechnung nicht mehr stimmt und lückenhaft ist.

Ist es möglich MqTT Push Interval auf Niveau von openDTU anzupassen?

@DennisXK
Copy link

DennisXK commented Jan 2, 2023

Ja, vor dem Problem werde ich auch bald stehen. man bräuchte eine Synchronisation der einzelen Werten. Vorausetzung sollte aber erstmal ein gleiches Interval sein.

@knickohr
Copy link

knickohr commented Jan 2, 2023

Der Shelly sendet nicht iin regelmäßigen Intervallen, sondern immer wenn sich Werte ändern. Also ist dieser Issue eigentlich sinnbefreit. Man müßte um die Werte alle korrekt für eine Berechnung zu bekommen das erst mal synchronisieren.

@lumapu
Copy link
Owner

lumapu commented Jan 2, 2023

@DennisXK @BambuLap

Schaut euch doch bitte die aktuelle Development Version an, die sendet das Limit jetzt sofort nach Empfang zum Wechselrichter. Version 0.5.68

@BambuLap
Copy link
Author

BambuLap commented Jan 2, 2023

Der Shelly sendet nicht iin regelmäßigen Intervallen, sondern immer wenn sich Werte ändern. Also ist dieser Issue eigentlich sinnbefreit. Man müßte um die Werte alle korrekt für eine Berechnung zu bekommen das erst mal synchronisieren.

Ja, aber in Verbindung mit Calculate nicht mehr sinnbefreit. Wenn Ahoy aber in dieser Zeit nichts pusht passen die Werte nicht mehr.

@Gerri1
Copy link

Gerri1 commented Jan 2, 2023

@BambuLap
Wenn du es so genau haben willst, dann bist du aber mit der Übertragung per Netzwerk auch sehr dünn unterwegs! 😮
Evtl. auf den Wert von Ahoy triggern (zur Berechnung) !

@knickohr
Copy link

knickohr commented Jan 2, 2023

Die Werte passen eigentlich nie ! Dann muß schon alles synchron in der selben Sekunde passieren. Und nicht mal das ist streng genommen korrekt 😉 Es gibt immer einen Versatz, wir wollen jetzt aber nicht päpstlicher als der Papst sein. Mir reichen 30s Intervalle.

@Gerri1
Copy link

Gerri1 commented Jan 2, 2023

Ich mach's alle 60s! 😁

@BambuLap
Copy link
Author

BambuLap commented Jan 6, 2023

Screenshot 2023-01-06 125005

Die Werte passen eigentlich nie ! Dann muß schon alles synchron in der selben Sekunde passieren. Und nicht mal das ist streng genommen korrekt 😉 Es gibt immer einen Versatz, wir wollen jetzt aber nicht päpstlicher als der Papst sein. Mir reichen 30s Intervalle.

Meine Werte passen mit openDTU vielleicht mit 2,5W unterschied damit kann ich aber leben vergleich zur DTSU.

Hab mit dem Inverter Interval gespielt. Gut bei 5Sec läuft es bei Producing bis jetzt ganz gut.

Problem ist wenn HM auf not Producing geht kommen nur alle 60sec Mqtt an. Dies kann ich nicht beeinflussen.
@lumapu Wäre schön wann man dies auch im WebIF ändern könnte so das die Daten weiter gesendet werden.

Und somit wäre das Problem gelöst.

30sec oder 60sec Intervall ist kein Option bei Daten Erfassung dann sprechen wir gleich bei 30W unterschied.

lumapu added a commit that referenced this issue Jan 7, 2023
added SH1106 to automatic build
added IP address to MQTT (version, device and IP are retained and only transmitted once after boot) #556
added `set_power_limit` acknowledge MQTT publish #553
changed: version, device name are only published via MQTT once after boot
added `Login` to menu if admin password is set #554
added `development` to second changelog link in `index.html` #543
added interval for MQTT (as option). With this settings MQTT live data is published in a fixed timing (only if inverter is available) #542, #523
added MQTT `comm_disabled` #529
@stefan123t
Copy link
Collaborator

stefan123t commented Jan 7, 2023

@BambuLap

Ja, aber in Verbindung mit Calculate nicht mehr sinnbefreit. Wenn Ahoy aber in dieser Zeit nichts pusht passen die Werte nicht mehr.

Dann darfst Du eben nur wenn Du vom Ahoy aktuelle Werte bekommen hast die Berechnung durchführen. 😀
Du kannst Dich dann entscheiden ob Du einen Mittelwert der Werte / den letzten Wert vom Shelly verwendest um Deine Berechnung durchzuführen.

Ahoy leitet jetzt ja alle Werte weiter sobald es diese vom WR bekommen hat. Ist das damit für Dich gelöst oder was hättest Du hier gerne anders bzw prinzipiell erreichen ?

Eine Aktualisierung unter 15 Sekunden hatten wir in der Vergangenheit idR nie empfohlen da dies zu instabilem Verhalten des ESP8266 führte. Das sollte mit dem AsyncWebServer zwar weitestgehend behoben sein...

Auch hängt es stark davon ab wieviele WR die AhoyDTU hintereinander abfragen muss. Ich glaube ca 5s war Anfangs das unterste Limit für einen einzelnen Inverter und da waren noch keine weiteren Kommandos zur PowerLimit Anpassung etc im Code vorgesehen.

Wenn die Funkverbindung zwischen AhyoDTU und WR nicht stabil / schnell genug ist, hat das mM nichts mit MQTT und dessen Intervall zu tun. Dh Werte per MQTT als aktuelle Werte auszugeben obwohl Ahoy nicht weiss, was der WR gerade macht ist wie Knickohr schrieb tatsächlich sinnfrei und vermutlich auch nicht was Du willst.

Bitte ggf ein neues Issue aufmachen falls die Funkverbindung nicht stabil ist bzw. ggf mal hier in #523 nachschauen ob das bei Dir auch zutrifft mit dem Parallelbetrieb mehrerer DTUs ?

@BambuLap
Copy link
Author

BambuLap commented Jan 8, 2023

@stefan123t

Ahoy leitet jetzt ja alle Werte weiter sobald es diese vom WR bekommen hat. Ist das damit für Dich gelöst oder was hättest Du hier gerne anders bzw prinzipiell erreichen ?

Genau hier ist das große Problem. @lumapu #542 hat die Option in MQTT Settings Interval [s] mit eingebaut. Angenommen MQTT Settings 5sec Interval sollte die available 0 eines HMs (ich hab 4HMs) Daten gepusht werden und das auch wenn er OFF ist. Man braucht die vailable 0 für die Errechnung mit Shellys für Gesamt verbrauch.

Leider klappt dies noch nicht mit der #542
Im Moment ist es noch so HM OFF kein Push von available 0

Die Funkverbindung ist es auf keine Fall.

Ich komme von openDTU hier gibt es keine Problem lief 3 Monate problemlos kein Rechenfehler der Leistung oder
Funkaussetzer.

Hier Screen Short weil @knickohr das nicht glaubt bei openDTU mit 5sec.

Screenshot 2023-01-08 100318
Screenshot 2023-01-08 105750
Screenshot 2023-01-08 105824

@knickohr
Copy link

knickohr commented Jan 8, 2023

Ja sorry, was nützt es mir denn wen ich alle 5 Sekunden die gleichen Werte vorgehalten bekomme. Die Wechselrichter können nun mal nicht so schnell Werte ausgeben wie die Shellies.

Ein öfteres Ausgeben alter Werte ist in meinen Augen Verschwendung und korrigiert auch keinerlei Berechnungen. Ich schätze mal Du spielst auf die Lücken in deiner Grafik an.

Nur so, ich betreibe auch 4 Shellies mit Ahoy und habe keine Lücken in den Kurven 😉

CF0E9A27-6F98-4EA1-B5B5-DEE4C27C37C1
(Der kurze „Nullpeak“ um ca. 16:30 kommt von einem Restart des Flows)

lumapu added a commit that referenced this issue Jan 8, 2023
fix Prometheus and JSON endpoints (`config_override.h`) #561
publish MQTT with fixed interval even if inverter is not available #542
added JSON settings upload. NOTE: settings JSON download changed, so only settings should be uploaded starting from version `0.5.70` #551
MQTT topic and inverter name have more allowed characters: `[A-Za-z0-9./#$%&=+_-]+`, thx: @mo Demman
improved potential issue with `checkTicker`, thx @cbscpe
MQTT option for reset values on midnight / not avail / communication stop #539
small fix in `tickIVCommunication` #534
add `YieldTotal` correction, eg. to have the option to zero at year start #512
@BambuLap
Copy link
Author

@lumapu

Big Thanks jetzt passt es mit den 5sec läuft sehr stabil mit der #529 Nur eine frage, vielleicht um Daten zu sparen. HM 1500 & 800 nicht verfügbar. Hier wäre nur available=0 interessant zu pushen. Die Ch0 bis Ch2 könnte man hier deaktivieren. Ist dies möglich?

@stefan123t stefan123t added enhancement New feature or request question Further information is requested fixed dev fixed labels Jan 12, 2023
@lumapu
Copy link
Owner

lumapu commented Jan 13, 2023

klar kann man das machen, muss prüfen wie viel Code dafür nötig ist und was der letztendliche nutzen daraus ist

@BambuLap
Copy link
Author

BambuLap commented Jan 14, 2023

klar kann man das machen, muss prüfen wie viel Code dafür nötig ist und was der letztendliche nutzen daraus ist

Super, interessant ist nur des jeweiligen Inverters das er alle 5sec nur available=0 sendet der Rest an Daten ändert sich nicht bis er wieder available=2 bringt. Also kann dies ignoriert werden um Daten zu sparen.
Wenn sich dies umsetzen lässt wäre genial, und die Daten halten sich in grenzen.

modem-man-gmx pushed a commit to modem-man-gmx/ahoy that referenced this issue Jan 15, 2023
fix Prometheus and JSON endpoints (`config_override.h`) lumapu#561
publish MQTT with fixed interval even if inverter is not available lumapu#542
added JSON settings upload. NOTE: settings JSON download changed, so only settings should be uploaded starting from version `0.5.70` lumapu#551
MQTT topic and inverter name have more allowed characters: `[A-Za-z0-9./#$%&=+_-]+`, thx: @mo Demman
improved potential issue with `checkTicker`, thx @cbscpe
MQTT option for reset values on midnight / not avail / communication stop lumapu#539
small fix in `tickIVCommunication` lumapu#534
add `YieldTotal` correction, eg. to have the option to zero at year start lumapu#512
@lumapu lumapu closed this as completed Mar 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request fixed dev fixed question Further information is requested
Projects
None yet
Development

No branches or pull requests

6 participants