Hallo,
nach dem nun die Sensoren und Zeitschaltfunktionen funktionieren, wollte ich den nächsten Schritt gehen und mit Notify arbeiten.
Mein Ziel:
Trigger = Dreambox ist On/Off, also das Reading "power" ist entsprechend on oder off
Wenn erkannt wird das die Box den Status "on" hat, soll eine bestimmte Steckdosenleiste eingeschaltet werden, analog natürlich auch ausgeschaltet werden.
Die Dreambox habe ich definiert (als wz.dm800se), die Readings werden auch geliefert. Als Intervall habe ich beim Anlegen 30 Sekunden angegeben.
Nun habe ich versucht dies mit folgendem Befehl anzulegen:
define wz.dm800se.ntfy notify { if (ReadingsVal("wz.dm800se","power",on)) { fhem("set wz_Schaltsteckdose02 on") } else { fhem("set wz_Schaltsteckdose02 off")}}
Ich habe versucht mit "trigger wz.dm800se off" zu testen, leider ohne Erfolg.
Hallo,
schonmal die commandref gesehen?
http://fhem.de/commandref.html#notify (http://fhem.de/commandref.html#notify)
Da du aber auch einen Auszug mit den Readings oder einen Screenshot des EventMonitor nicht mitlieferst kann ich hier nur ratend helfen da ich keine DreamBox habe.
define wz.dm800se.ntfy notify wz.dm800se:power.* {
if($EVENT eq "on") {
fhem("set wz_Schaltsteckdose02 on");
}
else {
fhem("set wz_Schaltsteckdose02 off");
}
}
Sorry aber ich steh mit Einzeiler immer noch auf Kriegsfuß.
Sollte es so nicht klappen kann ich dir zur Not noch den ersten und zweiten angepinnten Beitrag empfehlen.
Meine Codes gehören auch nicht in die fhem.cfg da sie dort Fehler produzieren.
Ich gebe alles über die Befehlszeile und das DEF ein.
Fehlermeldungen bitte auch hier posten.
Danke.
Grüße
Edith: Link zu notify in der commandref eingefügt
Hallo,
danke für deine Antwort. Ich habe das Dokument FHEM für Einsteiger schon gelesen (aber offensichtlich nicht verstanden), aus diesem Grunde dachte ich ja, das ich mit der Variable "ReadingsVal" das Reading "power" auslese und dann entsprechend darauf reagiere mit meiner if/else Anweisung.
Deinen Code habe ich probiert, if/else ist an sich klar, was ich noch nicht verstehe, wz.dm800se:power.* bedeutet das er aus dem Gerät das Reading "power" ausliest ? Nur damit ich das auch verstehe, würde z.B. sowas wie wz.hms100tf:battery.* den Battierstatus (also low oder ok) ausgelesen werden ?
Bei deinem Code ist es so, das er immer nur in 1 Richtung (aktuell "on") funktioniert. Er schaltet dann also alles ein, aber nicht aus wen das Gerät "off" geht. Wenn ich die Zeilen drehe schaltet er z.B. nur off aber nicht on.
Was auch den Wert ausgibt wäre get wz.dm800se power (off oder on) im Eingabefeld, dann wäre ich nicht auf die Readings angewiesen ?
Hallo,
Zitatwz.dm800se:power.* {
ist der trigger auf den das notify reagiert.
EventMonitor öffnen und --- ach lies doch bitte den zweiten angepinnten Beitrag.
Danke.
Grüße
Nein, es bedeutet das auf ein "erscheinen" von wz.dm800se:power.* im Eventmonitor das notify ausgelöst wird.
Erst wenn diese Eingangs"Bedingung" erfüllt ist wird die if schleife des notifys durchlaufen.
Um kurz auf Deinen ursprünglichen Beitrag zurückzukommen...
Zitat von: netdom am 25 Oktober 2014, 18:00:36
define wz.dm800se.ntfy notify { if (ReadingsVal("wz.dm800se","power",on)) { fhem("set wz_Schaltsteckdose02 on") } else { fhem("set wz_Schaltsteckdose02 off")}}
Zur if-Abfrage gehört eine Bedingung, die Du mit der Syntax von ReadingsVal missverstanden hast.
... if (ReadingsVal("wz.dm800se","power","") eq "on") { "mache dieses oder sonst das" }
Also wenn das Reading "power" mit dem "Defaultwert leer" (kannst Du halt leer, off, on setzen) Deiner "wz.dm800se" gleich "on" ist, dann mache...
Vielleeicht hilft das zum Verständnis etwas weiter.
Gruß,
Hollo