YESLY Smart Home

So aktivierst du deinen Alarm mit dem RFID Tagreader

Geschrieben von boomx
siio-App

In einem der letzten Artikel haben wir euch gezeigt, wie Ihr den RFID Tagreader mit der Firmware-Version 4.091 Beta ans Laufen bekommt und die einzelnen Tags richtig einrichtet. Nun präsentieren wir euch eine fertige Szene mit der Ihr den Alarm steuern könnt.

Wie bereits in dem anderen Artikel, welchen Ihr hier finden könnt, erwähnt wurde, können nicht alle Funktionen 1:1 aus dem alten RFID-Skript übernommen werden.

Folgende Funktionen sind (bisher) in dem neuen Skript schon vorhanden:

  • Schärfen/Entschärfen des Alarm und Benachrichtung per Push
  • Prüfung offener/ausgelöster Sensoren und Benachrichtung per Push
  • Öffnen eines vorhandenen Doorlocks (z.B. danalock)
  • Funktion zum Setzen eigener Befehl nach Statusänderung
  • Variable „PresentState“ wird unterstützt
  • Arm-Delay wird unterstützt (wird automatisch ermittelt, alle Sensoren müssen gleich eingestellt sein)
  • Firmware-Bug (fibaro:call(sensorID[j], ’setArmed‘, ‚0‘) funktioniert nicht) wird umgangen

Die notwendigen IDs

In diesem Teil des Codes werden die notwendigen IDs der Module festgelegt. Die Angaben zu den IDs der Sensoren sind zwingend einzutragen, die Erklärungen zu den einzelnen Punkten findet Ihr in den Kommentaren zu den jeweiligen Punkten und sind eigentlich selbsterklärend. Die Variable countID, welche häufig bei for-Schleifen genutzt wurde, wird nicht mehr benötigt.

Weitere Angaben werden an dieser Stelle nicht benötigt. Das Skript prüft den Inhalt des Arrays und entscheidet dann, ob Ihr diese Funktion nutzen wollt. Solltet Ihr keine doorlock-Integration wünschen, dann müsst Ihr einfach das Array leeren. Dies würde dann so aussehen:

Die weiteren Optionen

Diese sind im Vergleich zum etwas älteren Skript ein wenig kürzer gefasst. Eigentlich gibt es nur zwei zusätzliche Optionen. Dies ist zum einen die Aktivierung von eigenen Aktionen, welche nach dem Aktivieren/Deaktivieren des Alarm ausgeführt werden. Hierfür muss die lokale Variable „own_action“ auf true (Aktionen werden ausgeführt) oder auf false (Aktionen werden nicht ausgeführt) gesetzt werden.

Sofern die Variable auf true gesetzt ist, werden die folgenden Funktionen ausgeführt:

Hier können jetzt beliebige Aktionen (Auschalten von Wallplugs, usw.) eingesetzt werden. Die Funktion actionsafterArmed() wird nach der Aktivierung des Alarm ausgeführt und die Funktion actionsafterDisarmed() nach der Deaktivierung.

Zum anderen gibt es In der aktuellen Beta 4.091 einen Bug, welcher verhindert, dass der Alarm mit der normalen LUA-Funktion fibaro:call(sensorID[j], ’setArmed‘, ‚0‘) deaktiviert werden kann. Mit diesem Skript haben wir dieses Problem umgangen und Ihr könnt dies mit der lokalen Variablen „disarmed_bug“ umgehen. Diese muss dann im Skript auf true gesetzt werden. Sollte Fibaro das Problem in einer der nächsten Firmwares (hoffentlich der nächsten) fixen, kann der Wert dann einfach auf false gesetzt werden.

Alarm-Schaltung mit dem neuen Skript

Positiv an der offiziellen Integration des RFID Tagreades seitens Fibaro: Es ist im Vergleich zum alten Skript schnell. Das Auslesen der API wird hier mit Sicherheit viel Zeit gekostet haben. Allerdings gibt es auch ein paar negative Aspekte zu beklagen. Viele Funktionen des alten Skriptes lassen sich so nicht mehr umsetzen. Vielleicht wird Fibaro aber auch noch weitere Updates nachschieben, so dass das Skript an der Stelle wieder erweitert werden könnte.

Das neue RFID-Skript könnt Ihr euch HIER downloaden.

Am Ende liegt die Entscheidung bei euch, ob wir weiterhin auf der Firmware-Version 4.070 bleibt und alle Funktionen des alten Skriptes nutzt, oder ob Ihr die neue, schnellere Version einsetzen wollt und dafür auf die alten Funktionen verzichtet. Überlegt es euch gut, da ein Recovery auf eine ältere Version nicht möglich ist.

Es wird natürlich auch hier wieder stetige Updates des Skriptes geben und es stehen bereits auch schon zukünftige Funktionen auf der To-Do-Liste:

  • Unterstützung mehrerer RFID Tagreader
  • E-Mail-Support (anstatt Push)
  • Widget-Support

Solltet Ihr euch noch weitere Funktionen wünschen, dann würden wir uns freuen, wenn Ihr uns einen Kommentar hinterlasst :)

Alarm Icon

RFID-Sync

Diesen Blogpost hat geschrieben ...

boomx

