Anzeigen von Wertveränderung pro Zeiteinheit

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Antworten
grunix
Beiträge: 14
Registriert: 08.06.2021, 17:29
System: sonstige
Hat sich bedankt: 2 Mal

Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von grunix » 11.06.2021, 11:43

Hallo zusammen,

ich suche nach einer Möglichkeit die nicht die absoluten Zahlen, sondern die Werteveränderung (Count) pro Zeiteinheit zu visualisieren. Aktuell sehen meine Diagramme folgendermaßen aus (Beispiel: Strom/Wasser/Niederschlag):

Historian.PNG

Was ich darstellen möchte ist der aktuelle Stromverbrauch (Watt) oder die Regenmenge in z.B. l/10 Min.

Hier ein Beispiel wie ich mir das vorstelle (Beispiel: Verbrauch absolut und Watt):

Historian2.PNG

Bei der Wasseruhr oder Regenmenge (Impulse/mm) fehlt mir aber die Quelle für den aktuellen Wert pro Zeiteinheit.

WIe kann ich die Werte berechnen bzw. gibt es eine Möglichkeit einfach die Darstellung der Datenpunkte entsprechend anzupassen?

Grüße & Danke,
Grunix

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Roland M. » 11.06.2021, 11:58

Hallo!

Ich mache das über .LastValue().

Hier z.B. (zum Testen quick&dirty) den Feuchtigkeitsanstieg (beim Duschen):

Code: Alles auswählen

var x = dom.GetObject("HmIP-RF.000EDBE98B9875:1.HUMIDITY").Value();
var y = dom.GetObject("HmIP-RF.000EDBE98B9875:1.HUMIDITY").LastValue();
var delta = x-y;

dom.GetObject("DeltaH").State(delta);

Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

grunix
Beiträge: 14
Registriert: 08.06.2021, 17:29
System: sonstige
Hat sich bedankt: 2 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von grunix » 11.06.2021, 12:27

Darüber habe ich auch schon nachgedacht, aber wie bekommst du den Faktor Zeit in die Rechnung? Um die Regenmenge / Impulse der Wasseruhr in Raltaion zur Zeit zu bekommen benötige ich die Werte von vor z.B. einer Minute oder 10 Minuten?! Oder übesehe ich hier was?

Grüße,
Steffen

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Roland M. » 11.06.2021, 12:39

Hallo Steffen!
grunix hat geschrieben:
11.06.2021, 12:27
aber wie bekommst du den Faktor Zeit in die Rechnung?
Ok, da war ich wirklich etwas nachlässig. ;) Für meinen Fall reichen mir die ca. 3 Minuten, die sich der Temperatursensor regelmäßig meldet.

Um die Regenmenge / Impulse der Wasseruhr in Raltaion zur Zeit zu bekommen benötige ich die Werte von vor z.B. einer Minute oder 10 Minuten?!
Dann würde ich wirklich ein Programm zeitgesteuert laufen lassen und mir den Wert in einer Variable speichern, um ihn im nächsten Durchlauf mit dem aktuellen Wert zu vergleichen.

So ungefähr:
var x = dom.GetObject("SV"); ! dein letzter Wert
var y = domGetObject(.....); ! dein aktueller Messwert
var d = y.Value() - x.Value() ! Delta
dom.GetObject("SV_Delta").State(d); ! neuer Differenzwert
x.State(y.Value());



Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

Benutzeravatar
Vindeliker
Beiträge: 57
Registriert: 12.05.2017, 08:06
Hat sich bedankt: 34 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Vindeliker » 11.06.2021, 12:51

Hallo,
ich mache Ähnliches mit „lasttimestamp“
(Bin grad am Handy und habe den korrekten Aufruf nicht verfügbar)
Dann Zeitdifferenz berechnen und gut is.

VG Manfred

grunix
Beiträge: 14
Registriert: 08.06.2021, 17:29
System: sonstige
Hat sich bedankt: 2 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von grunix » 11.06.2021, 12:55

