Mini Keypad zipato

Hallo Daniel,

vielen Dank für Dein Feedback. Werde das heute bei mir so umsetzen. Die Informationen über das verwendete TAG kriegt man über die RFID-Reader properties nicht so einfach raus habe ich bemerkt. Für meine Szene wäre es noch hilfreich wenn ich das Tag resp. die Eingabe des Codes unterscheiden könnte. Hast Du dies bei Dir bereits so umgesetzt?
Ansonsten funktioniert das neue ZWave-Template für das Zipato auf der Beta super.

Danke Dir und Grüsse

philipp

Hi,

das funktioniert leider bei der offiziellen Integration nicht mehr, da dar Tagreader jetzt über Annahme/Ablehnung der Codes entscheidet. Das HC bekommt nur die Rückmeldung ob offen,geschlossen (zumindest in der API des Gerätes).

Gruß

Hallo Daniel,

besten Dank für Deine Hilfe. Wäre noch cool gewesen wenn die Infos welche im Log-Bereich des HC2 angezeigt werden auch in Lua zur Verfügung stehen würden (unlock userid 2 etc. ).

Grüsse

philipp

Betrifft dies auch fibaro:call(35, "setArmed", "1");? Denn der Code

--[[
%% autostart
%% properties
105 value
%% events
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(105, "value")) == 255 )

)
then
	fibaro:call(35, "setArmed", "1");
	fibaro:call(51, "setArmed", "1");
	fibaro:call(41, "setArmed", "1");
	fibaro:call(53, "setArmed", "1");
	fibaro:call(14, "setArmed", "1");
	fibaro:call(39, "setArmed", "1");
	fibaro:call(43, "setArmed", "1");
	fibaro:call(49, "setArmed", "1");
end

funktioniert bei mir nicht. Die Tür-/Fenstersensoren werden, nachdem das Keypad-Modul geschlossen ist, nicht geschärft.

Schärfen funktioniert. Die Value ist falsch. Diese wechselt zwischen 1 und 0.

secured(int) // 0 - status HOME; 255 - status AWAY
value(bool) // false - status HOME; true - status AWAY (mapped from property secured)
userCodes(array) // stores information about available users

Gruß

Vielen Dank für Deine Hilfe. Dann scheint es noch einen Bug bei der Erstellung einer Blockszene zu geben. Denn der Wert 255 wurde ursprünglich von einer Blockszene gesetzt. Übrigens wird der Wert 255 durch die Blockszene auch bei der Bedingung eines geöffneten Modus ausgegeben.

Da ich kein Lua-Profi bin, noch eine Frage zum Workaround:

Mein Tür-/Fenstersensoren haben die obigen ID’s. Sieht der Code zum Entschärfen dann so aus:

--[[
%% autostart
%% properties
105 value
%% events
%% globals
--]]
 
local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(105, "value")) == 0 )
 
)
then
	function setArmedStatus(35)
          local dev = api.get('/devices/' .. 35)
          dev.properties.armed = false
          api.put('/devices/' .. 35, dev)
        end

        function setArmedStatus(51)
          local dev = api.get('/devices/' .. 51)
          dev.properties.armed = false
          api.put('/devices/' .. 51, dev)
        end 

        --usw., usw.

setArmedStatus(403)
end

?

Nein, das ist eine Funktion, welche einmalig gesetzt wird. Bitte den %%autostart aus der Szene entfernen.

Es kommt dazu heute auch noch ein Artikel.

--[[
%% properties
105 value
%% events
%% globals
--]]

function setArmedStatus(deviceId)
local dev = api.get('/devices/' .. deviceId)
dev.properties.armed = false
api.put('/devices/' .. deviceId, dev)
end

local startSource = fibaro:getSourceTrigger();
if ((tonumber(fibaro:getValue(105, "value")) == 0 ))
then
 setArmedStatus(53)
 setArmedStatus(51)
end
Es kommt dazu heute auch noch ein Artikel.

Heute schon - Cool :D! Und danke für Deine Hilfe!

Gruß Andreas

