Kleine LUA Scripte Teil 11: Status vom RFID Pad über die API setzen

Geschrieben von boomx
smaart-Haus

Wie Ihr den Status von eurem Zipato RFID Pad über die API des Fibaro HomeCenter 2 setzen könnt, zeigen wir euch in unserer kleinen LUA Scripte Reihe. Und so geht’s…

Letztens haben wir euch in einem Artikel gezeigt, wie Ihr mit der neuen Firmware des Fibaro HomeCenter 2 eure Alarmanlage mit dem Zipato RFID-Pad schärfen und entschärfen könnt. Dies wird seit der neuen Firmware-Version offiziell von dem Fibaro HomeCenter 2 unterstützt und ist unserer Meinung nach auch wirklich gut umgesetzt. Mögliche Verbesserungen gibt es aber ja bekanntlich eigentlich immer. Mit einem dieser Verbesserungspunkte befassen wir uns jetzt…

Es gibt nämlich ein Problem, wenn der Alarm nicht über das RFID Pad aktiviert wurde: Sollte der Alarm zum Beispiel über die App aktiviert werden, dann würde ein Deaktivieren des Alarms über das Pad nicht mehr funktionieren, da dieser noch den Status “home” gesetzt hat. Mit diesem kleinen Skript ist es nun möglich, bei einer externen Alarmaktivierung, der Fibaro-API, bzw. dem RFID Pad, mitzuteilen, dass der Alarm anderweitig aktiviert, bzw. deaktiviert wurde.

Die einzige Anpassung, welche hier vorgenommen werden muss, ist die Änderung der rfidID und den zu setzenden Status. Hier wird in der Fibaro-API unterschieden zwischen true (away) und false (home).

rfid pad sync

Sync des RFID Pads

Solltet Ihr mehrere RFID Pads syncen wollen, dann könnt Ihr folgendes einsetzen. Hier wird ein Array (rfidID; hier müssen die IDs eurer Pads eingetragen sein) mit einer for-Schleife durchlaufen, welche den Status der einzelnen Module setzt.

Beachtet bitte, dass die Änderung des Status erst bei dem nächsten WakeUp an das Modul übertragen wird. Ihr müsst also dann an dieser Stelle die WakeUp-Time des RFID Pads ein wenig verringern, damit das zuverlässig funktioniert. Wir würden hier einen Wert von 1800 Sekunden empfehlen. Dies sollte ein guter Mittelweg zwischen Batterieverbrauch (Wir haben es nicht getestet!!!) und Aktualität sein.

Wir werden natürlich in der nächsten Zeit einen Update-Artikel zu der Steuerung des Alarmpanels mit mehreren RFID-Pads nachziehen. Für Fibaro-User, welche sich ein wenig mit der Programmierung und LUA auskennen, könnte dazu allerdings bereits dieses kleine Skript reichen :) Und nun viel Spaß bei der Umsetzung… In den Kommentaren könnt Ihr gerne eure fertigen Lösungen posten. Wir würden uns freuen.

rfid_sync_icon

Icon

juicyfields

Diesen Blogpost hat geschrieben ...

boomx

