FHEM-Logfiles und -Graphen: Datenlast reduzieren und Werte ordentlich visualisieren

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

FHEM als Hausautomation-Server bietet zahlreiche Möglichkeiten, Abläufe und Regeln individuell zu gestalten und erzeugte Datenwerte graphisch auszuwerten. Seit den neuesten Versionen von FHEM gibt es ein interessantes User-Interface zur individuellen Gestaltung solcher Graphen.

Hier soll zun√§chst der Zusammenhang zwischen einem Logfile als Datenlieferant und einem „SVG“ als graphisches Element genauer beschrieben werden. Anhand der neuen HomeMatic-Heizk√∂rperthermostate „HM-CC-RT-DN“ (Affiliate-Link), des Smart-Metering-Systems „OWL +USB“ (Affiliate-Link) und des HomeMatic-Bewegungsmelders „HM SEC MDIR“ (Affiliate-Link) wird gezeigt, wie Logfiles auf individuell relevante Werte reduziert werden und wie deren Inhalt in verschiedenen graphischen Visualisierungen umgesetzt werden kann. F√ľr andere Ger√§te ist die Vorgehensweise analog anwendbar.

Logfiles nur mit relevanten Werten f√ľllen

1. Beispiel (mit OWL +USB): Datenlast in FHEM reduzieren und Antwortzeiten verbessern

B007KPVC0A
Anhand eines ersten Beispiels (mit dem Energiemonitor OWL +USB (Affiliate-Link)) soll gezeigt werden, wie ein individuelles Log-File angelegt wird. Bindet man den smarten Energieverbrauchsmesser OWL +USB (Affiliate-Link), wie im Artikel Smart Metering mit Owl +USB und FHEM ‚Äď Live Tracking des Stromverbrauchs beschrieben, standardm√§√üig in FHEM ein, so wird knapp alle f√ľnf Sekunden ein Logfile-Eintrag geschrieben. Dabei wird unabh√§ngig von Zustands√§nderungen eine enorme Datenlast auf dem Hausautomation-Server erzeugt. Selbst wenn sich kein Wert √§ndert, werden immer und immer wieder die selben Eintr√§ge in das Logfile geschrieben. Das sieht dann z.B. so aus:

...
2013-11-17_23:06:03 CM160 A: 0.56 A, W: 109.20 W, C: 0.0328 ‚ā¨/h, CO2: 0.0644 kg/h
2013-11-17_23:06:08 CM160 A: 0.56 A, W: 109.20 W, C: 0.0328 ‚ā¨/h, CO2: 0.0644 kg/h
2013-11-17_23:06:13 CM160 A: 0.56 A, W: 109.20 W, C: 0.0328 ‚ā¨/h, CO2: 0.0644 kg/h
2013-11-17_23:06:18 CM160 A: 0.56 A, W: 109.20 W, C: 0.0328 ‚ā¨/h, CO2: 0.0644 kg/h
2013-11-17_23:06:23 CM160 A: 0.56 A, W: 109.20 W, C: 0.0328 ‚ā¨/h, CO2: 0.0644 kg/h
...

Die Werte haben sich nicht ge√§ndert und trotzdem wird Datenlast erzeugt. Generiert man aus diesen Logfile-Daten jetzt einen Graphen, m√ľssen f√ľr die Darstellung eines gesamten Tages knapp 17.000 Datens√§tze gelesen und in graphischer Form aufbereitet werden. Dies verursacht bei der Bedienung von FHEM erhebliche Nachteile in Form von Systemlast und langen Antwortzeiten. Der interessante Wert des OWL +USB (Affiliate-Link) ist hier eigentlich lediglich der Stromverbrauch in Watt.

Hier wird daher gezeigt, wie ein Logfile angelegt werden kann, welches ausschlie√ülich den Wert in Watt erfasst und diesen auch nur bei der √Ąnderung des Wertes in ein Logfile schreibt.

Zun√§chst wird ein Dummy angelegt, dem lediglich das relevante Reading des OWL +USB (Affiliate-Link) √ľbergeben wird.

define AktuellerVerbrauch dummy

Dieser soll alle 5 Sekunden mit dem aktuellen Stromverbrauch aktualisiert werden:

define WattUsageAnDummy at +*00:00:05 { my $d= ReadingsVal("CM160","W",0);; fhem("set AktuellerVerbrauch $d")}

Hierdurch wird das Reading „W“ des Ger√§ts „CM160“ ausgelesen und alle 5 Sekunden in den Dummy „AktuellerVerbrauch“ geschrieben.

F√ľr den Dummy kann jetzt ein Logfile angelegt werden:

define FileLog_AktuellerVerbrauch FileLog ./log/AktuellerVerbrauch-%Y-%m-%d.log AktuellerVerbrauch
attr FileLog_AktuellerVerbrauch logtype text

Dies bringt jetzt noch nicht wirklich einen Vorteil, da weiterhin alle 5 Sekunden der Stromverbrauch in das Logfile geschrieben wird.  Daher wird dem Dummy ein zusätzliches Attribut verpasst:

attr AktuellerVerbrauch event-on-change-reading state

Durch diesen Zusatz meldet der Dummy „AktuellerVerbrauch“ nur dann ein Event, wenn der aktuelle „state“ sich √§ndert („event-on-change“). Nur ver√§nderte Werte werden jetzt in das neue Logfile geschrieben. Dies sieht dann z.B. so aus:

...
2013-11-21_00:06:55 AktuellerVerbrauch 163.80 W
2013-11-21_00:07:10 AktuellerVerbrauch 341.25 W
2013-11-21_00:07:55 AktuellerVerbrauch 327.60 W
2013-11-21_00:08:55 AktuellerVerbrauch 341.25 W
2013-11-21_00:10:10 AktuellerVerbrauch 177.45 W
...

