Ez3kiel Posté(e) le 24 octobre 2015 Signaler Posté(e) le 24 octobre 2015 Bonjour,Je vois pas mal de personne qui s’intéresse à la gestion auto de leur éclairage en fonction de la détection de mouvement et de la mesure de luminosité.J'utilise depuis plusieurs mois un script de Stevenvd du forum officiel.Etant étonné de ne pas voir ces infos présente sur notre forum, je vous en fait une petite présentation.Ce script a pour but de gérer de manière autonome la ou les lumières de votre pièce en fonction de la lumière ambiante, de la présence dans la pièce, de vos variables Dodo/Debout, Présence/Abscence, Jour/nuit.Le principe est le suivant :La journée est divisée en plusieurs périodes(Matin, jour, soir, nuit)Si on détecte un mouvement et que la lumière est trop basse pour la période de la journée alors on allume la/les lumière(s) pour X temps.Mais là ou le script est bien pensé, c'est qu'il intègre la possibilité d'allumer une ou plusieurs lampe en fonction de la journée et de la lumière ambiante mais aussi de gérer des exceptions ( Lecture d'un film sur kodi, absence de la maison, ou ce que vous voulez)Le post sur le forum officiel se trouve ICI et le script complet est dispo sur le site de l'auteur .Pré-requis :Vous devez avoir des variables globales pour les états suivants:sleepState = "Dodo"timeOfDay = " Periode de la journée"presentState = "Présence"Ces variables changent de valeur via un autre script ( GEA ou scheduler ou toute autre scene de votre cru !)Ci-dessous les 1eres ligne du script où l'on a besoin d'intervenir.(j'ai traduit les commentaires en français pour les anglophobes ou les Lorrains ) --[[ %% properties 477 value 480 value 491 value %% globals TimeOfDay PresentState --]] --[[ Changez - XXX value - au dessus. Une par détecteur de mouvement, une par détecteur de lux. La variable globale TimeOfDay et les lux s'assurent que la scene soit déclenchée quand vous etes déja dans la pièce et que quelquechose change. faites vos régalges en dessous, lumières et ajouter des " extra functions" Feel free to suggest changes or contact when having problems. It is not allowed to sell or distribute this software and earlier versions without the approval of Control Living © 2014 - 2015 Smart lights by Control Living Version 1.6.7 --]] -------------------------------------------------------------------- -----------------------YOUR LIGHT SETTINGS-------------------------- motionSensorID = {477}; -- changez les id du ou des détecteurs de mouvement {477} ou {477,478,479} si vous en avez plusieurs. LuxSensorID = {480}; -- changez les id du ou des détecteurs de luminosité {480} ou {480,481,482} si vous en avez plusieurs. --Pour eviter de devoir modifier tout le script, on définit ici les equivalences entre vos variables et celles du script --Entrez le nom de vos Variables Globales qui correspondent aux variables ci dessous.Il faut les créer au préalable. SANS CELA , LA SCENE NE FONCTIONNERA PAS. Attention aux majuscules ! sleepState = "SleepState"; --Sleep globalstate variable. timeOfDay = "TimeOfDay"; --Time of Day Global variable. presentState = "PresentState"; --Present state Global variable. --Enter the values of your global variables stated above. If not using, copy the name in front of the "YourValueName" --Entrez les valeurs de vos Variables Globales qui correspondent aux variables ci dessous sleepStateMapping = {Sleeping="Sleeping", Awake="Awake"}; timeOfDayMapping = {Morning="Morning", Day="Day", Evening="Evening", Night="Night"}; presentStateMapping = {Home="Home", Away="Away", Holiday="Holiday"}; -- Réglez la valeur en lux à laquelle la lumière doit s'allumer. -- Si vous ne voulez pas utiliser de minLux alors mettez : 65535 minLuxMorning = 100; minLuxDay = 60; minLuxEvening = 40; minLuxNight = 30; --Si la luminosité est supérieur à maxlux, la lumière s'éteint après le délai onTime (voir plus bas). maxLuxMorning = 300; maxLuxDay = 300; --[[ Maintenant la partie la plus importante: Ici vous pouvez définir quelle lumière doit s'allumer,à quelle valeur et pour combien de temps. Laissez les acollades vides pour pas de lumière. Pour régler la valeur d'une lampe sans timer on utilise 2 parametres: {id=ID_LAMPE, setValue="VALEUR"} Pour régler la valeur d'une lampe avec un timer on utilise 3 parametres: {id=ID_LAMPE, setValue="VALEUR", onTime=TEMPS_EN_SECONDES } Pour régler la valeur d'un RGBW, on défini les 4 canaux dans le SetValue : setValue={R="255",G="255",B="255",W="255"} -- RGBW set: {id=ID_LAMPE, setValue={R="255",G="255",B="255",W="255"}, onTime=TEMPS_EN_SECONDES } --]] lightsSleeping = {}; --lights that are triggered when Sleepstate is sleeping. lightsMorning = {{id=471, setValue="99", onTime=300},{id=491, setValue="99", onTime=300},{id=902, setValue="turnOn", onTime=360}}; lightsDay = {{id=471, setValue="80", onTime=90},{id=491, setValue="80", onTime=90}}; lightsEvening = {{id=471, setValue="60", onTime=300},{id=491, setValue="60", onTime=300},{id=902, setValue="turnOn", onTime=300}}; lightsNight = {{id=471, setValue="45", onTime=60}, {id=491, setValue="45", onTime=60}}; --Manual Override, the time that lights will not be turned ON again after manually turning them off. --OverrideFor, le temps en secondes pendant lequel la lumière ne se rallume pas apres une extinction manuelle --dimmDownTime, temps en seconde pour le dimmer à l'extintion OverrideFor = 90; dimmDownTime = 10; -------------------------------------------------------------------- -------------------------EXTRA FEATURES----------------------------- --Ici le script integre des fonctions supplementaires. C'est ici que l'on peut ajouter des conditions supplémentaires pour eviter l'allumage des lumières pendans la lecture d'un film par exemple extraMorningFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. -- movieLights = {{180, "10"},{181, "10"} }; --if (xbmc == "playing" ) then CallLightArray(movieLights); ExtraDebug("Extra morning function called"); end extraDayFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra day function called"); end extraEveningFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra evening function called"); end extraNightFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra night function called"); end extraLightTriggerChecks = function() --add extra checks here. and return the total true or false value. --if returning false the lights will not be triggered. -- for instance: return ( (pcTurnedOff == true ) and (xbmc ~= "Empty") ); -- return true to enable lights to turn on return true; end extraOffChecks = function() --return true to keep lights on. return false; end -------------------------------------------------------------------- ----------------------ADVANCES SETTINGS----------------------------- local showStandardDebugInfo = true; -- Debug shown in white local showExtraDebugInfo = false; -- Debug shown in orange 4
KoBa Posté(e) le 24 octobre 2015 Signaler Posté(e) le 24 octobre 2015 Merci pour le partage, un bon p'tit script bien utile!! 1
pepite Posté(e) le 24 octobre 2015 Signaler Posté(e) le 24 octobre 2015 Super script, merci du partage !!
Ez3kiel Posté(e) le 24 octobre 2015 Auteur Signaler Posté(e) le 24 octobre 2015 Content que ça vous plaise. Si j'ai pas été clair sur certains trucs, n'hésitez pas
Elmer Posté(e) le 2 novembre 2015 Signaler Posté(e) le 2 novembre 2015 salut Super ! Justement je recherche a faire varier la puissance de la lumière en fonction des horaires. J'utilise pour ça un Dimmer 2 fibaro mais je n'arrive pas à modifier le % d'intensité en code LUA. T'as une astuce ?
Ez3kiel Posté(e) le 2 novembre 2015 Auteur Signaler Posté(e) le 2 novembre 2015 Salut, Pour modifier l'intensité de tes dimmers c'est ici que ça se passe : lightsSleeping = {}; --lights that are triggered when Sleepstate is sleeping. lightsMorning = {{id=471, setValue="99", onTime=300},{id=491, setValue="99", onTime=300},{id=902, setValue="turnOn", onTime=360}}; lightsDay = {{id=471, setValue="80", onTime=90},{id=491, setValue="80", onTime=90}}; lightsEvening = {{id=471, setValue="60", onTime=300},{id=491, setValue="60", onTime=300},{id=902, setValue="turnOn", onTime=300}}; lightsNight = {{id=471, setValue="45", onTime=60}, {id=491, setValue="45", onTime=60}}; Tu peux changer la valeur du setValue pour chaque lampe et pour chacune des périodes de la journée (99 pour un allumage à pleine puissance )
Elmer Posté(e) le 2 novembre 2015 Signaler Posté(e) le 2 novembre 2015 Super merci j'ai essayé de piocher dans le code pour le comprendre mais "onTime" ne fonctionne pas. je ne trouve pas cette fonction dans le code LUA.
q.philippe Posté(e) le 4 novembre 2015 Signaler Posté(e) le 4 novembre 2015 Salut, Une petite question,, J'ai un Mode "Auto""Manuel en module virtuel avec une variable, si je comprends bien, j'intègre ma variable a la place de "SleepState" par "Detection_Jardin" avec Auto,Manuel ? Le Mode "PresentState" on peut le supprimer ? Et dernière, si je veux rajouter un mode Allumer par une ouverture de porte par exemple ? Est ce que quelqu'un utilise un oeil dans une cuisine et si oui, ou le placer sachant que cuisine et salon son ouvert ; ( au sol , plafond pour ne pas detecter le salon).
Ez3kiel Posté(e) le 4 novembre 2015 Auteur Signaler Posté(e) le 4 novembre 2015 Salut, je te conseille plutôt d utiliser la fonction extraLightTriggersCheck en mettant directement ta variable auto/manuel comme dit dans le 1er post
q.philippe Posté(e) le 4 novembre 2015 Signaler Posté(e) le 4 novembre 2015 vu : extraLightTriggerChecks = function(Detection_Jardin) ou extraLightTriggerChecks = function() Detection_Jardin() if "Detection_Jardin"="OFF"(false)(Auto) if "Detection_Jardin"="ON" (True)(Manuel)
Ez3kiel Posté(e) le 5 novembre 2015 Auteur Signaler Posté(e) le 5 novembre 2015 Salut q.philippe, extraLightTriggerChecks = function() --add extra checks here. and return the total true or false value. --if returning false the lights will not be triggered. -- for instance: return ( (pcTurnedOff == true ) and (xbmc ~= "Empty") ); -- return true to enable lights to turn on return true; end Ici, le contenu de la fonction doit retourner "faux" pour que les lampes ne s'allument pas malgré la detection de mouvement. Par exemple chez moi , je ne veux pas que les lampes s'allument si je regarde un film( même si je bouge). la variable Xbmc_salon passe automatique à movies quand je regarde un film J'ai donc mis ceci : local xbmc= fibaro:getGlobalValue("Xbmc_salon"); return (xbmc == "Empty"); xbmc == "Empty" est fausse pendant la lecture, le script n'allume pas les lumières. Tu peux aussi faire ça : Là , la personne sur le forum officiel voulait que les lumières ne s'allument pas si le périphérique 520 consommait plus de 50 W extraOffChecks = function() --return true to keep lights on. if ( tonumber(fibaro:getValue(520, "power")) > 50 ) then return false; else return true; end end J'espère que c'est plus clair pour toi.
Ez3kiel Posté(e) le 5 novembre 2015 Auteur Signaler Posté(e) le 5 novembre 2015 Super merci j'ai essayé de piocher dans le code pour le comprendre mais "onTime" ne fonctionne pas. je ne trouve pas cette fonction dans le code LUA. Salut Elmer , le "OnTime" ne fonctionne que dans ce script car c'est une fonction interne à ce script. Toi , tu essayes de te faire ton script ou tu utilises celui là ?
q.philippe Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 Je tape et test ca prochainement . Merci Kiel
ntaravel Posté(e) le 23 décembre 2015 Signaler Posté(e) le 23 décembre 2015 Bonjour, Tout d'abord très bon script Merci Dans mon salon je ne souhaite pas mettre de timer car lorsque je suis vautré dans mon canapé le capteur de mouvement ne me détecte plus. Je souhaiterai par contre que la lumière du salon s'éteigne toute seule lorsque j'ouvre les volets (le détecteur de luminosité supérieur au luxmax) malgré l'abscence de timer. Pouvez vous m'aider? D'autre part je viens juste de découvrir GEA et je souhaiterai déclencher les variable d'état à partir de ce script. Pour que ca fonctionne que faut il raconter à gea? Merci de votre aide
Ez3kiel Posté(e) le 25 décembre 2015 Auteur Signaler Posté(e) le 25 décembre 2015 Salut ntaravel, si tu ne veux pas de timer, tu peux ne pas en mettre comme marqué en début de post : Pour régler la valeur d'une lampe sans timer on utilise 2 paramètres: {id=ID_LAMPE, setValue="VALEUR"} Pour la luminosité, tu définies le maxLux et à la fin du compte a rebours , la lumière s'éteint. Concernant GEA, je ne l'utilise pas mais je suis sur que sur le post dédié à GEA les gars seront ravis de te dire comment changer une variable via GEA, posent leur directement la question
ntaravel Posté(e) le 6 janvier 2016 Signaler Posté(e) le 6 janvier 2016 Salut Est ce normal que la variable presentState commute automatiquement sur "Away" au bout d'un certain temps sans detection alors que je suis encore à la maison. J'aurai préféré modifier cette variable à l'aide d'un bouton virtuel pour l'instant en attendant le joli champignon "fibaro button" plutôt que d'avoir une gestion automatique de cette variable. J'entre chez moi j'appui ==Home Je sors de chez moi j'appui long ==Away Merci d'avance
Ez3kiel Posté(e) le 6 janvier 2016 Auteur Signaler Posté(e) le 6 janvier 2016 Salut ntaravel, Le script n'est pas censé modifier l'état des variables. Es-tu sur que tu n'as pas une autre scene ou un VD qui bascule ta variable sur Away ?
Domodial Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 Vraiment un excellent script !! Je galère depuis 2 semaines pour intégrer quelque chose qui est la même intelligence, mais plutot à la manière d'un poulpe me concernant Et encore le poulpe est douté d'une intelligence que je n'ai pas Je vais mixer ce script avec GEA. Merci beaucoup à tous !!
Domodial Posté(e) le 9 janvier 2016 Signaler Posté(e) le 9 janvier 2016 Hello, J'ai installé le script, simplement il ne fonctionne pas J'ai bien déclaré les variables, dans GEA mes lignes de commande passe les variables du script dans les bons modes en fonction de ce que je veux faire. En ce moment pour test, nous sommes le matin et la maison à présent : PresentState est "Present" , SleepState est "PasDodo" et TimeOfDay est "Jour" J'ai 4LUX dans la pièce. Ici j'ai mis : minLuxDay = 3; et lightsDay = {{id=204, setValue="80", onTime=90}}; Dans l'entete j'ai bien l'id 204 Mais pas de réaction, une idée ? Merci
Domodial Posté(e) le 9 janvier 2016 Signaler Posté(e) le 9 janvier 2016 Mais lol quoi, le script posté n'était pas entier en début de page mdrrrr Je n'avais pas lu qu'il fallait aller chercher le script entier sur le site de l'auteur, je suis xptdr :lol:
Ez3kiel Posté(e) le 9 janvier 2016 Auteur Signaler Posté(e) le 9 janvier 2016 Salut, Oui j'ai juste traduit une partie du script ! Sinon, En en-tête,Il te faut les id du motion sensors ( mouvement et lumière) pas les id des lampes. Il faut aussi que le minluxday soit supérieur aux lux mesurés pour que le script se déclenche.
Domodial Posté(e) le 9 janvier 2016 Signaler Posté(e) le 9 janvier 2016 @ Ez3kiel Je ne pige pas vraiment ces commandes. En fait on va lire la valeur de la variable Xbmc_Salon (Ok) Mais le rapport avec Empty ? Parce que du coup si la valeur de ma variable est à "movie" (comme tu le dis dans ton exemple) Qu'est ce que va faire smart light ?? avec le Empty ? Pige vraiment pas... local xbmc= fibaro:getGlobalValue("Xbmc_salon"); return (xbmc == "Empty"); Mis à part ça tout fonctionne, c'est véritablement un bonheur ce script ! Mais quand TvSalon est à "On" et que je veux pas que la lumière 204 s'allume, j'ai essayé des trucs mais ça fonctionne pas...
Domodial Posté(e) le 9 janvier 2016 Signaler Posté(e) le 9 janvier 2016 Concernant les lampes dans l'entete je ne savais pas, du coup je les avaient mise... Et concernant les lux je m'étais rendu compte....avec tests... Salut, Oui j'ai juste traduit une partie du script !Sinon, En en-tête,Il te faut les id du motion sensors ( mouvement et lumière) pas les id des lampes.Il faut aussi que le minluxday soit supérieur aux lux mesurés pour que le script se déclenche.
Domodial Posté(e) le 9 janvier 2016 Signaler Posté(e) le 9 janvier 2016 Finalement ça fonctionne... local Multimedia= fibaro:getGlobalValue("TvSalon"); fibaro:debug(Multimedia); return (Multimedia == "On"); Edit : Je ne savais pas que ça parlait d'une variable spécifique à xbmc ou il y a plusieurs valeurs (movies, Empty etc...) C'est de la tuerie ce script couplé a GEA. Enfin mon oeil fonctionne au doigt et à l'oeil
Ez3kiel Posté(e) le 9 janvier 2016 Auteur Signaler Posté(e) le 9 janvier 2016 Domodial, pour être honnête, j'ai mis en exemple ce que j'utilise chez moi ( qui marche apres plusieurs essais). Mais avec le recul , je ne ferai plus comme ça aujourd'hui. à‡a marche mais c'est tordu... Dans mon exemple, je travaille dans la section : extraLightTriggerChecks = function() --add extra checks here. and return the total true or false value. --if returning false the lights will not be triggered. -- for instance: return ( (pcTurnedOff == true ) and (xbmc ~= "Empty") ); -- return true to enable lights to turn on return true; end L'auteur du script nous dis qu'il faut retourner "true" pour que le lumières s'allument.( chose que je ne veux pas ) Alors je lui mets un expression fausse, comme ça la lumière s'allume pas. Un truc plus logique serait de faire un test sur la variable comme ceci : local xbmc= fibaro:getGlobalValue("Xbmc_salon"); if (xbmc == "Movie") --film en cours de lecture then return false; --false pour eviter aux lumière de s'allumer else return true end je n'ai pas testé ce code mais j’espère que tu me suis
Messages recommandés