39

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

by boomx27. Oktober 2016

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

About The Author
boomx
boomx
Moin, ich bin Daniel, Anwendungsentwickler von Beruf. Hier auf siio unterstütze ich die Kollegen bei der Programmierung mit LUA, bzw. bei der Integration von neuen Netzwerkgeräten und schreibe Tutorials rund um das HomeCenter 2 von Fibaro, welches ich auch privat im Einsatz habe.
39 Comments
  • Sascha B
    28. Oktober 2016 at 6:21

    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

    • boomx
      28. Oktober 2016 at 9:27

      Hi,

      wenn du die Szene so einrichtest, dann ja. Allerdings, wie im Artikel beschrieben, erst nach dem manuellen oder automatischen WakeUp.

      Gruß

      • Andreas100
        30. Oktober 2016 at 16:58

        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. ?

  • thebrain
    31. Oktober 2016 at 7:45

    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

    • boomx
      31. Oktober 2016 at 9:29

      Hi,

      wie lässt du die Szene denn starten? In dem Artikel gehe ich darauf nicht ein, ggf. hast du diesen Punkt nicht bedacht.

      Gruß

  • MEDIMAX Senftenberg
    31. Oktober 2016 at 17:34

    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?

    • boomx
      31. Oktober 2016 at 18:10

      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ß

      • MEDIMAX Senftenberg
        31. Oktober 2016 at 18:16

        Hallo Boomx,

        nach meinem Verständnis wecke ich das Pad doch durch drüken der Home/Away-Taste auf?
        Oder sehe ich das falsch?

        • boomx
          31. Oktober 2016 at 18:40

          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ß

          • MEDIMAX Senftenberg
            31. Oktober 2016 at 18:52

            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?

          • boomx
            31. Oktober 2016 at 21:52

            Hi,

            bei meinen Tests hat es so hingehauen. Warte am besten mal das automatische WakeUp ab. ^^

            Gruß

  • MEDIMAX Senftenberg
    1. November 2016 at 8:03

    Hallo Boomx,

    der Vollständigkeit halber möchte ich hier hinzufügen, dass nach dem automatischen WakeUp die Funktion des RFID-Readers wieder hergestellt ist.
    Grüße,

  • 24. November 2016 at 8:46

    Hi,

    unter 4.101 scheint das Script nicht mehr zu laufen…

    Grüße

  • 27. November 2016 at 16:12

    He Daniel,

    hast Du schon eine Lösung für die 4.101. Ansonsten würde ich noch mit dem Update warte, bei mir läuft grad alles so schön rund.

  • heikoh
    30. November 2016 at 15:41

    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…

    • heikoh
      30. November 2016 at 15:59

      Ich hätt’s mir mal vorm Fragen mal richtig ansehen sollen…
      …den Kommentar bitte einfach ignorieren oder besser löschen.

  • heikoh
    2. Dezember 2016 at 13:50

    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…

    • boomx
      3. Dezember 2016 at 10:47

      Hi,

      ich kann es derzeit leider nicht testen, da der API-Call mit 4.102 nicht mehr funktioniert. Schau ich mir nochmal an.

      Gruß

  • heikoh
    6. Dezember 2016 at 10:33

    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…

  • mburget
    21. Dezember 2016 at 21:59

    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 :-(

  • 7. Januar 2017 at 18:42

    Hey boomx,

    hast du mal geschaut, ob das das Script zum Laufen bekommst?

    Danke und Gruß

    • boomx
      8. Januar 2017 at 1:22

      Hi,

      ja, grad eben ;) Mit der Stable 4.110 funktioniert es leider nicht mehr. Muss ich mir mal in der nahen Zukunft anschauen.

      Gruß

  • PeterLe
    14. Januar 2017 at 13:26

    Hi,
    besteht Hoffung, dass Du es zum Laufen bringst?

    Grüße

  • 11. März 2017 at 11:52

    Hi,

    unter 4.112 beta scheint es wieder zu laufen!

    Beste Grüße

  • Peter van der Pol
    11. März 2017 at 17:38

    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!

  • Speedy1072
    8. August 2017 at 6:00

    Hallo geht der Scirpt schon wieder? Bei mir scheinbar nicht. Habe die neuste Firmware auf meinem HC V4.134

  • thebrain
    24. August 2017 at 12:15

    Hallo Daniel,

    hast du bereits eine Lösung mit der API finden können?
    liebe Grüße und besten Dank

Leave a Response