Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

Benutzeravatar
Ulrich
Administrator
Beiträge: 3986
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 92 Mal
Danksagung erhalten: 525 Mal
Kontaktdaten:

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von Ulrich »

Das ist kein Fehler.
Das mit dem zentralen Timestamp ist dafür gedacht, dass man unter Grafana mehrere Geräte besser summieren und anzeigen kann. Z.B. bei 3 Wechselrichtern, für jede Phase ein Gerät.
Das heißt aber auch, dass der zentrale Timestamp allen 6 Geräten mitgegeben wird, obwohl sie ja zu einer anderen Zeit ausgelesen wurden. Die Differenz kann also bis zu 60 Sekunden betragen.

Du hast in deiner _math datei angegeben, dass du den zentralen timestamp manipulierst um die GeräteID. Also + 2 bzw. +3 Sekunden. Also ist das Ergebnis genau das, was du gewollt hast. Die tatsächliche Zeit ist es sowieso nicht. Es dient ja nur dazu, dass die Daten auch wirklich abgespeichert und nicht überschrieben werden. Wenn es die auf die Sekunden der Abspeicherung ankommt, dann musst du $zentralerTimestamp = time(); in die _math Datei eintragen.

Es kommt halt immer darauf an, was man eigentlich will.
---------------------------------------
Ulrich . . . . . . . . [Projektinhaber]

Schucki67
Beiträge: 50
Registriert: Fr 29. Jan 2021, 14:17
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von Schucki67 »

Ulrich hat geschrieben:
Di 10. Jan 2023, 12:12
Das ist kein Fehler.
Das mit dem zentralen Timestamp ist dafür gedacht, dass man unter Grafana mehrere Geräte besser summieren und anzeigen kann. Z.B. bei 3 Wechselrichtern, für jede Phase ein Gerät.
Das heißt aber auch, dass der zentrale Timestamp allen 6 Geräten mitgegeben wird, obwohl sie ja zu einer anderen Zeit ausgelesen wurden. Die Differenz kann also bis zu 60 Sekunden betragen.

Du hast in deiner _math datei angegeben, dass du den zentralen timestamp manipulierst um die GeräteID. Also + 2 bzw. +3 Sekunden. Also ist das Ergebnis genau das, was du gewollt hast. Die tatsächliche Zeit ist es sowieso nicht. Es dient ja nur dazu, dass die Daten auch wirklich abgespeichert und nicht überschrieben werden. Wenn es die auf die Sekunden der Abspeicherung ankommt, dann musst du $zentralerTimestamp = time(); in die _math Datei eintragen.

Es kommt halt immer darauf an, was man eigentlich will.
Hallo Ulrich,
da habe ich mich wohl falsch ausgedrückt, bzw. den Durchblick verloren und will nichts besonderes.
Ich habe nur die beschriebene Zeile in die _math geschrieben mit <?php am Anfang und und ?> am Ende eingefügt (Anlage).
sonoff_mqtt_math.php
(91 Bytes) 8-mal heruntergeladen
Ich habe gewollt nichts manipuliert. Mein Ziel ist nur, dass die 2 sonoff-Geräte 3mal in der Minute in Grafana als Datenpunkte angezeigt werden.
Ich habe mich nur gewundert, warum in der Datenbank zwischen den Daten nur 2 sec. liegen, was ja normal bei Aufruf in der Konsole ist, da habe ich nicht mitgedacht.
Wenn in der Datenbank die Werte mehrmals in der Minute drinnen stehen, warum werden dann nicht mehrere Datenpunkte in Grafana in der Minute angezeigt?
Irgendwie komme ich nicht weiter.

Benutzeravatar
Ulrich
Administrator
Beiträge: 3986
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 92 Mal
Danksagung erhalten: 525 Mal
Kontaktdaten:

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von Ulrich »

Wie oft Grafana die Daten aus der Datenbank holt und anzeigt, kannst du in Grafana angeben. Wenn dort 1 Minute angegeben ist, werden die Daten auch nur jede Minute angezeigt, auch wenn sie viel öfter gespeichert wurden. Wenn du den Wert änderst, musst du danach noch die Diskette anklicken, damit er gespeichert wird.



Screen.jpg
---------------------------------------
Ulrich . . . . . . . . [Projektinhaber]

TeamO
Beiträge: 713
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 8 Mal
Danksagung erhalten: 121 Mal

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von TeamO »

Dei Problem in Grafana wird sein, dass Du unter Interval 1m hast und nicht 1s

Schucki67
Beiträge: 50
Registriert: Fr 29. Jan 2021, 14:17
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von Schucki67 »

Hurra, Timo hat den entscheidenden Hinweis gegeben. In Grafana hatte ich schon den Zeitwert oben rechts im Dashboard auf 10s gestellt.
Aber im Diagramm stand unter Time "$_intervall" anstatt 1s. Auf 1s gestellt und schon habe ich meine drei Datenpunkte.
Meine Güte, so einfach und doch so schwer getan.
Die Datenpunkte stehen jetzt im Abstand von 2s. Kann ich mit dem Befehl von Ulrich "$zentralerTimestamp = time(20);"zwischen den Datenpunkte 20s lassen? Wenn ja, nur diese Zeile in der _math-Datei eintragen oder zusätzlich zu "$aktuelleDaten["zentralerTimestamp"] = $zentralerTimestamp + $GeraeteNummer;"?
dashboard.JPG

Schucki67
Beiträge: 50
Registriert: Fr 29. Jan 2021, 14:17
Hat sich bedankt: 3 Mal
Danksagung erhalten: 3 Mal

Re: Verständnis - Öfter als 1 mal pro Minute die Geräte auslesen

Beitrag von Schucki67 »

Schucki67 hat geschrieben:
Di 10. Jan 2023, 14:19
Hurra, Timo hat den entscheidenden Hinweis gegeben. In Grafana hatte ich schon den Zeitwert oben rechts im Dashboard auf 10s gestellt.
Aber im Diagramm stand unter Time "$_intervall" anstatt 1s. Auf 1s gestellt und schon habe ich meine drei Datenpunkte.
Meine Güte, so einfach und doch so schwer getan.
Die Datenpunkte stehen jetzt im Abstand von 2s. Kann ich mit dem Befehl von Ulrich "$zentralerTimestamp = time(20);"zwischen den Datenpunkte 20s lassen? Wenn ja, nur diese Zeile in der _math-Datei eintragen oder zusätzlich zu "$aktuelleDaten["zentralerTimestamp"] = $zentralerTimestamp + $GeraeteNummer;"?

dashboard.JPG
Update: mit zusätzlich in der _math-Datei "$zentralerTimestamp = time()" scheinen jetzt die Datenpumkte alle 20s zu kommen.
dashboard.JPG

Antworten