Twist Posté(e) le 1 novembre 2015 Signaler Posté(e) le 1 novembre 2015 Bonjour à tous, Je souhaitais partager ce que j'ai fait tout à l'heure : un script pour gérer les quelques volets roulants de mon domicile (ne faites pas attention aux noms de variables, au fait que je manipule des ID, ... je sais je peux optimiser :-p ) Mais j'aimerai votre avis, savoir si je prend une bonne direction sur le principe... (je vais l'enrichir petit à petit et du coup l'optimiser pour le rendre plus exploitable) Un grand merci tout d'abord à CaptainIgloo pour son virtual-device-position-du-soleil-et-ensoleillement donct j'ai juste rajouter la valeur de la nébulosité en variable globale pour que mon script s'en serve --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); -- TOUTES LES 15 MIN ENTRE 6h et 22h CA TOURNE if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "06", "00")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "22", "00"))) and (math.floor(os.time()/60)-math.floor(1446274800/60))%15 == 0 ) ) then fibaro:debug("ok") -- si le soleil est au dessus de 5° de l'horizon et la Nébulosité est inférieure à 15% ALORS JE VAIS REGARDER LA POSITION DU SOLEIL POUR CHAQUE FACADE ET OUVRIR OU FERMER if ( (tonumber(fibaro:getGlobalValue("VDSoleilHauteur")) > 5) and (tonumber(fibaro:getGlobalValue("VDSoleilNebulosite")) < 15) ) then fibaro:debug("soleil > 5 et Nebulosite < 15") -- si facade EST est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>0) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<180) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "open") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "open") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "1") -- volet chambre meteorite EST end end -- si facade SUD est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>90) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<270) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "1") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "open") -- volet chambre grise end end -- si facade OUEST est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>180) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<360) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "open") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "open") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "open") -- volet ar-cuisine end end -- si facade NORD est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>270) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<360) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "open") -- volet SDB étage end end -- si facade EST n'est pas éclairée if (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>180) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "close") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "close") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "2") -- volet chambre meteorite EST end end -- si facade SUD n'est pas éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<90) or (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>270) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "2") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "close") -- volet chambre grise end end -- si facade OUEST n'est pas éclairée if (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<180) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "close") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "close") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "close") -- volet ar-cuisine end end -- si facade NORD n'est pas éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<270) or (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>90) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "close") -- volet SDB étage end end else -- on ferme les volets car le soleil n'est pas suffisamment haut ou la nébulosité est élevée if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "close") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "close") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "2") -- volet chambre meteorite EST end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "2") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "close") -- volet chambre grise end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "close") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "close") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "close") -- volet ar-cuisine end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "close") -- volet SDB étage end end end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then fibaro:debug("ok autostart") tempFunc() else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:debug("ok other") tempFunc() end end 4
Nico Posté(e) le 1 novembre 2015 Signaler Posté(e) le 1 novembre 2015 Pas mal. Par contre pourquoi agir sur la façade nord ? Quand je regarde tes valeurs, ta maison est 100% orienté sud, donc côté nord tu n'auras jamais de soleil ?
Twist Posté(e) le 1 novembre 2015 Auteur Signaler Posté(e) le 1 novembre 2015 euh je n'ai pas compris toute la phrase , je crois qu'il manque un mot mais je n'arrive pas àle déduire :-)
Nico Posté(e) le 1 novembre 2015 Signaler Posté(e) le 1 novembre 2015 C'est fou, le mot nord avait disparu dans les 2 phrases
q.philippe Posté(e) le 1 novembre 2015 Signaler Posté(e) le 1 novembre 2015 salut Je cherche un script aussi , car très dur d'avoir un truc stable, moi je cherche avec une variable , alarme activer ou désactiver quand je suis pas a la maison et fermeture seule, le soir et alarme activer, alors fermeture mais le problème et quand je desactive l'alarme, la scene avec alarme off, s'enclenche,,,,
pilou87 Posté(e) le 2 novembre 2015 Signaler Posté(e) le 2 novembre 2015 @q-philippeC'est pas le sujet de ce topic, mais je te donne un virtual device qui va t'intéresser.Trés simple d'usage. Charge à toi de mettre des variables globales dedans.Enleves le press_button qui sert à activer des VD qui me notifie sur une plateforme Apple IndigoPour les icônes sert toi de de l'avertisseur gris / semi-vert / et rouge de fibaro.Je l'ai pris brut, tel que je m'en sert, mais il faut l'appurer.En utilisant un VD et pas une scene cela 'limite la casse' sur les redémarrage de la box etle basculement éventuel de ta variable OFF.Reste à adapter ce que j'ai fait (trés simple) et qui fonctionne à merveille.PS : Est ce que quelqu'un peut me renseigner sur une variable système qui changeraitlorsque l'on active ou désactive l'alarme à l'aide de la fonction native de FIBARO ON-OFF_ALARME.vfib
trainkill666 Posté(e) le 2 novembre 2015 Signaler Posté(e) le 2 novembre 2015 @pilou Sois tu regardes l'état d'un des détecteurs pour savoir si il est armé ou non : exemple test si armé : if ( tonumber(fibaro:getValue("ID du détecteur", "armed")) > 0 ) then ou tu modifies une variable globale selon l'état de l'alarme avec une scénario du style : --[[ %% properties 28 armed %% globals --]] if ( tonumber(fibaro:getValue(28, "armed")) > 0 ) then fibaro:setGlobal("Etatalarme", "arret"); else fibaro:setGlobal("Etatalarme", "marche"); end
q.philippe Posté(e) le 2 novembre 2015 Signaler Posté(e) le 2 novembre 2015 salut , pilou et trainkill, j'ai toutes mes variables et modules qui vont (myfox), mais le problème est la scène, qu'il répète en boucle quand dans le mode soir, j'inverse le mode de l'alarme il fait tourner la boucle, fermer, ouvert alors que ouvert et pour le matin, Day-Phase-num=3. Je vais refaire tout cela au propre, pour le timer j'utilise "après le lever, et après le coucher soleil" donc les scénes ne devraient être valide que sur une l'action de scene, une fois,,,, alors meme que l'ouverture est le matin. ( Je pratique le Mode Bloc moi lol), Merci , je test vos conseils.
Twist Posté(e) le 2 novembre 2015 Auteur Signaler Posté(e) le 2 novembre 2015 Pas mal. Par contre pourquoi agir sur la façade nord ? Quand je regarde tes valeurs, ta maison est 100% orienté sud, donc côté nord tu n'auras jamais de soleil ? Alors euh en fait c'était plus pour le fun mais en été il y a du soleil qui peut éclairer la facade nord ! si si ! :-) Mais en été on s'en fout de pouvoir ouvrir/fermer les volets pour capter de la chaleur, mais au pire ça peut un peu servir de simulation de présence du coup :-) (oui je me rattrape aux branches ^^) Sinon un petit retour d'xp : aujourd'hui ciel gris... brouillard... et pourtant nébulosité à 0% donc pas tout compris mais je vais creuser ^^
pilou87 Posté(e) le 3 novembre 2015 Signaler Posté(e) le 3 novembre 2015 @trankill666 ?????????C'était juste un exemple, mais tu peux faire les 2 , de toute façon c'est toi qui décides dans tous les cas de mettre l'alarme en route ou non.Si tu veux faire autre chose avec, tu testes dans une scène par exemple si l'alarme et ONet si tu redémarres la box volontairement ou aprés une coupure de courant, la scénetestera d'abord l'état de l'alarme en cours et tout cela peux fonctionner en mode bloc !J'ai juste donner une solution.PS : si quelqu'un peut me donner la variable globale ( ou autres) pour tester l'armement via le mode mise en route de l'alarme de FIBARO ALARM, je suis preneur.Evidemment que je peux tester un détecteur de mouvement ou autres choses, mais je suis plutôt intéresser par ce que fait FIBARO de manière globale.Merci
trainkill666 Posté(e) le 3 novembre 2015 Signaler Posté(e) le 3 novembre 2015 @ pilou87Ma réponse s'adressait àtoi. TOUS les capteurs que tu ajoutes àla box sont automatiquement armés en cas d'activation de l'alarme native Fibaro (ou FIBARO ALARM comme tu la nommes) SAUF si tu as coché la case appropriée dans les paramètres de celui-ci.Idem quand tu désarmes l'alarme fibaro.Le capteur peut avoir différents états :- désarmé ("armed == 0")- armé ("armed > 0") : ne signifie pas détection mais plutôt activation de la détection de l'alarme ou armement.- en alerte ("value > 0") : détection de mouvement.J'ai donc donné la solution àton "PS" pour la variable globale qui donne l'état de FIBARO ALARM.Regardes dans mon message précédent dans le deuxième cadre de programmation, cette scène modifie une variable globale selon l'état d'armement d'un capteur au choix armé par l'alarme native Fibaro, et non de détection de mouvement.La variable n'existe pas d'origine, il y a peut-être d'autres méthodes, mais pas àma connaissance, je passe la main aux anciens pour ça.
Messages recommandés