sebcbien Posté(e) le 13 septembre 2015 Signaler Posté(e) le 13 septembre 2015 Et tu as essayé avec "mon" script ?
jojo Posté(e) le 13 septembre 2015 Signaler Posté(e) le 13 septembre 2015 je t'avoue que non, car le "mien", (qui n'est pas le mien, mais celui de neiger) répond àmes besoins, avec affichage des devces allumés, ... Dans "ton" script, j'aurais aimé voir ce qu'il allait faire avant de le faire
sebcbien Posté(e) le 13 septembre 2015 Signaler Posté(e) le 13 septembre 2015 il suffit d'utiliser sa logique pour afficher les devices dans ta liste. Je n'ai modifié que la partie "scan" de ton script Le script que j'ai posté, je le met derrière le bouton éteindre de ton VD
sebcbien Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 tiens, je suis retombé sur le script de @steven d'origine: http://www.domotique-fibaro.fr/index.php/topic/1711-allumer-eteindre-toutes-les-lumi%C3%A8res/
sebcbien Posté(e) le 1 octobre 2015 Signaler Posté(e) le 1 octobre 2015 en permettant l'utilisation des toExclude et toInclude, cela permet d'inclure ou d'exclure des devices qui doivent être considérés (ou non) dans le turn off général. Dans mon exemple, j'ai exclu "Pisc", qui est un WP qui n'est PAS de type light, mais était reconnu comme tel. J'ai tout essayé, puis je l'ai mis en les exclusions en désespoir de cause. Ce n'est pas bien, mais cela fonctionne Petite précision car àla relecture je me dis qu'il y a peut-être une chose àpréciser :Avec la modification que je propose j'ai gardé la possibilité de forcer l'inclusion ou l'exclusion. Par contre la détection risque de fonctionner mieux du premier coup pour la majorité. Pour l'exclusion, bien sur il faudra toujours le spécifier Sent from my SM-N910F using Tapatalk
Lazer Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 A mon tour de proposer ma version légèrement modifiée. J'ai principalement ajouté un test de la value de chaque device afin de ne pas envoyer de turnOff inutilement sur le réseau Z-Wave. Par contre, je n'ai pas testé avec les modules RGBW, je ne sais pas si ils ont une value ou pas. ---------------------------------- -- 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 -- 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 json = json.decode(response) -- Boucle sur les modules for _, device in ipairs(json) do local ret = fibaro:get(device.id, 'isLight') local DeviceType = fibaro:getType(device.id) if ((type(ret) == "string" and string.find(ret, "1")) or DeviceType == "rgb_driver" or DeviceType == "com.fibaro.FGRGBW441M" or shouldInclude(device)) and not shouldExclude(device) then local DeviceValue = tonumber(fibaro:getValue(device.id, "value")) if DeviceValue and DeviceValue > 0 then -- Extinction local DeviceName = fibaro:getName(device.id) local RoomName = fibaro:getRoomNameByDeviceID(device.id) fibaro:debug(os.date("%d/%m/%Y").." : Found device "..device.id.." : "..DeviceName.." "..RoomName.." => call turnOff") fibaro:call(device.id, "turnOff") end end end else fibaro:debug('<span style="display:inline;color:red;">status='..status..', errorCode='..errorCode..', payload='..payload..', response='..(response or "")..'</span>') end 1
sebcbien Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 Il y a toujours moyen d'améliorer... :-) Je testerai ça ce soir. Si ça marche je posterai une version avec le double click que tu n'utilise pas apparement.
Lazer Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 OK ! Oui effectivement je n'utilise pas la confirmation par double clic, car pour moi l'utilité de ce code, c'est d'être appelé automatiquement par GEA 1 minute après la mise en marche de l'alarme (donc quand on quitte le domicile).
sebcbien Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 Pour Gea, perso, j'ai rajouté un bouton tout en bas, en dessous de analyse, sans double click
pepite Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 Meme utilité pour moi, oui bien la version de Lazer ;-), petite économie de zwave, on prend ;-) Je ne peux pas tester, pas de RGBW. tiens nous au jus @sebcbien. De meme pas de double clic ;-)
sebcbien Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 Je vous tiens au courant mais vu qu'il s'est apparemment basé sur "ma" modif ça devrait mieux se passer pour moi que pour d’autres.
sebcbien Posté(e) le 2 octobre 2015 Signaler Posté(e) le 2 octobre 2015 Je confirme que ça fonctionne toujours. Voici le code avec le double click ---------------------------------- -- 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 json = json.decode(response) -- Boucle sur les modules for _, device in ipairs(json) do local ret = fibaro:get(device.id, 'isLight') local DeviceType = fibaro:getType(device.id) if ((type(ret) == "string" and string.find(ret, "1")) or DeviceType == "rgb_driver" or DeviceType == "com.fibaro.FGRGBW441M" or shouldInclude(device)) and not shouldExclude(device) then local DeviceValue = tonumber(fibaro:getValue(device.id, "value")) if DeviceValue and DeviceValue > 0 then -- Extinction local DeviceName = fibaro:getName(device.id) local RoomName = fibaro:getRoomNameByDeviceID(device.id) fibaro:debug(os.date("%d/%m/%Y").." : Found device "..device.id.." : "..DeviceName.." "..RoomName.." => call turnOff") fibaro:call(device.id, "turnOff") 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 1
gomba777 Posté(e) le 3 octobre 2015 Signaler Posté(e) le 3 octobre 2015 Merci à Neliger, Lazer, Seb et les autres. Fort utile ce script :-) Ce qui serait pas mal c'est comme on teste de toute façon l'état avant d'envoyer l'ordre, ce serait de stocker l'état ID:Etat ou la valeur des dimmer par exemple et le stocker dans un tableau. Ensuite on pourrait avoir un deuxième bouton pour restaurer l'état des éclairages comme il était avant de tout éteindre. Ce serait pas mal en cas de coupure par erreur. Dans la même idée et après avoir installé le générateur d'ID (très utilise aussi!!). Un VD qui serait un générateur d'état. On pourrait sauver l'état des tous les éclairage et éventuellement d'autres devices dans un tableau, le sauvegarder et ensuite l'utiliser pour charger un sénario. Ca permettrait à un instant T ou on trouve que la maison est bien "configuré" pour une occasion particulière de sauvegarder son état et pouvoir le restaurer à un autre moment... 1
Lazer Posté(e) le 3 octobre 2015 Signaler Posté(e) le 3 octobre 2015 Intéressant comme idée ça mérite même un module virtuel et un topic à part entière. Qui s'y colle ? (pas moi, car honnêtement je n'ai pas ce besoin, mais j'aime bien l'idée quand même)
sebcbien Posté(e) le 3 octobre 2015 Signaler Posté(e) le 3 octobre 2015 Bonne idée mais paaass moiii. J'ai déjàune belle to-do. Je pense que c'est pour quelqu'un qui aime bien les tableaux, au hasard ? @jojo ? ;-) Sent from my SM-N910F using Tapatalk
Sakkhho Posté(e) le 3 octobre 2015 Signaler Posté(e) le 3 octobre 2015 modif de @lazer adopté. et je rajoute à la fin un fibaro:sleep(500) -- attend 0.5 secondes fibaro:call(fibaro:getSelfId(), "pressButton", "14") pour rafraichir automatiquement le VD
jojo Posté(e) le 4 octobre 2015 Signaler Posté(e) le 4 octobre 2015 bon les gars, il faut que je mette la pédale douce pour l'instant. J'ai énormément de retard à rattraper et comme le dit Lazer, perso j'utilise peux ce VD, mais si je devais le faire, ce serait pour "faire avancer la science". Ceci dit, j'ai lu plus haut que le double click n'était pas implémentés chez certains à cause de GEA. Et si dans les options de l'instruction GEA on faisait appel 2 fois de suite au bouton, c'est comme s'il y avait un double click ? Comme cela on garde la sécurité du fonctionnement en manuel éventuel ? Qui aurait testé ?
sebcbien Posté(e) le 4 octobre 2015 Signaler Posté(e) le 4 octobre 2015 ou i on pourrais faire dans gea function, push button, sleep 1s, push button. Mais bon, je prèfère pas, les sleep doivent rester exceptionnels j'ai solutionné l'histoire en rajoutant un deuxième bouton, tout en dessous, "invisible"
jojo Posté(e) le 5 novembre 2015 Signaler Posté(e) le 5 novembre 2015 je vous confirme, le double click n'est pas incompatible avec GEA, et il n'est pas nécessaire de rajouter un bouton spécial. il suffit de répéter l'instruction : cette ligne étteint toutes les lumières systématiquemment (utile que pour le test ) GEA.add (true, 1, "", {{"VirtualDevice", DeviceID["TOUTES_LUMIERES"], 2}, {"VirtualDevice", DeviceID["TOUTES_LUMIERES"], 2}, {"Repeat"}}) 1
sebcbien Posté(e) le 5 novembre 2015 Signaler Posté(e) le 5 novembre 2015 Et même pas un petit sleep entre les deux... Sent from my Note4
jojo Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 pas de sleep entre les 2, car sais-tu dormir les lumières allumées ? Moi non. Donc il faut qu'elles soient éteintes pour que je puisse dormir.... et donc faire un gros sleep 1
sebcbien Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Bon, y'a du nouveau sous les tropiques... J'ai soumis un bug sur bugzilla: http://bugzilla.fibaro.com/print_bug_page.php?bug_id=3631 le bug est quand on ajoute un nouveau device, que l'on dit bien que le device est lightning/éclairage, eh bien dans la db ce n'est pas mis à jour (uniquement après un reboot) Or c'est cette méthode qui est utilisée pour le moment... je m'en suis rendu comte car mes nouveau devices ne s'éteignaient pas... mais après un reboot c'était de nouveau ok... Donc un jour ou l'autre en V5, soit demain... huhuhu... :(je ne sais pas si c'est un rire ou une grimace) ça ne fonctionnera plus. Voici la réponse de roszak: Property isLight is not used any more, if device controls lightning it will get interface <light>. alors j'ai un peu regardé, et je n'ai pas trouvé... Voici le retour pour un de mes dimmer: "interfaces": [ "energy", "power", "zwave", "zwaveAlarm", "zwaveConfiguration", "zwaveFirmwareUpdate", "zwaveMultiChannelAssociation", "zwaveProtection", "zwaveSceneActivation", "zwaveSwitchAll" ], quelqu'un à une idée où chercher ? edit: tip: regarder les propriétés du module zwave actif ;-) ça donne ça: "interfaces": [ "energy", "light", "power", "zwave", "zwaveAlarm", "zwaveMultiChannelAssociation", "zwaveSceneActivation" ], donc c bon. YAPLUKAmodifier/adapter le VD et YFOKON teste ;-)
sebcbien Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 donc quand on demande la liste des devices, voici le retour pour un de mes dimmer: "id": 1965, "name": "Salle a Manger", "roomID": 2, "type": "com.fibaro.multilevelSwitch", "baseType": "com.fibaro.binarySwitch", "enabled": true, "visible": true, "isPlugin": false, "parentId": 1964, "remoteGatewayId": 0, "viewXml": false, "configXml": false, "interfaces": [ "light", "zwave", "zwaveConfiguration", "zwaveFirmwareUpdate", "zwaveMultiChannelAssociation", "zwaveSceneActivation", "zwaveSwitchAll" ], "properties": { "zwaveCompany": "Fibargroup", "zwaveInfo": "3,3,52", "zwaveVersion": "2.2", "pollingTimeSec": 0, "configured": "true", "dead": "false", "deviceControlType": "23", "deviceIcon": "15", "emailNotificationID": "0", "emailNotificationType": "0", "endPointId": "0", "isLight": "true", "liliOffCommand": "", "liliOnCommand": "", "log": "", "logTemp": "", "manufacturer": "", "markAsDead": "true", "model": "", "nodeId": "102", "parametersTemplate": "235", "productInfo": "1,15,1,0,16,10,2,2", "pushNotificationID": "0", "pushNotificationType": "0", "remoteGatewayId": "0", "saveLogs": "true", "sceneActivation": "0", "smsNotificationID": "0", "smsNotificationType": "0", "switchAllMode": "SWITCH_ALL_INCLUDED_IN_THE_ALL_ON_ALL_OFF_FUNCTIONALITY", "useTemplate": "true", "userDescription": "", "value": "0" }, "actions": { "getParameter": 1, "reconfigure": 0, "setParameter": 2, "setValue": 1, "turnOff": 0, "turnOn": 0, "updateFirmware": 1 }, "created": 1446762296, "modified": 1446762296, "sortOrder": 484 } on a donc bien properties.islight=true mais on a aussi "interfaces": ["light", ... Pour les ceusque qui ont du temps, je vous propose de jeter un coup d'oeil, par exemple avec les devices qui vous posent problème.. Moi j'ai vite fait le tour, et a part les rgbw, tous mes modules qui contrôlent des lampes on light dans interfaces. (wallplug, dimmers) Manière simple: via le toolkit, click droit et show raw data
Lazer Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 T'es trop fort Je confirme, j'ai ajouté un dimmer il y a quelques semaines, qui a bien le property->light, mais n'a pas le islight=true (qui sera ajouté au prochain reboot si j'ai bien suivi). C'est pas la première fois que Fibaro modifie son API, c'est vraiment galère.... En même temps la nouvelle API est plus logique, c'est dans <interfaces> qu'on retrouve toutes les possibilités de chaque module, c'est ce dont je me sert pour le VD Domocharts. 1
sebcbien Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 T'es trop fort Je sais , ma femme me le dit souvent , mais elle ajoute qu'il ne me manque que l'humilité pour être parfait... huhuuuu et là je lui réponds... mais à quoi ça sert d'être parfait si on doit être humble ? 2
Messages recommandés