Bouliboule Posté(e) le 24 septembre 2015 Signaler Posté(e) le 24 septembre 2015 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 1
Bouliboule Posté(e) le 24 septembre 2015 Auteur Signaler Posté(e) le 24 septembre 2015 Bon bah en fait cela marche ! Ne pas enlever userCodes sur la 2 e ligne 1
olivier Posté(e) le 29 septembre 2015 Signaler Posté(e) le 29 septembre 2015 Bonjour, je nage depuis un moment sur ce sujet... (pas encore très àl'aise avec LUA...) quelqu'un peut-il m'aider pour faire fonctionner mon zipato mini keypad sur mon hc2 4.056, avec ce script (àcoller où ?) merci d'avance Pour l'instant je n'ai réussi qu'àfaire clignoter une ampoule...
jerome_clamart Posté(e) le 10 décembre 2015 Signaler Posté(e) le 10 décembre 2015 Bonjour, je déterre le sujet. Bouliboule, tu peux nous en dire plus sur le fonctionnement du clavier Be Next ? Les boutons sont trappés avec des codes différents si une HC ? Les cartes RFID sont toutes différentes et cela remonte jusqu'à la HC/HCL ? La solution m'intéresserait si je pouvais donner une carte a chaque membre de la famille et gérer des scénario par personne donc identifications du code RFID ... je te remercie pour ton retour. Jérôme PS : je suis mauvais en LUA donc il va sans dire que j'ai du mal a comprendre le code que tu fournies.
Yohann Posté(e) le 14 décembre 2015 Signaler Posté(e) le 14 décembre 2015 Bonjour, j'ai eu la même problématique que vous. Je suis donc tombé sur ce code, j'ai essayé de commenter une partie en anglais et j'ai réussi à le faire fonctionner en corrigeant une variable qui était passé en majuscule dans le script. Il vous faudra créer une variable globale presence avec 2 valeurs : "Home" et "Away" Vous devez aussi retrouver l'ID du minikeypad dans HC2 et remplacer aux deux endroits "ID_READER_IN_HC2_TO_REPLACE_HERE" par votre identifiant à la ligne 3 et la ligne 36 Pour utiliser ce code, vous devez créer une scene en mode LUA, puis coller ce code avant de modifier les valeurs d'identifiant, d'allumage et d'extinction (dans les blocs qui sont identifiés par des commentaires dans le code). J'ai laissé mes valeurs en exemple. Chez moi ca coupe toutes les lumières de l'appartement, attend 10 secondes (le temps de sortir), puis active les détecteurs (et donc l'alarme si elle est configurée dans le panel Alarm). Attention, pour les détecteurs de mouvements, il faut les régler pour qu'ils essayent de se réarmer après 30 s si ils n'étaient pas fermé au moment de l'armement. De fait, quand on a un détecteur de mouvement dans l'entrée, celui ci se déclare ouvert chez moi pendant 30s, donc au bout des 10s ce n'était pas suffisant. --[[ %% properties ID_READER_IN_HC2_TO_REPLACE_HERE 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 -- ~= is equal to "!=" in other languages so it's "different from" operator fibaro:debug("Invalid array size !") return false end for i = 1, #array1 do if (array1[i] ~= array2[i]) then return false end end return true end local tagReader = ID_READER_IN_HC2_TO_REPLACE_HERE -- <--PERSONALISATION -- 10-stellige Byte-Array's -- Here you should test your RFID Tag, and then put it here (the code will work with 1 to 3 tags) -- Push the Home or Away button and put your tag in front of the miniKeypad, the code will give you the read code local rfid1 = {133, 12, 51, 102, 204, 0, 1, 4, 0, 0} -- <--PERSONALISATION: Byte-Array eines RFID-Tags local rfid2 = {133, 12, 51, 102, 204, 0, 1, 4, 0, 0} -- <--PERSONALISATION: Byte-Array eines RFID-Tags local rfid3 = {133, 12, 51, 102, 204, 0, 1, 4, 0, 0} -- <--PERSONALISATION: Byte-Array eines RFID-Tags local input1 = {49, 50, 51, 56, 0, 0, 0, 0, 0, 0} -- <--PERSONALISATION: 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) --fibaro:debug("test" .. userCodes) --fibaro:debug(jsontbl) -- nach dem Code mit der ID 0 suchen for i = 1, #jsontbl do if (jsontbl[i].id == 0) then -- die 10 Zeichen lesen und in das leere Byte-Array abfà¼llen for b = 1, string.len(jsontbl[i].code) do readerCode[b] = string.byte(jsontbl[i].code, end fibaro:debug("Code Read: {" .. readerCode[1] .. ", " .. readerCode[2] .. ", " .. readerCode[3] .. ", " .. readerCode[4] .. ", " .. readerCode[5] .. ", " .. readerCode[6] .. ", " .. readerCode[7] .. ", " .. readerCode[8] .. ", " .. readerCode[9] .. ", " .. readerCode[10] .. "}") -- Comparing the code 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("Zipato - Leaving Home") fibaro:setGlobal("presence","Away") -- Here is where we can do some action leaving home, like disable all lights and/or activate alarm mode -- ... -- shut off the lights for i = 1, 200 do fibaro:call(i, "turnOff"); end -- or turn off some lights only fibaro:call(26, "turnOff") fibaro:call(48, "turnOff") -- Like this to arm a detector after 10s fibaro:sleep(10000) fibaro:call(63, "setArmed", "1") fibaro:call(64, "setArmed", "1") -- little bit of alarm sound to tell its done fibaro:call(41, "turnOn") fibaro:sleep(1000) fibaro:call(41, "turnOff") elseif (fibaro:getGlobal("presence") == "Away") then -- Comming Home fibaro:debug("Zipato - Coming Home") fibaro:setGlobal("presence","Home") -- Here is where we can do some action entering home, like enable some lights and/or unactivate alarm mode -- ... -- Like fibaro:call(35, « setArmed », «0»); to disarm a detector -- Like fibaro:call(42, « turnOff ») to shut down siren alarm soun fibaro:call(63, "setArmed", "0") fibaro:call(64, "setArmed", "0") -- shut on the lights fir example fibaro:call(26, "turnOn") else fibaro:debug("Zipato - No Action") end else fibaro:debug("REJECT") end end end end Si vous avez des questions ou si je peux aider, n'hésitez pas à demander. Mes excuses si j'ai fait des erreurs dans le code, je suis débutant sur ce langage et la programmation dans HC2. 1
jerome_clamart Posté(e) le 14 décembre 2015 Signaler Posté(e) le 14 décembre 2015 Bonjour Yohann, Merci pour ton post. Cela signifie que le lecteur fonctionne avec une HC2 sans problème, bonne nouvelle. Par contre je constate que les 3 variables RFID sont identiques... Tu n'utilises peut être pas les cartes RFID mais uniquement les boutons ? Merci pour ton retour.
olivier Posté(e) le 14 décembre 2015 Signaler Posté(e) le 14 décembre 2015 Merci Yohann, ça fonctionne aussi chez moi, maintenant ! Questions subsidiaires - est-il possible de l'utiliser avec le RFID intégré à l'iphone 6 ? - HOME & AWAY fonctionnent de la même manière. (appui home + code = Away, puis appui home + code = Home... pareil pour Away). Est-il possible de les différencier ? (Home pour Home, Away pour Away, sinon aucune action)
olivier Posté(e) le 15 décembre 2015 Signaler Posté(e) le 15 décembre 2015 Bon ben, en attendant de savoir si les boutons Home & Away peuvent être gérés individuellement, j'ai amélioré à ma sauce en ajoutant une variable "input2" et en commentant les if de l'état de "presence" -> si code2 alors presence = away (j'active l'alarme avec un code spécifique) -> sinon si code1 ou rfid1 alors presence = home (je désactive avec un autre code ou avec la clé rfid) -> sinon rien (sachant que j'ai des activations/désactivations planifiées par ailleurs) modifications ci-dessous : -- Comparing the code if (compareCodes(input2, readerCode)) then --if (fibaro:getGlobal("presence") == "Home") then -- Leaving Home fibaro:debug("Zipato - Leaving Home") fibaro:setGlobal("presence","Away") -- Here is where we can do some action leaving home, like disable all lights and/or activate alarm mode -- ... -- shut off the lights -- for i = 1, 200 do -- fibaro:call(i, "turnOff"); -- end -- or turn off some lights only --fibaro:call(26, "turnOff") --fibaro:call(48, "turnOff") -- Like this to arm a detector after 10s --fibaro:sleep(10000) --fibaro:call(63, "setArmed", "1") --fibaro:call(64, "setArmed", "1") -- little bit of alarm sound to tell its done --fibaro:call(41, "turnOn") --fibaro:sleep(1000) --fibaro:call(41, "turnOff") --elseif (fibaro:getGlobal("presence") == "Away") then else if (compareCodes(rfid1, readerCode) or compareCodes(rfid2, readerCode) or compareCodes(rfid3, readerCode) or compareCodes(input1, readerCode)) then -- Comming Home fibaro:debug("Zipato - Coming Home") fibaro:setGlobal("presence","Home") -- Here is where we can do some action entering home, like enable some lights and/or unactivate alarm mode -- ... -- Like fibaro:call(35, « setArmed », «0»); to disarm a detector -- Like fibaro:call(42, « turnOff ») to shut down siren alarm soun fibaro:call(98, "setArmed", "0") fibaro:call(77, "setArmed", "0") -- extinction de la sirène et des lumières qui clignotent fibaro:call(224, "turnOff") fibaro:call(23, "turnOff") fibaro:call(34, "turnOff") fibaro:call(36, "turnOff") --else --fibaro:debug("Zipato - No Action") --end else fibaro:debug("REJECT") end
jerome_clamart Posté(e) le 15 décembre 2015 Signaler Posté(e) le 15 décembre 2015 Bonjour olivier, Merci pour tes améliorations. De manière générale, le RFID des iphones n'est pas utilisable ... Apple se le réservent pour Apple Pay Il n'y a, à ma connaissance, pas d'applications qui utilisent le RFID sur l'appStore. En ayant un peu travaillé le sujet pour mon boulot, cela ne m'étonne qu'a moitié. Les technologies RFID sont ouvertes mais la clé master qui gère le système considéré est propriétaire C'est donc faussement ouvert. Je ne sais pas comment le petit robot vert gère cette partie, des collègues me disent que cela fonctionne très bien mais ne l'utilisent pas. Comme personne ne connais l'homme qui a vue l'homme qui a vu l'ours, je me demande ce que cela permet réellement sur cette plateforme.
Yohann Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 Bonjour Yohann, Merci pour ton post. Cela signifie que le lecteur fonctionne avec une HC2 sans problème, bonne nouvelle. Par contre je constate que les 3 variables RFID sont identiques... Tu n'utilises peut être pas les cartes RFID mais uniquement les boutons ? Merci pour ton retour. Bonjour Jérome, J'ai mis 3 variables RFID identiques pour ne pas mettre mes codes RFID de la maison sur le net. Tu peux les changer, comme indiqué
jerome_clamart Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 Bonjour Yohann, Je n'y avais pas pensé Donc il y a moyen de différencier les cartes RFID, bonne nouvelle. j'ai également vu une variable INPUT1, je suppose que c'est l'un des boutons du lecteur. Sais tu s'il est possible de différencier les boutons et s'il existe une variable par bouton ? Pour jouer des scénario différents (1 pour fermer les volets, 2 pour allumer les lumières ...) C'est sympa comme boitier si cela est possible car c'est peu documenté et il n'y a pas beaucoup de choix pour ce type de module... merci pour ton retour
Yohann Posté(e) le 16 décembre 2015 Signaler Posté(e) le 16 décembre 2015 Il n'y a pas de ce que j'en sais pour le moment de différencier "home" et "away" Les 3 variables RFID et la variable Input1 ne sont là que pour stocker des valeurs. Donc tu peux en mettre autant que tu veux à partir du moment où tu rajoutes la gestion des tests de ces variables dans ton Code. Par exemple Input1 peut être 1 puis 2 puis 3 puis 4 (à la fin du code il faut appuyer sur 'enter' ) Tu pourrais éventuellement créer une variable input2 pour gérer un autre code, c'est ce que propose Olivier, mais cela ne correspondait pas à mon besoin. Ensuite tu ferais un code de ce type : if (compareCodes(input1, readerCode)) then -- action 1 else if (compareCodes(input2, readerCode)) then -- action 2 else if (compareCodes(rfid1, readerCode)) then -- action 3 end
Yohann Posté(e) le 22 mars 2016 Signaler Posté(e) le 22 mars 2016 Bonjour à tous, Depuis la mise à jour, le device ne fonctionne plus (les informations de lecture de tag n'étaient plus renvoyés) J'ai voulu le reconfiguré, mais là encore ce fut un échec, à l'association, il fait planter l'ensemble du réseau zwave et la box se déconnecte.
Roy202 Posté(e) le 24 mars 2016 Signaler Posté(e) le 24 mars 2016 Salut tout le monde, J'avais reussi a faire fonctionner cette scene il y a un moment sans pour autant la finaliser chez moi. Aujourd'hui que j'ai le temps et après avoir mis à jour la HC2 en dernière version. Le tag reader n'est plus reconnu, est ce que quelqu'un d'autre a le problème ? L'inclusion se fait bien niveau tag reader mais ca coince sur la couche zwave du HC2 qui part en sucette, l'inclusion ne se termine jamais et le boitier marche plus (la solution que j'ai trouvé c'est de faire une sauvegarde, ca relance la couche zwave du boitier sans tout redemarrer mais ca laisse le device dans un demi état). Après ça, le device reste en "non configuré" et quand j'appuie sur home ou away, il clignote 6 fois (en gros, il n'arrive pas à contacter la HC2 qui est juste à côté). HC2 Version 4.080
olivier Posté(e) le 24 mars 2016 Signaler Posté(e) le 24 mars 2016 marche plus depuis 4.080... grrr cf bugtracker de fibaro àenrichir : http://bugzilla.fibaro.com/view.php?id=3911
Messages recommandés