153 Kommentare

  • Hallo boomx,

    zuest einmal danke für die tollen HowTos die Du immer erstellst. Ich habe bereits mein RFID Leser in meine Fibaro integriert mit dem Script, welches ich auch im Forum gepostet hatte. Leider habe ich das Problem, wenn z.B. meine Familie den RFID per Transponder aktiviert haben, kann ich diese nicht mehr mit der Fibaro APP deaktivieren. Gibt es hierfür eine Möglichkeit/Trick? Der RFID Keypad lässt sich ja auch nicht über die Fibaro APP „unlocken“.

    Gruß, Valle

  • Hallo. Danke erstmal für dein Script und deine Bemühungen.
    Leider habe ich zwei Probleme : 1. Ich kann – wenn ich den Alarm mit dem RFID gesetzt habe (mit 30 Sek. delay ) ihn nicht innerhalb dieser 30 Sek. wieder übers RFID deaktivieren. Geht dann nur übers IPad/App…
    Und 2. Ich bekomme im Debug von dem Script : line 47 attempt to index global `danalockid(a nil value´)
    Zeile 11 fürs Danalock habe ich so ausgefüllt : local doorlockID = {} — IDs der doorlocks…
    Hab ich was falsch gemacht ? Gruß

    • Hi,

      habe das Skript nochmal aktualisiert, da tritt der Fehler mit danalookID nicht mehr auf :) Zu dem anderen Problem habe ich spontan keine Lösung. Das Skript geht für die Zeit in den Wartemodus und nimmt keine Befehle mehr an. Muss ich mir etwas überlegen.

      Gruß

  • Hi,

    ich habe ein Problem, ggfs. kann mir einer Helfen. Das Aktivieren und Deaktivieren geht wie gewünscht ohne Probleme. Die Haustüre habe ich so eingestellt, dass sie mit einer Verzögerung von 60 Sekunden auslöst. Öffne ich jetzt bei aktivierter Alarmanlage die Haustüre, so zählt der Countdown von 60 runter. Ich deaktiviere jetzt die Alarmanlage und die Haustüre sowie der vollständige Alarmstatus wechselt vom Status „armed“ in „unarmed“ jedoch zählt der Countdown weiter bis der Alarm ausgelöst wird. Hat jemand dazu eine Erklärung und einen Tipp wie ich das Problem lösen kann?

    Gruß, Valle

      • Hi Boomx,

        habe das Problem mit dem Delay auch. Ist etwas lästig, da man aus der Sache nicht mehr zeitnah raus kommt. Die Variable steht ja dann auf Home und ein neues drücken auf Away bringt auf die schnelle auch nichts, da dann bei mir wieder die 300 Sekunden runter gezählt werden.

        Wenn ich das oben richtig gelesen habe, dann ist der RFID Reader im Moment nicht zu gebrauchen, wenn er im Haus untergebracht ist?

        Ansonsten wie immer eine tolle Arbeit. Ich wäre ohne deine Hilfe schon am übertragen der Codes gescheitert. :)

        Gruß
        huebi

  • Hi,

    durch dieses Delayproblem ist es vorerst ja leider nicht zum aktivieren/deaktivieren einer alarmanlage umsetzbar, richtig? das die alarmanalage auch nach erfolgereichem deaktivieren trotzdem angehen würde durch das herunterzählen des delays… oder irre ich? gibt es dafür eine lösung?

    danke

    • Hi,

      wenn der RFID innen angebracht ist, ja. Ansonsten macht der Alarm-Delay ja keinen Sinn und der Arm-Delay funktioniert ja ohne Probleme.

      Eine Lösung gibt es bisher noch nicht.

      Gruß

  • Hallo ,
    ich habe ebenfalls Probleme mit dem Alarm Delay. Denn mein Tag Reader hängt auch innen. ;-(
    Falls jemand ne Lösung hat …. Die Bugs nerven langsam …..

    DANKE

    Gruß
    Markus

    • Nur insofern, die eingestellte Verzögerung abzuwarten und den dann aktivierten Alarmmodus mittels App, bei mir iPhone/iPad, zu deaktivieren. Bis auf diesen Bug scheint die grundlegende Alarmanlagenfunktionalität nicht weiter eingeschränkt zu sein.

      Gruß Andreas

  • ich hätte mal ne frage.
    bin noch ein kompletter Neuling im Bereich Lua
    würde gerne als own Action bei dem Alarmscript etwas hinzufügen krieg es nur noch nicht in meinen kopf rein
    Ich wollte wenn der Alarm scharf ist das mein LED Panel rot eingeschaltet wird. Und wenn Alarm entschärft wird 3 mal grün aufleuchtet.
    Ich habe auch noch 2 led Panels eins und möchte bei mit einer unterschiedlichen Helligkeit leuchten lassen.
    Hab im Forum mal gesucht was zu finden bin jedoch noch nicht fündig geworden.

    Gruß
    Chris

    • Hi,

      in der LUA-Szene hast du links eine Liste mit all deinen Räumen. Wenn du dort mit der Maus drüber gehst, werden die alle Module des jeweiligen Raumes angezeigt. In der nächsten Ebene findest du dann alle möglichen Actions zu deinen Modulen. Diese kannst du dann einfach in die beiden Funktionen einfügen.

      Schau dir am Besten mal folgende Seite an, da erfährst du mehr über die möglichen LUA-Befehle:

      http://developer.fibaro.com/

      Gruß

  • hey,

    irgendwie kann ich nach einem alarm per zipato diesen nicht mehr deaktivieren. Nur per Handy oder Browser… sollte das nicht mit dem zipato möglich sein?

          • Es ist doch richtig, wenn folgendes eingestellt ist:

            Szene:

            –[[
            %% properties
            131 value
            %% events
            %% globals
            –]]

            — notwendige IDs
            local sensorID = {48} — IDs der Sensoren
            local phoneID = {6} — IDs der Handys
            local doorlockID = {} — IDs der doorlocks

            — zusätzliche Optionen
            local own_action = false — eigene Aktionen ausführen; Funktionen müssen befüllt werden
            local disarmed_bug = true — Firmware Bug umgehen

            — eigene Funktionen
            function actionsafterArmed()
            fibaro:debug(‚Führe eigene Funktionen nach dem Schärfen aus‘)
            end

            function actionsafterDisarmed()
            fibaro:debug(‚Führe eigene Funktionen nach dem Entschärfen aus‘)
            end

            — AB HIER NICHTS MEHR ÄNDERN
            local trigger = fibaro:getSourceTrigger()
            local rfid_value_status = “

            Debug = function ( color, message )
            fibaro:debug(string.format(‚%s‘, „span“, color, message, „span“))
            end

            function armedcheckSensorID(array)
            for j=1, #sensorID do
            if sensorID[j] ~= nil then
            if (tonumber(fibaro:getValue(sensorID[j], ‚armed‘)) ~= 0) then
            return false
            end
            end
            end
            return true
            end

            — Funktion für die Öffnung der Tür
            function openDoor()
            if (doorlockID[0] ~= nil) then
            fibaro:debug(‚Türschlösser werden geöffnet.‘)
            for j=0, #doorlockID do
            if doorlockID[j] ~= nil then
            fibaro:call(doorlockID[j],’unsecure‘)
            end
            end
            end
            end

            — Funktion zum Versenden der Push
            function sendPush(text)
            if (phoneID[1] ~= nil) then
            for i=1, #phoneID do
            if phoneID[i] ~= nil then
            fibaro:debug(‚Versende Push an ID ‚ ..phoneID[i])
            fibaro:call(phoneID[i],’sendPush‘, text, ‚alarm‘)
            end
            end
            end
            end

            function setArmedStatus(set_status)
            if set_status then
            fibaro:debug(‚Sensoren werden scharf geschaltet.‘)
            for k=1, #sensorID do
            if sensorID[k] ~= nil then
            if (tonumber(fibaro:getValue(sensorID[k], ‚value‘)) == 0) then
            fibaro:call(sensorID[k], ’setArmed‘, ‚1‘)
            else
            local sensorname = fibaro:getName(sensorID[k])
            local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[k])
            fibaro:debug(‚ACHTUNG: ‚ .. sensorname .. ‚ im Raum: ‚ .. sensorroom .. ‚ nicht sicher. Sende Push.‘)
            sendPush(‚ACHTUNG: ‚ .. sensorname .. ‚ im Raum: ‚ .. sensorroom .. ‚ nicht sicher.‘)
            end
            end
            end
            else
            fibaro:debug(‚Sensoren werden entschärft.‘)
            for j=1, #sensorID do
            if sensorID[j] ~= nil then
            if (disarmed_bug) then
            setArmed(sensorID[j])
            else
            fibaro:call(sensorID[j], ’setArmed‘, ‚0‘)
            end
            end
            end
            end
            end

            function setArmed(deviceId)
            local dev = api.get(‚/devices/‘ .. deviceId)
            dev.properties.armed = false
            api.put(‚/devices/‘ .. deviceId, dev)
            end

            — Funktion zum Anlegen einer Globalen Variablen
            function globalVar(var,val)
            local http = net.HTTPClient()
            http:request(„http://127.0.0.1:11111/api/globalVariables“, {
            options = {
            method = ‚POST‘,
            headers = {},
            data = ‚{„name“:“‚..var..'“,“value“:“‚..val..'“}‘,
            timeout = 10000
            },
            success = function(response)
            local result = response.data;
            if response.status == 200 or response.status == 201 then
            fibaro:debug(‚Status: ‚ ..response.status.. ‚ – Variable wurde angelegt‘)
            else
            fibaro:debug(‚Error: ‚ ..response.status.. ‚ – Zugriff verweigert‘)
            end
            end,
            error = function(err)
            fibaro:debug(‚[ERROR] ‚ .. err)
            end
            })
            end

            if (trigger[‚type‘] == ‚property‘) then
            fibaro:debug(‚RFID-Szene 3.1 (Official) gestartet.‘)
            local rfid_ID = tonumber(trigger[‚deviceID‘])
            local rfid_value = tonumber(fibaro:getValue(rfid_ID, ‚value‘))
            if (rfid_value == 1) then
            rfid_value_status = ‚Away‘
            Debug(‚red‘, ‚Status ‚ ..rfid_value_status.. ‚ gesetzt.‘)
            setArmedStatus(true)
            if (fibaro:getGlobal(‚PresentState‘) ~= nil) then
            fibaro:debug(‚Benötigte Variable PresentState erkannt.‘)
            fibaro:setGlobal(‚PresentState‘, ‚Away‘)
            else
            fibaro:debug(‚Benötigte Variable PresentState NICHT erkannt. Wird erstellt.‘)
            globalVar(‚PresentState‘, ‚Away‘)
            end
            local delay = tonumber(fibaro:getValue(sensorID[1], „armDelay“))
            if (delay ~= 0) then
            fibaro:debug(‚Arm-Delay erkannt. Arm-Delay: ‚ ..delay)
            delay = delay + 1
            fibaro:sleep(delay*1000)
            end
            if (not armedcheckSensorID(sensorID)) then
            if (own_action) then
            actionsafterArmed()
            end
            sendPush(‚ALARMANLAGE aktiv!‘)
            end
            elseif (rfid_value == 0) then
            rfid_value_status = ‚Home‘
            Debug(‚green‘, ‚Status ‚ ..rfid_value_status.. ‚ gesetzt.‘)
            setArmedStatus(false)
            if (fibaro:getGlobal(‚PresentState‘) ~= nil) then
            fibaro:debug(‚Benötigte Variable PresentState erkannt.‘)
            fibaro:setGlobal(‚PresentState‘, ‚Home‘)
            else
            fibaro:debug(‚Benötigte Variable PresentState NICHT erkannt. Wird erstellt.‘)
            globalVar(‚PresentState‘, ‚Home‘)
            end
            if (armedcheckSensorID(sensorID)) then
            if (own_action) then
            actionsafterDisarmed()
            end
            sendPush(‚ALARMANLAGE inaktiv!‘)
            openDoor()
            end
            end
            else
            fibaro:debug(‚Szene manuell gestartet. Widget-Support deaktiviert.‘)
            fibaro:debug(‚Hier werden noch weitere Funktionen folgen.‘)
            end

            Dann eine Szene für die Sirene:

            –[[
            %% properties

            %% globals
            –]]

            fibaro:call(1, „turnOn“);
            fibaro:call(6, „sendPush“, „Status: Alarmanlage ausgelöst“, „breached“);

            while tonumber(fibaro:getValue(16, „armed“)) > 0 do
            fibaro:debug(‚Alarm is breached…‘);
            fibaro:sleep(1*1000);
            end

            fibaro:call(129, „turnOff“);

            in Fibaro Anlarm:

            Die Szene Sirene eingebunden nach 15 sek.

            Dann sollte es doch eigentlich mit zipato soweit klappen (wenn dann das deaktivieren mit der nächsten Version kommt). Oder habe ich da ein Fehldenker?

  • Hallo Boomx,

    Ich habe jetzt die 4.092 installiert und folgendes festgestellt. Wenn ich den local disarmed bug auf false Stelle, werden die Funktionen nach dem entschärfen nicht mehr ausgeführt.
    Ist das ein generelles Problem oder ein Fehler bei mir?

    Gruss

      • Also, irgendwie will das bei mir nicht mehr. Komischerweise wird die Variable Home noch gesetzt aber der Rest der Funktionen nicht mehr
        Im Debug steht folgendes:
        [DEBUG] 19:10:37: RFID-Szene 3.1 (Official) gestartet.
        [DEBUG] 19:10:37: Status Away gesetzt.
        [DEBUG] 19:10:37: Sensoren werden scharf geschaltet.
        [DEBUG] 19:10:37: Benötigte Variable PresentState erkannt.
        [DEBUG] 19:10:37: Arm-Delay erkannt. Arm-Delay: 60
        [DEBUG] 19:11:38: Führe eigene Funktionen nach dem Schärfen aus
        [DEBUG] 19:11:39: Versende Push an ID 177
        [DEBUG] 19:11:39: Versende Push an ID 170
        [DEBUG] 21:15:41: RFID-Szene 3.1 (Official) gestartet.
        [DEBUG] 21:15:41: Status Home gesetzt.
        [DEBUG] 21:15:41: Sensoren werden entschärft.
        [DEBUG] 21:15:41: Benötigte Variable PresentState erkannt.

        –[[
        %% properties
        393 value
        %% events
        %% globals
        –]]

        — notwendige IDs
        local sensorID = {488, 41, 37, 312, 320} — IDs der Sensoren
        local phoneID = {177, 170} — IDs der Handys
        local doorlockID = {} — IDs der doorlocks

        — zusätzliche Optionen
        local own_action = true — eigene Aktionen ausführen; Funktionen müssen befüllt werden
        local disarmed_bug = false — Firmware Bug umgehen

        — eigene Funktionen
        function actionsafterArmed()
        fibaro:debug(‚Führe eigene Funktionen nach dem Schärfen aus‘)
        fibaro:call(501, „turnOn“);
        fibaro:call(503, „turnOn“);
        fibaro:call(505, „turnOn“);
        fibaro:call(507, „turnOn“);
        fibaro:call(380, „turnOn“);
        fibaro:setGlobal(„Alarm“, „Ja“);
        fibaro:setGlobal(„PresentState“, „Away“);
        fibaro:startScene(395);
        end

        function actionsafterDisarmed()
        fibaro:debug(‚Führe eigene Funktionen nach dem Entschärfen aus‘)
        fibaro:call(501, „turnOff“);
        fibaro:call(503, „turnOff“);
        fibaro:call(505, „turnOff“);
        fibaro:call(507, „turnOff“);
        fibaro:call(380, „turnOff“);
        fibaro:setGlobal(„Alarm“, „Nein“);
        fibaro:setGlobal(„PresentState“, „Home“);
        end

        • Hi,

          die Variable PresentState wird automatisch durch das Skript gesetzt. Die brauchst du nicht extra aufführen. Die Funktionen werden natürlich erst nach den 60 Sekunden ausgeführt. Das ist dir bewusst?

          Gruß

          • Das ist mir klar, aber sollte sich ja nur auf die Funktionen vor entschärfen beziehen die ja laufen. Die nicht funktionierenden Funktionen nach entschärfen sollten ja sofort ausgeführt werden. War jedenfalls früher immer so.
            Mit PresentState war mir nicht bewusst.
            Ich lösche einfach alles und fang nochmal von vorne an. Mal sehen ob das klappt. Danke

          • Nein, auch komplett die Szene neu aufzubauen klappt nicht. Der Alarm wird nicht deaktiviert, Push erfolgt nicht und die Funktionen nach disarm werden auch nicht ausgeführt. Noch eine Idee?

  • Habe mal die 4.092 Firmware installiert und den RFID Reader neu hinzugefügt. Da konnte ich nun beim anlernen sagen, was der schalten soll (war bei der .91 nicht). Da habe ich „ALARM AN/AUS“ aktiviert. Allerdings kommt immer beim Chip nutzen: “
    [17:20:42] ID 365: Unregistered code“ –

  • So das klappt mit der 92er Version. Wie columbol1979 geschrieben hat, muss „disarmed_bug auf false“ gestellt sein. zumindest hat es dann erst bei mir geklappt.

  • Nach dem Update auf 4.092 und setzen des Parameters disarmed_bug auf false funktioniert die Funktion „actionsafterDisarmed “ nicht mehr, sobald z.B. vorher eine Türe geöffnet wurde und der Alarm Counter zählt runter. Es wird zwar disarmed aber wie gesagt die Funktion actionsafterDisarmed wird nicht mehr ausgeführt.

  • Ja, es scheint ein Problem mit den eigenen Aktionen nach dem Entschärfen zu geben. Mir ist das nicht aufgefallen, weil ich noch eine andere Szene im Einsatz hatte, welche die Aktoren schaltet.

    Hier scheint es aber auch noch ein Problem mit der Firmware zu geben. Mit 4.091 hat das Skript ja funktioniert. Muss ich mal testen.

    Gruß

    • Beim Schärfen wird geprüft. ^^ Anscheinend ist die API zu langsam, im Moment der Prüfung sind die Sensoren noch geschärft und das Skript führt dann die eigenen Aktionen nicht aus. Sieht mir nach einem Problem mit der Firmware aus.

      Werd nächste Woche mir das Problem mal genau anschauen.

      Gruß

  • Ich suche die ganze Zeit nach einer Lösung (welche im Forum auch schon geschrieben wurde aber ich es einfach nicht wieder finde), dass nach dem „scharf schalten“ und der Prüfung eine Meldung kommen soll „Alarmanlage aktiv“. Es wird immer nur gezeigt, wenn etwas offen ist oder „Alarm inaktiv“. Ich möchte aber auch eine Meldung haben „Alarm aktiv!“ – da gab es vor kurzem eine Lösung im Forum zu. Aber wo ist die hin?

    • Es wird doch eine Push verschickt, wenn die Alarmanlage aktiviert wurde… Sollte das bei dir nicht der Fall sein, dann sind die Settings nicht richtig. Siehe:

      sendPush('ALARMANLAGE aktiv!')

      Gruß

  • Super Howto’s, ich habe nun dennoch eine Frage:

    Ich habe im Eingangbereich 2 Door-Sensoren und in diesem Bereich ist auch der RFID Zipato Reader. WIe kann ich dies steuern dass die beiden Door-Sensoren erst einen Alarm nach etwa 10 Sek. auslösen oder der erste Falsche Code erfasst wurde.
    Wie kann ich die beiden Door-Sensoren scharf schalten sobald beide Türen geschlossen sind nach dem Verlassen des Hauses?

    Danke für Eure Hilfe.

    Gruss

  • Bei mir funktioniert das RFID-Pad leider sehr unzuverlässig (HC2 4.100)

    Es kommt jetzt in der Testphase schon häufig vor, dass ich Away oder Home setze und das Pad danach minutenlang nicht reagiert. Die Tasten nehmen keine Kommandos mehr an…

    Außerdem verschickt das o.g. Skript bei mir keine Push-Meldung, wenn die Alarm-Anlage scharf geschaltet wird. Nur „ALARMANLAGE inaktiv!“ wird verschickt. Und beim Scharfschalten, wenn noch Fenster offen sind. Aber das „ALARMANLAGE aktiv!“ kommt bei mir nicht. Irgendwann kams einmal im Tests, aber seitdem nicht mehr…

    • Hi,

      hast du die gefixte Version genommen?

      http://pastebin.com/qQWYBvgc

      Da ist das Problem mit den Push gefixt, hatte es hier bereits in den Kommentaren veröffentlicht.

      Das RFID Keypad funktioniert mit der Version 4.100 ohne Probleme. Bei dir könnten es Reichweitenprobleme, falsche Inklusion oder der nicht richtig gedrückte Sabotage-Kontakt sein. Lern es am Besten mal neu an.

      Gruß

      • Danke für die Antwort boomx!

        Ich habe das Keypad gelöscht und neu integriert.
        Die Probleme haben sich dadurch nicht gelöst. Ich hab jetzt 2-3 mal hintereinander home und away mit dem Tag gesetzt, alles ging. Jetzt ist es wieder so, dass der Tagreader nicht auf die Kommandos reagiert. Mir ist aufgefallen, dass das jetzt gerade passiert ist, nachdem ich ein Fenster geschlossen habe.
        Kann es möglich sein, dass er – nachdem irgendein Auftrag durchs Netzwerk ging – erstmal ein paar Sekunden braucht um wieder zu funktionieren?

        auch die pushmeldung hat sich nicht verbessert.
        Ich setze auf Away und er pusht mir die Nachricht, dass im Gäste-WC noch ein Fenster auf ist. Es kommt kein „ALARMANLAGE aktiv“.
        Setze ich wieder auf Home, kommt „ALARMANLAGE inaktiv!“. Das kann ich beliebig oft wiederholen.
        wenn alle Fenster geschlossen sind, kommt beim Away setzen gar keine Meldung.

        PS: ich hab nochmal komplett neu das Skript aufgesetzt mit dem Code aus deinem Link.

        PPS: Mit 4.100 muss ich den Workaround für das entschärfen ja eigentlich nicht setzen, oder? Macht so oder so aber kenien Unterschied. Das ist nicht die Lösung.

        • Hi,

          hättest du dir den Code ein wenig angeschaut, dann hättest du gesehen, dass keine Push kommt, sofern nicht alle Sensoren geschärft werden können. ;). Das hatten wir hier in den Kommentaren auch schon mal. Der Disarm-Bug muss zwingend auf false gesetzt sein, sonst funktioniert es nicht richtig.

          Die Push, dass der Alarm inaktiv ist, kommt immer, da die Sensoren so schnell nicht mehr mit der API abgeglichen werden können… Da hat Fibaro noch einen Fehler drin. Das sollte also alles so funktionieren wie es soll :)

          Ich würde mal dein Z-Wavenetzwerk checken, klingt so als wäre das zu bestimmten Zeitpunkten überlastet.

          Habe das Skript so seit ein paar Tagen im Einsatz und konnte keine Probleme feststellen.

          Gruß

          • Hi boomx,

            danke für die erneute Nachricht. Ich versuche mich ja so wenig doof wie möglich anzustellen ;)

            Du schreibst: „dass keine Push kommt, sofern nicht alle Sensoren geschärft werden können. ;)“

            Okay, also hier in den Kommentaren kann ich keinen Austausch darüber finden.
            Ich habe das Problem ja leider auch, wenn alle Sensoren scharf geschaltet werden können.
            Alle IDs die ich im Skript angebe, werden scharf geschaltet. Trotzdem kommt keine Aktiv-Push.
            Natürlich habe ich noch Sensoren im Netzwerk, die ich nicht scharf schalten lasse (zwei Türen und 4 Bewegungsmelder). Die habe ich aber sowohl in den eigenen Einstellungen vom Alarmsystem ausgenommen, als auch nicht im Skript mit der ID erwähnt.

            Also das kanns irgendwie auch nicht sein….

        • Ergänzung:

          Und wenn ich eine eigene Aktion ausführen lasse beim Scharfschalten mit:

          function actionsafterArmed()
          fibaro:debug(‚Führe eigene Funktionen nach dem Schärfen aus‘)
          fibaro:call(25, ’sendPush‘, „ALARMANLAGE aktiv!“)
          end

          Dann pusht er die Nachricht trotzdem nicht. (local own_action = true ist gesetzt)…

          • Hi,

            bei dir scheint eine Config nicht zu passen oder du nutzt das falsche Skript. Poste doch mal dein Skript bei pastebin (Der Übersicht halber).

            Gruß

      • [DEBUG] 20:58:48: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 20:58:48: Status Away gesetzt.
        [DEBUG] 20:58:48: Sensoren werden scharf geschaltet.
        [DEBUG] 20:58:48: Benötigte Variable PresentState erkannt.
        [DEBUG] 20:58:59: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 20:58:59: Status Home gesetzt.
        [DEBUG] 20:58:59: Sensoren werden entschärft.
        [DEBUG] 20:58:59: Benötigte Variable PresentState erkannt.
        [DEBUG] 20:58:59: Führe eigene Funktionen nach dem Entschärfen aus
        [DEBUG] 20:59:00: Versende Push an ID 25

        Und als einzige Push in dem gesamten Prozess wird verschickt:

        HC2: ALARMANLAGE inaktiv!

        • Cool :)

          Das Skript ist schneller als das Setzen des Arm-Status in der API, weshalb er die Prüfung überspringt und nichts ausführt. Wird an der Anzahl der Module liegen. Bleibt eigentlich nichts anderes als i.wo ein sleep-Befehl einzubauen oder die Prüfung der Sensoren zu entfernen. Beim Entschärfen hab ich es ja schon rausgenommen… Doof.

          Gruß

          • Respekt! Wie hast du das denn jetzt daran erkannt? O_o

            Kann das auch der Grund sein warum das Pad manchmal nicht reagiert?
            Es passiert immer noch. Und ich kann kein Muster erkennen wann das auftritt.

  • Ich hab jetzt mal den Teil aus dem Skript rausgenommen:

    if (not armedcheckSensorID(sensorID)) then

    end

    Welche Funktion nehme ich mir damit genau?
    Es funktioniert jetzt. Beim Schärfen und Entschärfen schickt er mir die Push.
    Aber er sagt mir per Push jetzt nicht mehr, dass in der Küche noch ein Fenster auf ist.
    Im Debug zeigt er mir das aber noch an…

    Wozu ist die Funktion, die ich entfernt habe? Ich verstehe die irgendwie nicht…
    Ich hab gedacht ich hätte es verstanden, nämlich, dass jedes Fenster durchgeprüft wird.
    Wenn dem so wäre, dürfte er mir das aber im Debug (siehe unten) nicht anzeigen, dass das Fenster in der Küche noch offen ist, oder?

    [DEBUG] 21:36:53: RFID-Szene 3.2 (Official) gestartet.
    [DEBUG] 21:36:53: Status Away gesetzt.
    [DEBUG] 21:36:53: Sensoren werden scharf geschaltet.
    [DEBUG] 21:36:53: ACHTUNG: Fenster Küche 2 im Raum: Küche nicht sicher. Sende Push.
    [DEBUG] 21:36:53: Versende Push an ID 25
    [DEBUG] 21:36:53: Benötigte Variable PresentState erkannt.
    [DEBUG] 21:36:53: Führe eigene Funktionen nach dem Schärfen aus
    [DEBUG] 21:36:53: Versende Push an ID 25
    [DEBUG] 21:37:20: RFID-Szene 3.2 (Official) gestartet.
    [DEBUG] 21:37:20: Status Home gesetzt.
    [DEBUG] 21:37:20: Sensoren werden entschärft.
    [DEBUG] 21:37:20: Benötigte Variable PresentState erkannt.
    [DEBUG] 21:37:20: Führe eigene Funktionen nach dem Entschärfen aus
    [DEBUG] 21:37:20: Versende Push an ID 25

    • Hab jetzt das RFID-Skript schon ein wenig länger im Einsatz, daran hab ich das erkannt. ;) Dass das Problem auch mit dem Entschärfen auftrat, hat die Fehlerfindung eingeschränkt.

      Die einzige Funktion, welche du damit entfernt hast, ist die Prüfung ob alle Sensoren erfolgreich geschärft wurden. Es kommt jetzt also auch bei offenen Fenster/Türen die Push, dass die Alarmanlage aktiv ist. Die Push für deren Erkennung wird in einer anderen Funktion genutzt, hier tippe ich eher auf ein temporäres Problem mit dem Push-Dienst, dies ist kein Fehler vom Skript.

      Die Problematik mit deinem RFID-Reader liegt eher am Gerät selbst und nicht am HC2. Wie gesagt, da würde ich mal das Modul checken, bzw. deinen Netzwerktraffic (Polling, WakeUp-Times)

  • kann man eigentlich bei alarm mehrere push nacheinander schicken lassen? so erkennt man auch wenn das handy in der hosentasche ist, dass es keine „whatsapp“ nachricht ist…

  • Hallo Boomx,

    ich habe nun nach längerem Warten meine HC2 von der 4.07 auf die 4.1 geupdatet. Dieses funktionierte ohne Probleme. Auch die Einbindung des RFID und das „anlernen“ der RFID Chips funktionierten ohne Probleme.
    Nach einigen Test mit der Alarmfunktion bin ich echt begeistert gewesen über die Geschwindigkeit. Die Ernüchterung kam aber als ich bei meiner Haustür die Verzögerung bei scharf schalten und entschärfen nutzen wollte.

    1. Test Verzögerung der Haustür beim scharf schalten z.b. 60s: bei Aktivierung der Alarmanlage wird die Verzögerung erkannt und im HC2 angezeigt. Sobald man nun aber binnen der 60 sec. die Anlage deaktiviert hört der Countdown nicht auf zu zählen. Folge ist, trotz Entschärfung der Anlage wird nach Ablauf der 60s auf armed gestellt 

    2. Test nur Verzögerung beim Entschärfen z.b. 30s: Diese Funktion ist bei mir erforderlich, da das Pad im Haus installiert ist, von außen gibt es keinen Zugang. Sobald die Haustür geöffnet wird, beginnt der Countdown für die Verzögerung und die Anlage kann entschärft werden. Laut push und auch im HC2 werden die Sensoren auf disarmed gestellt. Der Countdown hört auch hier nicht auf und zählt weiter runter. Nach Ablauf des timer, löst die Alarmanlage aus. Somit werden bei mir die Nachbarn geweckt, die Rollläden gehen runter und ich habe aufgrund des Lichts Disco bei mir zu Hause 

    Kannst Du mir bitte behilflich sein und mir mitteilen, wie ich dem Skript die Verzögerung ersichtlich machen kann. Mit 1 kann ich ggf. noch leben, da ich hier nur darauf achten muss, dass ich innerhalb der Verzögerung den Status der Anlage nicht Wechsel. 2 ist leider nicht zu umgehen, somit wir immer ausgelöst.

    Vielen Dank
    LG Daniel

  • Hallo,

    habe noch ein Bug festgestellt: Wenn der Alarm ausgelöst wird, kann ich diesen nicht über das RFID Pad entschärfen. der ausgelöste Sensor wirdn nicht wie alle anderen auf disarm gestellt. es scheint so, dass der Sensor für weitere Befehle gesperrt worden ist. Die Anlage kann somit nur über die App oder die oberfläche im HC2 entschärft werden.

      • Hab es grad mal getestet… Wenn der Status zurück auf Home gestellt wird, dann geht auch der Alarm aus und alle Sensoren werden entschärft. Also weder ein Bug der Firmware, noch des Skriptes. Du wirst wahrscheinlich vergessen haben, die Option für die Ausführung der Szene bei Alarm zu Aktivieren.

        Gruß

  • Hallo Boomx,

    ich habe seit einigen Tagen das oben genannte Skript sehr erfolgreich am Laufen, vielen Dank für die tolle Arbeit.
    Jetzt frage ich mich, ob ich in dem Script den „RFID Reader piep“ so verwenden kann, dass sobald die Alarmanlage aktiv ist der piep ausgelöst wird, dieses soll als akustischer Hinweis verwendet werden. Weiterhin wünsche ich mir, dass der piep nicht die ganze Zeit an ist sondern nur wenn über z.b. ein Motion Sensor Bewegung erkannt wird und dann für x sec.? Gleiches habe ich als optisches Signal bereits mit einem Wall Plug realisiert. Mit dem piep bekomme ich dieses aber nicht zum laufen.
    Vielen Dank für die Hilfe

  • Ich komme mit meinem Problem einfach nicht weiter. Lock / Unlock – alles funktioniert wenn ich nur über RFID arbeite. Nur wenn ich das Danalock entweder manuell oder durch automatischen Lock bediene geht nichts mehr, da der Status vom RFID nicht mehr stimmt. Ich finde keine Möglichkeiten des Status des RFID Leser zu verändern.

      • Hallo boomx
        Danke für die superschnelle Antwort. Ich weiss zwar nicht was Du damit meinst :-) aber dann warte ich mal auf nächste Woche und hoffe dass ich danach die Sache in Griff bekomme

        Gruss

    • Hallo Peter
      Ja, das selbe Problem habe ich auch schon länger und bis jetzt noch keine Lösung gefunden.
      Sobald ich z,b, per Handy scharf oder unscharf stelle ändert sich der aktuelle Zustand des RFID nicht.
      Also in er Praxis: Wenn die Alarmanlage per Handy Scharf gestellt wurde ändert das RFID seinen Status nicht und bleibt auf unscharf.
      Wenn ich dann z.b. nach Hause komme und das RFID auf Home ( unscharf stelle ) reagiert es nicht, außer ich ändere den Zustand mit RFID vorher wieder auf scharf und anschließend auf unscharf dann klappt es. Was natürlich etwas suboptimal ist.
      Gibt es da eine Lösung ?

  • Hallo boomix
    Ich habe noch in weiteres Problem. Wenn ich das Danalock Schloss über den RFID oder über den Fibarotaster bediene, funktioniert zwar alles, aber das Schloss ändert in der Anzeige nicht seinen Status. Das heisst ich kann an der Anzeige nicht erkennen ob das Schloss offen oder geschlossen ist. Kann man das auch mit einem Put Befehl selber ändern?
    Gruss Peter

  • N`Abend boomx & Co!

    Und erstmal riesen Lob und Anerkennung für die viele Arbeit hier! Unglaublich, wie ihr und der Blog mir die ersten Wochen mit Fibaro geholfen habt!
    Aber ich habe ein Problem, das mich bald in den Wahnsinn treibt, und zu dem ich hier nichts passendes gefunden habe (glaube ich zumindest…).
    Und zwar habe ich für den Alarm eine Verzögerung von 45sek eingerichtet, damit ich noch das Haus verlassen kann.

    ABER: egal ob ich den Alarm per App oder RFID aktiviere, sobald ich mich innerhalb dieser 45 sek im Raum bewege, bekomme ich die Push-Meldung „Achtung, Bewegund im Raum Flur…“.
    Nach Ablauf der 45 sek werden ALLE ANDEREN Sensoren scharf geschaltet, NUR DER IM FLUR NICHT. Auch nicht, wenn ich sofort nach Aktivieren des Alarms raus gehe. Die „Achtung-Push“ kommt sofort, auch wenn noch gute 30sek delay abzulaufen haben.

    Weiß da ein Profi Rat?

    Gruß, Ruben

      • Hi!

        Ja, Delay wird debuggt, Sensor Flur steht an erster Stelle. Aber ich teste auch im Wohnzimmer, da passiert es ebenso und der steht an zweiter Stelle.

        Debug ohne, dass sich jemand bewegt:

        [DEBUG] 21:57:23: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 21:57:23: Status Away gesetzt.
        [DEBUG] 21:57:23: Sensoren werden scharf geschaltet.
        [DEBUG] 21:57:23: Benötigte Variable PresentState erkannt.
        [DEBUG] 21:57:23: Arm-Delay erkannt. Arm-Delay: 45
        [DEBUG] 21:57:33: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 21:57:33: Status Home gesetzt.
        [DEBUG] 21:57:33: Sensoren werden entschärft.
        [DEBUG] 21:57:33: Benötigte Variable PresentState erkannt.
        [DEBUG] 21:57:33: Führe eigene Funktionen nach dem Entschärfen aus
        [DEBUG] 21:57:33: Versende Push an ID 4
        [DEBUG] 21:57:33: Versende Push an ID 16
        [DEBUG] 21:57:33: line 47: attempt to index global ‚doorlockID‘ (a nil value)

        Debug mit Bewegung in der Delay-Time (Verlassen des Raums):

        [DEBUG] 22:00:01: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 22:00:01: Status Away gesetzt.
        [DEBUG] 22:00:01: Sensoren werden scharf geschaltet.
        [DEBUG] 22:00:01: ACHTUNG: 34_Bewegung WZ im Raum: Wohnzimmer nicht sicher. Sende Push.
        [DEBUG] 22:00:02: Versende Push an ID 4
        [DEBUG] 22:00:02: Versende Push an ID 16
        [DEBUG] 22:00:02: Benötigte Variable PresentState erkannt.
        [DEBUG] 22:00:02: Arm-Delay erkannt. Arm-Delay: 45
        [DEBUG] 22:00:10: RFID-Szene 3.2 (Official) gestartet.
        [DEBUG] 22:00:10: Status Home gesetzt.
        [DEBUG] 22:00:10: Sensoren werden entschärft.
        [DEBUG] 22:00:10: Benötigte Variable PresentState erkannt.
        [DEBUG] 22:00:11: Führe eigene Funktionen nach dem Entschärfen aus
        [DEBUG] 22:00:11: Versende Push an ID 4
        [DEBUG] 22:00:11: Versende Push an ID 16
        [DEBUG] 22:00:11: line 47: attempt to index global ‚doorlockID‘ (a nil value)

        Danke für jeden Tipp!

        • Ähm… es geht….
          Hab alles in einer neuen Szene eingetragen und alles raus genommen, was auf Doorlocks hinweist, weil ich keine habe. Und plötzlich gehts. Kann das sein, dass es mit den Doorlocks zu tun hatte?
          Oder war da ein anderer Fehler?

          Egal, es scheint zu laufen! Besten Dank trotzdem!

          Go on! Tolle Arbeit!

          • Hi,

            wenn es 5x geht und dann nicht mehr, dann lässt das auf eine falsche Konfiguration der Sensoren schließen.

            Wichtig zu beachten ist, dass in der Szene der disarm_bug auf false gesetzt ist und dass die Sensoren mit Arm-Delay im Array an erster Stelle stehen. Ansonsten funktioniert die Szene ohne Probleme. Habe es auch ausführlich mit einem Arm-Delay getestet.

            Gruß

          • Hi!

            Danke nochmal für all die Tipps!
            Aktuell läuft es fehlerfrei. Ich habe etwas entdeckt. Wenn ich den Chip davor halte, muss ich 2-3 Sekunden einfach still stehen bleiben, dann raus und abschließen. Dann klappt es ohne Probleme. Bewege ich mich, kommt die Push „Bewegung im Raum…“ und der Sensor wird nicht scharf geschaltet. Halte ich still und gehe dann: kein Problem.

            Hängt bestimmt mit der Übertragungsgeschwindigkeit zusammen, oder?

  • Hi boomx,

    erstmal Danke für den tollen Support hier. Vielleicht kannst Du auch mir weiterhelfen:
    Habe ein HCL mit der 4.100 laufen und das zipato keypad eingebunden. Funktioniert ja jetzt auf der 4.100. Aber da das HCL ja kein LUA unterstützt, habe ich es noch nicht geschafft, einen Tag anzulernen oder einen Code zu speichern. Dafür fehlt ein Anwendungsfeld in den Parametern des Device. Im Netz gibt es nirgendwo einen Hinweis, wie man das Keypad mit einem HCL verwendet. Hast Du ne Idee?

    Vielen Dank vorab!!

  • Hallo Leute,

    Ich habe noch 2 Probleme beim Einrichten,

    gibt es schon eine Lösung zur Unterstützung mehrerer RFID Tagreader? ich habe 2 Tagreader eingebunden, beide können den Alarm scharf und unscharf stellen, aber kennen den gegenseitigen Status nicht. Somit habe ich ohne Optische einzeige und oder Handy keine möglich um zu wissen ob scharf geschalten ist oder nicht. hat das schon jemand realisiert und kann das einem Anfänger erklären?

    Das Andere Problem ist, das die Tagreader in dem Gebäude sind, sowie auch die Bewegungsmelder. Wenn ich jetzt den Alarm mit Verzögerung einschalten und auf dem Bewegungsmelder ist Bewegung schaltet er diesen nicht scharf. Ich habe das so gelöst:
    local own_action = true — eigene Aktionen ausführen; Funktionen müssen befüllt werden
    local disarmed_bug = false — Firmware Bug umgehen

    — eigene Funktionen
    function actionsafterArmed()
    fibaro:call(13, „setArmed“, „1“);
    fibaro:call(32, „setArmed“, „1“);

    so startet er nach den 30 Sekunden wieder den modus zum scharf stellen, ich bekomme dann nochmal die Nachricht das der Alarm aktiviert wurde. diesmal aber ohne Warnung das etwas “ offen“ ist, da ich ja das Gebäude dann schon verlassen habe.

    aber die Ideal Lösung kann das nicht sein…..hat jemand eine Idee, dass das Skript den zustand nochmal nach 30 Sekunden Prüft?

    Gruß
    Sascha

  • Hallo,

    ersteinmal DANKE Daniel für Deine Mühe.
    Ich erwäge ebenfalls den Einsatz eines Tagreaders, allerdings hätte ich da noch 2 Fragen.
    Zum einen, ist der Firmwarebug in der 4.100 behoben UND ist denn bei den Tagreader eine verschlüsselte Übertragung des Funksignals möglich? Leider schweigt sich zipato zu diesem Thema aus (eine direkte Anfrage an zipato habe ich allerdings disher noch nicht gestellt).

    Grüße HH…

  • Hallo,

    habe bei mir auch folgendes festgestellt:

    Wenn ich den Alarm scharf stelle, und der Türsensor ist offen, bekomme ich einen Push „Raum nicht sicher….“ (Bei diesem Sensor ist auch ein Delay eingestellt und steht an erster stelle im Array) und es wird dieser Sensor nach Ablauf des Delay nicht scharf geschalten. Wenn ich aber die Türe zu habe und dann den Alarm scharf stelle, anschießend das Haus verlasse, dann wird der Alarm scharf geschalten.

    Ist irgendwie nicht so praktisch. (sagt meine Frau) wenn Sie das Haus verlassen möchte muss Sie erst mal alles ins Auto packen unsere Tochter aus dem Haus jagen und dann wieder die Türe schließen um den Alarm richtig scharf zu schalten und dann wieder Türe auf und raus.

    Gibts da ne Lösung?

    • Hallo,

      das funktioniert mit dieser Version des Skriptes nicht. Wenn der Status des RFID Pads geändert wird, erfolgt die Prüfung (Offene, ausgelöste Sensoren) und stellt diese dann auf „Armed“. Sollte ein Sensor nicht den benötigten Status besitzen, dann wird dieser ausgelassen. (Wie bei dir in der Konstellation)

      Um deinen Wunsch umzusetzen, müsste das Skript angepasst werden.

      Gruß

  • Hallo boomx
    Seit dem Update auf 4.110 läuft Dein Script zur Änderung des Status des RFID über die API nicht mehr. Hast Du eine Ahnung woran das liegt?
    Gruss Peter

    • Hi,

      ich denke mal, dass Fibaro diese Funktion, welche ich in dem Fall nutze, entfernt hat. Muss ich mal testen, wenn ich mal wieder ein paar Minuten Zeit habe. Meld mich dann.

      Gruß

      • Hallo boomx
        Konntest Du in diesem Fall schon etwas in Erfahrung bringen? Ich benutze diese Funktion von Dir in mehreren Szenen für mehrere Module, welche alle nicht mehr funktionieren.
        Danke Peter

        • Hi,

          wie im Artikel bereits geantwortet, funktioniert die Funktion nicht mehr. Hab mich bisher nicht weiter damit beschäftigt, da ich andere Projekte auf dem Plan hab. Sobald ich wieder Zeit habe, kümmere ich mich drum :)

          Gruß

  • Guten Abend,

    erstmal Danke für die tollen und hilfreichen Skripte, sowie die Anregungen für mögliche Szenarien.

    Inzwischen konnte ich das RFID Keypad einbinden und die Tags erfolgreich mit einer Szene registrieren.
    Aktuell nutze ich die HC2 Version 4.100. Mit dem Skript aus diesem Beitrag kann ich eingetragene Sensoren erfolgreich schärfen, wenn diese geschlossen sind und entschärfen auch wenn Alarm ausgelöst wurde (bei mir fehlte auch der Haken fürs Ausführen wenn Alarm besteht).

    Aktuell wird der armed Status gesetzt wenn einer der beiden RFID Tags mit Away das Haus verlässt, jedoch möchte ich diesen erst setzten, wenn beide weg sind. Desweiteren sollen aber beim Verlassen des Hauses, eines bestimmten RFID Tags, gewisse Aktionen ausgeführte werden, bsp. WallPlug off.

    Kann ich das mit diesem Skript realisieren? Wenn ja, was muss ich dafür anpassen?

    Grüße und vielen Dank.

    • Hi,

      nein, das geht technisch nicht. Es kann weder ausgelesen, welcher Tag genutzt wurde (bzw. nur über Umwege), noch kann die Away-Taste die Szenen öfter triggern. Es werden nur die Statusänderungen an das HC2 übertragen, alles andere interpretiert das HC2 nicht.

      Gruß

      • Hi,

        schade, gut also umdenken. Somit kann / muss der letzte der geht den Alarm schärfen.

        Besteht die Möglichkeit, eine eigenständige Szene für einen bestimmten Tag zu schreiben welcher bestimmte Module deaktiviert beim gehen und beim zurückkehren aktiviert.

        Hab eigentlich nicht vor ein weiteres Gerät als „Auslöser“ dafür zu nutzen, bzw. wie habt ihr das so gelöst?

        Schönen Abend noch

        • Hi,

          ja, das kannst du über die own_actions durchführen. Entweder fragst du dort den Tag ab, oder du erstellst eine neue Szene, welche du über diese Funktion startest und prüfst dort den Tag. Geht beides ohne Probleme.

          Gruß & Danke dir auch

  • Hi,

    danke für deine Anleitungen.
    Also Teil 1 hat gut geklappt, wenn ich home oder away aktiviere bekomme ich entsprechende debug Meldungen.
    Nun aber ne blöde frage. In deinem Skript aus teil 2 muss ich da irgendwo die rifd ID eintragen?
    weil bei mir klappt nix ;-)

  • Hi,
    ich habs noch nicht ganz verstanden.
    Alles funktioniert soweit.
    Wenn jetzt das Fenster geöffnet wird, geht der Alarm los.
    Wenn ich diesen nun aber mit dem Tagreader deaktivieren will, klappt das nicht, die Sirene läuft weiter.
    Auch die Szene läuft weiter, so dass ich, wenn ich bei aktivem Alarm, den Reader auf „Home“ setze, alle anderen Sensoren auf scharf bleiben, nur das Fenster nicht, welches geöffnet wurde,.

  • Dear Boomx,

    I have read all your scripts and I think you are doing an amazing job, well done.

    Is there any news regarding this script/hardware?

    If yes, where can I find this?

  • Hi boomx,

    erst einmal vielen herzlichen Dank für deine tolle Arbeit hier!
    Als absoluter LUA-Noob hab ich dank der Artikel zumindest schonmal 4 RFID-Trigger angelernt bekommen.

    Für die aktuelle Szene bin ich aber scheinbar trotz lesen aller Artikel und Kommentare zu doof…

    Im Header habe ich folgendes stehen:
    –[[
    %% properties
    183 value
    %% events
    %% globals
    –]]

    dabei ist 183 die ID meines RFID-Pads.

    Der Rest sieht folgendermaßen aus:

    — notwendige IDs
    local sensorID = {63, 135, 140, 145, 81, 125, 130, 58, 19, 33, 43, 118, 48, 53, 76} — IDs der Sensoren
    local phoneID = {25, 86, 90} — IDs der Handys
    local doorlockID = {} — IDs der doorlocks

    — zusätzliche Optionen
    local own_action = false — eigene Aktionen ausführen; Funktionen müssen befüllt werden
    local disarmed_bug = false — Firmware Bug umgehen

    — eigene Funktionen
    function actionsafterArmed()
    fibaro:debug(‚Führe eigene Funktionen nach dem Schärfen aus‘)
    end

    function actionsafterDisarmed()
    fibaro:debug(‚Führe eigene Funktionen nach dem Entschärfen aus‘)
    end

    — AB HIER NICHTS MEHR ÄNDERN
    local trigger = fibaro:getSourceTrigger()
    local rfid_value_status = “

    Debug = function ( color, message )
    fibaro:debug(string.format(‚%s‘, „span“, color, message, „span“))
    end

    function armedcheckSensorID(array)
    for j=1, #sensorID do
    if sensorID[j] ~= nil then
    if (tonumber(fibaro:getValue(sensorID[j], ‚armed‘)) ~= 0) then
    return false
    end
    end
    end
    return true
    end

    — Funktion für die Öffnung der Tür
    function openDoor()
    if (doorlockID[0] ~= nil) then
    fibaro:debug(‚Türschlösser werden geöffnet.‘)
    for j=0, #doorlockID do
    if doorlockID[j] ~= nil then
    fibaro:call(doorlockID[j],’unsecure‘)
    end
    end
    end
    end

    — Funktion zum Versenden der Push
    function sendPush(text)
    if (phoneID[1] ~= nil) then
    for i=1, #phoneID do
    if phoneID[i] ~= nil then
    fibaro:debug(‚Versende Push an ID ‚ ..phoneID[i])
    fibaro:call(phoneID[i],’sendPush‘, text, ‚alarm‘)
    end
    end
    end
    end

    function setArmedStatus(set_status)
    if set_status then
    fibaro:debug(‚Sensoren werden scharf geschaltet.‘)
    for k=1, #sensorID do
    if sensorID[k] ~= nil then
    if (tonumber(fibaro:getValue(sensorID[k], ‚value‘)) == 0) then
    fibaro:call(sensorID[k], ’setArmed‘, ‚1‘)
    else
    local sensorname = fibaro:getName(sensorID[k])
    local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[k])
    fibaro:debug(‚ACHTUNG: ‚ .. sensorname .. ‚ im Raum: ‚ .. sensorroom .. ‚ nicht sicher. Sende Push.‘)
    sendPush(‚ACHTUNG: ‚ .. sensorname .. ‚ im Raum: ‚ .. sensorroom .. ‚ nicht sicher.‘)
    end
    end
    end
    else
    fibaro:debug(‚Sensoren werden entschärft.‘)
    for j=1, #sensorID do
    if sensorID[j] ~= nil then
    if (disarmed_bug) then
    setArmed(sensorID[j])
    else
    fibaro:call(sensorID[j], ’setArmed‘, ‚0‘)
    end
    end
    end
    end
    end

    function setArmed(deviceId)
    local dev = api.get(‚/devices/‘ .. deviceId)
    dev.properties.armed = false
    api.put(‚/devices/‘ .. deviceId, dev)
    end

    — Funktion zum Anlegen einer Globalen Variablen
    function globalVar(var,val)
    local http = net.HTTPClient()
    http:request(„http://127.0.0.1:11111/api/globalVariables“, {
    options = {
    method = ‚POST‘,
    headers = {},
    data = ‚{„name“:“‚..var..'“,“value“:“‚..val..'“}‘,
    timeout = 10000
    },
    success = function(response)
    local result = response.data;
    if response.status == 200 or response.status == 201 then
    fibaro:debug(‚Status: ‚ ..response.status.. ‚ – Variable wurde angelegt‘)
    else
    fibaro:debug(‚Error: ‚ ..response.status.. ‚ – Zugriff verweigert‘)
    end
    end,
    error = function(err)
    fibaro:debug(‚[ERROR] ‚ .. err)
    end
    })
    end

    if (trigger[‚type‘] == ‚property‘) then
    fibaro:debug(‚RFID-Szene 3.1 (Official) gestartet.‘)
    local rfid_ID = tonumber(trigger[‚deviceID‘])
    local rfid_value = tonumber(fibaro:getValue(rfid_ID, ‚value‘))
    if (rfid_value == 1) then
    rfid_value_status = ‚Away‘
    Debug(‚red‘, ‚Status ‚ ..rfid_value_status.. ‚ gesetzt.‘)
    setArmedStatus(true)
    if (fibaro:getGlobal(‚PresentState‘) ~= nil) then
    fibaro:debug(‚Benötigte Variable PresentState erkannt.‘)
    fibaro:setGlobal(‚PresentState‘, ‚Away‘)
    else
    fibaro:debug(‚Benötigte Variable PresentState NICHT erkannt. Wird erstellt.‘)
    globalVar(‚PresentState‘, ‚Away‘)
    end
    local delay = tonumber(fibaro:getValue(sensorID[1], „armDelay“))
    if (delay ~= 0) then
    fibaro:debug(‚Arm-Delay erkannt. Arm-Delay: ‚ ..delay)
    delay = delay + 1
    fibaro:sleep(delay*1000)
    end
    if (not armedcheckSensorID(sensorID)) then
    if (own_action) then
    actionsafterArmed()
    end
    sendPush(‚ALARMANLAGE aktiv!‘)
    end
    elseif (rfid_value == 0) then
    rfid_value_status = ‚Home‘
    Debug(‚green‘, ‚Status ‚ ..rfid_value_status.. ‚ gesetzt.‘)
    setArmedStatus(false)
    if (fibaro:getGlobal(‚PresentState‘) ~= nil) then
    fibaro:debug(‚Benötigte Variable PresentState erkannt.‘)
    fibaro:setGlobal(‚PresentState‘, ‚Home‘)
    else
    fibaro:debug(‚Benötigte Variable PresentState NICHT erkannt. Wird erstellt.‘)
    globalVar(‚PresentState‘, ‚Home‘)
    end
    if (armedcheckSensorID(sensorID)) then
    if (own_action) then
    actionsafterDisarmed()
    end
    sendPush(‚ALARMANLAGE inaktiv!‘)
    openDoor()
    end
    end
    else
    fibaro:debug(‚Szene manuell gestartet. Widget-Support deaktiviert.‘)
    fibaro:debug(‚Hier werden noch weitere Funktionen folgen.‘)
    end

    Im Debug erhalte ich allerdings nur folgende Info:
    [DEBUG] 16:36:40: Szene manuell gestartet. Widget-Support deaktiviert.
    [DEBUG] 16:36:40: Hier werden noch weitere Funktionen folgen.

    und es passiert nichts weiter…

    Meine aktuelle Version auf dem HC2 ist 4.120.

    Hast Du vielleicht auf die schnelle eine Idee, was ich falsch mache?

    Besten Dank vorweg!

    elralfo

  • Hallo Boomx,

    ich habe seit neuestem folgendes Problem:

    Wenn ich den Alarm deaktiviere am RFID wird der Hauptsensor zwar entschärft, der Delay zählt allerdings weiter runter und der Alarm geht dann los!?

    Hast Du evtl. eine Ahnung?

    Vielen Dank im Voraus!

  • Hallo Boomx,
    ich bin begeistert, wie viele Skripte hier von Dir veröffentlicht werden und wie schnell hier auf Probleme reagiert und bei der Lösung geholfen wird. Ich bin gerade dabei, eine Alarmanlage zu realisieren und möchte diese mit dem Zipato RFID Tag aktivieren und deaktivieren. Leider gibt es mitlerweile sehr viele Beiträge, welche meist auch HC2 Firmware abhängig sind.
    Gibt es eine Übersicht, welches Skript mit welcher Firmware funktioniert oder ähnliches?

    Viele Grüße
    Thomas

  • Hallo,

    vielen Dank für das Script…ich habe aber noch ein paar Verständnisfragen zu dem Delay.

    Ziel ist es, wie es schon einige User hier am laufen haben, dass ein 30Sek delay beim Verlassen&Betreten des Hauses existiert.
    Dieses Delay sollte eigentlich nur für die Eingangstür und nicht für die 4 anderen Sensoren gelten.

    Soweit ich es Verstehe definiere ich an den Modulen selber das Auslösedely (30Sek). Das gilt aber dann für alle Module.

    Wie realisiere ich es denn nun genau, dass ich das Delay nur am Türsensor habe? Verlassen des Hauses bekomme ich ja noch hin, aber das Betreten löst mir jedes mal die Anlage aus.:S

    Ich bin leider nicht so sehr in LUA Scripting bewandert..

    FW HC2 4.140

    Danke schon einmal im Voraus.

    BR

    • Hi,

      grundsätzlich sollten alle Module den gleichen Delay haben. Das wäre der optimalste Fall und sollte eigentlich auch kein Problem sein. Theoretisch reicht es aber, wenn der Delay bei dem ersten Sensor im Array gesetzt ist.

      Gruß

  • Hallo Daniel,

    auch von mir herzlichen Dank für das tolle Script. Es passt zwar nicht 100% bei mir aber es ist sehr gut durchdacht. Tolle Arbeit!!

    Ich benutze zwar kein RFID Tagreader um das Alarm auszulösen sondern möchte eigentlich den neuen Keyfob von Fibaro nutzen.

    Ich plane 3 bis 5 verschiedene Alarm Status in meiner Umgebung:

    PresentState=Home/Away/Nightmode/Holiday/Outside

    Ich habe mir gedacht, dass ich mit meinem KeyFob die Variable setzte und dadurch eine Scene gestartet wird.

    Ich würde gerne dein Script als Vorlage nutzen weil dort schon alles vorbereitet ist.

    Könntest Du mir sagen, wie ich es am geschicktesten machen soll. Ein Script welche die 5 verschiedenen Werte der Variable überwacht oder doch eher 5 Scripts welche jeweils beim ändern der entsprechenden Variable gestartet wird.

    Wäre es möglich, dass Du für mich den RFID Bereich aus deinem Script entfernst? So dass ich das obige Vorhaben auch mit deinem Script umsetzten könnte.

    Vielleicht hast du aber auch noch ein Verbesserungsvorschlag, wie sowas am besten umgesetzt werden kann.

    Vielen Dank & beste Grüße
    Rolf

    • Hi,

      deine Ideen passen gar nicht zu dem vorliegenden Skript. Du könntest dir höchstens die einzelnen Funktionenn rausziehen. Ein Ändern würde länger dauern als ein Neuschreiben.

      Gruß

  • Moin,

    ich habe das o.g. Script so übernommen und es läuft auch super, nun habe ich heute mein neues DANALOCK V3 bekommen, die ID oben eingetragen leider passiert da nichts, d.h. die Tür öffnet sich nicht. Hat jemand einen Rat?

    Lg

    Stefan

    • Ich ziehe meine Frage zurück, bzw stell sie neu:

      Wie würde der Code aussehen um die Tür bei Scharfschaltung gleich abzuschließen und wo müsste man das hinschreiben?

  • Hi,

    ich habe gerade versucht zwei RFID-Wandmodule (nicht die am Schlüsselbund) in das Skript einzubauen (zwei Eingänge in die Wohnung)… Das funktioniert aber nur teilweise. Folgendes Problem:

    1. Wenn ich an dem einen RFID-Leser „abschließe“, wird die Alarmanlage auch scharf geschaltet. Der andere RFID-Leser bleibt aber auf „geöffnet“. Wenn ich nun also durch die andere Tür rein komme, ist der RFID-Leser also noch auf auf. Wenn ich dann auf „Home“ drücke, ist dies kein neuer Status und er deaktiviert den Alarm nicht

    2. Wollte das über eine Szene koppeln (wenn 1 scharf, dann auch 2 scharf machen). Das geht aber nicht…Ich kann nicht mal manuell in der Web-Oberfläche den Zustand des RFID-Lesers von auf auf zu oder anders rum ändern…

    Gibt es hier eine Lösung oder work-around z.B. mit ‚nem virtual device oder so?

    Grüße!

  • Mal was anderes: Hat sich irgendwer mal mit einer alternativen Stromversorung für das Keypad auseinander gesetzt? Selbst mit „teuren“ Markenbatterien muss ich spätestens alle 3 Monate die beiden Batterien wechseln. Das nervt ein bisschen und ich denke über eine Dauerstromversorgung nach…

    Habe nichts in der Richtung gefunden per SuFu und SuMa…
    Falls jemand Ideen hat: Danke!

  • Hallo Zusammen

    Ich habe folgendes Problem.

    Wenn ich die Alarmanlage über die Fibaro App scharf stelle, dann lässt sie sich über rfid-tagreader nicht entschärfen.
    Wenn ich die Alarmanlage über rfid-tagreader scharf stelle, dann kann ich die Alarm Anlage über rfid-tagreader oder Fibaro App entschärfen.

    Weiss jemand wieso man die Alarm Anlage über rfid-tagreader nicht entschärfen kann, wenn man es im Vorfeld über die Fibaro App scharf gestellt hat?

Gib deinen Senf dazu!