habe mir den artikel angeschaut, schon mal vielen dank dafür! allerdings warte ich noch auf deine erweiterte szene… weil ich noch nicht weiß, wie die szene aussehen muss, wenn ich damit meine alarmanalge aktivieren bzw. deaktivieren möchte…

hier mal mein Code wie ich das umgesetzt habe. Viel Codeschnipsel per “copy&paste” von hier und da zusammen getragen. Vielleicht hilft es Dir ja.


--[[
%% properties
322 value
%% events
%% globals
--]]

[[
Abhängigkeiten:

* Module:
- Fibaro Steckdose mit LED
- Zipato Keypad
* Virtuelle Module:
* Ändern der LED Farbe für Fibar Plugs http://www.siio.de/connected-home/kleine-lua-scripte-teil-3-farbe-des-fibaro-wallplug-aendern/
]]

local trigger = fibaro:getSourceTrigger()
local rfid_value_status = ''
local deviceID=322
local countID = 1000 -- bis welche ID soll geprüft werden
local sensorID = {78, 106, 177, 180} -- IDs der Sensoren
--local sensorID = {78} -- IDs der Sensoren
local plugID = {28} -- aktiviert Steckdosen (z.B. für Kameras, Licht, etc)
local plugLEDID = {118} -- Ändert die Farbe einer Steckdose in rot/grün -- hier im Flur
local phoneID = {76} -- Handys auf den die PUSH gesendet wird 
local Datum = os.date("%d.%m.%Y");

---  Workaround für unarm (bug in Firmware) ---
function setArmedStatus(deviceId2)
local dev = api.get('/devices/' .. deviceId2)
dev.properties.armed = false
api.put('/devices/' .. deviceId2, dev)
end
-----------------------------------------------
    
Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
end

if (trigger['type'] == 'property') then
  fibaro:debug('RFID-Szene 3.0a (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.')
    -- Eigene Aktionen definieren
    function actionsbeforeArmed()
      fibaro:debug('Führe eigene Funktionen vor Schärfen aus')
    end
 
    for j=1, countID do
      if sensorID[j] ~= nil then
        if (tonumber(fibaro:getValue(sensorID[j], 'value')) == 0) then
          fibaro:call(sensorID[j], 'setArmed', '1')
        else
          local sensorname = fibaro:getName(sensorID[j])
          local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[j])
          fibaro:debug(Datum..': ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
          for k=1, countID do
            if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
            end
          end
        end
      end
      if plugID[j] ~= nil then
        if (tonumber(fibaro:getValue(plugID[j], 'value')) == 0) then
          fibaro:call(plugID[j], 'turnOn');
        end
      end
    end
    fibaro:call(311, "pressButton", "3") -- Ändert Steckdose in Farbe rot für Kennzeichnung ALARM aktiv
  elseif (rfid_value == 0) then
    rfid_value_status = 'Home'
    Debug('green', 'Status ' ..rfid_value_status.. ' gesetzt.')
    
    -- Eigene Aktionen definieren
    local startSource = fibaro:getSourceTrigger();
    if ((tonumber(fibaro:getValue(deviceID, "value")) == 0 ))
      then
 
      for j=1, countID do
        if sensorID[j] ~= nil then
--    if (tonumber(fibaro:getValue(sensorID[j], 'value')) == 0) then
          fibaro:debug(Datum..': unarm Device '..sensorID[j])
          fibaro:call(sensorID[j], 'setArmed', '0')
          setArmedStatus(sensorID[j]) -- workaround Firmware Bug
        end
        
        if plugID[j] ~= nil then
          if (tonumber(fibaro:getValue(plugID[j], 'value')) == 1) then
            fibaro:debug(Datum..': turnOff Device '..plugID[j])
            fibaro:call(plugID[j], 'turnOff');
          end
        end
      end           
    end
      fibaro:call(311, "pressButton", "4") -- Ändert Steckdose in Farbe rot für Kennzeichnung ALARM aktiv
  end
end

Top, danke fürs Posten.

Werd die Tage einen Artikel veröffentlichen. (Hoffe bis Sonntag Abend/Montag Abend) Bin noch dabei den Code weiterhin zu optimieren.

Gruß