seit einigen Tagen habe ich ein HC2 mit vielen Modulen. Ich hatte auch schon einigen Erfolg bei der Einrichtung/Programmierung.
Nun möchte ich von dem Keypad eine Aktion abfragen die wie folgt aussieht.
“Es soll zunächst eine Zahlentaste gedrückt werden und dann Enter. Enter soll hier nur als Bestätigung gelten… Nun möchte ich im HC2 aufgrund des Tastendrucks eine Variable setzen.” (Ziel ist ein gestaffelter Alarmbereich)
Hat jemand eine Idee wie ich dies in LUA umsetze und kann mir helfen?
Und sonst habe ich deine Anforderung noch nicht ganz verstanden: Du willst eine Zahl drücken (wirklich eine oder meinst du einen Code eingeben?). Und mit Enter an das Home Center schicken?
Generell ist es so: Du kannst im HomeCenter jeden der zwanzig möglichen Codes einzeln auswerten auch kannst du auswerten ob ein falscher Code eingegeben wurde. Ich habe das in einem meiner Videos mal genau erklärt:
damit wird z.b. der 1. Code geprüft also wenn dieser eingegeben wird musst du da deine z.b. Globale Variable ändern. weiter würde es dann gehen mir keyID == 2,keyID == 3 …
Oben das 304 CentralSceneEvent die Zahl musst du durch deine ID ersetzten.
--[[
%% properties
%% events
304 CentralSceneEvent
-%% globals
--]]
--[[
Szene zum Verwalten der eingaben eines Popp Keypads
Kostenlos zur Verfügung gestellt von https://www.intelligentes-haus.de/2017/11/30/tutorial-popp-keypad-vorstellung-einrichtung-und-auswertung-lua-szene-fuer-fibaro-home-center/ . Wir übernehmen keine Verantwortung für mögliche Schäden.
Folgende dinge müssen angepasst werden siehe ggf. auch Video im dazugehörigen Blogartikel:
1. ganz oben bei CentralSceneEvent 304 durch eure ID ersetzen
2. mit check_wrong_code (true/false) kann man sagen ob das keypad nach 3 maliger falscheingabe gesperrt werden soll.
3. nach beispiel if(keyID == 1) (für eingegeben Pin 1) eure anweisung einfügen!
--]]
local sourceTrigger = fibaro:getSourceTrigger()
if (sourceTrigger["type"] == "other") then
fibaro:debug('Direkt Aufruf des Scripts nicht erwünscht!');
else
fibaro:debug('Kein Direktaufruf es darf aufgerufen werden!')
local keyID = tonumber(sourceTrigger.event.data.keyId);
local check_wrong_code = true;
local status_wrong_code = tonumber(fibaro:getGlobalValue('block_keypad_kelle'));
fibaro:debug('Script wurde gestartet. Key ID '..keyID..' wurde eingegeben! Der Pin wurde bisher '..status_wrong_code..' falsch eingeben')
if(status_wrong_code >= 3 and check_wrong_code == true) then
fibaro:debug('Es wurde 3 Mal der falsche Pin eingegen Keypad ist blockiert!')
if(keyID == 20) then
fibaro:setGlobal('block_keypad_kelle', 0);
fibaro:debug('Key 20 wurde eingeben Keypad wurde entblockt!');
end
else
if(keyID == 1) then
fibaro:call(307, 'secure');
fibaro:setGlobal('alarmanlage_scharf', 1);
fibaro:debug('Danalock geschlossen und Alarmanlage scharf geschaltet');
if(check_wrong_code == true) then
fibaro:setGlobal('block_keypad_kelle', 0)
end
elseif(keyID == 2) then
fibaro:call(307, 'unsecure');
fibaro:setGlobal('alarmanlage_scharf', 0);
fibaro:debug('Danalock geöffnet und Alarmanlage entschärft');
if(check_wrong_code == true) then
fibaro:setGlobal('block_keypad_kelle', 0)
end
elseif(keyID == 23) then
if(check_wrong_code == true) then
fibaro:setGlobal('block_keypad_kelle', fibaro:getGlobalValue('block_keypad_kelle') + 1)
end
fibaro:call(222, "sendPush", "Keypad Keller Code Falsch eingegeben!");
fibaro:debug('Push an Nico gesendet Code Falsch')
end
end
end
danke für deine ausführliche Antwort. Ich merke meine Anfrage ist etwas ungenau… hier mal mein gewünschter Ablauf.
Bereits umgesetzte Vorarbeiten:
Keypad inkl Tags und Pins angelernt
Code für globale Variable geschrieben , d.h. Abfrage Home/Away funktioniert super und ich kann auch den Alarmstatus setzen (also Alarmanlage scharf schalten)
Meine gewünschte Erweiterung:
Erläuterung: Ich habe mir vorgestellt Alarmbereiche selektiv zu aktivieren/deaktivieren. Im Beispiel könnte das folgender Maßen aussehen. Ich unterscheide zwischen Garten und Haus.
Sicherungsvariante:
Press Away + Tag/Pin --> schaltet beide Alarmbereiche scharf
Sicherungsvariante
Press Taste 1 + Enter --> Variable für Alarmbereich wird gesetzt --> Timer für 20Sekunden läuft, innerhalb der Zeit muss durch “Press Away + Tag/Pin” der Garten scharf geschalten werden; erfolgt nicht innerhalb der die Bestätigung von Away+Tag/Pin erlischt diese Variable wieder
Ziel ist es sozusagen Sicherungszonen einzurichten welche ich selektiv über eine vorherige Tastenkombination auswählen kann.