Schaltvorgänge visualisieren

Begonnen von maxritti, 16 Oktober 2013, 20:59:26

Vorheriges Thema - Nächstes Thema

maxritti

Guten Abend zusammen,

nach nunmehr etwas längerer erfolgloser Suche bei Google und hier im Forum traue ich mich mal meine Frage loszuwerden.
Ich habe nun auch mal mit Heimautomatisierung und Fhem angegangen. Bislang lediglich mit einem Homematic LAN Adapter einem HM Bewegungsmelder und einer HM Zwischensteckdose.
Bislang spiele ich da mit einer Lampe, Fhem im Browser und ner iPhone App eine wenig rum.

Und da hat sich nun eine Frage ergeben.
Lassen sich die Schaltvorgänge von fhem bzw des LAN Adapters in irgendeiner Weise visualisieren also eventuell als Graph darstellen? So das man erkennen kann, von wann bis wann eine Lampe an war oder aus?

Ob das Sinn macht, weiß ich noch gar nicht, aber die Frage kam mir so während der Spielerei  :)

Dirk

Hallo maxritti,

Ja, das geht.
Du musst lediglich für deinen Aktor ein Logfile definieren.
Eine gute Anlaufstelle dafür währ die Commandref:
http://fhem.de/commandref.html#FileLog

Zu dem Logfile kannst du dann ein so genannten Plot definieren.

Gruß
Dirk

maxritti

Hi Dirk,

das hört sich schon mal prima an.
Ein Logfile gibt es. Dieses wurde automatisch von fhem kreiert.

Hast du eventuell noch ein Link für eine Hilfe, wiki o.ä. für die Plotgeschichte?

Danke schon mal

Dirk


maxritti

Moin,

vielleicht ist es noch ein wenig früh. Aber irgendwie stehe ich auf dem Schlauch.

Das Wiki habe ich mir mal durchgelesen. Da steht ja man solle am besten eines der existierenden .gplot Files kopieren.
Also habe ich mir einfach mal das fs20.gplot file genommen, da es für mich am besten geeignet aussah.
Einfach mal die Werte eines FS20 Gerätes anzuzeigen. Es geht bei mir zwar um ein HM Device aber sollte ja egal sein.

############################
# Display the on and off values off an my zirkulationspumpe device
# Corresponding FileLog definition:
# define fs20log FileLog /var/log/fhem/fs20dev-%Y-%U.log fs20dev

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 'Zirkulationspumpe'

set ytics ("Off" 0, "On" 1)
set y2tics ("Off" 0, "On" 1)
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]
set ylabel "Status"
set y2label "Status"

#FileLog 3::0:$fld[2]=~"on"?1:0

plot "< awk '{print $1, $3~/on/? 1 : 0; }' <IN>"\
        using 1:2 notitle with steps


Die Datei habe ich dann mal als my_zirk.plot benannt.
Das einzige was ich in der Datei angepasst habe ist mal der Titel. Nur die grosse Frage ist, wo diese gplot Datei nun die Referenz zu dem Logfile bekommt.

Im Header der Datei steht ja nur, dass es einen existierenden Eintrag "define fs20log...." geben muss.

Gehe ich nun im Fhem auf das Device, sieht es so aus:

Da habe ich dann mal "dg_zirkulationspumpe" ausgewählt und auf "Create SVG plot" geklickt.
Dann erstellt der mit in dem Verzeichnis "/opt/fhem/www/gplot/" Dateien, die so aussehen:

SVG_FileLog_dg_zirkpumpe_1
und
SVG_FileLog_dg_zirkpumpe_2

weil ich wohl 2 mal drauf geklickt habe.

Dann bekomme ich auch einen Graph, der ist allerdings leer, obwohl im Log etwas steht.

Magst Du mal über die Konfig schauen?
So richtig scheine ich das noch nicht gemacht zu haben.

rudolfkoenig

Der Wiki-Artikel ist veraltet, weil es das Anlegen "per-Hand" beschreibt, was fuer ungeuebte bzw. nicht Techniker recht muehsam ist. Mit "Create SVG Plot" im FileLog-Detail-Ansicht steht einem inzwischen ein Konfigurations-Frontend zur Verfuegung. Siehe auch http://forum.fhem.de/index.php/topic,11275.msg75594.html#msg75594

maxritti

Danke Dir für den Hinweis.
Dann werde ich da mal nachschauen.

Ich melde mich, wie es ausgegangen ist.

maxritti

Hallo,

ich noch mal. :)

Also immerhin bekomme ich nun einen Graph angezeigt, der wohl auch in etwa den Werten des Logs entspricht.