41 Kommentare

  • Cool, habe zwar noch kein Pad, aber ich denke jetzt kann ich mir eins kaufen.
    Das heißt, wenn ich über die Iphone App über Alarm wischen gehen würde, erkennt das Pad es auch?

    Gruß Sascha

      • Hallo boomx

        Prima Sache was Du da gemacht hast.
        Was hältst Du von meiner Idee, das ich anstatt den beiden Batterien ein 3 Volt Netzgeräte als Versorgung verwende und dann den Abfrage Intervall auf 5 oder 20 Sekunden einstelle ?
        Sollte ja klappen und somit ist das Problem mit den Batterien erledigt ?
        oder siehst Du da wo ein Problem. ?

  • Morgen,

    ggf. mache ich etwas falsch bei der Einrichtung. Ich habe jetzt über das Wochenende das Skript getestet und auch die Aufwachzeit des Pads heruntergesetzt doch leider werden bei mir die Daten nicht übermittelt. Es sieht so aus, als ob das Skript Pad Sync nicht gestartet wird. Ich erhalte kein Debug und auch keine Änderung des Status auf home oder away. Kann mir jemand helfen?

    Vielen Dank und Grüße

  • Hallo Boomx,
    zunächst einmal ein “große Klasse” für die hier veröffentlichten Skripte.

    Das o.a. Skript funktioniert bei mir in sofern nicht, als dass die Bedienung über das Pad jetzt “lahm gelegt ist”.
    Das heißt, ich kann mittels manuellem Starten der Szene die Zustände des Pads ändern, aber bei Bedienung am Pad selbst ändern sich nun nicht mehr.
    Ich erhalte zwar eine Nachricht “unlocked / locked by user..” aber der Status des pads ändert sich nicht.

    Was könnte ich falsch gemacht haben?

    • Hi,

      das ist die Problematik, welche ich am Ende des Artikels beschreibe. Der Zustand ändert sich zwar in der API vom HC2, aber nicht im RFID-Pad. Dies passiert erst, wenn das Pad manuell oder automatisch aufgeweckt wird.

      Gruß

        • Hi,

          so halb. Das Pad wacht auf, wenn die Home/Away-Taste gedrückt wird und ein RFID davor gehalten oder ein PIN-Code eingegeben wird. Deshalb wird der Vorgang dann beim 2ten Mal funktionieren.

          Gruß

          • Hallo Boomx,

            genau das passiert eben nicht. Folgende Reaktionen erhalte ich:
            Aktion:
            – Hometaste gedrückt + Code /RFID-tag
            -> Übertragung OK / Unlocked by User xy
            -> Keine Änderung Zustand / Status (ausgelesen und debugt)
            – Hometaste 2.mal gedrückt + Code /RFID-tag
            -> Übertragung OK / Unlocked by User xy
            -> Keine Änderung Zustand / Status (ausgelesen und debugt)

            In Deiner Szene “setStatus” auf “false” geändert und manuell gestartet
            -> Warte auf Wecken
            -> Änderung in Status “Home” / Value = 0

            Hast Du eine Idee?

  • Hallo,

    ich hab das Script gerade ausprobiert, bei mir wird es nicht getriggert.
    Sicher liegt’s an meinem Unverständnis, aber es sind ja auch keine Trigger definiert, oder irre ich?

    Grüße…

  • Hallo,

    ich habe jetzt recht lange mit und an dem Script herumgebastelt.
    Leider habe ich feststellen müssen, dass der aktuelle Zustand leider nicht mit dem TagReader gesynct wird.
    Er bleibt in dem Zustand in den er zuletzt via Tag/Code versetzt wurde.
    Sporadisch funktioniert der TagReader nach dem Aufwachen eine Zeit (gefühlt bis zum 2. Aufwachen) gar nicht mehr.
    Getestet wurde die Sache mit der aktuellen stable Firmware 4.100.

    Es wäre super, wenn einer von Euch noch eine Idee hätte, wo und wie man den Sync bewerkstelligen könnte.

    Danke…

  • Hallo,
    ich musste leider feststellen, dass der Tag-Reader auch ohne Sync-Script sporadisch nicht zu funktionieren scheint.
    Ich werde also das Gerät testweise nochmal ex- und includieren und weiter testen.
    Ggf. muss halt ein neuer Reader her, evtl. löst sich so ja auch das Sync-Problem.

    Danke für deine Mühe…

  • Hallo Zusammen,
    ich stelle bei mir (v4.100) auch fest das der Tag den hiermit neuen Zustand nicht intern annimmt. Er bleibt intern in dem Zustand in den er zuletzt via Tag versetzt wurde, auch wenn auf der Webinterface etwas anderes gezeigt wird (auch nach dem auto. WakeUp)
    Ich habe damit folgenden unschönen Use Case.
    – Alarm wird per Skript zu einer bestimmte Uhrzeit automatisch deaktiviert
    – Gleichzeitig wird der Tagreader mit dem hier beschriebenen Skript auf “home”gesetzt, laut Webinterface auch so angenommen
    – Am nächsten Tag will ich die Alarmanlage wieder per Away taste aktivieren
    –> funktionier nicht, ich muss zuerst die Taste “home” und dann die “away” Taste drücken um meine Alarmanlage scharf zu bekommen :-(

  • Hi,

    Maybe it is the language where I am confused, but could someone explain me what Boomx meant by the changing the status to be set:

    ”The only adjustment that needs to be made here is to change the rfidID and the status to be set. Here, the Fibaro API distinguishes between true (away) and false (home).”

    I’ve changed the ID, but confused with this status;

    –[[
    %% properties
    %% events
    %% globals
    –]]

    local rfidID = 137
    local setstatus = true

    function setStatus(deviceId, newstatus)
    local dev = api.get(‘/devices/’ .. deviceId)
    — false=home; true=away
    dev.properties.value = newstatus
    if (newstatus) then
    print(‘Status für Modul-ID ‘ ..deviceId.. ‘ gesetzt. Neuer Status: Away’)
    else
    print(‘Status für Modul-ID ‘ ..deviceId.. ‘ gesetzt. Neuer Status: Home’)
    end
    api.put(‘/devices/’ .. deviceId, dev)

    end

    setStatus(rfidID,setstatus)

    Thanks!

  • Hallo,
    ich kann das Verhalten von “mburget” bestätigen. Die API zeigt den neuen Wert aber auch nach manuellem oder AutoWakeUp bleibt das Kepay intern auf dem vorherigen Stand stehen.

    @boomx
    Hast du eine Lösung für uns? Ich komme hier selbst auch nicht mehr weiter bräuchte es aber echt dringend…

    Danke.
    Gruß
    Peter

Gib deinen Senf dazu!