Hallo Zusammen,
nachdem ich hier heute seit einigen Stunden unterwegs bin (auch im Wiki und generell mit Hilfe von Google) ist es mir immer noch nicht gelungen, den STATE meines threestatesensors in eine Variable zu bekommen.
Setup:
Ein Raspi auf dem die frisch upgedatete Version von fhem läuft.
Eingebunden sind neben einem mp3-Gong und einem Taster unter anderem 2 threeStateSensor von Homematic.
Das einbinden der Sensoren mit einer Anzeige auf einem Floorplan war nicht all zu schwierig, dank des Forums hier.
Nun möchte ich diese Sensoren nutzen, um eine kleine Alarmanlage zu bauen.
Dazu soll mit einem Tastenfeld die Anlage scharf geschaltet werden.
Dazu läuft das notify des Tasters auf ein neues notify: "n_Tuerstatus"
Dort soll jetzt mithilfe eines "IF-ELSE" die Überprüfung stattfinden, ob die Türen geschlossen sind - ansonsten soll natürlich nicht scharfgeschaltet werden.
(Tuer_hinten|Tuer_vorne) {
my $tuerhinten = state("Tuer_hinten");
my $tuervorne = state("Tuer_vorne");
if ($tuerhinten eq "closed" && $tuervorne eq "closed") {
fhem "set Flur_LED led greenL"
} else {
fhem "set Flur_LED led redL"
}
}
gebe ich "get Tuer_hinten param state" ein, bekomme ich als Rückmeldung "closed", genau so wie auch bei der Abfrage des State von Tuer_vorne.
Mit dieser Variable passiert allerdings nichts.
Angesprochen wird die Variable von dem Taster_Weg, der das notify "n_Taster_Weg" aktiviert:
Taster_Weg set n_Tuerstatus active
Wenn ich den Taster drücke, wird im notify "n_Tuerstatus"auch der state "Active" mit der aktuellen Urzeit gesetzt, aber nichts passiert.
Wenn ich über das notify "n_Taster_Weg" den Gong direkt anspreche, funktioniert auch dieser.
Ich schaffe es aber nicht, eine Statusüberprüfung der beiden Sensoren der Türen einzubauen.
Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt und mir kann jemand helfen.
Viele Grüße
monek
Ich habe das mit den zwei notifies zwar nicht verstanden (ist auch noch zu warm hier ;) ), aber mit:
my $tuerhinten = Value("Tuer_hinten");
solltest du weiterkommen.
Gruß
Hans
den wert eines reading bekommst du mir ReadingsVal(<device>,<reading>,<default>). den wert eines internals bekommt du mit InternalVal(<device>,<internal>,<default>). der wert von STATE bekommst du mit Value(<device>).
anonsten:
- achtung: state und STATE sind nicht das gleiche.
. wenn du in einem notify bist kommst du mit $EVENT, $EVNTPARTX und $NAME an die daten die zum auslösenden event gehören.
- wenn du mehrere gleiche devices zu einem gesamt status zusammen fassen willst schau dir structure an.
gruss
andre
Vielen Dank für so schnelle Antworten.
Also ich habe state wie auch STATE ausprobiert, ohne eine Wirkung.
Value hat bei mir auch keinen Erfolg gezeigt.
Wobei ich bei dem Sensor bei
"get Tuer_hinten Value" auch nur die Ausgabe "Unknown argument Value" bekomme und bei "get Tuer_hinten param Value" ein "undefined".
Gehe ich recht in der Annahme, dass "state" ein Reading ist, während "STATE" das Internal ist?
Die Eingaben "ReadingsVal" ind "InternalVal" lösen bei mir immer nur "unknown command" aus :(
und wo genau hast du das eingegeben? wenn du es direkt auf der kommandozeile verwendest musst du erst in den perl kontext:{ReadinsgVal(...)}
Da hast du mich natürlich erwischt.
Gebe ich es in {} ein, bekomme ich "closed" zurück.
Bin ich in meinem notify:
(Tuer_hinten|Tuer_vorne) {
my $tuerhinten = ReadingsVal("Tuer_hinten","state","");
my $tuervorne = ReadingsVal("Tuer_vorne","state","");
if ($tuerhinten eq "closed" && $tuervorne eq "closed") {
fhem "set Flur_LED led greenL"
} else {
fhem "set Flur_LED led redL"
}
}
passiert einfach nur nichts :(
Vielleicht habe ich heute einfach ein paar Stunden zuviel davor gesessen...
EDIT:
Es liegt tatsächlich an dem mittlerweile warmen Brei in meinem Kopf.
"(Tuer_hinten|Tuer_vorne)"
ist natürlich ein toller Aufruf, wenn ich es von meinem von meinem "Taster_Weg" aufrufen möchte.
Danke für die Hinweise.
Kann ich das Notify auch anstatt von dem Taster von einem vorherigen notify "anstoßen" bzw. ausführen?
mit trigger. siehe commandref.
oder einfach das reading mit setteading setzen.
Wenn Dein Notify ohne Weiteres auf "Taster_Weg" lauscht, könntest Du mittels
trigger Taster_Weg
Dein Notify anderweitig feuern lassen.
Vielen Dank für eure Hilfe.
Ja, ich weiß, die CommandRef ist unser Freund, aber manchmal weiß ich einfach gar nicht, wonach ich speziell suchen soll.
Und dann nach einer Stunde Forumssuche, einer Stunde Google und einer weitern selbst rumtesten gebe ich dann irgendwann auf und Frage direkt nach...
Immerhin läuft es jetzt wie geplant, vielen Dank, dann kann ich auch beruhigt ins Bett gehen ;)