Hier mal das Logfile von gestern.
Gestern um etwa 12:30 habe ich "wz_steckdose" mal in "dg_zirkpumpe" umbenannt, damit es besser auf die reale Situation passt.

2013-10-16_12:28:49 wz_steckdose R-intKeyVisib: invisib
2013-10-16_12:28:49 wz_steckdose R-pairCentral: 0x123ABC
2013-10-16_12:28:50 wz_steckdose level: 0 %
2013-10-16_12:28:50 wz_steckdose deviceMsg: off (to myHMLAN)
2013-10-16_12:28:50 wz_steckdose off
2013-10-16_12:28:50 wz_steckdose running: -
2013-10-16_12:45:45 dg_zirkpumpe level: 0 %
2013-10-16_12:45:45 dg_zirkpumpe deviceMsg: off (to myHMLAN)
2013-10-16_12:45:45 dg_zirkpumpe off
2013-10-16_12:45:45 dg_zirkpumpe running: -
2013-10-16_16:51:59 dg_zirkpumpe set_on
2013-10-16_16:51:59 dg_zirkpumpe level: 100 %
2013-10-16_16:51:59 dg_zirkpumpe deviceMsg: on (to myHMLAN)
2013-10-16_16:51:59 dg_zirkpumpe on
2013-10-16_16:51:59 dg_zirkpumpe running: -
2013-10-16_16:52:01 dg_zirkpumpe set_off
2013-10-16_16:52:01 dg_zirkpumpe level: 0 %
2013-10-16_16:52:01 dg_zirkpumpe deviceMsg: off (to myHMLAN)
2013-10-16_16:52:01 dg_zirkpumpe off
2013-10-16_16:52:01 dg_zirkpumpe running: -
2013-10-16_16:54:01 dg_zirkpumpe level: 0 %
2013-10-16_16:54:01 dg_zirkpumpe deviceMsg: off (to myHMLAN)
2013-10-16_16:54:01 dg_zirkpumpe off
2013-10-16_16:54:01 dg_zirkpumpe running: -
2013-10-16_19:13:03 dg_zirkpumpe set_on
2013-10-16_19:13:03 dg_zirkpumpe level: 100 %
2013-10-16_19:13:03 dg_zirkpumpe deviceMsg: on (to myHMLAN)
2013-10-16_19:13:03 dg_zirkpumpe on
2013-10-16_19:13:03 dg_zirkpumpe running: -
2013-10-16_19:15:03 dg_zirkpumpe level: 100 %
2013-10-16_19:15:03 dg_zirkpumpe deviceMsg: on (to myHMLAN)
2013-10-16_19:15:03 dg_zirkpumpe on
2013-10-16_19:15:03 dg_zirkpumpe running: -
2013-10-16_22:00:00 dg_zirkpumpe set_off
2013-10-16_22:00:00 dg_zirkpumpe level: 0 %
2013-10-16_22:00:00 dg_zirkpumpe deviceMsg: off (to myHMLAN)
2013-10-16_22:00:00 dg_zirkpumpe off
2013-10-16_22:00:00 dg_zirkpumpe running: -
2013-10-16_22:02:00 dg_zirkpumpe level: 0 %
2013-10-16_22:02:00 dg_zirkpumpe deviceMsg: off (to myHMLAN)
2013-10-16_22:02:00 dg_zirkpumpe off
2013-10-16_22:02:00 dg_zirkpumpe running: -


Durch die Werte kommt nun der im Bild dargestellt Graph zustande.

Ich frage mich nun nur, warum die "Kurve" so diagonal ansteigt.
Weil meine Lampe ist ja nicht von 12:45:45 bis 16:51:59 langsam auf 100% gedimmt worden. Sondern um 16:51:59 eingeschaltet worden.
Das Ausschalten um 16:52:01 hat er immerhin richtig direkt auf 0 gesetzt.

Allerdings ist komisch, dass um 19:13:03 und 19:15:15 jeweils ein on signal kommt.
Ich habe die Steckdose mal mit folgenden Befehlen ein und ausschalten lassen.

define dg_zirkpumpe_on at *{sunset(0,"17:00","22:00")} set dg_zirkpumpe on
define dg_zirkpumpe_off at *22:00 set dg_zirkpumpe off

Und das Off Signal um 22:02:00 scheint mir ganz im Graph zu fehlen.

Hat dazu noch jemand einen Tip?

Dirk

Hi maxritti,

ZitatIch frage mich nun nur, warum die "Kurve" so diagonal ansteigt.
Stelle Bei Plot-Type mal steps ein.

ZitatAllerdings ist komisch, dass um 19:13:03 und 19:15:15 jeweils ein on signal kommt.
Hast du hier vielleicht mal anderweitig die Steckdose geschaltet?