Ja... und Nein. Die Idee hatte ich auch schon... führt aber wenn ich auf Starkregen überwache zu verspäteten und ggf. auch falschen Ergebnissen!

Ich habe versucht das (verständlich) aufzuzeichnen:

regen.png
regen.png (5.78 KiB) 945 mal betrachtet

Das Programm würde zu jeder vollen Minute das Delta errechnen... (Ergebnis unter den blauen Strichen)

Wenn man beim letzten Impuls das Delta der letzten Zeiteinheit anzeigt (grün) kommt man auf die "realen" Werte. Das ist bei einer Minute noch überschaubar, wenn man das Intervall aber auf 10 Minuten ausdehnt um abzuschätzen ob es der Kanal noch schafft ist man mit hoher Warschinlichkeit zu spät und im Ergebnis ungenau (durch den starken Anstieg) wenn der Alarm rausgeht.

Grüße,
Steffen

Homematicbeginner
Beiträge: 374
Registriert: 13.07.2013, 10:46
Wohnort: Rheinhessen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 5 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Homematicbeginner » 12.10.2021, 21:15

Hallo,
ich habe das Skript von Roland für mich angepasst, leider erhalte ich immer wieder eine Fehlermeldung. Kann mir jemand dabei helfen das Skript für meinen Anwendungsfall anzupassen?
Die 3 Systemvariablen habe ich angelegt, Typ Zahl
der Wert für "SV_Regenmenge" wird bereits in eine anderen Programm berechnet,
Somit sollte im neuen Script (Trigger = zeitgesteuert alle 5 Minuten)
- der vorherige Wert von "SV_Regenmenge" in "SV_Regenmenge_alt" kopiert werden
- das Delta zwischen "SV_Regenmenge" (aktuell) und "SV_Regenmenge_alt" berechnet und in "SV_Regenmenge_delta" als positiver Wert eingetragen werden.

Code: Alles auswählen

var x = dom.GetObject("SV_Regenmenge_alt");
var y = dom.GetObject("SV_Regenmenge");
var d = y.Value() - x.Value()
dom.GetObject("SV_Regenmenge_delta").State(d);
x.State(y.Value());
Fehlermeldung:

Code: Alles auswählen

Error 1 at row 4 col 7 near ^.GetObject("SV_Regenmenge_delta").State(d);
x.State(y.Value());
Parse following code failed:
var x = dom.GetObject("SV_Regenmenge_alt");
var y = dom.GetObject("SV_Regenmenge");
var d = y.Value() - x.Value()
dom.GetObject("SV_Regenmenge_delta").State(d);
x.State(y.Value());
Homematicbeginner

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von MichaelN » 12.10.2021, 21:20

X und y sind nicht var, sondern object
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Roland M. » 12.10.2021, 22:35

Hallo!
Homematicbeginner hat geschrieben:
12.10.2021, 21:15

Code: Alles auswählen

var d = y.Value() - x.Value()
Da fehlt ein Semikolon (";").

Der Fehler wird dann in der nächsten Zeile tragend.

MichaelN hat geschrieben:
12.10.2021, 21:20
X und y sind nicht var, sondern object
Solange
boolean x = 0.0 + "Hello world" / 0;
valide und x schließlich real ist, mache ich mir über die korrekte Deklaration (mit Ausnahmen) kaum Gedanken! ;)

Ja, object ist richtig(er), var allgemeiner.


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

Homematicbeginner
Beiträge: 374
Registriert: 13.07.2013, 10:46
Wohnort: Rheinhessen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 5 Mal

Re: Anzeigen von Wertveränderung pro Zeiteinheit

Beitrag von Homematicbeginner » 23.10.2021, 17:14

funktioniert :mrgreen:
Danke
Homematicbeginner

Antworten

Zurück zu „CCU-Historian“