Hello j ai trouvé ce code sur un site suisse allemand pour faire fonctionner apparemment le benext tag reader mais je n y arrive toujours pas.
Une star peut elle se pencher dessus ?
Perso j ai créé une variable presence comme demandé et mis mes id du lecteur au bon endroit. Par contre il parle de référence de lecture de badge que je n arrive pas àtrouver ....
--[[
%% properties
ID_TAG_READER userCodes
%% globals
--]]
-- HINWEIS:
-- Die Home- und Away-Taste des Zipato Tag Readers wird (momentan) nicht
-- erkannt. Es spielt deshalb keine Rolle, welche man drückt. Eine globale
-- Variable "Presence" übernimmt diese Funktion, indem sich diese merkt, ob
-- man zuhause (Home) oder abwesend (Away) ist. Je nach Status wird beim
-- ranhalten des RFID-Tags eine separat definierbare Aktion ausgefürt.
-- ANLEITUNG:
-- Die Platzhalter ID_TAG_READER oben und unten sind mit der ID vom Zipato
-- Tag Reader zu ersetzen. Die Codes der RFID-Tags müssen angepasst werden
-- (diese werden im Ausgabe-Fenster beim lesen angezeigt). Weiter muss
-- eine globale Variable "Presence" angelegt werden,mit den Werten "Home"
-- und "Away".
-- Funktion um zwei Codes zu vergleichen
-- gibt True zurück, wenn alle Werte in beiden ByteArray's gleich sind
function compareCodes(array1, array2)
if (#array1 ~= 10 or #array2 ~= 10) then
fibaro:debug("Grösse der Array's ungültig")
return false
end
for i = 1, #array1 do
if (array1 ~= array2) then
return false
end
end
return true
end
local tagReader = ID_TAG_READER -- <--ANPASSEN
-- 10-stellige Byte-Array's (Bytes, weil RFID-Tags auch Zeichen ausserhalb des lesbaren Bereichs liefern)
local rfid1 = {141, 45, 66, 183, 21, 0, 1, 4, 0, 0} -- <--ANPASSEN: Byte-Array eines RFID-Tags
local rfid2 = {148, 33, 12, 84, 49, 0, 1, 4, 0, 0} -- <--ANPASSEN: Byte-Array eines RFID-Tags
local rfid3 = {133, 12, 51, 102, 204, 0, 1, 4, 0, 0} -- <--ANPASSEN: Byte-Array eines RFID-Tags
local input1 = {49, 50, 51, 52, 0, 0, 0, 0, 0, 0} -- <--ANPASSEN: Byte-Array für Zahlencode (1234 als Unicode)
local readerCode = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -- leeres Byte-Array, in dem die nachher der gelesene Code steht (RFID-Tag oder Zahlencode)
local startSource = fibaro:getSourceTrigger()
if (startSource["deviceID"] == tagReader) then
-- Property "userCode" vom Zipato Tag Reader auslesen
local userCodes = fibaro:get(tagReader, "userCodes")
-- Property in JSON-Objekt umwandeln
jsontbl = json.decode(userCodes)
-- nach dem Code mit der ID 0 suchen
for i = 1, #jsontbl do
if (jsontbl.id == 0) then
-- die 10 Zeichen lesen und in das leere Byte-Array abfüllen
for b = 1, string.len(jsontbl.code) do
readerCode = string.byte(jsontbl.code,
end
fibaro:debug("Code gelesen: {" .. readerCode[1] .. ", " .. readerCode[2] .. ", " .. readerCode[3] .. ", " .. readerCode[4] .. ", " .. readerCode[5] .. ", " .. readerCode[6] .. ", " .. readerCode[7] .. ", " .. readerCode[8] .. ", " .. readerCode[9] .. ", " .. readerCode[10] .. "}")
-- gelesener Code vergleichen
if (compareCodes(rfid1, readerCode) or compareCodes(rfid2, readerCode) or compareCodes(rfid3, readerCode) or compareCodes(input1, readerCode)) then
if (fibaro:getGlobal("Presence") == "Home") then
-- Leaving Home
fibaro:debug("PASS - Leaving Home")
-- Hier können Module scharf gestellt oder z.B. Lichter ausgeschaltet werden.
-- ...
elseif (fibaro:getGlobal("Presence") == "Away") then
-- Comming Home
fibaro:debug("PASS - Comming Home")
-- Hier können Module unscharf gestellt werden.
-- ...
else
fibaro:debug("PASS - No Action")
end
else
fibaro:debug("REJECT")
end
end
end
end