FHEM Forum

FHEM => Automatisierung => Thema gestartet von: kask am 27 März 2023, 19:09:30

Titel: [Gelöst] Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 27 März 2023, 19:09:30
Hallo,
wie kann ich aus einem Gerät das mir keinen saldierenden Wert ausgibt eine Statistik erstellen.
Also z.B. "Leistungswert einer Steckdose aktueller Ist wert" in Watt in einen saldierenden Wert schreiben.
Also ich möchte man ende eine statistik haben mit letzte Stunde verbraucht, Verbrauch letzter Tag etc.
Mit einem saldierenden Wert habe ich es mit dem statistic Modul gemacht.Aber wie get das nicht saldierenden (hochzählenden Werten)?

Kann mir das einer helfen bzw. eine rawdefinition posten falls vorhanden? 
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 27 März 2023, 21:04:46
Zitat von: kask am 27 März 2023, 19:09:30Also z.B. "Leistungswert einer Steckdose aktueller Ist wert" in Watt in einen saldierenden Wert schreiben.

Bin mir nicht sicher ob du das richtige meinst.Leistung kannst du nicht saldieren.


Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 27 März 2023, 21:09:13
Zitat von: kask am 27 März 2023, 19:09:30Hallo,
wie kann ich aus einem Gerät das mir keinen saldierenden Wert ausgibt eine Statistik erstellen.
Also z.B. "Leistungswert einer Steckdose aktueller Ist wert" in Watt in einen saldierenden Wert schreiben.
Also ich möchte man ende eine statistik haben mit letzte Stunde verbraucht, Verbrauch letzter Tag etc.
Mit einem saldierenden Wert habe ich es mit dem statistic Modul gemacht.Aber wie get das nicht saldierenden (hochzählenden Werten)?

Kann mir das einer helfen bzw. eine rawdefinition posten falls vorhanden? 

siehe https://forum.fhem.de/index.php?topic=132805.0

oder userReading mit Funktion differential verwenden.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 27 März 2023, 21:14:28
Das schaue ich mir an. Danke erst einmal.

Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 28 März 2023, 22:38:24
Das funktioniert so nicht wirklich.
bei beiden varianten wird immer der alte mit dem neuen wert verrechnet und die differenz zeitbasiert ausgegeben. kann also auch negativ werden wenn 1010w alt mit 990w neu berechnet wird. Macht ja auch kein stromzähler so.

ich denke mir das so:
"zeit" zwischen "alter wert" und "neuer wert" in sec.
"zu addierender wert" = "neuer wert" / 3600 * "zeit"
"gesamte wert" = "gesamte wert" + "zu addierender wert"

ich brauche also eine addition eines wertes mit dem aktuellen wert entsprechend umgerechnet mit einer zeitbasis auf den zu addierenden momentanen wert anhand des aktuell gelieferten wertes.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 28 März 2023, 23:11:55
Zitat von: kask am 28 März 2023, 22:38:24Das funktioniert so nicht wirklich.
bei beiden varianten wird immer der alte mit dem neuen wert verrechnet und die differenz zeitbasiert ausgegeben. kann also auch negativ werden wenn 1010w alt mit 990w neu berechnet wird. Macht ja auch kein stromzähler so.

ich denke mir das so:
"zeit" zwischen "alter wert" und "neuer wert" in sec.
"zu addierender wert" = "neuer wert" / 3600 * "zeit"
"gesamte wert" = "gesamte wert" + "zu addierender wert"

ich brauche also eine addition eines wertes mit dem aktuellen wert entsprechend umgerechnet mit einer zeitbasis auf den zu addierenden momentanen wert anhand des aktuell gelieferten wertes.


Das Beispiel zeigt auf, wie man aus Energie eine durchschnittliche Leistung berechnet.

Du willst aber offenbar aus Leistung die Energie berechnen - das wird nicht gut funktionieren, weil die Zähler viel zu träge dazu Daten liefern. In einer Sekunden kann die Leistung sich bereits mehrfach geändert haben. Die Energieberechnung solle man dem Zähler überlassen, was auch jeder Stromzähler ziemlich zuverlässig von sich aus tut.

Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 28 März 2023, 23:15:11
Zitat von: Damian am 28 März 2023, 23:11:55Du willst aber offenbar aus Leistung die Energie berechnen - das wird nicht gut funktionieren,