Hieran sieht man eindeutig, dass in einem Zeitraum von etwa 3 Stunden gerade einmal 5 Logfile-Eintr√§ge geschrieben wurden und zwar nur dann, wenn sich der Status ge√§ndert hat. Das „normale“ Logfile h√§tte in dieser Zeit bereits rund 2.100 Datens√§tze erzeugt.

Zwischenfazit Beispiel 1: Datenintensive Hardware, wie der Energiemonitor OWL +USB (Affiliate-Link) k√∂nnen in FHEM ohne Datenverlust durch die Nutzung des „event-on-change-reading“-Attributs verarbeitet werden, ohne eine hohe Systemauslastung zu verursachen.

2. Beispiel (mit HomeMatic-Bewegungsmeldern HM SEC MDIR): Eigene Logfile-Einträge festlegen

Affiliate-Link

[easyazon_image align=“none“ height=“300″ identifier=“B001R4VAJI“ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/06/31EGCqSB2BML.jpg“ tag=“meintechblog-131122-21″ target=“_blank“ rel=“nofollow“>

Die HomeMatic-Bewegungsmelder HM SEC MDIR (Affiliate-Link) besitzen nur einen Status, n√§mlich „motion“. Wird eine neue Bewegung am Bewegungsmelder erkannt, wird der alte Status „motion“ durch einen neuen Status „motion“ √ľberschrieben. M√∂chte mann dies nun graphisch darstellen, helfen einem die Logfile-Eintr√§ge wenig. Hier wird gezeigt, wie erkannte Bewegungen in einem Verlaufsgraphen visualisiert werden k√∂nnen. Zun√§chst wird das Logfile vorbereitet. Auch hier legen wir erst einen Dummy und ein dazugeh√∂riges Logfile an:

define Motion2Verlauf dummy
define FileLog_Motion2Verlauf FileLog ./log/Motion2Verlauf-%Y.log Motion2Verlauf
attr FileLog_Motion2Verlauf logtype text

Dieses Dummy soll auf „1“ stehen, wenn eine Bewegung erkannt wird und anschlie√üend auf den Status „0“ zur√ľck wechseln. Dieses Wechselspiel kann dann im Anschluss als graphische Darstellung visualisiert werden. Eine „1“ erh√§lt das Dummy ganz einfach √ľber ein notify:

define Motion2VerlaufNotifyAn notify Bewegungsmelder2:motion {fhem ("set Motion2Verlauf 1")}

Hier wird also der Dummy „Motion2Verlauf“ auf „1“ gesetzt, wenn am „Bewegungsmelder2“ ein neuer Status „motion“ erkannt wird.

Im hier gezeigten Beispiel soll diese „1“ f√ľr etwa 15 Sekunden aktiv bleiben und dann auf den Status „0“ wechseln, aber nur wenn innerhalb der 15 Sekunden nicht eine weitere Bewegung am Bewegungsmelder HM SEC MDIR (Affiliate-Link) erkannt wird! Dabei ist zu beachten, dass der Bewegungsmelder nur alle 15 Sekunden sendet, ob eine weitere Bewegung erkannt wurde. W√ľrde man jetzt einfach nach 15 Sekunden wieder auf den Status „0“ stellen, aber die erkannte Bewegung dauert z.B. 30 Sekunden, w√ľrde im Logfile erst eine „1“, nach 15 Sekunden direkt eine „0“ und gleich wieder eine „1“ geschrieben werden. Um dies zu verhindern, wird der „Ausschaltbefehl“ z.B. so umgesetzt:

define AusDummy dummy
define Motion2VerlaufNotifyAus notify Bewegungsmelder2:motion {fhem ("sleep 17 set AusDummy on")}
define AusDummyNeu notify AusDummy:on {fhem ("set Motion2Verlauf 0") if ( (time - time_str2num(ReadingsTimestamp("Motion2Verlauf","state",0 ))) > 16 )}

Der Dummy „AusDummy“ wird nach 17 Sekunden aktiviert (sleep 17), wenn die erste Bewegung am Bewegungsmelder erkannt wurde, als genau 17 Sekunden, nachdem der Status „1“ geschrieben wurde. Ein weiterer Dummy „AusDummyNeu“ reagiert auf diese Status√§nderung und setzt eine „0“, aber nur dann wenn (if) die letzte erkannte Bewegung am Bewegungsmelder l√§nger als 16 Sekunden vergangen ist (siehe if-Bedingung). Das Logfile enth√§lt dann beispielsweise folgende Werte:

...
2013-11-18_18:21:11 Motion2Verlauf 1
2013-11-18_18:21:27 Motion2Verlauf 1
2013-11-18_18:21:42 Motion2Verlauf 1
2013-11-18_18:21:58 Motion2Verlauf 1
2013-11-18_18:22:15 Motion2Verlauf 0
...

So kann gespeichert werden, dass vom Bewegungsmelder HM SEC MDIR (Affiliate-Link) f√ľr etwa eine Minute eine Bewegung erkannt wurde („1“). Anschlie√üend wird wieder auf „0“ gestellt.

Zwischenfazit Beispiel 2: Hardware mit uneindeutigen Statusangaben, wie der Bewegungsmelder HomeMatic HM SEC MDIR, die sich auch im Verlauf der Zeit nicht √§ndern, k√∂nnen √ľber verschachtelte Befehle in eigene Logfiles mit neuen Statuswerten (hier z.B. „1“ und „0“) √ľberf√ľhrt werden.

Logfile-Daten in Graphen visualisieren („plotten“)

Mit der neuen Oberfläche zum Anlegen von Graphen, kann aus jedem Logfile ganz einfach eine Visualisierung erzeugt werden.

Zun√§chst wird das Logfile in FHEM angeklickt. Mit einem Klick auf „Create SVG Plot“ (siehe erster Screenshot) gelangt man auf das UI zur Erstellung des SVGs (siehe Screenshot 2).

Der folgende Abschnitt erkl√§rt das UI Schritt f√ľr Schritt (bitte Nummern im Screenshot vergleichen) an Hand der Datenvisualisierung eines HomeMatic Funkthermostats „HM-CC-RT-DN“ (Affiliate-Link).

Ein Graph oder Plot besteht aus zwei Teilen: Der Beschriftung und Visualisierung einerseits und den Dateninhalten andererseits.

Im Abschnitt 1 (siehe Screenshot) können zunächst sämtliche Beschriftungen vorgenommen werden (relevante Werte aufgelistet):

  • Plot title: √úberschrift des Plots. Hier kann entweder ein fester Name eingegeben werden, oder wie im Screenshot zu sehen „<L1>“. Letzteres funktioniert lediglich in Kombination mit einem Attribut des Plots. Im vorliegenden Fall des Funk-Heizk√∂rperthermostats wurde dem SVG weiter unten das Attribut
    attr¬†¬†SVG_FileLog_Az.Thermostat_1 label¬†„Az.Heizung Min $data{min1}, Max $data{max1}, Last $data{currval1}“ gegeben. Dadurch werden als Plot-√úberschrift ein Name, der Minimal-, der Maximal- und der zuletzt gemessene Wert verwendet.
  • Y-Axis label: Wie der Name schon sagt, werden hier die Beschriftungen der y-Achsen festgelegt. M√∂chte man, wie im Beispiel gezeigt, zwei Werte in einem Plot abbilden, gibt es hierf√ľr die M√∂glichkeit zwei Beschriftungen zu verwenden (hier: Ventilstellung/Actuator in % und die gemessene Temperatur des Raums)
  • Grid aligned: Werden diese Haken gesetzt, orientiert sich die gezeichnete Linie am Raster des Plots (meisten ist dies sinnvoll!)
Nun k√∂nnen die relevanten Datenwerte eines Logfiles (z.B. vom Funk-Thermostat „HM-CC-RT-DN“ (Affiliate-Link))¬†ausgew√§hlt und f√ľr die Visualisierung vorbereitet werden. Dazu muss zun√§chst¬†Abschnitt 3 (siehe Screenshot) betrachtet werden. Hier werden Beispielsausz√ľge aus dem Logfile abgebildet und dienen quasi als Hilfestellung, um die richtigen Werte in¬†Abschnitt 2 (siehe Screenshot) auszuw√§hlen:
  • Diagramm label:¬†Dieser Wert liefert eine genaue Beschreibung jeder einzelnen Linie. Im gezeigten Beispiel werden vom HomeMatic Funkthermostat die Werte Actuator und Temperatur visualisiert und dementsprechend die Linien auch so benannt.
  • Input:Column,Regexp,DefaultValue,Function: Die wohl wichtigste Baustelle im aufgerufenen UI: Hier werden die richtigen Daten des Logfiles als Input-Werte ausgew√§hlt, die es zu plotten gilt.
    – F√ľr die gemessene Temperatur entnehmen wir dem Logfile Auszug in Abschnitt 3, dass der relevante Wert den Namen „measured-temp“ tr√§gt. Dieser kann anschlie√üend √ľber das Dropdown-Men√ľ ausgew√§hlt werden.
    – Jetzt erwartet FHEM noch eine Spaltenangabe im Dropdown-Men√ľ davor. Eine Spalte innerhalb eines Logfile-Eintrages ist f√ľr FHEM jeweils eine Zeichenkombination bis zum n√§chsten Leerzeichen. F√ľr die „measured-temp“ im vorliegenden Beispiel wird daher die vierte Spalte gew√§hlt.
    – F√ľr die Actuator-/Ventilstellung ¬†wird eine Zeile weiter unten analog vorgegangen.
  • Y-Axis,Plot-Type,Style,Width: Schlie√ülich kann jede Linie noch optisch individuell angepasst werden. Zun√§chst wird im ersten Dropdown festgelegt, ob der Wert in der Zeile zur linken oder rechten Achsenbeschriftung geh√∂rt. Der Plot-Type erm√∂glicht eine Ver√§nderung der Visualisierungslogik. Es kann zwischen verschiedenen Styles, wie etwa Punkte, Linien oder Balkendiagramme gew√§hlt werden. Der Style beeinflusst noch die Farbgebung der Linien und der Wert Width √§ndert die Linien-St√§rke.

Anschlie√üend wird der Graph mit dem Button „write .gplot file“ gespeichert. Er erscheint nun in aktualisierter Form im oberen Bereich (siehe Screenshot ganz oben).

Die folglich automatisch erzeugte „.gplot-Datei“ f√ľr das obige Beispiel sieht wie folgt aus (zu finden unter Edit Files):

# Created by FHEM/98_SVG.pm, 2013-10-26 17:22:49
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel "Actuator (%)"
set y2label "Temperature in C"
#FileLog 4:CUL_HM_HM_CC_RT_DN_222ED4.measured-tempx3a:0:
#FileLog 4:CUL_HM_HM_CC_RT_DN_222ED4.actuatorx3a:0:int
plot "<IN>" using 1:2 axes x1y2 title 'Measured temperature' ls l0 lw 1 with lines, "<IN>" using 1:2 axes x1y1 title 'Actuator (%)' ls l1 lw 1 with lines

Verschiedene Devices, wie z.B. der Energiemonitor OWL +USB (Affiliate-Link), der HomeMatic Bewegungsmelder HM SEC MDIR (Affiliate-Link) oder das HomeMatic Funk-Thermostat „HM-CC-RT-DN“ (Affiliate-Link) k√∂nnen, wie oben beschrieben,¬†auf unterschiedliche Arten in FHEM visualisiert werden. Letztlich ist die Kreativit√§t des Anwenders gefragt, welche Daten in welcher Form visuell einen Zusatznutzen erzeugen.

Affiliate-Links

[easyazon_image align=“none“ height=“180″ identifier=“B001R4VAJI“ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/07/bew1.jpg“ tag=“meintechblog-131122-21″ target=“_blank“ rel=“nofollow“>[easyazon_image align=“none“ height=“180″ identifier=“B007KPVC0A“ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/06/410TrGX3pEL.SL1101.jpg“ tag=“meintechblog-131122-21″ target=“_blank“ rel=“nofollow“>[easyazon_image align=“none“ height=“180″ identifier=“B00CFF3410″ locale=“DE“ src=“https://www.meintechblog.de/wordpress/wp-content/uploads/2015/07/hmcc1.jpg“ tag=“meintechblog-131122-21″ target=“_blank“ rel=“nofollow“>

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Verpasse keine Inhalte mehr! Trage dich in den Newsletter ein und folge uns auf Facebook.

Was ist ein Affiliate-Link? Wenn du auf einen Affiliate-Link klickst und √ľber diesen Link einkaufst, bekomme ich vom betreffenden Online-Shop oder Anbieter eine Provision, was mich u.A. bei den laufenden Kosten den Blogs unterst√ľtzt. F√ľr dich ver√§ndert sich der Preis nicht.

Christoph

berichtet seit Juni 2012 auf meintechblog.de √ľber seine Erfahrungen zu Smart Home und Hausautomation und besch√§ftigt sich au√üerdem mit Smart Grids. Mehr Infos

59 Gedanken zu „FHEM-Logfiles und -Graphen: Datenlast reduzieren und Werte ordentlich visualisieren“

  1. Tolle Beschreibung! Ich experimentiere auch gerade mit den HM-CC-RT-DNs rum. W√§re toll, wenn der Artikel noch darauf eingehen w√ľrde, wie man den generierten Plot dann noch sch√∂n in das FHEM Web-Interface einbindet.

    1. Hallo Reiner,
      erst einmal danke! Was meinst Du genau mit „in das FHEM-Webinterface einbinden“? Ich verstehe nicht ganz was du meinst. Hilf mir doch ein wenig auf die Spr√ľnge, dann kann ich den Artikel gerne dahingehend erweitern ;)

      Viele Gr√ľ√üe
      Christoph

    2. Hallo Christoph,

      Ich bin relativer FHEM Neuling und habe Probleme damit, das FHEM Web-Frontend attraktiver zu gestalten. Ich w√ľrde zum Beispiel gerne in meinem „Room“ Heizung gerne nicht nur den ClimRT_tr f√ľr die Thermostate anzeigen, sondern da auch direkt dazu die Grafik. Oder zum Beispiel eine Wettergrafik noch dazu verlinken. Das ganze soll informativer und optisch gef√§lliger wirken.

      Viele Gr√ľ√üe
      Reiner.

    3. Hallo, dann mach das doch √ľber den Floorplan. Dazu gibt es eine gute Anleitung die selbst Anf√§nger spielend umsezten k√∂nnen.
      Ich habe da zB einen schönen Hintergrund auf dem ich dann die Aktoren plaziert habe.
      1. Reihe : schaltbare Steckdosen
      2. Reihe: Rolläden
      Sonnenaufgangs- und Sonnenuntergangszeit
      Wetterbericht f√ľr 3 Tage.
      Dann die Readings meiner EM1000WZ f√ľr Stromverbrauch und PV mit Gesamtstand, letzter Tag aktueller Tag, letzter Monat, aktueller Monat. Dazu dann jeweils der Tagesplot
      alles auf einer Seite
      Das sowohl optimal arrangiert f√ľr PC als auch f√ľr Webpad.
      Das läßt sich ganz schnell realisieren.
      Nur zum Experimentieren gehe ich auf die FHEM Startseite

    4. Hallo Reiner,

      das ist ganz einfach!!! Du kannst ALLEN Definitionen in FHEM einem Raum zuweisen. Da auch der Graph eine Definition ist, kannst du ganz normal mit „attr Graphname room Heizung“ die Grafik in den gew√ľnschten Raum verschieben.

      Viele Gr√ľ√üe
      Christoph

  2. Ich lese sehr gerne hier im Blog.
    Aber sorry, eine „ordentliche Visualisierung“ sieht anders aus. Ich finde die Graphen einfach nur h√§sslich und absto√üend. So macht das keinen Spa√ü.

    1. Hallo Florian,

      unter „ordentlich“ wird hier eher die Technik verstanden ;) Du hast absolut Recht. Visuell hat FHEM auf allen Bereichen massiven Nachholbedarf. Das beginnt bei der Weboberfl√§che (mit allen Skins/Themes) und geht weiter zu den mobilen Applikationen f√ľr Android und iOs.

      Ich habe eine Idee: Schreib doch mal so ein paar Anforderungen, die Du an eine ordentliche visuelle Darstellung der Werte hättest. Vielleicht können wir gemeinsam etwas entwickeln?

      Viele Gr√ľ√üe
      Christoph

    2. Hi,
      ich m√∂chte gerne wissen, was im Moment die grafisch h√ľbscheste L√∂sung ist um Fhem mit Spa√ü zu benutzen. Ich nutze zur Zeit √ľber mein Android Smartphone die ANDfhem App…funktionell ist die ja toll, aber grafisch macht es einfach keinen Spa√ü es zu bedienen, wenn man alles am Sytem soweit angelegt hat.
      Also was benutzt Ihr, bzw wie kann ich es am besten mit ein bischen Pep benutzen…Tablet etc ist alles am start…

      Eine Info wäre cool. Danke

      Sven

    3. Hallo Sven,

      ich bef√ľrchte, ich habe schlechte Nachrichten f√ľr dich: FHEM ist grunds√§tzlich h√§sslich :) Spa√ü bei Seite… Mir ist leider keine App bekannt, die tats√§chlich h√ľbsch ist. Gerade f√ľr Tablet etc. gibt es nichts.

      Einen Lichtblick habe ich aber f√ľr dich: Mediola Hacks – fhemcontrol. Hier findest du eine Anleitung, wie die „relative h√ľbsche“ Mediola-App f√ľr FHEM genutzt werden kann. Bitte pr√ľfe vorher, ob es die App auch f√ľr Android gibt.

      Viele Gr√ľ√üe
      Christoph

    4. Hi Jörg,

      Danke ! Das sieht doch schonmal nach was aus Die Mediola App gibt es auch f√ľr Android.
      Jetzt mu√ü ich nur noch rausfinden ob ich f√ľr diesen Mediola Server, welchen du im Link gepostet hast einen extra PI brauche oder ob ich es gleichzeitig mit auf dem selben Pi laufen lassen kann, wo auch fhem drauf l√§uft…
      ich werde das mal testen und dann berichten.

      Vielen Dank
      Sven

    1. Hallo Florian,

      die Visualisierung von Ninjablocks is eindeutig schöner als FHEM (aber das ist ja auf nicht schwer).
      Ich bin gerade dabei, mit jQuery (Mobile) ein Tablet-Interface zu bauen.
      Meine Coding-Skills sind allerdings nicht der Hit, daher brauche ich viel Zeit UND baue alles ausschließlich statisch, d.h. genau auf meine Geräte abgestimmt.

      F√ľr die Visualisierung von Temperaturen etc. nutze ich dabei GraphUp (Link hier). Dabei handelt es sich um ein Plot-Plugin f√ľr jQuery, mit dem man einigerma√üen „sexy“ verschiedene Werte visualisieren kann (z.B. mit „Bubbles“).

      Um die Werte auf FHEM raus zu bekommen, nutze ich aktuell noch eine sehr „h√§ssliche“ Variante, bei der Temperaturen, Energiewerte etc. alle 5 Sekunden neu in .txt-Dateien abgespeichert und dann an das jQuery-Interface √ľbergeben werden.

      Ich halte Dich auf dem Laufenden, bin allerdings sicher, dass ich noch lange brauchen werde.
      Schau Dir jQuery Mobile mal an. Hier kann man auch als Einsteiger relativ schnell die ersten Ergebnisse realisieren.

      Viele Gr√ľ√üe
      Christoph

    1. Hallo Jens,

      z.B. in dem Du per FTP auf Deinen Server gehst und die Datei mit Deinem Ftp-Client löscht.

      Gib Bescheid, wenn Du noch Fragen hast.
      Viele Gr√ľ√üe
      Christoph

    2. Jetzt habe ich die gel√∂scht die ich weg haben wollte, doch nun ist nur die Grafik weg. Es steht da das kein Ordner vorhanden ist und es wird Platz gehalten f√ľr die Grafik.
      Wie bekomme ich das weg. SVG_FileLog_Bewegungsmelder_1
      wo kann man das ausstellen oder abmelden? Sprich keine Analyse und Datensammlung erfolg.

  3. Deine Anleitung f√ľr Owl funkt einwandfrei. Fast keine Logs mehr nur im „Hauptlog“ (fhem) habe ich noch immer alle readings .
    Hast du eine Ahnung wie ich die CM160 Logs aus dem Hauptlog heraus bekomme?

  4. Hi,

    danke f√ľr die Anleitung. Sag mal ist irgendwo beschrieben, wie ich f√ľr regelm√§√üige Logeintr√§ge der Thermostate sorge? Hab ich das irgendwie √ľberlesen?

    Danke schon mal!

    1. Hat sich √ľbrigens erledigt… Irgendwas in der .cfg passte nicht. Nun werden die Werte geloggt und ausgewertet :)

  5. Erstmal vielen Dank f√ľr die Anleitungen hier…. haben mich erstmal aufs Thema Fhem gebracht.
    Bisher klappt fast alles. Zwei Thermostate und ein Fensterkontakt miteinander verbunden und alle drei Sachen in Fhem angemeldet.

    Blos beim Plot gehen die Probleme los:
    Benenne ich die Thermostate nicht um kann ich den Plot anlegen und er funktioniert.
    Wenn ich abe der GeräteName änder, zb.:
    rename HM_HM_CC……… _55xx55 eg_kueche
    wird der Geräte Name in eg_kueche geändert.
    In der Plot Auswahlliste sind die Input aber alle falsch beschriftet… das bekomme ich nicht weg
    Vieleicht hast du da einen Tip f√ľr mich!

    Danke und Gruß Michael

  6. Hallo Christoph,
    ich habe einige plotts mit dem plotteditor f√ľr meine solaranlage erstellt. dies hat auch soweit nach deiner anleitung geklappt. aber der plottedotor vergibt den dateinamen einfach von sich aus. zB. wenn ich aus dem Loglife mySL_Pac_Day einen Plot erstelle hei√üt dieser anschlie√üend „SVG_FileLog_mySL_Pac_Day_1.gplot“
    Ich m√∂chte den Plott aber mit dem Namen ohne die fortlaufende Nummerierung speichern. Ich bin dann hingegangen und habe den Filenamen ge√§ndert und auch im Plott ohne die „_1“ und neugestartet. Gehe ich dann auf Everything steht da trotzdem der Filename mit der „_1“ obwohl die Datei nicht mehr vorhanden ist. Wie kann ich die Plottnamen dauerhaft √§ndern?
    Gruß aus Köln
    Norbert

    1. Hallo Norbert,

      um eine √Ąnderung des Namens vorzunehmen, musst du einerseits in der fhem.cfg die Benamung √§ndern sowie mit einem FTP-Programm im FHEM-Ordner (z.B. /www/gplot/) den Namen der neu erzeugten gplot-Datei ab√§ndern.

      Viele Gr√ľ√üe
      Christoph

  7. Hallo Christoph,

    ich lese deinen Blog schon länger und finde das ganze äußerst interessant. Mittlerweile betreibe ich auch einen RPi mit HM-LAN und drei HM Heizungsreglern. Alle drei lasse ich in einem svg plot visualisieren, das ganze funktioniert auch perfekt, nur bauen sich die Graphen ab mittags immer langsamer auf, weil es eben so viele Werte werden. In den Graphen habe ich immer Ventielstellung, Ist- und Soll-Temperatur. Kann ich diese dreier Kombination auch irgendwie mit dem dummy abhandeln um die Menge der Werte zu verringern?

    MfG und Vielen Dank f√ľr deine M√ľhe

    Tobias

    1. Hallo Tobias,

      poste mir doch mal einen Auszug aus deinem Logfile, dann kann ich das genauer sagen. Grunds√§tzlich geht das schon! Z.B. k√∂nntest Du einem Dummy mit „setreading“ einzelne Readings setzen. Du k√∂nntest also die Werte „measured-temp“, „desired-temp“ und „actuator“ der HM-Reizungsregler auslesen und NUR DIESE mit setreading in einen Dummy packen.

      So h√§ttest Du alle anderen Meldungen, wie z.B. „Battery“ etc., aus dem Logfile, welches den SVG erzeugt, draussen.
      Wie gesagt, poste mal einen Auszug aus deinem Log!

      Viele Gr√ľ√üe
      Christoph

    2. Hallo Christoph,

      das hier kommt alle drei Minuten:

      2014-06-13_12:49:14 Bad.Thermostat battery: ok
      2014-06-13_12:49:14 Bad.Thermostat batteryLevel: 3.1
      2014-06-13_12:49:14 Bad.Thermostat measured-temp: 24.4
      2014-06-13_12:49:14 Bad.Thermostat desired-temp: 12.0
      2014-06-13_12:49:14 Bad.Thermostat actuator: 0

      Es w√ľrde ja vollkommen reichen, wenn das nur dann geloggt wird, wenn sich etwas √§ndert. Dann w√§ren meine SVG’s vermutlich auch deutlich schneller.

      Die config dazu sieht momentan so aus:

      # Thermostat Bad
      define Bad.Thermostat CUL_HM 22B8B7
      attr Bad.Thermostat IODev myHMLAN1
      attr Bad.Thermostat actCycle 000:10
      attr Bad.Thermostat actStatus alive
      attr Bad.Thermostat autoReadReg 4_reqStatus
      attr Bad.Thermostat expert 2_full
      attr Bad.Thermostat firmware 1.1
      attr Bad.Thermostat fm_type temp,desiredtemp,actuators
      attr Bad.Thermostat model HM-CC-RT-DN
      attr Bad.Thermostat serialNr KEQ0727849
      attr Bad.Thermostat subType thermostat
      attr Bad.Thermostat webCmd getConfig:clear msgEvents:burstXmit
      #attr Bad.Thermostat group 03_Badezimmer
      #attr Bad.Thermostat room 03_Badezimmer
      define Bad.Thermostat_Btn1 CUL_HM 22B8B701
      attr Bad.Thermostat_Btn1 model HM-CC-RT-DN
      attr Bad.Thermostat_Btn1 peerIDs 00000000,
      attr Bad.Thermostat_Btn1 webCmd press short:press long
      define Bad.Thermostat_Climate CUL_HM 22B8B702
      attr Bad.Thermostat_Climate model HM-CC-RT-DN
      attr Bad.Thermostat_Climate peerIDs 00000000,
      define Bad.Thermostat_WindowRec CUL_HM 22B8B703
      attr Bad.Thermostat_WindowRec model HM-CC-RT-DN
      attr Bad.Thermostat_WindowRec peerIDs 00000000,
      attr Bad.Thermostat_WindowRec stateFormat last:trigLast
      define Bad.Thermostat_Clima CUL_HM 22B8B704
      attr Bad.Thermostat_Clima model HM-CC-RT-DN
      attr Bad.Thermostat_Clima peerIDs 00000000,
      define Bad.Thermostat_ClimaTeam CUL_HM 22B8B705
      attr Bad.Thermostat_ClimaTeam model HM-CC-RT-DN
      attr Bad.Thermostat_ClimaTeam peerIDs 00000000,
      define Bad.Thermostat_remote CUL_HM 22B8B706
      attr Bad.Thermostat_remote model HM-CC-RT-DN
      attr Bad.Thermostat_remote peerIDs 00000000,

      define FileLog_Bad.Thermostat FileLog ./log/Bad.Thermostat-%Y.log Bad.Thermostat
      attr FileLog_Bad.Thermostat logtype hm-rt:Plot,text
      #attr FileLog_Bad.Thermostat room 03_Badezimmer

      # Visualisierung: Bad-Heizung
      define wl_bad_heizung SVG FileLog_Bad.Thermostat:hm-rt:CURRENT
      attr wl_bad_heizung group 03_Badezimmer
      attr wl_bad_heizung label „Ist: $data{currval1}, Soll: $data{currval2}, Ventil: $data{currval3}“
      attr wl_bad_heizung room 03_Badezimmer

      Vielen Dank f√ľr deine Hilfe

      Tobias

    3. Hallo Tobias,

      hast du es schon mit einem „event-on-change-reading“ versucht? Einfach mal in der Commandref nachlesen. Dieses Attribut sorgt daf√ľr, dass nur bei ge√§nderten Werten Events und damit auch Log-Eintr√§ge ausgel√∂st werden.

      Deine Config und das Logfile sehen normal aus.

      Wenn Du zu dem „event-on-change-reading“ noch Fragen hast, melde dich.

      Viele Gr√ľ√üe
      Christoph

    4. Vielen Dank f√ľr den Hinweis.

      Ich hatte jetzt mal Zeit zum testen und die Zeile:

      attr Bad.Thermostat event-on-change-reading Activity,actuator,desired-temp,measured-temp,batteryLevel,battery

      macht alles genau so wie ich es möchte.

      Vielen Dank

      Tobias

  8. Hallo, was mu√ü machen wenn ich diesen Befehl define WattUsageAnDummy at +*00:00:05 { my $d= ReadingsVal(„WK.Waschmaschine_Power“,“power“,0);; fhem(„set AktuellerVerbrauch $d“);;} mit noch einem Wert auslesen will jetzt habe ich ja nur „power“ will aber noch „energie“ was mu√ü ich da anders machen.

    LG Micha

    1. define AktuellerVerbrauchEnergie dummy
      define WattUsageAnDummyEnergie at +*00:00:05 { my $e= ReadingsVal(„WK.Waschmaschine_Power“,“energie“,0);; fhem(„set AktuellerVerbrauchEnergie $e“);;}

  9. Hallo zusammen,
    leider ist die Website von “ Mediola Hacks “ nicht mehr erreichbar.
    Interessiere mich jedoch stark f√ľr eine Verbindung zwischen FHEM und dem Mediola Creator. Da Mediola FHEM offiziell auch auf anfrage nicht unterst√ľtzt, erhoffe ich mir von euch Unterst√ľtzung. Ist der fhemcontrol woanders verf√ľgbar und oder gibt es alternativen oder oder oder.

    Vielen Dank

    1. Habe die komplette Webseite runter geladen bevor sie Down war, also Doku, Anleitung und den Server fhemcontrol-0.0.4-1.tar.gz, fhemcontrol-0.0.4-1.noarch.rpm und fhemcontrol-0.0.4-1.deb

      Ich versteh bei Linux nur Bahnhof schick dir aber auf Wunsch das Zeugs zum fummeln
      Auf der Mediola Seite steht auch was wie Mediola mit dem User der das geproggt hat kein Interesse zeigte , warum auch immer, in meinen Augen war/ist das f√ľr Mediola die Mega Fehlentscheidung gewesen, Schnittstelle war fertig und lief aber kein Ahnung wieso die nicht wollten, vermutl. reichten denen die Aktoren die sie implemetniert haben, wovon 90% China billig M√ľll mit hoher Ausfallquote und fehlfunktionen, schlechter Lesitung sind, restl. 10% gibt es gar nicht mehr zu kaufen….
      Mediola verschläft den Smart Home Aktoren Markt

    2. Hallo Martin,
      das w√§re super, wenn ich das System verstanden habe kann ich dich auch gerne unterst√ľtzen. Kannst du alles in die Cloud laden „DropBox“ oder der Art?!

      Viele Gr√ľ√üe

  10. Hallo Martin,

    was mache ich falsch, wenn nach jedem Update und Abspeichern √ľber den Fhem Webeditor die Plots immer wieder verschwinden. Wenn ich die fhem.cfg per FTP editiere und wieder hochlade bleiben Sie. Sobald ich aber andere Wege w√§hle verschwinden Sie jedesmal. Ich bin es leid Sie immer wieder anzulegen. Hast du bitte einen Tip f√ľr mich ?

    Vielen Dank

    1. Hallo Christoph,

      Vielen Dank ! Genau das war es ! Ich hab die Plots angelegt bloss irgendwie vergessen jedesmal den Knopf zum Abspeichern Links im Menu zum abspeichern zu dr√ľcken. Also einfach nur ein Denk – und Fl√ľchtigkeitsfehler.

      Danke

      VG
      Sven

  11. Hallo,
    danke f√ľr das Tutorial! Alleridings gibt mir meine log-Datei immerwieder das selbe aus (Funktion an sich ist da, bei jeder √Ąnderung wird reingeschrieben, allerdings „m√ľllt“ irgendetwas mir die Log zu)

    2015.02.10 20:21:06 3: Please define +*00:00:05 first
    2015.02.10 20:21:06 3: Verbraucher1Setzen return value: Please define +*00:00:05 first
    Unknown command fhem(„set, try help.
    Unknown command }, try help.
    2015.02.10 20:21:06 1: devspec2array +*00:00:05: Quantifier follows nothing in regex; marked by <– HERE in m/^(+ <– HERE *00:00:05)$/ at fhem.pl line 1052.

    Gr√ľ√üe

  12. Tolle Anleitung! Danke. Eine Frage h√§tte ich noch: Gibt es eine M√∂glichkeit die Log-Eintr√§ge auf eine Stelle hinter dem Komma zu k√ľrzen? Bei mir schwanken die Standby-Werte eines Ger√§tes immer ein wenig. Das f√ľhrt zu unn√∂tigen Logs und zu unsch√∂nen Plots.

    Gr√ľsse aus Kassel

    Udo

  13. Hallo,

    zun√§chst einmal vielen Dank f√ľr diesen gro√üartigen Blog :)

    Ich habe ein Problem mit meinem Graphen f√ľr die Roll√§den.
    Ich nutze den Homematic-Rolladenaktor und dieser schreibt ins Logfile „Auf“ und „Ab“ f√ľr komplett ge√∂ffnet bzw geschlossen, die Zwischenschritte jedoch als Zahl (z.b. 40).

    Nun bekomme ich es nicht hin das in den Graphen vern√ľnftig anzeigen zu lassen.
    Bei den Zwischenschritten welche als Zahl geloggt werden klappt das nat√ľrlich, nur „Auf“ und „Ab“ erkennt der Plot nicht.

    Habe bereits in der userconfig.js die Werte gesetzt ( „Ab“: „100“) aber das scheint nicht zu funktionieren.

    Hast du vielleicht einen Tip f√ľr mich?
    Vielen Dank!

    1. Hi Sascha,
      vielen Dank!

      Nutze doch einfach das Reading „pct“ der Rolladenaktoren f√ľr deine Graphen. Der Wertebereich ist zwischen 0 und 100, was genau das sein sollte, was du ben√∂tigst.

      Gr√ľ√üe
      Jörg

    2. Danke f√ľr die R√ľckmeldung.

      Ja, den Gedanken hatte ich ja auch zun√§chst, nur leider wird auch das Reading „pct“ im Logfile mit „Auf“ bzw. „Ab“ etc. geschrieben.

      Ich vermute das liegt an der Eventmap welche ich wie folgt erstellt habe:

      „eventMap
      100:Auf 60:Schatten stop:Stop 70:Halb 0:Ab“

      Sicher bin ich mir jedoch noch nicht, bin noch sehr frisch in Sachen FHEM.

  14. Hallo Jungs, im Code bei

    define WattUsageAnDummy at +*00:00:05 { my $d= ReadingsVal(„OwlUsb“,“W“,0) fhem(„set AktuellerVerbrauch $d“)}

    fehlt das Semikolon als Trennzeichen der beiden Befehle ( also vor fhem(„set AktuellerVerbrauch $d“).
    Da Ihr in den verlinkten Artikeln nicht OwlUsb, sondern CM160 beschrieben habt, w√§re eine Anpassung f√ľr Neulinge wie mich hilfreich. ;)

    Trotzdem vielen Dank f√ľr Eure tolle Arbeit.

  15. Hallo Christoph,

    Super Sache funktioniert alles soweit. ( Owl Energiemonitor) .
    Was mir allerdings aufgefallen ist – es erzeugt ein neues logfile pro Tag – macht das Sinn?
    Wäre pro Jahr nicht besser oder habe ich einen Fehler gemacht?

    Gruß und Danke
    Wolfgang

  16. Gute Beschreibung. Gibt es auch eine Beschreibung f√ľr TX 29 DTH – IT? Wie kann man verhindern, dass der Fhem-Server nicht mit Logs √ľberflutet wird bzw. wie kann ich die Logs von den Sensoren (TX 29 DTH – IT) optimieren? Jetzt kommt die Quizfrage: Wie kann man die Graphen (Temperatur- und Feuchtigkeitskurven) dauerhaft speichern, damit man nicht jedes Mal das Ganze neu generieren muss?

    Vielen Dank im Voraus f√ľr die Antworten.

  17. Hallo Christoph,
    vielen Dank f√ľr den Beitrag. Werde ich gleich mal umsetzen. Aber w√§re es bei einem Wert, der sich nur selten √§ndert und dann konstant bleibt nicht besser, wenn ich folgenderma√üen vorgehen w√ľrde:
    – Wert in Dummy schreiben
    – Wert in log-file schreiben
    -Wenn der Wert sich ändert, erst den alten Wert ins log-file schreiben und dann den neuen Wert.

    So w√ľrde man auch Stufen im Plot bekommen und keine Zacken.

  18. super Beschreibung! Meine Logfiles sind nun um einiges kleiner. Aber wie kann ich in der Grafik die Kurve bis zum akt. Zeitpunkt weiterf√ľhren, wenn ich sie mir z. B. um 15 Uhr anschauen und der letzte Sollwert von 7:00 ist? die Aktuellen werte sind von 14:55. Da h√∂rt die Sollwertkurte einfach bei der letzten Verstellung auf. :( W√§re f√ľr jeden Tipp dankbar.

  19. hallo,
    in meinem log befinden sich sehr hohe Werte:
    2017-04-14_08:58:05 Landroid distance: 42163
    2017-04-14_08:58:35 Landroid distance: 48672
    2017-04-14_08:59:05 Landroid distance: 53674
    wie kann ich vermeiden, dass meine Achsenbeschriftung somit so aussieht:
    1e+06

    kann ich Werte evtl /1000 runden?

  20. Hallo,

    reduzieren Logfile … Du hast ja auch Temperatursensor TX 29DTH-IT, der sendet auch alle paar Sekunden Werte. Da sind es ja zwei Werte, Temperatur und Luftfeuchte. Wie reduziert man da das Logfile? Wie hast Du das gel√∂st?

  21. zu: Logfile-Daten in Graphen visualisieren („plotten“)
    Hi,
    leider hast Du nicht alle Parameter erkl√§rt. So fehlt mir die Info, wie „Tics“ (Abschnitt 1 Deines Screenshot), „DefaultValue“ und „Function“ (Abschnitt 2 Deines Screenshot) sinnvoll eingesetzt/genutzt werden k√∂nnten.
    Gr√ľ√üe
    Fritz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert