Liebe FHEM-Gemeinde,
ich habe seit geraumer Zeit ein Problem, was mir den letzten Nerv raubt und ihr seid meine letzte Hoffnung
In meiner FHEM-Installation habe ich einige Sensoren, die recht häufig Werte (z.B. alle 4 Sekunden) liefern. Das schöne: Ohne Einschränkung des "event-min-interval", werden diese Werte auch entsprechend dynamisch im Browser in meinen readingsGroups aktualisiert, ohne dass ein Page reload notwendig ist.
Sobald ich jedoch ein "event-min-interval" setze, um ein Mitloggen der Werte auf alle x Minuten zu reduzieren, ist es vorbei mit der dynamischen Aktualisierung der Werte im Browser - ich muss händisch "Reload" drücken, oder ein "refresh" mit kurzem Intervall setzen, was beides nicht wirklich zufriedenstellend ist, da dabei die ganze Seite neu geladen wird und eben nicht nur die Werte aktualisiert werden.
Gibt es dazu irgendeine Abhilfe, um wirklich nur das Mitloggen der Werte zu beeinflussen?
Vielen Dank für eure Hilfe!
Viele Grüße
flydd
ZitatGibt es dazu irgendeine Abhilfe, um wirklich nur das Mitloggen der Werte zu beeinflussen?
FHEMWEB und FileLog/DbLog (aber auch notify, DOIF, etc) greifen auch die gleichen, von den event-* Attributen gefilterten Events zu.
FileLog hat keinen eigenen Zeitfilter, DbLog weiss ich nicht. Man koennte zwar mit disabledForIntervals einen realisieren, das ist aber weder effizient, noch was fuer Anfaenger.
Hi,
so ganz verstehe ich das Problem nicht. Geht es darum, dass der Wert im Browser auch nach der "event-min-interval"-Zeit nicht automatisch refresht wird? Dann würde ich das als Bug betrachten.
...oder funktioniert das, Du willst aber unterschiedliche Zeiten im FileLog und im Browser?
Falls letzteres, dann würde ich das mit einem at machen, das jede Minute (oder wie oft auch immer) den Wert holt und in ein anderes Reading schreibt (setreading <device> <readingname> <value>). Dann dieses Reading ins FileLog schreiben.
Möglicherweise geht das auch ohne Reading und einfach nur mit trigger.
Gruß,
Thorsten
@Rudi: Ist es denkbar, zukünftig einen eigenen Zeitfilter für die Logs zu realisieren?
Ansonsten würde ich gerne mal die Idee mit den disabledForIntervals weiterverfolgen. In welcher Weise ist das ineffizient? Dass es nicht für Anfänger ist, schreckt mich erst einmal nicht ab.
Nur um noch einmal meinen Fall genauer darzustellen - ich kann mir nicht vorstellen, dass ich der Einzige mit diesem Wunsch bin:
Für Leistungsmessungen hätte ich in der Anzeige gerne einen automatischen Refresh, der genauso dynamisch ist, wie die Sensoren neue Werte liefern (z.B. alle 5 oder 10 Sekunden), um mir Verbraucher "live" anschauen zu können - zum Loggen (und späteren Auswerten) sind das allerdings viel zu viele Werte.
Dasselbe gilt eigentlich für jegliche Art von Umweltmessungen (z.B. Partikelsensoren, Temperatursensoren, Luftfeuchtigkeit...)
@Thorsten: Ich will unterschiedliche Zeiten im FileLog und Browser (siehe oben).
Sehr interessante Idee mit den ats und readings, das wären bei mir aber viele ats (betrifft ca. 30 Sensoren), wenn sich keine andere Lösung findet, werde ich das aber am Wochenende mal probieren. Kannst Du für Deine Alternative erläutern welchen trigger ich zum Loggen genau periodisch mittels at's auslösen kann?
Zitatzum Loggen (und späteren Auswerten) sind das allerdings viel zu viele Werte.
Dafür nehme ich das statistics-Modul......Das liefert die min-, max-, avg-Werte in Stunden/Tage/Jahreswerten. Die kann man dann schön loggen.
lg, Stefan
Zitat von: flydd am 11 Mai 2017, 08:06:43
Sehr interessante Idee mit den ats und readings, das wären bei mir aber viele ats (betrifft ca. 30 Sensoren),
Vielleicht kann man das irgendwie zusammenfassen. Man kann z.B. mit allgemeinen Devspecs arbeiten. Im "Kernel" müsste ja auch alles behandelt werden und ob das dann in einer allgemeinen implementierung besser wird weiß man nicht.
Zitat
Kannst Du für Deine Alternative erläutern welchen trigger ich zum Loggen genau periodisch mittels at's auslösen kann?
Siehe hier
https://wiki.fhem.de/wiki/Trigger
...und in der Commandref.
Du müsstest also sowas machen wie
trigger <device> <reading>_toLog <value>
...und dann die _toLog-Events in Dein FileLog aufnehmen.
Gruß,
Thorsten
Zitat von: flydd am 11 Mai 2017, 08:06:43
Nur um noch einmal meinen Fall genauer darzustellen - ich kann mir nicht vorstellen, dass ich der Einzige mit diesem Wunsch bin:
Für Leistungsmessungen hätte ich in der Anzeige gerne einen automatischen Refresh, der genauso dynamisch ist, wie die Sensoren neue Werte liefern (z.B. alle 5 oder 10 Sekunden), um mir Verbraucher "live" anschauen zu können - zum Loggen (und späteren Auswerten) sind das allerdings viel zu viele Werte.
Mir würde noch einfallen ein userReading einzufügen, welches man stur auf den zu loggenden Istwert setzt. Also z.B.:
attr Power userReadings power_act_log {ReadingsNum("Power","power_act",0)}
Dieses Reading kann man dann mit min-interval einschränken, wobei der originale Istwert unverändert feuern kann.
Zitat@Rudi: Ist es denkbar, zukünftig einen eigenen Zeitfilter für die Logs zu realisieren?
Sicher, ist aber nicht hoch auf der Prio-Liste.
ZitatIn welcher Weise ist das ineffizient? Dass es nicht für Anfänger ist, schreckt mich erst einmal nicht ab.
Nicht fuer Anfaenger war so gemeint, dass ich es weder machen, noch im Detail erklaeren will. Jemand mit etwas Erfahrung, der Doku liest, kommt aber selber drauf. Kurz: {} muss ein String im dokumentierten Format zurueckliefern. Fuer jedes Event ein eval zu machen, kann je nach Hardware/Anzahl Events langsam sein.
Viele Events regelmaessig auf dem System "loszulassen", nur weil man sie in ganz seltenen Faellen anschauen will, ist mAn falsch, FHEM ist nicht fuer Motorsteuerung oder Aehnliches gebaut. Auf der anderen Seite alle 5-10 Sekunden Funksignale zu generieren ist auch suboptimal.
@ Alle: Vielen Dank für die prompte Hilfe und die vielen super Lösungsansätze, auf die ich selbst wahrscheinlich niemals gekommen wäre.
Persönlich gefällt mir fiedels Lösungsansatz bislang am besten, da er sehr einfach zu realisieren ist, die Config nur moderat aufbläht und viele ats vermeidet.
Aber auch das Statistics-Modul finde ich an sich interessant, Stefan. Da ich es bislang noch nicht verwende und gerade nur erstmals in der Commandref nachgeschaut habe - habe ich es richtig verstanden, dass das Modul mir Statistiken wie z.B. Mittelwerte nur für fest vorgegebene Intervalle berechnen kann (Tag, Monat, Jahr). Oder kann ich auch eigene Intervalle (z.B. Statistik über alle Readings der letzten 2 Minuten, die dann alle 2 Minuten aktualisiert wird) für meine Statistiken definieren?
Für das Statistics-Modul spricht für mich, dass keine Senordaten (z.B. kurze Spikes) mehr verloren gehen, sondern z.B. in Minima/Maxima mit einfließen und je nach Bedarf gemittelte Werte geloggt werden können.
@Rudolfkoenig:
Ich verstehe, dass FHEM sich nicht wirklich für Echtzeit-Aufgaben eignet. Momentan bin ich aber noch nicht auf Probleme trotz häufig aktualisierter Sensor-Daten gestoßen - einige meiner Sensoren senden sowieso ungefragt alle paar Sekunden Daten über Funk (z.B. EC3000), andere wiederum hängen an der Strippe (z.B. Plantower PMS 7003) - und irgendwie mag ich es einfach, meine Sensordaten häufig aktualisiert zu sehen. :)
@Fiedel: Das funktioniert so ganz ausgezeichnet, gerade ausprobiert! Vielen Dank noch einmal!