Da hat Damian recht. Am Ende dürfte das "ungenaue" Ergebnis die Mühe nicht wert sein.
Daher kam auch mein Einwand zu Beginn: Leistung kann man nicht saldieren.

Ansonsten findest du die Werte die du suchst in:
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 28 März 2023, 23:26:42
Zitat von: RalfRog am 28 März 2023, 23:15:11Daher kam auch mein Einwand zu Beginn: Leistung kann man nicht saldieren.

Kann man an sich schon, macht der Stromzähler ja auch, es ist ja ein Integral der Leistung über die Zeit - dazu sollte allerdings die zeitliche Auflösung schon recht hoch sein.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 28 März 2023, 23:43:42
Zitat von: Damian am 28 März 2023, 23:26:42Kann man an sich schon, macht der Stromzähler ja auch, es ist ja ein Integral der Leistung über die Zeit - dazu sollte allerdings die zeitliche Auflösung schon recht hoch sein.

Womit wir wieder bei "...Energieberechnung solle man dem Zähler überlassen" wären. Was ja ShellyPlug und Konsorten relativ zuvrlässig tun. Je nach Anwendung hinsichtlich Genauigkeit.

@kask hat uns ja noch nicht verrraten wo die LEistungswerte herkommen.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 29 März 2023, 07:47:34
Ich möchte einen PV Speicher  laden.-entladen in eine Statistik packen.
Also wieviel habe ich gespeichert und wieviel abgegeben.
Und dazu wollte ich den gerade genutzten Leistungswert hernehmen.
Das es ungenau wird ist so erst einmal ok und auch klar, da der Lader bzw. Inverter sich ständig ändert/anpasst.
Kleiner log Intervall = Ungenauigkeit wegen kleinen Werten und Nachkommastellen. Dazu "nur" die Zeitstempeltimebase in sek.
Großer log Intervall = ungenau wegen sich ständig ändernden Anpassungen des Laders/Inverters die nicht war genommen werden.
Aber so einiger maßen sollte man das doch hinbekommen.

monotonic: geht nicht da der neue wert großer sein muss. Wird aber sicher benötigt zur hoch Zählung. wird aber nicht die Hauptfunktion.
differntial: fällt weg wegen alte + neu wert gegen rechnen.. alt wert ist nur interessant für den Zeitstempel.

Mein Hauptproblem liegt in Perl und FHEM. Also eher bei mir :) Das klappt alles nicht so wirklich wie ich das mache.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 29 März 2023, 09:25:58
Da ist schön so und mich würde dein PV-Speicher interessieren.
Aber bei deinem Problem hilft das nicht.

Welches Gerät hast du denn in FHEM eingebunden dessen Werte du verarbeiten möchtest.

Gruß Ralf
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 29 März 2023, 09:39:14
Zitat von: kask am 29 März 2023, 07:47:34Ich möchte einen PV Speicher  laden.-entladen in eine Statistik packen.
Also wieviel habe ich gespeichert und wieviel abgegeben.
Und dazu wollte ich den gerade genutzten Leistungswert hernehmen.
Das es ungenau wird ist so erst einmal ok und auch klar, da der Lader bzw. Inverter sich ständig ändert/anpasst.
Kleiner log Intervall = Ungenauigkeit wegen kleinen Werten und Nachkommastellen. Dazu "nur" die Zeitstempeltimebase in sek.
Großer log Intervall = ungenau wegen sich ständig ändernden Anpassungen des Laders/Inverters die nicht war genommen werden.
Aber so einiger maßen sollte man das doch hinbekommen.

monotonic: geht nicht da der neue wert großer sein muss. Wird aber sicher benötigt zur hoch Zählung. wird aber nicht die Hauptfunktion.
differntial: fällt weg wegen alte + neu wert gegen rechnen.. alt wert ist nur interessant für den Zeitstempel.

Mein Hauptproblem liegt in Perl und FHEM. Also eher bei mir :) Das klappt alles nicht so wirklich wie ich das mache.


Aber das Gerät, welches die Leistung bei dir misst, wird wohl auch die Energie "zählen" oder nicht?
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 29 März 2023, 12:28:16
Zitat von: RalfRog am 29 März 2023, 09:25:58Da ist schön so und mich würde dein PV-Speicher interessieren.
Aber bei deinem Problem hilft das nicht.

