HC2 - Keypad Zahlentaste+Enter abfragen

Hallo Community,

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?

Danke.

Viele Grüße
Peter

Hallo,

meinst du das Popp Keypad?

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:

https://www.youtube.com/watch?v=F677xna3gs4&list=PLYnn5RwiVU52sc3lhA_deao4CwLgfjemR&index=16

Die Lua Szene sieht so aus:

Dort siehst du dann immer die Bereiche:

if(keyID == 1) then

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

Hallo Nico,

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.

  1. Sicherungsvariante:
    Press Away + Tag/Pin --> schaltet beide Alarmbereiche scharf
  2. 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.

Hoffe ich konnte dies rüber bringen.

Gruß
Peter

Hallo,

okay du meinst das Zipato Rfid Keypad da bin ich raus habe kein und weiß garnicht was das ding an Daten schickt sorry :frowning: