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

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://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://meintechblog.de/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://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://meintechblog.de/wp-content/uploads/2015/07/hmcc1.jpg“ tag=“meintechblog-131122-21″ target=“_blank“ rel=“nofollow“>

60 Kommentare
  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

  3. Hallo Christoph,

    Hast du dir schonmal die Ninjablocks angeschaut? Ist eine Open Source Plattform für 433mhz devices mit Cloud. Im Gegensatz zu FHEM scheinen diese Jungs wirklich verstanden zu haben, worauf es ankommt: http://www.ninjablocks.com

    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.

  4. 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?

  5. 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 🙂

  6. 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

  7. 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

  8. 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

  9. 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“);;}

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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.

  15. 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.

  16. 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

  17. 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.

    1. Hallo Manfred,
      da man den Plot ja z. B. per Telegram verschicken kann (http://www.fhemwiki.de/wiki/TelegramBot#Versand_von_SVG-Plots) denke ich dass man den Plot auch per Perl irgendwo speichern kann. Aber dazu kenn ich mich noch zu wenig aus.
      Daniel

  18. 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.

  19. 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.

  20. 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?

  21. 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?

  22. 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

Das könnte dir auch gefallen