Welches Gerät hast du denn in FHEM eingebunden dessen Werte du verarbeiten möchtest.

Speicher ist an einem Victron Multiplus installiert und wird mittels Raspberry&VenusOS mit MQTT übertragen.
Die Energie wird nicht gezählt. Zumindest wird es nicht published und ich kann in der Doku auch nichts finden dazu.

Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 29 März 2023, 12:35:11
ZitatSpeicher ist an einem Victron Multiplus installiert und wird mittels Raspberry&VenusOS mit MQTT übertragen.
Die Energie wird nicht gezählt. Zumindest wird es nicht published und ich kann in der Doku auch nichts finden dazu.

Da habe ich jetzt keine eigene Erfahrung, aber das die gewünschten Werte nicht da sind kann ich mir fast nicht vorstellen.
Such mal im Forum.

Auf Anhieb habe ich das gefunden: https://forum.fhem.de/index.php?msg=1239595

Forenbereich Solaranlagen sowie MQTT scheinen einiges zu enthalten.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 29 März 2023, 12:53:08
Eigentlich ist es ja nicht ein Geräte bezogenes Problem hier jetzt an der Stelle.
Wie kann ich mir einen Zähler selber bauen ist da gefragt. Ob genau oder nicht ist erst einmal zweit rangig.


Es gibt Leute die haben das selbe Problem und so ist es bei mir auch. Es stehen keine Werte drin nur "NULL".
https://community.victronenergy.com/questions/186091/mqtt-battery-history-energy-values.html

Deshalb selber bauen.

Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: RalfRog am 29 März 2023, 12:59:45
Zitat von: kask am 29 März 2023, 12:53:08Eigentlich ist es ja nicht ein Geräte bezogenes Problem hier jetzt an der Stelle.
Wie kann ich mir einen Zähler selber bauen ist da gefragt. Ob genau oder nicht ist erst einmal zweit rangig.

Es gibt Leute die haben das selbe Problem und so ist es bei mir auch. Es stehen keine Werte drin nur "NULL".
https://community.victronenergy.com/questions/186091/mqtt-battery-history-energy-values.html

Deshalb selber bauen.

Aber frag doch im FHEM-Forenbereich Solaranlagen unter der genauen Angabe deines Victron Wechselrichters und dass er per MQTT angebunden ist sowie einem list des MQTT devices ob und wie eventuell schon jemand die Energie erfasst.

Dann kannst du hier im ersten Beitrag im Betreff ein gelöst hinschreiben und ggfs. für Mitleser auf den neuen Beitrag verweisen.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 29 März 2023, 13:07:34
Ich konnte anfangs meinen Wechselrichter auch nicht direkt auslesen, da habe ich mir einfach einen digitalen Zwischenzähler installiert, den ich auslesen konnte.
Titel: Aw: Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 29 März 2023, 15:57:03
ich habe es jetzt wie folgt mit einer notify gelöst:
MQTT2_venus:BAT_Current_value:.*
{
 my $p_now = (ReadingsNum("MQTT2_venus","BAT_Current_value",0) * ReadingsNum("MQTT2_venus","BAT_Voltage_value",0));;
 ##my $p_now = (ReadingsNum("MQTT2_venus","BAT_Power_value",0));;

 $p_now=sprintf("%.5f", $p_now);;

 my $t_diff = 0;;
 my $Wh = 0;;

 if ($p_now < 0) {

  $p_now=abs($p_now);;

  $t_diff=(time() - time_str2num(ReadingsTimestamp("MQTT2_venus","BAT_Power_dischg",time())));;
  $Wh=($p_now / 3600.0 * $t_diff);;
  $Wh=sprintf("%.5f", $Wh);;

  fhem ("setreading MQTT2_venus BAT_Power_dischg " . int($p_now));;
  fhem ("setreading MQTT2_venus BAT_Energie_dischg $Wh");;
 
  if (ReadingsNum("MQTT2_venus","BAT_Energie_chg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Energie_chg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Power_chg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Power_chg 0");; }


 } elsif ($p_now > 0) {
 
  $t_diff=(time() - time_str2num(ReadingsTimestamp("MQTT2_venus","BAT_Power_chg",time())));;
  $Wh=($p_now / 3600.0 * $t_diff);;
  $Wh=sprintf("%.5f", $Wh);;

 
  fhem ("setreading MQTT2_venus BAT_Power_chg " .int($p_now));;
  fhem ("setreading MQTT2_venus BAT_Energie_chg $Wh");;
  if (ReadingsNum("MQTT2_venus","BAT_Energie_dischg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Energie_dischg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Power_dischg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Power_dischg 0");; }

 } else {

  if (ReadingsNum("MQTT2_venus","BAT_Energie_dischg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Energie_dischg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Power_dischg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Power_dischg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Energie_chg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Energie_chg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Power_chg",0) > 0) { fhem ("setreading MQTT2_venus BAT_Power_chg 0");; }
   
 }
}

