pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 Re, ca faisait longtemps ;-) Pour les noms normal, la variable message est simple pour le moment, sans les noms. C'était juste pour tester le fonctionnement. local message = "Lampes allumées, voulez-vous les éteindre ?" ["message"]=message Il y a 1 heure, CharlesO a dit : il les off toutes sans attendre ma réponse Alors la, c'est encore moi, un vite rapide copier coller du boulot... ;-) Donc efface ceci dans la scène des push interactifs (c'est pour cela que cela a éteint sans attendre ta réponse) -- Scène d'extinction ---- for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:call(v, "turnOff") end
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 good pour les off automatique c est réglé ! GG reste plus que le message ps : il envoi 2 push (1 du message avec la question oui/non et 1 info: action "question" has already been handled on another device)
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 1 info ? tu peux faire une copie d'écran ? stp.
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 Re, Tu peux tester la scène de push Interactive ---------------------------------- -- User Settings ---------------------------------- --- Scene Interactive push ------- local Smartphone = XX local id_de_la_scene_qui_eteint = XX -- Modules à exclure ou inclure et fonction de traitement (pas raccordés à des lumières) -- Peut contenir un id ou un mot clés à chercher dans le nom du module -- toExclude = {72, "Dispo", "Volet", "Bubendorff"} toExclude = {92} --================================ --======== FONCTIONS ============= --================================ function shouldExclude(module) for _, v in pairs(toExclude) do if string.find(module.name, v) ~= nil or module.id == v then return true end end return false end ---------------------------------- local message = "" -- Récupération de la liste des modules local jsonTable = api.get("/devices") -- Boucle sur les modules for device = 1, #jsonTable do -- look for lighting devices if jsonTable[device].interfaces and not shouldExclude(jsonTable[device]) then for interface = 1, #jsonTable[device].interfaces do if jsonTable[device].interfaces[interface] == "light" then local DeviceValue = tonumber(jsonTable[device].properties.value) if (DeviceValue and DeviceValue > 0) or (jsonTable[device].properties.value == "true") then --fibaro:debug(" id: "..jsonTable[device].id.." is "..jsonTable[device].name.." type: "..jsonTable[device].interfaces[interface]) --fibaro:debug(" value: "..jsonTable[device].properties.value..". Turning Off") local DeviceName = fibaro:getName(jsonTable[device]) DeviceName = string.gsub(DeviceName," ","_") if (message ~= "") then message = message .. ", " end message = message .. DeviceName end end end end end if (message ~= "") then if (message:find(",")) then message = message .. " sont allumés, voulez-vous les éteindre ?" else message = message .. " est allumé, voulez-vous l'éteindre ?" end api.post('/mobile/push', { ["mobileDevices"]={Smartphone}, ["message"]=message, ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=id_de_la_scene_qui_eteint} } ) end
CharlesO Posté(e) le 23 mai 2017 Signaler Posté(e) le 23 mai 2017 (modifié) salut le push ne marche plus merci Modifié le 23 mai 2017 par CharlesO
CharlesO Posté(e) le 23 mai 2017 Signaler Posté(e) le 23 mai 2017 Il y a 11 heures, pepite a dit : 1 info ? tu peux faire une copie d'écran ? stp.
pepite Posté(e) le 23 mai 2017 Signaler Posté(e) le 23 mai 2017 Il y a 2 heures, CharlesO a dit : le push ne marche plus merci T'as modifié les IDs ? J'ai jamais eu cette info, et je n'en ai jamais entendu parler.
CharlesO Posté(e) le 23 mai 2017 Signaler Posté(e) le 23 mai 2017 non rien toucher on reviendra dessus plus tard pour le moment après la dernier modif que tu ma demander de faire le push ne marche plus
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Salut a tous salut pepite tu a du nouveau ? par ou tu veux continuer pour trouver le probleme du push ? merci
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Le 22/5/2017 à 20:46, pepite a dit : local Smartphone = XX local id_de_la_scene_qui_eteint = XX Bonjour, Du nouveau ? Je ne peux pas tester à ta place ? Dans la dernière scène as tu bien modifié les IDS au niveau des variables ? Je vais rajouter des debug pour voir où cela coince.
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Dans la dernière scène as tu bien modifié les IDS au niveau des variables ? Oui je ne sais par ou tester j attend les debug merci encores
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Re, avec les debugs, on en saura un peu plus de ce qui ne fonctionne pas. ;-) ---------------------------------- -- User Settings ---------------------------------- --- Scene Interactive push ------- local Smartphone = XX local id_de_la_scene_qui_eteint = XX fibaro:debug("Smartphone : " ..Smartphone.. " - ID Scène extinction : " ..id_de_la_scene_qui_eteint) -- Modules à exclure ou inclure et fonction de traitement (pas raccordés à des lumières) -- Peut contenir un id ou un mot clés à chercher dans le nom du module -- toExclude = {72, "Dispo", "Volet", "Bubendorff"} toExclude = {92} --================================ --======== FONCTIONS ============= --================================ function shouldExclude(module) for _, v in pairs(toExclude) do if string.find(module.name, v) ~= nil or module.id == v then return true end end return false end ---------------------------------- local message = "" -- Récupération de la liste des modules local jsonTable = api.get("/devices") -- Boucle sur les modules for device = 1, #jsonTable do fibaro:debug("entree dans la boucle jsonTable") -- look for lighting devices if jsonTable[device].interfaces and not shouldExclude(jsonTable[device]) then for interface = 1, #jsonTable[device].interfaces do if jsonTable[device].interfaces[interface] == "light" then local DeviceValue = tonumber(jsonTable[device].properties.value) if (DeviceValue and DeviceValue > 0) or (jsonTable[device].properties.value == "true") then fibaro:debug(" id: "..jsonTable[device].id.." is "..jsonTable[device].name.." type: "..jsonTable[device].interfaces[interface]) fibaro:debug(" value: "..jsonTable[device].properties.value..". Turning Off") local DeviceName = jsonTable[device].name fibaro:debug("Devices allumés : " ..DeviceName) DeviceName = string.gsub(DeviceName," ","_") fibaro:debug("Devices allumés underscore: " ..DeviceName) if (message ~= "") then message = message .. ", " fibaro:debug("Message virgule : " ..message) end message = message .. DeviceName fibaro:debug("Message avec noms : " ..message) end end end end end if (message ~= "") then if (message:find(",")) then message = message .. " sont allumés, voulez-vous les éteindre ?" fibaro:debug("Message SONT ALLUMES : " ..message) else message = message .. " est allumé, voulez-vous l'éteindre ?" fibaro:debug("Message EST ALLUME : " ..message) end api.post('/mobile/push', { ["mobileDevices"]={Smartphone}, ["message"]=message, ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=id_de_la_scene_qui_eteint} } ) end
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 question or subject : quand et ou doit on utiliser ca : --[[ %% properties %% events %% globals --]] merci
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Voila le resulta du debug : DEBUG] 14:39:26: Smartphone : 397 - ID Scène extinction : 223[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable [DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable [DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable [DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable [DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable [DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable[DEBUG] 14:39:27: entree dans la boucle jsonTable
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 Question bete : tu avais des lampes allumées ;-) ? Bon changement de fusil d'épaules car je comprends pas ou je me plante avec ce code. Suis parti sur la même base que la scène d'extinction en filtrant sur les lumières ;-) et en modifiant le code du master@Steven ---------------------------------- -- User Settings ---------------------------------- --- Scene Interactive push ------- local Smartphone = XX local id_de_la_scene_qui_eteint = XX fibaro:debug("Smartphone : " ..Smartphone.. " - ID Scène extinction : " ..id_de_la_scene_qui_eteint) ---------------------------------------------------------------------- local message = "" for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:debug("entree dans la boucle filtrée LUMIERE") local DeviceName = fibaro:getName(v) local DeviceValue = tonumber(fibaro:getValue(v, "value")) if DeviceValue > 0 then DeviceName = string.gsub(DeviceName," ","_") fibaro:debug("Lampes Allumées : " ..DeviceName) if (message ~= "") then message = message .. ", " end message = message .. DeviceName fibaro:debug("Message : " ..message) end end if (message ~= "") then if (message:find(","))then message = message .. " sont allumés, voulez-vous les éteindre ?" else message = message .. " est allumé, voulez-vous l'éteindre ?" end api.post('/mobile/push', { ["mobileDevices"]={Smartphone}, ["message"]=message, ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=id_de_la_scene_qui_eteint} } ) end
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 il y a une heure, CharlesO a dit : --[[ %% properties %% events %% globals --]] L' entête de la scène te permet de déclencher une scène sur un évènement, ce qui évite de faire boucler une scène. Le déclenchement sur "evenment" est à préféré dès que c'est possible en fonction du besoin, c'est plus optimisé en terme de charge.
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 la voila le debug : DEBUG] 15:53:56: Smartphone : 397 - ID Scène extinction : 223[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: Lampes Allumées : lumiere_Parentale[DEBUG] 15:53:56: Message : lumiere_Parentale[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:57: entree dans la boucle filtrée LUMIERE ex.....
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 il y a 1 minute, pepite a dit : L' entête de la scène te permet de déclencher une scène sur un évènement, ce qui évite de faire boucler une scène. Le déclenchement sur "evenment" est à préféré dès que c'est possible en fonction du besoin, c'est plus optimisé en terme de charge. et alors dans notre cas ? besoin ou pas ?
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 à l’instant, CharlesO a dit : la voila le debug : DEBUG] 15:53:56: Smartphone : 397 - ID Scène extinction : 223[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: Lampes Allumées : lumiere_Parentale[DEBUG] 15:53:56: Message : lumiere_Parentale[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE[DEBUG] 15:53:57: entree dans la boucle filtrée LUMIERE ex..... ps : ca a envoyer le push 1
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 (modifié) il y a 18 minutes, CharlesO a dit : ps : ca a envoyer le push Avec les noms ? Modifié le 24 mai 2017 par pepite
pepite Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 il y a 18 minutes, CharlesO a dit : et alors dans notre cas ? besoin ou pas ? Pourquoi pas, mais cela t'obligera à mettre TOUS les ID de TOUTES les lumieres sous %%properties.
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 oui tout marche lol GG merci !!!!!!!
CharlesO Posté(e) le 24 mai 2017 Signaler Posté(e) le 24 mai 2017 à l’instant, pepite a dit : Pourquoi pas, mais cela t'obligera à mettre TOUS les ID de TOUTES les lumieres sous %%properties. il y a un aventage ?
Sakkhho Posté(e) le 25 septembre 2022 Signaler Posté(e) le 25 septembre 2022 Hello, est ce que ce VD a été adapté à la HC3 ? je l'utilise régulièrement sur ma HC2 merci
Lazer Posté(e) le 25 septembre 2022 Signaler Posté(e) le 25 septembre 2022 Voici une fonction que j'utilise dans l'un de mes QuickApp pour éteindre toutes les lumières de la maison : -- LightOff -- Modules à exclure et fonction de traitement (pas raccordés à des lumières) -- Peut contenir un id ou un mot clés à chercher dans le nom du module local lightsToExclude = {12, 345, 678} -- -- Bouton : Éteint les lumières -- function QuickApp:LightOff(event) local function shouldExclude(device) for _, v in pairs(lightsToExclude) do if device.id == v or string.find(device.name, v) ~= nil then return true end end return false end local devices = api.get("/devices?property=isLight") if type(devices) == "table" then for i = 1, #devices do local device = devices[i] if not shouldExclude(device) then local value = tonumber(device.properties.value) if type(value) == "boolean" and value or type(value) == "number" and value > 0 then local roomName = fibaro.getRoomNameByDeviceID(device.id) self:trace("Found device", device.id, ":", device.name, roomName, "(value", tostring(value)..") => call turnOff") fibaro.call(device.id, "turnOff") end end end else self:error("Impossible de lister les modules") end end Il te suffit d'appeler la fonction LightOff() depuis un bouton de ton QuickApp. Et personnaliser les éventuelles lumières à exclure dans la table lightsToExclude 2
Messages recommandés