CharlesO Posté(e) le 18 mai 2017 Signaler Posté(e) le 18 mai 2017 Salut et merci pourraient tu me donnais un coup de main pour ca ou un exemple ou une direction . merci
pepite Posté(e) le 18 mai 2017 Signaler Posté(e) le 18 mai 2017 Bonjour, Oui bien sur. As tu lu le tutoriel que je t'ai mis dans mon post précédent. Partage le code que tu utilises ce sera plus simple et d'autres membres pourront nous aider ;-)
CharlesO Posté(e) le 19 mai 2017 Signaler Posté(e) le 19 mai 2017 merci pepite !!! je voudrai couplet les 2. je veux qu il cherche tout seul les lumières et qu il me les envois stp help merci
pepite Posté(e) le 19 mai 2017 Signaler Posté(e) le 19 mai 2017 Quel est le code que tu as derriere le bouton analyse ?
CharlesO Posté(e) le 19 mai 2017 Signaler Posté(e) le 19 mai 2017 (modifié) ---------------------------------- -- User Settings ---------------------------------- IconeAllume = 166 IconeEteint = 165 -- 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} ---------------------------------- -- DO not change bellow this line ---------------------------------- local selfID = fibaro:getSelfId() local HC2 = Net.FHttp("127.0.0.1", 11111) -- Variable du compteur compteurLumieres = 0 -- clear labels for i = 1, 10 do fibaro:call(selfID, "setProperty", "ui.Lum" ..i.. ".value", "") end -- FUNCTIONS function debug(text, color) color = color or "white" fibaro:debug("<font color='"..color.."'>"..text.."</font>") end 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 -- END OF FUNCTIONS -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local payload = "/api/devices" local response, status, errorCode = HC2:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then local jsonTable = json.decode(response) -- 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") compteurLumieres = compteurLumieres + 1 debug("lumière : " .. jsonTable[device].name .. " ("..jsonTable[device].id..")" ,"red") if compteurLumieres <= 10 then fibaro:call(selfID, "setProperty", "ui.Lum"..compteurLumieres..".value", jsonTable[device].name .. " ("..jsonTable[device].id..")") end end break end end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end fibaro:call(selfID, "setProperty", "ui.lumieres.value", compteurLumieres) -- Mise à jour de l'icône debug(compteurLumieres.." lumière(s) allumée(s)", "green") if (compteurLumieres > 0)then fibaro:call(selfID, "setProperty", "currentIcon", IconeAllume) else fibaro:call(selfID, "setProperty", "currentIcon", IconeEteint) end Modifié le 19 mai 2017 par CharlesO
pepite Posté(e) le 19 mai 2017 Signaler Posté(e) le 19 mai 2017 Ah zut, j'avais pas vu que tu avais posté ton code.. En attendant, j'ai mixé les 2 codes, @jojo et @Steven, enfin essayé. A toi de compléter avec le code du post précédent Crée une scene d'extinction : --Scène d'extinction ---------------------------------- -- User Settings ---------------------------------- -- 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 toExclude = {92} ---------------------------------- -- DO not change bellow this line ---------------------------------- -- 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"} 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 -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local payload = "/api/devices" local response, status, errorCode = HC2:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then local jsonTable = json.decode(response) -- 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") fibaro:call(jsonTable[device].id, "turnOff") end break end end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end Le code avec l'interactive Push ----------------------------------- -- User Settings ---------------------------------- -- 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 toExclude = {92} -- Smartphone devant recevoir Push local Smartphone = XX -- Scene d'extinction local id_de_la_scene_qui_eteint = YY ---------------------------------- -- DO not change bellow this line ---------------------------------- -- 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"} 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 HC2 = Net.FHttp("127.0.0.1", 11111) local payload = "/api/devices" local response, status, errorCode = HC2:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then local jsonTable = json.decode(response) -- 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 end Après comme d'ahb, attention suis un boulet, il y a peut-etre des erreurs partout ;-)
CharlesO Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 salut et merci j ai un message d erreur : [DEBUG] 11:59:20: line 50: attempt to index global 'Net' (a nil value) ligne 50 : local HC2 = Net.FHttp("127.0.0.1", 11111)
pepite Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 Bonjour, tu parles de la scene d extinction ou le bouton du VD ?? Exact pas de net.fhttp ds une scene :-) Faut utiliser httpclient ou un api.get ou getdevicefilter sur la lumiere :-) Je peux pas te le faire maintenantEnvoyé de mon Nexus 5X en utilisant Tapatalk
pepite Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 @CharlesO Pour la scène d'extinction lancée par l'interactive Push tu peux ne mettre que cela en fait. for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:call(v, "turnOff") end 1
CharlesO Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 merci pepite ! pour le problème du : Net.FHttp tu peux me donner ton aide stp ? merci
pepite Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 (modifié) tu utilises le Vd de @jojo ou non ? si c'est dans un VD, tu ne devrais pas avoir de probleme? lenet.fhttp est ok dans les VDs. C'etait juste pour la scene d'extinction le souci à mon avis. Rectification tu as raison, je ne sais a quoi je pensais..mais le code de l'interctive push est fait pour les scenes Modifié le 21 mai 2017 par pepite
Peter Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 Hello a tous pascal moi je suis intéressé pour que tu partage ton travail comme ça je pourrais le mettre sur ma box et continuer mon éducation d'avance merci
CharlesO Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 pepite je ni arrive pas tu peut m envoyer le vd tot prêt stp ? merci
CharlesO Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 dans une scene ca ne peut pas marcher ?
pepite Posté(e) le 21 mai 2017 Signaler Posté(e) le 21 mai 2017 @CharlesO Essaie cela,ca doit fonctionner dans un VD Remplace ton code dans ton bouton d'analyse ----------------------------------- -- User Settings ---------------------------------- -- 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 toExclude = {92} -- Smartphone devant recevoir Push local Smartphone = XX -- Scene d'extinction local id_de_la_scene_qui_eteint = YY ---------------------------------- -- DO not change bellow this line ---------------------------------- -- 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"} -- Variable du compteur compteurLumieres = 0 -- clear labels for i = 1, 10 do fibaro:call(selfID, "setProperty", "ui.Lum" ..i.. ".value", "") end -- FUNCTIONS function debug(text, color) color = color or "white" fibaro:debug("<font color='"..color.."'>"..text.."</font>") end 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 = "" 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") compteurLumieres = compteurLumieres + 1 debug("lumière : " .. jsonTable[device].name .. " ("..jsonTable[device].id..")" ,"red") if compteurLumieres <= 10 then fibaro:call(selfID, "setProperty", "ui.Lum"..compteurLumieres..".value", jsonTable[device].name .. " ("..jsonTable[device].id..")") end 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 fibaro:call(selfID, "setProperty", "ui.lumieres.value", compteurLumieres) -- Mise à jour de l'icône debug(compteurLumieres.." lumière(s) allumée(s)", "green") if (compteurLumieres > 0) then fibaro:call(selfID, "setProperty", "currentIcon", IconeAllume) else fibaro:call(selfID, "setProperty", "currentIcon", IconeEteint) end Puis crée la scène d’extinction
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 Boujour a tous bonjour Pepite J'ai tout essaye (avec un nouveau VD, avec mon ancien VD en changent juste le code) ca ne marche pas :-( pls help
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 Bonjour, Ca ne marche pas ne veut pas dire grand chose, ca manque un peu d'explications pour chercher.
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 tu as raison désolé si rien n est allume le debug est vide voila le message dans le debug s il y a une lumiere allumer ou plus : [ERROR] 10:26:29: line 334: attempt to concatenate local 'deviceID' (a nil value)
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 Quelle est ta ligne 334 ? J'ai peut-être sûrement fait une boulette de code. Est-ce que le code fonctionnait avant les modfis ? on va tester au fur et à mesure. reteste ton code sans modif stp et dis moi ce qu'il en est.
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 ok la ligne 334 n existe pas le code d origine (de neliger) fonctionnait et fonctionne mais comme d origine (il n envoi pas de notification avec question oui/non)
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 il y a 41 minutes, CharlesO a dit : la ligne 334 n existe pas heuuu, on a un souci la deja ;-) Tu utilises bien le même code sans modifications que je t'ai proposées hier soir ? Que je parte sur le bon code https://www.domotique-fibaro.fr/topic/4251-voir-si-une-lumiã¨re-est-allumã©e-et-tout-ã‰teindre/?do=findComment&comment=162267
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 ca vient de moi, j'ai remis dans un malencontreux copier-coller le code es interactives push dans le VD alors que c'est dans une scene. On va essayer de faire : --> VD --> scene push --> scene extinction On verra l'optimisation ensuite ;-)
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 ouf super je suis rassure je fais quoi ? merci
pepite Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 (modifié) Dans les codes, pense à modifier les endroits ou j'ai declaré une variable avec XX ;-) Le code du VD que tu avais partagé, ---------------------------------- -- User Settings ---------------------------------- IconeAllume = 166 IconeEteint = 165 local id_scene_interactive_push = 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} ---------------------------------- -- DO not change bellow this line ---------------------------------- local selfID = fibaro:getSelfId() local HC2 = Net.FHttp("127.0.0.1", 11111) -- Variable du compteur compteurLumieres = 0 -- clear labels for i = 1, 10 do fibaro:call(selfID, "setProperty", "ui.Lum" ..i.. ".value", "") end -- FUNCTIONS function debug(text, color) color = color or "white" fibaro:debug("<font color='"..color.."'>"..text.."</font>") end 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 -- END OF FUNCTIONS -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local payload = "/api/devices" local response, status, errorCode = HC2:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then local jsonTable = json.decode(response) -- 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") compteurLumieres = compteurLumieres + 1 debug("lumière : " .. jsonTable[device].name .. " ("..jsonTable[device].id..")" ,"red") if compteurLumieres <= 10 then fibaro:call(selfID, "setProperty", "ui.Lum"..compteurLumieres..".value", jsonTable[device].name .. " ("..jsonTable[device].id..")") end end break end end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end fibaro:call(selfID, "setProperty", "ui.lumieres.value", compteurLumieres) -- Mise à jour de l'icône debug(compteurLumieres.." lumière(s) allumée(s)", "green") if (compteurLumieres > 0)then fibaro:call(selfID, "setProperty", "currentIcon", IconeAllume) fibaro:startScene(id_scene_interactive_push) else fibaro:call(selfID, "setProperty", "currentIcon", IconeEteint) end ----- Juste rajouté dans le code de mise a jour des icônes, l'appel à la scène d'envoi des push interactifs -- Crée la scène d'envoi des pushs interactifs --- Scene Interactive push ---------- local Smartphone = XX local id_de_la_scene_qui_eteint = XX local message = "Lampes allumées, voulez-vous les éteindre ?" api.post('/mobile/push', { ["mobileDevices"]={Smartphone}, ["message"]=message, ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=id_de_la_scene_qui_eteint} } ) Crée une scene d'extinction qui sera appelee par les push interactifs si tu réponds OUI -- Scène d'extinction ---- for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:call(v, "turnOff") end Modifié le 22 mai 2017 par pepite
CharlesO Posté(e) le 22 mai 2017 Signaler Posté(e) le 22 mai 2017 bon il envoi un push mais sans les nom des éclairage allumer et il les off toutes sans attendre ma réponse
Messages recommandés