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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
--[[ %% properties %% events %% globals --]] local rfidID = 399 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) |
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).
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
--[[ %% properties %% events %% globals --]] local rfidID = {399} 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 print('Status wird nach dem nächsten WakeUp übertragen.') for j=1, #rfidID do if rfidID[j] ~= nil then setStatus(rfidID[j],setstatus) end end |
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.
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
Hi,
wenn du die Szene so einrichtest, dann ja. Allerdings, wie im Artikel beschrieben, erst nach dem manuellen oder automatischen WakeUp.
Gruß
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. ?
Hi,
theoretisch geht das. Würde die Zeit aber eher auf 5 min oder so setzen, da sonst viel Traffic entsteht.
Gruß
Prima Danke,
wenn ich es realisiert habe und es funktioniert, gebe ich Bescheid.
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
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ß
Hi,
ich habe sie manuel gestartet um zu testen.
Hi,
dann sollte der Status just in Time auf dem WI gesetzt werden. Sollte das nicht der Fall sein, dann hast du möglicherweise die Id nicht angepasst.
Gruß
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ß
Hallo Boomx,
nach meinem Verständnis wecke ich das Pad doch durch drüken der Home/Away-Taste auf?
Oder sehe ich das falsch?
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?
Hi,
bei meinen Tests hat es so hingehauen. Warte am besten mal das automatische WakeUp ab. ^^
Gruß
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,
Hi,
unter 4.101 scheint das Script nicht mehr zu laufen...
Grüße
Hi,
will ich nicht ausschließen. Teste ich nachher.
Gruß
Ja, stimmt. Mit 4.101 läuft es nicht mehr. Anscheinend wurde die api.put-Methode entfernt. Schau ich mir mal an...
Gruß
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.
Bin noch nicht wieder dazu gekommen es mir anzuschauen... Steht aber noch auf meiner Liste...
Gruß
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...
Ich hätt's mir mal vorm Fragen mal richtig ansehen sollen...
...den Kommentar bitte einfach ignorieren oder besser löschen.
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...
Hi,
ich kann es derzeit leider nicht testen, da der API-Call mit 4.102 nicht mehr funktioniert. Schau ich mir nochmal an.
Gruß
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 :-(
Hey boomx,
hast du mal geschaut, ob das das Script zum Laufen bekommst?
Danke und Gruß
Hi,
ja, grad eben ;) Mit der Stable 4.110 funktioniert es leider nicht mehr. Muss ich mir mal in der nahen Zukunft anschauen.
Gruß
Hi,
besteht Hoffung, dass Du es zum Laufen bringst?
Grüße
Hi,
hab derzeit andere Projekte vorangestellt. Wenn ich damit durch bin, dann schau ich mir dieses Thema nochmal an.
Gruß
Hallo boomx
Konntest Du schon einmal ein Blick drauf werfen. Da ich Deine Lösung verschiedest einsetze, muss ich mir was anderes einfallen lassen, falls es keine Lösung gibt.
Gruss
Nein, bin ich bisher noch nicht zu gekommen.
Gruß
Any update to be expected?
Thanks
Hi,
unter 4.112 beta scheint es wieder zu laufen!
Beste Grüße
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!
true (away) and false (home)
Where is the problem for you?
Hallo geht der Scirpt schon wieder? Bei mir scheinbar nicht. Habe die neuste Firmware auf meinem HC V4.134
Hallo Daniel,
hast du bereits eine Lösung mit der API finden können?
liebe Grüße und besten Dank
Hallo Liebes Forum,
gibt es hier bereits eine Lösung und oder Alternative wie ich die Fibaro App und das Zipato RFID Pad syncen kann?
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