Guten Abend zusammen,
ich benutze eigentlich FHEM nicht sehr intensiv und oft (Perl auch nicht so wirklich) . Ich habe eine Steckdosenleiste und möchte, dass diese ausgeht, wenn der Verbrauch bei 0 liegt.
Das Modul habe ich hier her:
https://forum.fhem.de/index.php/topic,49749.0.html
Das verbinden usw. klappt alles, jedoch kriege ich einfach nicht heraus, wie ich das reading 'CurrentConsumption' auslese um es im if-Satz in FHEM zu benutzen.
Danke für eure Hilfe!
MfG
Readings auslesen geht mit der Funktion ReadingsVal
Aber vielleicht zeigst Mal was du hast oder erklärst was du machen willst.
Da fällt mir ein, willst du auf das Reading mit einem Notify triggern? Dann bekommst automatisch den Readingswert als Event mit.
Erstmal danke für die schnelle Antwort.
Haben tue ich nicht viel ::).
In FHEM wird mir das angezeigt:
http://prntscr.com/g9qw1o
Ich möchte den Wert CurrentConsumption haben, um dann diese Steckdose auszuschalten. Das geht ja mit {fhem("set SWITCH_WORK_1 off")}.
Der Code ist hier zu finden:
https://forum.fhem.de/index.php?action=dlattach;topic=49749.0;attach=61266
Ich hoffe es ist verständlich, was ich möchte! Tut mir leid, dass ich nicht so viel Ahnung habe :/
Danke für die weitere Hilfe!
Keine Ahnung zu haben ist nicht schlimm. Es gibt viel zu FHEM im Forum, im Wiki und natürlich zu erst in der Commandref zu lesen. Es gibt Video Tutorials.
Einfach Ran an den Speck und los geht's.
Nun zu Deinem "Problem"
Wenn das Reading CurrentConsumption Null ist, soll die Steckdose ausgeschalten werden. Richtig?
Also erstelle ein notify welches auf ein Event des Readings mit dem Wert Null triggert und als Aktion schaltest du die Dose aus.
define notifySchalteSteckdoseAus notify SWITCH_WORK_1:CurrentConsumption:.0 set $NAME off
Bitte noch mal schauen und versuchen zu verstehen.
Danke für dein Verständnis.
Um den Code zu verstehen:
define notifySchalteSteckdoseAus notify SWITCH_WORK_1:CurrentConsumption:.0 set $NAME off
define notifySchalteSteckdoseAus notify
-> ist ja erstmal nur das erstellen von dem "Notify-Event"
SWITCH_WORK_1:CurrentConsumption:.0
-> Wann das Notify reagieren soll, also wenn SWITCH_WORK_1 kein Verbrauch hat
set $NAME off
-> $NAME -> also SWITCH_WORK_1 ausschalten oder halt $NAME gegen jede mögliche andere Steckdose tauschen
Richtig? :o
Jetzt möchte ich aber, wenn eine andere Steckdose Strom hat, dass diese Wieder angeht, also:
define notifySchalteSteckdoseAus notify SWITCH_WORK_2:CurrentConsumption>0 set SWITCH_WORK_1 on
oder wie mache ich, dass mit der CurrentCosumption > 0?
MfG
Zitat von: Fabi1309 am 17 August 2017, 21:03:04
Danke für dein Verständnis.
Um den Code zu verstehen:
define notifySchalteSteckdoseAus notify SWITCH_WORK_1:CurrentConsumption:.0 set $NAME off
define notifySchalteSteckdoseAus notify
-> ist ja erstmal nur das erstellen von dem "Notify-Event"
Fast. Ja ich weiß Korinthenkacker aber damit Du halt weißt worum es geht und wie man es genau nennt.
Das definiert ein FHEM Device mit Namen und vom Type notify
Zitat
SWITCH_WORK_1:CurrentCotnsumption:.0
-> Wann das Notify reagieren soll, also wenn SWITCH_WORK_1 kein Verbrauch hat
Richtig. Wann das Notify triggern soll. Das ist die reg expression für das Event. Denn es wird in der Regel immer auf Events reagiert. Dein Reading löst, wenn es geschrieben wird, ein Event aus, darauf wird getriggert.
Zitat
set $NAME off
-> $NAME -> also SWITCH_WORK_1 ausschalten oder halt $NAME gegen jede mögliche andere Steckdose tauschen
Richtig? :o
$NAME ist eine Variable welchen den Namen des Notify auslösenden Devices enthält. Da unsere RegEx so eng ist, wir das Device vorgeben, kann es nur Switch_Work_1 sein.
Zitat
Jetzt möchte ich aber, wenn eine andere Steckdose Strom hat, dass diese Wieder angeht, also:
define notifySchalteSteckdoseAus notify SWITCH_WORK_2:CurrentConsumption>0 set SWITCH_WORK_1 on
oder wie mache ich, dass mit der CurrentCosumption > 0?
MfG
Da du bei RegEx keine Vergleichsoperatoren hast, musst du das anders ausdrücken.
define notifySchalteSteckdoseAus notify SWITCH_WORK_2:CurrentConsumption:.[1-9]+ set SWITCH_WORK_1 on
Das ist jetzt bisschen billig und viele werden dir sagen nimm doch DOIF statt Notify. Aber es würde gehen.
Danke vielmals für die Erklärung.
Zwei Fragen hätte ich noch.
Der Code ist ja soweit gleich, also für das anschalten von der anderern Steckdose, wenn Spannung da ist, aber was bedeutet das .[1-9]+?
Und was ist der große Unterschied zwischen DOIF und Notify?
MfG
[1-9]+
Ist RegEx. Dazu bitte Lektüre lesen. Bedeutet Zahlen von 1-9 in der ersten Zahl + weitere Zahlen. Also 5 oder 24 oder 758 auf das alles wird gematcht. Nur nicht auf 0
DOIF ist sehr mächtig. Es kann Funktionen von Notify, at und Watchdog und noch tausend Dinge mehr. Schau mal in die Commandref.