pepite Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 non j'utilise ton code modifié ;-) sans le ping Mais dans ce cas, où as tu mis le code pour l'icône de recherche ? Ou l'as tu mis derriere le bouton ?
jmg38 Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 Flamalex, J'ai oublié le S j'ai un 6S donc quand il s'endort (ecran éteint), ça fonctionne toujours !
sebcbien Posté(e) le 7 février 2017 Auteur Signaler Posté(e) le 7 février 2017 il y a une heure, Lazer a dit : Pas mal ta caricature Seb /HS oui, y'en a qui pensaient que j'étais vraiment comme mon ancien avatar 2
Did Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 Oui, et c'est donc la Delorean qui est en panne? 2
domo Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 Moi perso je vais pas utiliser ce nouveau vd car ma variable bascule sur 0 au bout d'une minute et je m'en sert pour des scènes donc sa le fait pas
mprinfo Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 oui, y'en a qui pensaient que j'étais vraiment comme mon ancien avatar Mdr tu as pris un coup de vieux lolEnvoyé de mon SM-G901F en utilisant Tapatalk
mprinfo Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 @domo le code principal ne change pas il y a eu juste un remise en forme du code et l'ajout d'une label la variable globale est toujours mise à jourEnvoyé de mon SM-G901F en utilisant Tapatalk
domo Posté(e) le 7 février 2017 Signaler Posté(e) le 7 février 2017 Je suis pas un pro mais ma variable globale passe à 0 au bout d'une minute et ça coupe tout chez moi donc je suis revenu à l'ancienne
sebcbien Posté(e) le 7 février 2017 Auteur Signaler Posté(e) le 7 février 2017 il y a une heure, Did a dit : Oui, et c'est donc la Delorean qui est en panne? yep ! Non, c'est râlant, une grosse panne a l'ancienne, juste quelques jours avant de la revendre... en plus on est "a pieds"
Lazer Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 @Did j'ai failli la faire cette blague @sebcbien : bon courage
oldelvis Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 C'est moi qui déconne ou il n'y a pas de main loop dans le VD corrigé de mprinfo ? du coup, chez moi rien ne se passe si je n'appuie pas manuellement sur le bouton du VD...
pepite Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 @oldelvis, non non tu as bien vu ;-) A toi de choisir : soit une scène (GEA ou autre) qui appuie sur le bouton soit tu utilises le main loop du VD.
mprinfo Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 Nouvelle mise a jour du VD version 2.31b version 2.31b Creation automatique de la Variable Globale si elle n'existe pas Possibilité d’envoyé une notification lorsque le WIFI s'allume ou s'éteint Ajout de l'affichage de l'icone rechercher dans le code Ajout du code pour presser le bouton dans le menu principale version 2.30b Nettoyage du code avec la suppression de la fonction ping qui ne sert pas puisque l'on utilise l'adresse MAC Ajout d'une icône lorsque la recherche est en cours Ajout d'une étiquette qui vous informe de l'etat de la recherche Ajout de la vérification de la longueur de l'adresse mac et la conversion en minuscule des lettres (Chez moi en majuscules cela ne fonctionne pas) Mise en place du VD Renseigné les lignes suivantes : local variable_globale_phone = "Phone_DIEU"; -- Nom de la variable globale --------------------------------------------------------------------------------------------------------------- local current_icon_absent = 1022 -- icone absent local current_icon_present = 1021 -- icone present local current_icon_recherche = 1020 -- icone recherche du tel Activation des notifications (Trés pratique pour faire des tests) local ID_Tel = 189 Suppression des notification local ID_Tel = "" Reglage du nombres et temps de recherche local maxRetry_Process = 2; local scheduler_value = 2; -- (minutes) scheduled time of this process (must match the mainloop scheduled time) local check_wait = 15; -- (seconds) to wait between each poll device Activation du debug local debug = true Code du Bouton -- IP Smartphone Presence Check V2.2 using arp table -- Copyright © 2014 Sébastien Jauquet. -- http://www.domotique-fibaro.fr/index.php/topic/2613-detection-de-pr%C3%A9sence/ -- mac adress check: Roman -- http://forum.fibaro.com/index.php?/topic/21062-idea-how-to-monitor-people-at-home/#entry86009 -- modifier le 08-02-2017 V2.31 beta local variable_globale_phone = "Phone_DIEU"; --------------------------------------------------------------------------------------------------------------- local current_icon_absent = 1022 -- icone absent local current_icon_present = 1021 -- icone present local current_icon_recherche = 1020 -- icone recherche du tel local ID_Tel = 189 -- Id du Tel laisser vide pour ne pas recevoir de notifications --------------------------------------------------------------------------------------------------------------- local maxRetry_Process = 2; local scheduler_value = 2; -- (minutes) scheduled time of this process (must match the mainloop scheduled time) local check_wait = 15; -- (seconds) to wait between each poll device local debug = true --------------------------------------------------------------------------------------------------------------- -- Ne rien toucher en dessous de cette ligne --------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------- -- Fonction affichage debugage --------------------------------------------------------------------------------------------------------------- function Debug(color, message) if debug then if color and color ~= "" then fibaro:debug('<span style="color:'..color..';">'..message..'</span>'); else fibaro:debug(message); end end end ------------------------------------------------------------------------------------------------------- -- Verification si Global Variable n'existe pas by @LAZER ------------------------------------------------------------------------------------------------------- function VG(VG_phone) fibaro:debug("Verification VG "..VG_phone) local HC2 = Net.FHttp("127.0.0.1", 11111) local response, status, errorCode = HC2:GET("/api/globalVariables/"..VG_phone) if tonumber(errorCode) == 0 and tonumber(status) == 404 then -- Create global variable if it does not exist local payload = '{"name":"'..VG_phone..'", "isEnum":0, "value":""}' local response, status, errorCode = HC2:POST("/api/globalVariables", payload) if tonumber(errorCode) == 0 and (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then fibaro:debug('<span style="display:inline;color:green;">Global variable "'..VG_phone..'" created</span>') else fibaro:debug('<span style="display:inline;color:red;">Error : Cannot create global variable "'..VG_phone..'", errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>') end end end --------------------------------------------------------------------------------------------------------------- -- Mise à jour de l'etiquette message --------------------------------------------------------------------------------------------------------------- function Label(couleur, mesg) if couleur ~= "" then fibaro:call(selfId, "setProperty", "ui.Message.value", '<font color="'..couleur..'">'..mesg..'</font>') else fibaro:call(selfId, "setProperty", "ui.Message.value", mesg) end end --------------------------------------------------------------------------------------------------------------- -- Fonction Heure secondes --------------------------------------------------------------------------------------------------------------- function SecondsToClock(sSeconds) local nSeconds = tonumber(sSeconds) if nSeconds == 0 then return "00:00:00"; else nHours = string.format("%02.f", math.floor(nSeconds/3600)); nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); return nHours..":"..nMins..":"..nSecs end end --------------------------------------------------------------------------------------------------------------- -- fonction recherche MAC adresse --------------------------------------------------------------------------------------------------------------- function FindMac(retry) retry = retry or 0; local foundUser = false; -- notify state local elapsed = os.difftime(os.time(), tonumber(time)); local msg = "Tentative(s) ".. retry+1 .. "/"..maxRetry_Process+1 .. " depuis "..SecondsToClock(elapsed); fibaro:call(selfId, "setProperty", "ui.Message.value", msg) -- check for no more than maxtime seconds if elapsed > maxtime then return false; end fibaro:log(msg); Debug("yellow",msg) local response, status, errorCode = HC2.POST(HC2, "/api/networkDiscovery/arp", "{}"); local jsonTable = json.decode(response) --fibaro:debug("errorcode:"..errorCode.."status: "..status) if (tonumber(errorCode)==0 and tonumber(status)==200) then for i, name in ipairs(jsonTable) do if foundUser == false then --Debug("grey",i.." found mac:"..name['mac']) if(name['mac'] == mac) then foundUser = true; Debug("green","Device "..name['mac'].." trouvé en moins de "..elapsed+check_wait.." s"); end end end else Debug("red","error json decode") end -- check for error if foundUser == true then return true; else if retry < maxRetry_Process then fibaro:log("Retry process, please wait..."); fibaro:sleep(check_wait*1000); return FindMac(retry + 1); end return false; end end --------------------------------------------------------------------------------------------------------------- -- DEBUT DU PROGRAMME -- Ne rien toucher en dessous de cette ligne --------------------------------------------------------------------------------------------------------------- selfId = fibaro:getSelfId(); time = tonumber(os.time()); maxtime = (scheduler_value*60) - (check_wait+1); --------------------------------------------------------------------------------------------------------------- -- Recuperation de l'adresse MAC et vérification de la longueur et conversion en minuscules --------------------------------------------------------------------------------------------------------------- VG(variable_globale_phone) -- verification VG et creation si not exist mac = string.lower(fibaro:get(selfId, 'IPAddress')); -- recupere la mac adresse en minuscules if string.len(mac) ~= 17 then -- test la longueur de la MAC adresse Label ("red", "Erreur adresse MA : "..mac) fibaro:abort() end --------------------------------------------------------------------------------------------------------------- -- mise a jour label --------------------------------------------------------------------------------------------------------------- fibaro:call(selfId, "setProperty", "ui.TEL.value", variable_globale_phone) fibaro:call(selfId, "setProperty", "currentIcon", current_icon_recherche) --------------------------------------------------------------------------------------------------------------- current_icon_recherche HC2 = Net.FHttp("127.0.0.1", 11111) fibaro:log("Starting process"); Debug("yellow","Recherche adresse MAC: "..mac) local f, result = pcall(FindMac); if (f) then local Valeur_VG = fibaro:getGlobal(variable_globale_phone) if (result == true) then fibaro:log("Device trouvé."); fibaro:setGlobal(variable_globale_phone,"1") local heureVariable = fibaro:getGlobalModificationTime(variable_globale_phone) Label ("green", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI ON.") if ID_Tel ~="" and Valeur_VG ~= "1" then fibaro:call(ID_Tel, "sendPush", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI ON.") end Debug("green","Global Var: "..variable_globale_phone.." = 1"); fibaro:call(selfId, "setProperty", "currentIcon", current_icon_present) else fibaro:log("Device Non trouvé!"); fibaro:setGlobal(variable_globale_phone,"0") local heureVariable = fibaro:getGlobalModificationTime(variable_globale_phone) Label ("red", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI OFF") if ID_Tel ~="" and Valeur_VG ~= "0" then fibaro:call(ID_Tel, "sendPush", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI OFF.") end Debug("red","Device "..mac.." Non trouvé"); Debug("red","Global Var: "..variable_globale_phone.." = 0"); fibaro:call(selfId, "setProperty", "currentIcon", current_icon_absent) end else fibaro:log("Error: " .. tostring(f)); end Code de la boucle principale : local selfId = fibaro:getSelfId(); -- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée. if (not instance) then -- on indique la fréquence d'execution souhaitée (en minutes) instance = { lastrun = 0, every = 2 } fibaro:debug("first run") end -- on vérifie la différence entre cette exéction et la dernière (stocké dans instance.lastrun) diff = os.date("*t", os.difftime(os.time(), instance.lastrun)) -- si la différence en minutes et supérieure ou égale à la fréquence souhaitée (instance.every) if (diff.min >= instance.every) then -- TON CODE --- fibaro:call(selfId, "pressButton", "3") instance.lastrun = os.time() fibaro:debug("executed") end Icones pour ce VD : Apercu du VD : Modules Virtuel : 2
mprinfo Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 @pepite nouvelle mise a jour disponible 1
oldelvis Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 Merci pour cette réactivité.. J'avais effectivement mis le code de sebcbien dans le main loop mais ça marchait pas... J'ai dû faire une mauvaise manip..
pepite Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 @mprinfo TOP !! Avec creation automatique de la VG et push Tu n'aurais pas inverse tes push ? entre Id_Tel et Valeur_VG voila ce que je comprends, mais ne pas oublier je suis loin d'etre un expert à côté de toi et les boss Il y a 4 heures, mprinfo a dit : fibaro:setGlobal(variable_globale_phone,"1") local heureVariable = fibaro:getGlobalModificationTime(variable_globale_phone) Label ("green", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI ON.") if ID_Tel ~="" and Valeur_VG ~= "1" then fibaro:call(ID_Tel, "sendPush", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI ON.") end Valeur_VG different de 1 (donc 0 dans ce cas), pas de push WIFI ON puisque le setGlobal l'a mis à 1 juste avant non ? fibaro:setGlobal(variable_globale_phone,"0") local heureVariable = fibaro:getGlobalModificationTime(variable_globale_phone) Label ("red", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI OFF") if ID_Tel ~="" and Valeur_VG ~= "0" then fibaro:call(ID_Tel, "sendPush", os.date("Le %d/%m/%y a %HH%M : ", heureVariable).."WIFI OFF.") end Idem la non, si VG différente de 0 (donc 1) envoie du push WIFI OFF, alors que le setGlobal met à 0 la VG si result = false ?
mprinfo Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 Non c'est un test qui permet de ne pas avoir un push à chaque recherche mais seulement lorsque il y a un changement d'état Envoyé de mon SM-G901F en utilisant Tapatalk
pepite Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 ah ok, je comprends merci pour l'explication
Alexandru Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 Bonjour à tous, D'abord je dois remercié pour l'effort et l'énergie mis . J'ai installé la version 2.31 b et j'ai cette erreur . dans le debug button Bien a vous , [ERROR] 19:24:27: line 150: '=' expected near 'HC2' [ERROR] 19:24:28: line 150: '=' expected near 'HC2' [ERROR] 19:24:29: line 150: '=' expected near 'HC2' [ERROR] 19:24:29: line 150: '=' expected near 'HC2' [ERROR] 19:24:29: line 150: '=' expected near 'HC2' [ERROR] 19:25:37: line 150: '=' expected near 'HC2' [ERROR] 19:27:37: line 150: '=' expected near 'HC2'
pepite Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 @Alexandru Mets nous ta ligne 150 stp ;-)
Alexandru Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 Voila la ligne ... -------------------------------------------------------------------------------------------------------------- -- mise a jour label --------------------------------------------------------------------------------------------------------------- fibaro:call(selfId, "setProperty", "ui.TEL.value", variable_globale_phone) fibaro:call(selfId, "setProperty", "currentIcon", current_icon_recherche) --------------------------------------------------------------------------------------------------------------- current_icon_recherche HC2 = Net.FHttp("127.0.0.1", 11111) fibaro:log("Starting process"); Debug("yellow","Recherche adresse MAC: "..mac)
Alexandru Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 En fait, j'ai supprimé la ligne 149 , current_icon_recherche et apparemment le VD fonctionne 2
domo Posté(e) le 8 février 2017 Signaler Posté(e) le 8 février 2017 merci pour cette mise à jour et merci à Alexandru j'ai du supprimer la ligne 149 pour que ça fonctionne je vais tester ça ce soir
iman Posté(e) le 19 février 2017 Signaler Posté(e) le 19 février 2017 Où est la version 2.31b? on en parle mais pas de lien.
mprinfo Posté(e) le 19 février 2017 Signaler Posté(e) le 19 février 2017 J'ai mis le code mais pas le VDEnvoyé de mon SM-G901F en utilisant Tapatalk
Messages recommandés