Hallo zusammen,
ich lese von einem RFID die UID aus und verknüpfe mit dieser per DOIF Funktionen.
([rfid_reader:uid] eq "123") (set Sonos_Wohnzimmer Speak 90 de Alarmanlage wird scharf geschaltet)
DOELSEIF ([rfid_reader:uid] eq "456") (set Sonos_Wohnzimmer Speak 90 de Alarmanlage wird unscharf geschaltet)
DOELSE()
Jetzt hab ich zwei Fragen.
1. Wenn ich zweimal den gleichen RFID Chip vor den Leser halte, wird die UID zwar erkannt, aber DOIF reagiert nicht, weil die UID sich nicht geändert hat. Kann ich das Datum mit einbeziehen oder die UID resetten?
2. Ich würde gerne mit den verschienen RFID-Chips die Alarmanlage an und aus schalten. Also müsste der Zustand mit jedem mal wechseln. Kann mir jemand auf die Sprünge helfen?
Zu 1. Du musst sicher do always verwenden, der Zustand im Zweig eins ändert sich ja nicht.
Zu 2. Ich würde das DOELSE() am Ende weglassen und 1. beachten und das sollte es sein oder?
Oder Du meinst mehrere Chips?
BTW ich würde zwei notifys machen, eins für an und eins für aus.
Ich würde das mit einem einzigen notify umsetzen:
define n_rfid_reader_uid notify rfid_reader:(123|456) {\
if (Value("ALARMANLAGE") eq "on") {\
fhem "set ALARMANLAGE off";;\
} else {\
fhem "set ALARMANLAGE on";;\
}\
}
Gruß
Dan
EDIT: Und dann bei rfid_reader "event-on-update-reading" auf das Reading setzen welches die UID enthält.
@Dan ich wollte nicht gleich die "Härte" von Perl rein bringen :) es gab ja sicher einen Grund für DOIF ;D
Möchte gerne noch einen Zwischenschritt einbauen.
Habe einen Dummy erstellt: person1_zuhause mit state ja:nein
define n_rfid_reader_uid notify rfid_reader:(123)
{
if (Value("person1_zuhause") eq "ja")
{
fhem "set person1_zuhause nein";
}
else
{
fhem "set person1_zuhause ja";
}
}
funktioniert aber leider nicht.
ZitatEDIT: Und dann bei rfid_reader "event-on-update-reading" auf das Reading setzen welches die UID enthält.
Und wie kann ich das realisieren?
Zitat von: golli am 12 August 2017, 19:43:24
Möchte gerne noch einen Zwischenschritt einbauen.
Habe einen Dummy erstellt: person1_zuhause mit state ja:nein
Wozu einen dummy definieren wenn es statt dessen doch RESIDENT/ROOMMATE/GUEST gibt?
Zitat von: golli am 12 August 2017, 19:43:24
Und wie kann ich das realisieren?
Da Du mit Deinen Informationen so hinterm Berg hälst, was soll ich Dir dazu sagen?
Die Glaskugel sagt mir dass die UID im Reading "state" stehen könnte, also dieses in "event-on-update-reading" aufnehmen. 8)
Gruß
Dan
Ok dann ohne dummy, wenn es schon ein fertiges Modul gibt.
Habe mal eine Test Person angelegt.
Leider komme ich mit dem Notify nicht zu recht.
Zitat von: golli am 14 August 2017, 11:00:44
Ok dann ohne dummy, wenn es schon ein fertiges Modul gibt.
Habe mal eine Test Person angelegt.
Leider komme ich mit dem Notify nicht zu recht.
Bitte keine Screenshots anhängen sondern jeweils ein list des/der jeweiligen Devices in CODE Tags hier posten.
Dein Code im notify ist einfach falsch.
Laut Deiner Screenshots sollte der Code in der DEF so aussehen:
rfid_reader:uid:.(1111) {
if (ReadingsVal("rr_test","presence","") eq "present") {
fhem "set rr_test state absent";
} else {
fhem "set rr_test state home";
}
}
Und bei rfid_reader setzt Du:
attr rfid_reader event-on-update-reading uid
Gruß
Dan
Allerbesten Dank das wars.
Hat noch jemand eine Empfehlung, wenn man sich in sowas einlesen möchte.
Bisschen unspezifisch, welches Thema meinst du? RfID, notify, Perl?
Zitat von: golli am 18 August 2017, 11:24:28
Allerbesten Dank das wars.
Hat noch jemand eine Empfehlung, wenn man sich in sowas einlesen möchte.
Ist hier allgemein gültig und nennt sich commandref (http://fhem.de/commandref.html) bzw. Forum.
Gruß
Dan