Aller au contenu

sebcbien

Membres confirmés
  • Compteur de contenus

    4 189
  • Inscription

  • Dernière visite

  • Jours gagnés

    85

Tout ce qui a été posté par sebcbien

  1. Avec les modifs de lazer et jojo testées: Et ajout du lancement de l'analyse a la fin de tout éteindre (ligne 94), ainsi on a une confirmation instantanée à la fin de l'extinction totale (moi je ne fait une analyse que toutes les 120s) Bouton tout éteindre avec le break: @lazer, sauf votre respect, Monsieur, le break doit être placé 1 étage plus haut sinon il n'éteint qu'une lampe. ---------------------------------- -- 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 = {} toInclude = {} ---------------------------------- -- 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 function shouldInclude(module) for _, v in pairs(toInclude) do if string.find(module.name, v) ~= nil or module.id == v then return true end end return false end ---------------------------------- -- double click pour confirmer ---------------------------------- -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ") return true else fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " " end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local label_id = "lblMessage" -- l'ID du label qui recevra le message local duree = 4 -- la durée max entre 2 clique (en seconde) local message = "Ré-appuyer dans les "..duree.." secondes pour confirmer" -- le message de confirmation if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- votre code ici en cas de confirmation -- 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 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 else fibaro:log("Annulé") -- votre code ici en cas d'annulation end -- Refresh Status fibaro:call(fibaro:getSelfId(), "pressButton", "14") Bouton analyse avec le break: ---------------------------------- -- User Settings ---------------------------------- -- Identiants des icônes IconeAllume = 1917 IconeEteint = 1918 -- 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 = {} toInclude = {} ---------------------------------- -- 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 function shouldInclude(module) for _, v in pairs(toInclude) 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 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 break end 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 Et MA version du main loop (ajout d'une pause de 120s... la box lante déjà assez comme ça, je n'aime pas la charger inutilement..) ----------------------------------------------------------- -- Toutes lumières v2.0 -- http://www.domotique-fibaro.fr/index.php/topic/4251-voir-si-une-lumi%C3%A8re-est-allum%C3%A9e-et-tout-%C3%A9tindre/ ----------------------------------------------------------- -- Extinction de l'ensemble des lumières de la maison ----------------------------------------------------------- -- Changelog -- 3.0 (04/09/2015 - jojo) : fin compatibilité 3.x -- affichage liste lumières allumées -- 2.0 : compatibilité v3.x - v 4.x -- + correction bug exclusion -- + affichage -- + double clik pour confirmer extinction globale -- 1.3 : Liste d'exclusion pouvant contenir des id de modules ou des mots clés dans les noms -- 1.2 : Correction du test d'état prenant en charge les -- modules variateurs et rétablissement de la -- condition pour l'exctinction -- 1.1 : Extinction inconditionnelle et prise en charge des -- modules variateurs ----------------------------------------------------------- ---------------------------------- -- User Settings ---------------------------------- ---------------------------------- -- DO not change bellow this line ---------------------------------- fibaro:debug("VD Toutes lumières") fibaro:call(fibaro:getSelfId(), "pressButton", "14") fibaro:sleep(120*1000)
  2. A "cause" de (ton) gea ou alors les VG ne sont pas bien "remplies" ?
  3. J'espère aussi ... et ce n'est pas facile pour le moment car il ne pleut pas... j'ai donc un peu travaillé à l'aveugle. A confirmer donc
  4. Tu dois simplement stocker la variable pluie (au niveau de la ligne qui calcule le total du jour) dans une variable globale Sent from my Note4 edit: de retour sur mon pc, je peux te donner le No de la ligne: Tu peux faire un setGlobal de la variable pluie juste après la ligne 30 (avant qu'elle ne soit mise en forme). exemple: fibaro:setGlobal("Pluie__Actuelle", pluie)
  5. ce problème est résolu en mettant un petit condensateur (voir ci-dessus) je ne pense pas qu'il y aura une mise àjour du firmware qui réglerais ce problème
  6. Gé-nial ! Est-ce que tu peux poster le code du bouton analyse stp. Ca m'évite de devoir changer mes id ou importer un module pour rien (suis déjàa des id 1980 :-/ )
  7. Oui, fatigué aussi, -> Dodo. jojo, tu es toujours là ? ça ira pour le bouton analyse avec ce code ?
  8. oui mais comme j'avais enlevé le test "light" bah il m'éteignait tout mes device qui avaient une value my bad ;-)
  9. ok, ça ça fontionne pour tout: mais je sais pas ce test va être bon pour afficher la liste avec le bouton analyse... [DEBUG] 01:06:25: id: 23 is Lampadaires Salon (WPlug) type: light [DEBUG] 01:06:25: value: true. Turning Off [DEBUG] 01:06:25: id: 49 is Bureau type: light [DEBUG] 01:06:25: value: 99. Turning Off [DEBUG] 01:06:25: id: 1312 is Led Bureau (WPlug) type: light [DEBUG] 01:06:25: value: true. Turning Off [DEBUG] 01:06:25: id: 1934 is RGBW Dressing SDB type: light [DEBUG] 01:06:25: value: 12. Turning Off [DEBUG] 01:06:25: id: 1948 is Salon type: light [DEBUG] 01:06:25: value: 99. Turning Off [DEBUG] 01:06:25: id: 1965 is Salle a Manger type: light [DEBUG] 01:06:25: value: 95. Turning Off ---------------------------------- -- 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 = {} toInclude = {} ---------------------------------- -- 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 function shouldInclude(module) for _, v in pairs(toInclude) do if string.find(module.name, v) ~= nil or module.id == v then return true end end return false end ---------------------------------- -- double click pour confirmer ---------------------------------- -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ") return true else fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " " end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local label_id = "lblMessage" -- l'ID du label qui recevra le message local duree = 4 -- la durée max entre 2 clique (en seconde) local message = "Ré-appuyer dans les "..duree.." secondes pour confirmer" -- le message de confirmation if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- votre code ici en cas de confirmation -- 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 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 end end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end else fibaro:log("Annulé") -- votre code ici en cas d'annulation end
  10. ok, j'ai rien dit, je suis un ane ;-) celui ci filtre les light et fonctionne sur les dimmer et rgbw plus qu'a ajouter les wallplug et fgs -- if jsonTable[device].interfaces 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 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 end end end end
  11. ah oui ok c'est juste... La methode de lazer ne vérifie rien et éteint tout... même ce qui est éteint même les compteursd d'énergie aeon labs [DEBUG] 00:51:27: id: 74 is Salon Température Fl type: zwave [DEBUG] 00:51:27: value: 21.53. Turning Off [DEBUG] 00:51:27: id: 88 is SDB Température Floo type: zwave [DEBUG] 00:51:27: value: 21.67. Turning Off [DEBUG] 00:51:27: id: 1288 is GARAGE Température type: battery [DEBUG] 00:51:27: value: 14.60. Turning Off [DEBUG] 00:51:27: id: 1288 is GARAGE Température type: zwave [DEBUG] 00:51:27: value: 14.60. Turning Off [DEBUG] 00:51:27: id: 1288 is GARAGE Température type: zwaveWakeup [DEBUG] 00:51:27: value: 14.60. Turning Off [DEBUG] 00:51:27: id: 1290 is GARAGE Luminosité type: battery [DEBUG] 00:51:27: value: 7.00. Turning Off [DEBUG] 00:51:27: id: 1290 is GARAGE Luminosité type: zwave [DEBUG] 00:51:27: value: 7.00. Turning Off [DEBUG] 00:51:27: id: 1290 is GARAGE Luminosité type: zwaveWakeup [DEBUG] 00:51:27: value: 7.00. Turning Off [DEBUG] 00:51:27: id: 1314 is SDB Temperature type: zwave [DEBUG] 00:51:27: value: 21.50. Turning Off [DEBUG] 00:51:27: id: 1315 is SDB Luminosité type: zwave [DEBUG] 00:51:27: value: 15.00. Turning Off [DEBUG] 00:51:27: id: 1359 is Grenier Température type: zwave [DEBUG] 00:51:27: value: 20.37. Turning Off [DEBUG] 00:51:27: id: 1361 is Temp eau 1er type: zwave [DEBUG] 00:51:27: value: 20.50. Turning Off [DEBUG] 00:51:27: id: 1362 is Temp eau Boiler type: zwave [DEBUG] 00:51:27: value: 40.31. Turning Off [DEBUG] 00:51:27: id: 1775 is Cpt Elec V General type: zwave [DEBUG] 00:51:27: value: 235.67. Turning Off [DEBUG] 00:51:27: id: 1778 is Cpt Elec V Phase 1 type: zwave [DEBUG] 00:51:27: value: 234.17. Turning Off [DEBUG] 00:51:27: id: 1781 is Cpt Elec V Phase 2 type: zwave [DEBUG] 00:51:27: value: 235.17. Turning Off [DEBUG] 00:51:27: id: 1784 is Cpt Elec V Phase 3 type: zwave [DEBUG] 00:51:27: value: 237.67. Turning Off [DEBUG] 00:51:27: id: 1914 is Cpt Elec A Général type: zwave [DEBUG] 00:51:27: value: 2.39. Turning Off [DEBUG] 00:51:27: id: 1915 is Cpt Elec A Phase 1 type: zwave [DEBUG] 00:51:27: value: 1.07. Turning Off [DEBUG] 00:51:27: id: 1916 is Cpt Elec A Phase 1 type: zwave [DEBUG] 00:51:27: value: 0.86. Turning Off [DEBUG] 00:51:27: id: 1917 is Cpt Elec A Phase 3 type: zwave [DEBUG] 00:51:27: value: 0.46. Turning Off [DEBUG] 00:51:27: id: 1969 is Qubino V1 type: energy [DEBUG] 00:51:27: value: 46. Turning Off [DEBUG] 00:51:27: id: 1969 is Qubino V1 type: light [DEBUG] 00:51:27: value: 46. Turning Off [DEBUG] 00:51:27: id: 1969 is Qubino V1 type: power [DEBUG] 00:51:27: value: 46. Turning Off [DEBUG] 00:51:27: id: 1969 is Qubino V1 type: zwave [DEBUG] 00:51:27: value: 46. Turning Off
  12. Oui mais heu je vois pas à quoi ça sert.de faire un and sur deux valeurs identiques...
  13. jôli lazer. ceci fontionne: ---------------------------------- -- 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 = {} toInclude = {} ---------------------------------- -- 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 function shouldInclude(module) for _, v in pairs(toInclude) do if string.find(module.name, v) ~= nil or module.id == v then return true end end return false end ---------------------------------- -- double click pour confirmer ---------------------------------- -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ") return true else fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " " end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local label_id = "lblMessage" -- l'ID du label qui recevra le message local duree = 4 -- la durée max entre 2 clique (en seconde) local message = "Ré-appuyer dans les "..duree.." secondes pour confirmer" -- le message de confirmation if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- votre code ici en cas de confirmation -- 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 then for interface = 1, #jsonTable[device].interfaces do local DeviceValue = tonumber(jsonTable[device].properties.value) if DeviceValue and DeviceValue > 0 then fibaro:call(jsonTable[device].id, "turnOff") end end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end else fibaro:log("Annulé") -- votre code ici en cas d'annulation end
  14. ben toi aussi tu utilise la nouvelle façon de fibaro avec ce code ? if jsonTable[device].interfaces then for interface = 1, #jsonTable[device].interfaces do if jsonTable[device].interfaces[interface] == "light" then
  15. en fait on est des chipoteurs, si on envoie un turnoff à tout les device interface=light ça fonctionne très bien, on flood un peu le réseau (2X par jour) ... ce code ci aussi fontionne très bien, mais il n'est pas très beau.. http://www.domotique-fibaro.fr/index.php/topic/4251-voir-si-une-lumi%C3%A8re-est-allum%C3%A9e-et-tout-%C3%A9tindre/page-11#entry95306 bref, on aime perdre son temps
  16. oki compris, testé, mais ça donne [ERROR] 00:29:25: line :getValue (arg 2), expected 'unsigned int' got 'string' le problème n'est que avec les RGBW et les dimmer qui ont une value numérique "cachée" dans un string qui peut être soit nil, soit true, soit false soit "" Si on évalue avec tonumber ça pète. Si on n'évalue pas, on ne sais pas quoi chercher (peut être 51 par exemple) si le dimmer est à 51% Entre nous, je dois dire que ceci: if DeviceValue and DeviceValue > 0 me laisse assez perplexe ... if jsonTable[device].interfaces then for interface = 1, #jsonTable[device].interfaces do fibaro:debug(type(jsonTable[device].properties.value)) local DeviceValue = tonumber(fibaro:getValue(jsonTable[device].properties.value, "value")) if DeviceValue and DeviceValue > 0 then fibaro:call(jsonTable[device].id, "turnOff") end end end
  17. tu es sur que tu commente dans le bon fil ? le script de jojo modifié avec "interfaces" fonctionne pour les fgs et wallplugs déclarés commes contrôlant des lampes mais plante avec les fgd qui donnent une valeur a la place de true/false pour leur état (value)
  18. la solution du post 181 ? c'est celle que j'utilisais jusqu'il y a quelques jours. Mais elle sera obsolète bientôt, quand on ajoute un device, islight n'est pas mis à jour etc. isLight est abondonné par fibaro ici on travaille pour être futur proof :-)
  19. fibaro:debug(type(jsonTable[device].properties.value)) donne comme debug string ou nil, mais pas number
  20. @jojo, joli le code, mais ça n'a éteint que les WP, je cherche un peu
  21. c'est une erreur de ma part, ça fonctionne très bie comme ça avec les rgbw, j'aurais du éditer mon post, désolé...
  22. j'ai essayé ton script, ça donne ça: [ERROR] 23:38:55: line 77: attempt to compare number with nil parceque tonumber(jsonTable[device].properties.value) > 0 plante le script si la valeur n'est pas numérique si value = false par exemple, tonumber de nil crée une erreur Donc je m'assurait avant de lancer tonumber que value n'est pas nil, false, true, "" C'est ça qui m'a pris une heure ;-)
  23. 30 = 30 minutes ce qui est rigolo c'est qu'il se lance une fois, puis ensuite toutes les heures pile, heures 30 etc.
  24. je viens de modifier le code légèrement au niveau des debugs pour une meilleure lisibilité Pour mon code, il y a certainement moyen de faire mieux, plus joli, plus court... :-/
  25. effectivement le main loop est de toute beuté... Mais c'est maitre @steven qui l'a fait
×
×
  • Créer...