ZitatUnd das Off Signal um 22:02:00 scheint mir ganz im Graph zu fehlen.
Der Strich auf der Nulinie geht doch bis ca. 22:00. Das sieht für mich gut aus.

Du wertest hier übrigens nicht on/off aus, sondern das Level (0-100%).

Gruß
Dirk

maxritti

Zitat von: Dirk am 17 Oktober 2013, 12:20:54
Hi maxritti,
Stelle Bei Plot-Type mal steps ein.

Hast du hier vielleicht mal anderweitig die Steckdose geschaltet?
Der Strich auf der Nulinie geht doch bis ca. 22:00. Das sieht für mich gut aus.

Treffer. Das sieht besser aus. Allerdings sind jetzt Peaks in dem Diagramm zu sehen.
Ich hätte eigentlich gedacht, dass die Linie von 19:15:15 bis 22:00 auf 1 bzw 100% steht. Da diese ja die ganze Zeit an war, bis sich der Status geändert hat.

Zitat von: Dirk am 17 Oktober 2013, 12:20:54
Du wertest hier übrigens nicht on/off aus, sondern das Level (0-100%).

Gruß
Dirk

Das liegt wohl an der Einstellung "4" unter Input?
Wenn ich allerdings auf "3" umstelle, bekomme ich eine absolute Nulllinie.
Da wird On/Off nicht mehr registriert.
Muss ich da jetzt in dem Feld "Function" noch ein wenig rumhantieren?
So nach dem Motto if (wert = "on") 1 else 0

maxritti

Irgendetwas stimmt wohl noch nicht.
Ich sehe gerade als ich so im Fhem Web mit dem "Write .gplot file" rumprobiere, dass auf meiner ssh Sitzung diverse Meldungen protokolliert werden:

Argument "-" isn't numeric in numeric lt (<) at ./FHEM/92_FileLog.pm line 685, <GEN91> line 6.
Argument "-" isn't numeric in numeric lt (<) at ./FHEM/92_FileLog.pm line 685, <GEN91> line 12.
Argument "-" isn't numeric in numeric lt (<) at ./FHEM/92_FileLog.pm line 685, <GEN91> line 18.
Argument "-" isn't numeric in numeric lt (<) at ./FHEM/92_FileLog.pm line 685, <GEN91> line 24.
Argument "-" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1014.
Argument "-" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1014.
Argument "-" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1014.
Argument "-" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1014.
Argument "-" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1307.
Argument "-" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1307.
Argument "-" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1307.
Argument "-" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1307.


Gesund kann das ja bestimmt nicht sein.

rudolfkoenig

1. Im FileLog das Regexp so aendern, das nur on und off events protokolliert werden, z.Bsp. (dg_zirkpumpe|wz_steckdose):(on|off)
Das ist fuer andere Module wie FS20 oder ZWave nicht notwendig, da diese keine unnoetigen Events wie set_on generieren. Es geht auch anders, indem man in der .gplot Datei einen passenden Regexp eintraegt, mann kann dann halt den Plot-Editor nicht verwenden

2. Im Plot-Editor als Filter alle Events des Geraetes auswaehlen: wz_steckdose:.* , und als Funktion $fld[2]=~"on"?1:0  (Achtung: keine Leerzeichen!). Als Tics gibt man ("Off" 0, "On" 1) ein und fuer Range [-0.1:1.1]

Die unten erwaehnten Fehlermeldungen im Log kommen vermutlich von im Plot-Editor spezifizierten Funktionen (d.h. Perl-Ausdruecken), die keine numerischen Werte zurueckliefern.

maxritti

Darf ich zu 1) noch mal fragen, wo man die RegExp des FileLog ändert?

Ich dachte bei den RegExp Part. Aber dort habe ich keine Möglichkeit etwas einzugeben.


rudolfkoenig

Wenn FHEM mit eventTypes schon laenger laeuft, dann muessten in dropdown alle 4 Werte (dg_zirkpumpe:on, dg_zirkpumpe:off, wz_steckdose:on, wz_steckdose:off) vorhanden sein , diese einzeln hinzufuegen, und den alten Regexp entfernen.

maxritti

Ich glaube, ich sehe den Wald vor lauter Bäumen nicht mehr.
Irgendwie habe ich den Eindruck, dass ich die GPlot Klamotte kaputtkonfiguriert habe.
Kann man die in dem FileLog definierten Verbindungen zu den SVG Konfigs wieder entfernen?
Weil ich habe sowohl bei meinem Bewegungsmelder als auch bei meiner Steckdose welche mehrfach vorliegen.

Eventuell sollte ich da mal aufräumen und von anfang an die Konfig nach deinen Vorgaben erstellen.