Dazu noch userreadings für den Zähler:
BAT_Energie_chg_total:BAT_Energie_chg:.* monotonic {ReadingsNum("$name","BAT_Energie_chg",0)},
BAT_Energie_dischg_total:BAT_Energie_dischg:.* monotonic {ReadingsNum("$name","BAT_Energie_dischg",0)},


..jetzt mal schauen wie ungenau das ganze wird
Titel: Aw: [Gelöst] Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: Damian am 29 März 2023, 18:50:01
Zitat von: kask am 29 März 2023, 15:57:03..jetzt mal schauen wie ungenau das ganze wird

Da bin ich auch drauf gespannt!
Titel: Aw: [Gelöst] Statistik ohne Totalwert bzw. Absolut Wert
Beitrag von: kask am 01 April 2023, 19:52:05
ich habe das ganze umstrukturiert und es sieht erst einmal relativ plausibel aus. Was rein geht geht auch raus.

Allerdings hatte der monotonic zähler nicht funktioniert. Wieso weiß ich nicht. Die event timinigs waren gleich aber es wurde nicht alles gezählt ;(

Habe deshalb die Userreadings mit den monotonic zählern entfernt und die zähler selber in die notify gebaut.

MQTT2_venus:BAT_Current_value:.*
{
 
 my $p_now = (ReadingsNum("MQTT2_venus","BAT_Current_value",0) * ReadingsNum("MQTT2_venus","BAT_Voltage_value",0));;
 my $Wh = 0;;
 my $total = 0;;

 if ($p_now < 0) { ##discharge

  $p_now = abs($p_now);;

  $Wh = ($p_now / 3600.0 * (time()- time_str2num(ReadingsTimestamp("MQTT2_venus","BAT_Energie_dischg_total",0))) );;
  $total = (ReadingsNum("MQTT2_venus","BAT_Energie_dischg_total",0));;

  fhem ("setreading MQTT2_venus BAT_Power_dischg " . int($p_now));;
  fhem ("setreading MQTT2_venus BAT_Energie_dischg_total " . ($total + $Wh));;
 
  if (ReadingsNum("MQTT2_venus","BAT_Power_chg",0) != 0) { fhem ("setreading MQTT2_venus BAT_Power_chg 0");; }

 } elsif ($p_now > 0) { ##charge
 
  $Wh = ($p_now / 3600.0 * (time() - time_str2num(ReadingsTimestamp("MQTT2_venus","BAT_Energie_chg_total",0))) );;
  $total = (ReadingsNum("MQTT2_venus","BAT_Energie_chg_total",0));;
 
  fhem ("setreading MQTT2_venus BAT_Power_chg " .int($p_now));;
  fhem ("setreading MQTT2_venus BAT_Energie_chg_total " . ($total + $Wh));;

  if (ReadingsNum("MQTT2_venus","BAT_Power_dischg",0) != 0) { fhem ("setreading MQTT2_venus BAT_Power_dischg 0");; }

 } else { ##no load

  if (ReadingsNum("MQTT2_venus","BAT_Power_dischg",0) != 0) { fhem ("setreading MQTT2_venus BAT_Power_dischg 0");; }
  if (ReadingsNum("MQTT2_venus","BAT_Power_chg",0) != 0) { fhem ("setreading MQTT2_venus BAT_Power_chg 0");; }
   
 }
}

jetzt mal weiter und länger beobachten.