RFID UID zweimal die gleiche

Begonnen von golli, 11 August 2017, 13:02:04

Vorheriges Thema - Nächstes Thema

golli

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?

Otto123

#1
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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DeeSPe

#2
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.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

@Dan ich wollte nicht gleich die "Härte" von Perl rein bringen :) es gab ja sicher einen Grund für DOIF  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

golli

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?

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

golli

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.

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

golli

Allerbesten Dank das wars.

Hat noch jemand eine Empfehlung, wenn man sich in sowas einlesen möchte.

Otto123

Bisschen unspezifisch, welches Thema meinst du? RfID, notify, Perl?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DeeSPe

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 bzw. Forum.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe