Bloug Posté(e) le 2 novembre 2014 Signaler Posté(e) le 2 novembre 2014 Bonjour, je découvre petit à petit la HC2 donc désolé pour la questions c*n Voila, ma femme a un planning de travail irrégulier (infirmière) , je souhaite donc construire des scènes en fonction de cette variable ( aspirateur, volets, chauffage ....) J'ai donc une variable : Variable_Travail avec les valeurs : elle_taff et elle_taff_pas Pour déclarer la valeur " elle_taff " j'ai une scène en mode Bloc avec " Timer jour du mois " avec les jours 1, 3 ,8 ,12 etc ... ALORS Variable_Travail = elle_taff et pour déclarer la variable elle_taff_pas c'est la même chose dans une autre scène avec les jours inverses. Rien de bien difficile mais voila c'est pénible en cas de modification de planning de devoir modifier les deux scènes. Peut être existe il une astuce pour qu"une variable garde une valeur par défaut ex : elle_taff_pas sauf si ma scène déclare la variable "elle_taff" ?? merci
jojo Posté(e) le 2 novembre 2014 Signaler Posté(e) le 2 novembre 2014 En effet, avec une scène on peut s'en sortir. 1) tu définis la scène avec les jours de travail, et elle tourne à 4h00 pour mettre Variable_Travail = elle_taff 2) tu définis une autre scène qui tourne TOUS les jours à 0h00 pour mettre Variable_Travail = elle_taff_pas et tu n'as qu'à maintenir la scène 1 1
Bloug Posté(e) le 3 novembre 2014 Auteur Signaler Posté(e) le 3 novembre 2014 Hummm ..... très bonne idée Je garde merci .
Tomzebest Posté(e) le 3 novembre 2014 Signaler Posté(e) le 3 novembre 2014 Sinon un très bon tuto de Cédric sur l'ajout d'un calendrier google. J'ai encore la flegme de le mettre en place mais je pense que c'est une super solution pour référencer les jours de taf, fériés, week end et vacances et de lancer des scénarios diverses. Car moi aussi je bosse en posté. En plus il existe une appli iphone et surement android du google agenda pour modifier cet agenda quand tu veux pour plus de flexibilité. http://maison-et-domotique.com/books/hc2-de-fibaro-et-calendrier-google/
jojo Posté(e) le 3 novembre 2014 Signaler Posté(e) le 3 novembre 2014 cool; mais tu me fais regretter d'avoir pris une HCL
Tomzebest Posté(e) le 3 novembre 2014 Signaler Posté(e) le 3 novembre 2014 Ah oui elle semble limiter pas mal d'actions
Bloug Posté(e) le 3 novembre 2014 Auteur Signaler Posté(e) le 3 novembre 2014 Merci Tomzebest ! c'est une bonne alternative à creuser Un calendrier intégré dans la HC serait une bonne chose , le projet de Kriek avance bien également http://www.domotique-fibaro.fr/index.php/topic/1703-gestion-dactions-quotidiennes-via-calendrier-google/
Bloug Posté(e) le 5 novembre 2014 Auteur Signaler Posté(e) le 5 novembre 2014 Presque .... le buveur ! Allé je complique la donne , si j'ajoute une troisième valeur du genre : elle_taff_de_nuit . Par ex le mercredi 5 et le jeudi 6, les volets ne doivent surtout pas s'ouvrir le jeudi 6 au matin et le vendredi 7 au matin sous risque d'en entendre parler desss jours sur la domotique J'ai donc besoin de faire une autre scène avec la même astuce pour changer la valeur de la variable par ex à 5h00 , la technique marche pas de problèmes Suis-je donc obliger de faire 3 scènes pour l'ouverture des volets : Volet_elle_taff ( Ex : volets s’ouvrent à 7h00 ) Volet_elle_taff_pas ( Ex : volet s’ouvrent à 9h00 ) Volet_elle_taff_de_nuit ( Ex : volets restent fermés en J+1 ) Mais pour la scène Volet_elle_taff_de_nuit qui ne doivent pas s'ouvrir en J+1, ??? c'est en Lua ? currentDate.toto.morrow.? De plus la valeur va repasser en elle_taff_pas le vendredi à 00h00 et ouvrir les volet 9h00 ? merci pour vos idées
jojo Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 ça ça devient complexe, il me faudrait du temps pour le pencher sur le problème. Mais comme il s'agit d'un problème de logique pure, cela doit être possible en programmation BLOC. Il faudrait surement passer par une variable supplémentaire. Dès que j'ai le temps (mais quand ??) de me pencher dessus, je le fais. C'est un beau challenge.
Tomzebest Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Si tu arrives àtrouver le moyen d'utiliser un code pour le J+1, tu pourras éviter le levé de volet a 9h le lendemain de son taf de nuit en mettant 2 conditions pour que le volet se lève a 9h: variable a "elle taf pas" et verifier qu'a j-1 la variable était différente de "elle taf de nuit" Tu peux mettre 2 conditions en utilisant "and" if ....... and ..... then ..... end
jojo Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 oui, c'est exactement à un truc du genre que je pensais. Tu cherches, et si tu ne t'en sort pas j'essaie de mon côté ?
Tomzebest Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Moi aussi je vais regarder ce soir ca peut m'intéresser également ^^
Bloug Posté(e) le 6 novembre 2014 Auteur Signaler Posté(e) le 6 novembre 2014 Un grand merci ..... je nage
Tomzebest Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Et voila. Normalement tu peux virer tes variables avec ce script. Tu indiques les dates des jours dans les croisillons quand elle bosse de jour, de nuit et quand elle est en repos. --[[ %% autostart %% properties %% globals --]] local jour = {1,5} local nuit = {4,30} local repos = {2,26,27,28} local DateActuelle = os.date("%d") local Hier = os.date("%d")-1 while true do --lecture du script toutes les minutes for i=1, #jour do if jour[i] == tonumber(DateActuelle) then -- script des actions à faire quand ta femme bosse de journée. EXEMPLE if string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "09:00") then --à 09h00 fibaro:call(100,turnOn) -- on allume une lumiere d'ID=100 elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "09:30") then --à 09h30 fibaro:call(110, "open") -- on ouvre le volet d'ID 110 end end end for i=1, #nuit do if nuit[i] == tonumber(DateActuelle) and nuit[i] == tonumber(Hier) then -- script des actions à faire quand ta femme bosse de nuit et que la veille elle bossait de nuit aussi elseif nuit[i] == tonumber(DateActuelle) then -- script des actions à faire quand ta femme bosse de nuit et que la veille elle ne bossait pas de nuit end for i=1, #repos do if repos[i] == tonumber(DateActuelle) and nuit[i] == tonumber(Hier) then -- script à mettre pour des actions quand ta femme est en repos et que la veille elle bossait de nuit elseif repos[i] == tonumber(DateActuelle) then -- script à mettre pour des actions quand ta femme est en repos et que la veille elle ne bossait pas de nuit end end fibaro:sleep(60*1000) end 1
jojo Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 c'est de la triche Le vrai sport aurait été d'y arriver sans LUA
Tomzebest Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Ahahaha trop peu de pouvoir avec les blocs, ou alors il faut créer 150 scènes, des variables et tout le tsouin tsouin, allé... rejoins le club HC2 jojo!!!
Bloug Posté(e) le 6 novembre 2014 Auteur Signaler Posté(e) le 6 novembre 2014 T"es un grand malade du Script ! .... en Tout cas un Grand merci !!! il me faut juste un peu ( beaucoup) de temps pour arriver à le comprendre Voici mes modifs ( juste les modules ) --[[ %% autostart %% properties %% globals --]] local jour = {1,5} local nuit = {4,30} local repos = {2,26,27,28} local DateActuelle = os.date("%d") local Hier = os.date("%d")-1 while true do --lecture du script toutes les minutes for i=1, #jour do if jour[i] == tonumber(DateActuelle) then -- script des actions à faire quand ta femme bosse de journée. if string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "07:00") then --à 07h00 -- Ouverture des volets à 7h00 et extinction des lumières fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); fibaro:call(29, "turnOff"); fibaro:call(30, "turnOff"); fibaro:call(28, "turnOff"); fibaro:call(45, "turnOff"); fibaro:call(27, "turnOff"); fibaro:call(22, "turnOff"); fibaro:call(50, "turnOff"); fibaro:call(23, "turnOff"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "10:00") then --à 10h00 -- Fermeture à 50% des volets à 10h00 fibaro:call(35, "setValue", "68"); fibaro:call(36, "setValue", "65"); fibaro:call(41, "setValue", "65"); fibaro:call(42, "setValue", "60"); fibaro:call(7, "setValue", "65"); fibaro:call(43, "setValue", "60"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "12:00") then --à 12h00 -- Ouverture des volets pour midi fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); end end end end for i=1, #nuit do if nuit[i] == tonumber(DateActuelle) and nuit[i] == tonumber(Hier) then -- script des actions à faire quand ta femme bosse de nuit et que la veille elle bossait de nuit aussi --- en théorie Rien a faire .... pas d'ouverture de volets elseif nuit[i] == tonumber(DateActuelle) then -- script des actions à faire quand ta femme bosse de nuit et que la veille elle ne bossait pas de nuit --- ici j'applique la meme prog qu'un jour de repos if string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "09:00") then --à 09h00 -- Ouverture des volets à 9h00 et extinction des lumières fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); fibaro:call(29, "turnOff"); fibaro:call(30, "turnOff"); fibaro:call(28, "turnOff"); fibaro:call(45, "turnOff"); fibaro:call(27, "turnOff"); fibaro:call(22, "turnOff"); fibaro:call(50, "turnOff"); fibaro:call(23, "turnOff"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "10:30") then --à 10h30 -- Fermeture à 50% des volets à 10h30 fibaro:call(35, "setValue", "68"); fibaro:call(36, "setValue", "65"); fibaro:call(41, "setValue", "65"); fibaro:call(42, "setValue", "60"); fibaro:call(7, "setValue", "65"); fibaro:call(43, "setValue", "60"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "11:30") then --à 11h30 -- Ouverture des volets pour faire .... a manger fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); end end end end for i=1, #repos do if repos[i] == tonumber(DateActuelle) and nuit[i] == tonumber(Hier) then -- script à mettre pour des actions quand ta femme est en repos et que la veille elle bossait de nuit --- en théorie Rien a faire .... pas d'ouverture de volets elseif repos[i] == tonumber(DateActuelle) then -- script à mettre pour des actions quand ta femme est en repos et que la veille elle ne bossait pas de nuit if string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "09:00") then --à 09h00 -- Ouverture des volets à 9h00 et extinction des lumières fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); fibaro:call(29, "turnOff"); fibaro:call(30, "turnOff"); fibaro:call(28, "turnOff"); fibaro:call(45, "turnOff"); fibaro:call(27, "turnOff"); fibaro:call(22, "turnOff"); fibaro:call(50, "turnOff"); fibaro:call(23, "turnOff"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "10:30") then --à 10h30 -- Fermeture à 50% des volets à 10h30 fibaro:call(35, "setValue", "68"); fibaro:call(36, "setValue", "65"); fibaro:call(41, "setValue", "65"); fibaro:call(42, "setValue", "60"); fibaro:call(7, "setValue", "65"); fibaro:call(43, "setValue", "60"); elseif string.format("%02d", DateActuelle.hour) .. ":" .. string.format("%02d", DateActuelle.min) == "11:30") then --à 11h30 -- Ouverture des volets pour faire .... a manger fibaro:call(35, "open"); fibaro:call(36, "open"); fibaro:call(41, "open"); fibaro:call(42, "open"); fibaro:call(7, "open"); fibaro:call(43, "open"); end end end end end fibaro:sleep(60*1000) end Concernant le script, les moments ou les volet ne doivent pas s'ouvrir là ou j'ai ajouté : --- en théorie Rien a faire .... pas d'ouverture de volets le script attend qq chose vu qu'il y a le THEN juste au dessus ? que puis-je rajouter ? Je ne souhaite pas mettre en place de fermeture (en théorie fermé) vu que le script tourne en boucle toutes les minutes donc si Mme se réveille d'un coup et ouvre les volets il vont se refermer non ??? Est ce possible que je regroupe les ouvertures en : fibaro:call(35,36,41,42,7,43 "open"); Encore un Grand merci pour ton script qui ouvre d'ennnnnormes possibilités avec un planning du genre ! (scène de chauffage, aspirateur etc ..... ) Genial ! 1
Shad Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Je n'aurais qu'un seul reproche a ton script, tu ne vérifies pas les valeurs de tes modules. Donc s'il est On, tu lui dis encore de passé on. En soit rien de grave excepté que tu vas usé les petits contacteurs.
Tomzebest Posté(e) le 6 novembre 2014 Signaler Posté(e) le 6 novembre 2014 Yes! Shad a raison! J'ai justement fait cette modification quand je lance mon scenario de lancement d'un film, le script vérifie l'état des volets avant de les baisser, sinon on entend effectivement qu'ils forcent! Il y a effectivement un peu de ménage àfaire pour l'optimiser. Je m'en occupe demain soir en rentrant du taf! Merci Shad aussi pour l'astuce la dernière fois avec le for i=1, #xxxx do qui est carrément pratique!!
jojo Posté(e) le 7 novembre 2014 Signaler Posté(e) le 7 novembre 2014 Ahahaha trop peu de pouvoir avec les blocs, ou alors il faut créer 150 scènes, des variables et tout le tsouin tsouin, allé... rejoins le club HC2 jojo!!! ok, je passe à la HC2. Merci pour le cadeau. Je peux t'envoyer mon adresse par MP @ Bloug, Merci pour le défi, j'ai donc réalisé ceci sous HCL. Voici mon usine à gaz (mais elle fonctionne, et c'est peut-être plus compréhensible que du script ?) : Création de 2 variables : Travail_Today : oui; non; nuit Travail_hier : 0 = nuit; 1 = oui; 2 = non Scènes : Pour toutes les scènes Mise à jour des valeurs du travail de la veille (scène à 0h00) : Donc si Travail_hier > 0, il n'y a pas eu de travail la nuit précédente Valeur par défaut (pas de travail) (scène à 1h00) : Planning de travail (scène à 2h00) : Ouverture des volets Les volets sont représentés par la Prise_Bureau Bon travail et bon dodo à ton épouse 1
Tomzebest Posté(e) le 9 novembre 2014 Signaler Posté(e) le 9 novembre 2014 Et pour le retour à la version LUA: --[[ %% autostart %% properties %% globals --]] ---------------------------------------------------------------------------------- -- VARIABLES LOCALES local jour = {1,5} local nuit = {4,8,9,30} local repos = {2,26,27,28} local AujourdHui = os.date("%d") --os.date ouvre la table qui gère les dates et %d permet de vérifier uniquement la valeur de la ligne "jour numérique" (de 1 à 31) local Hier = os.date("%d")-1 local Date_Actuelle = os.date("*t") -- (*t) récupère toutes les infos d'aujourd'hui (jour, heures, minutes...) local ID_Volets = {7,35,36,41,42,43} local ID_Lumieres = {22,23,27,28,29,30,45,50} -- Voir ici http://www.lua.org/pil/22.1.html pour la table des dates ---------------------------------------------------------------------------------- -- FONCTIONS function Ouverture_100_Volets() -- fonction qui ouvre les volets à 100%, on executera cette fonction plusieurs fois dans le script mais on ne l'écrit qu'une seule fois -- vérification de l'état de chaque volet avant ouverture for i = 1, #ID_Volets do -- Pour chaque valeur dans le croisillon "ID_Volets" (voir la variable locale), à partir de la 1ere valeur inscrite jusqu'à la dernière, le script suivant s'execute: local Niveau_Volets = tonumber(fibaro:getValue(ID_Volets[i], "value")) -- On récupère la valeur d'ouverture du volet dont l'ID est en cours de verif, on la met en format numérique avec tonumber pour la comparer après avec d'autres valeurs, et on enregistre le résultat dans la variable local "Niveau_Volets" if (Niveau_Volets) < 100 then -- Si la valeur récupérée indique que le volet n'est pas ouvert entièrement alors fibaro:call(ID_Volets[i], "open") -- Ouverture du volet, puis le script recommence pour le volet suivant end end end function Ouverture_50_Volets() -- La on laisse comme tu as mis car tu veux une valeur différente pour presque chaque volet (les fameux vrais 50% des volets) donc c'est le plus simple fibaro:call(35, "setValue", "68") fibaro:call(36, "setValue", "65") fibaro:call(41, "setValue", "65") fibaro:call(42, "setValue", "60") fibaro:call(7, "setValue", "65") fibaro:call(43, "setValue", "60") end function Extinction_Lumiere() -- vérification de l'état de chaque lumières avant exctinction for i = 1, #ID_Lumieres do local Niveau_Lumieres = tonumber(fibaro:getValue(ID_Lumieres[i], "value")) if (Niveau_Lumieres) > 0 then fibaro:call(ID_Lumieres[i], "turnOff") end end end function Verif_Travail_Veille() for i = 1, #nuit do if nuit[i] == tonumber(Hier) then -- On vérifie si dans le croisillon "nuit" on a le jour numérique d'hier Travail_Hier = "Travail De Nuit Hier" -- Si c'est le cas on crée une variable qui prend la valeur "Travail De Nuit Hier" si la veille ta femme bossait de nuit. Ce n'est pas une variable locale car comme ça on peut l'utiliser ailleurs dans le script sinon elle n'existerai que entre "function" et "end" end end end while true do -- démarrage de la lecture en boucle du script (la lecture entière du script ne prend que qqs millisecondes) -- à la fin on fait une pause d'une minute donc la lecture du script se fera toutes les minutes -- TRAVAIL DE JOUR for i = 1, #jour do -- Pour chaque valeur dans le croisillon "jour" à partir de la 1ere valeur, on fait if jour[i] == tonumber(AujourdHui) then -- si la valeur du croisillon "jour" en cours de vérif est égale au jour numérique d'aujourd'hui alors -- Ouverture des volets à 07h00 et extinction des lumières if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "07:00" then -- Si il est 07h00 Ouverture_100_Volets() -- Démarre la fonction correspondante écrite plus haut Extinction_Lumiere() -- Fermeture à 50% des volets à 10h00 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "10:00" then -- Si il est 10h00 Ouverture_50_Volets() -- Ouverture des volets pour 12h00 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "12:00" then --Si il est 12h00 Ouverture_100_Volets() end end end -- TRAVAIL DE NUIT Verif_Travail_Veille() -- Démarre la fonction écrite plus haut qui vérifie si ta femme bossait de nuit la veille for i = 1, #nuit do -- script des actions à faire quand ta femme bosse de nuit et que la veille elle ne bossait pas de nuit if nuit[i] == tonumber(AujourdHui) and Travail_Hier ~= "Travail De Nuit Hier" then -- Ouverture des volets à 09h00 et extinction des lumières if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "09:00" then -- Si il est 09h00 Ouverture_100_Volets() Extinction_Lumiere() -- Fermeture à 50% des volets à 10h30 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "10:30" then -- Si il est 10h30 Ouverture_50_Volets() -- Ouverture des volets pour 11h30 : A la popotte femme! elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "11:30" then --Si il est 11h30 Ouverture_100_Volets() end end end -- REPOS Verif_Travail_Veille() for i = 1, #repos do -- script des actions à faire quand ta femme est en repos et que la veille elle ne bossait pas de nuit if repos[i] == tonumber(AujourdHui) and Travail_Hier ~= "Travail De Nuit Hier" then -- Ouverture des volets à 09h00 et extinction des lumières if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "09:00" then -- Si il est 09h00 Ouverture_100_Volets() Extinction_Lumiere() -- Fermeture à 50% des volets à 10h30 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "10:30" then -- Si il est 10h30 Ouverture_50_Volets() -- Ouverture des volets pour 11h30 : A la popotte femme! elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "11:30" then --Si il est 11h30 Ouverture_100_Volets() end end end fibaro:sleep(60*1000) end J'espère que tout fonctionnera bien. Redis moi après tests. -- Pour la partie où tu as rajouté --- en théorie Rien a faire .... pas d'ouverture de volets, j'ai enlevé simplement les parties dont tu n'avais pas besoin, et j'ai changé la condition suivante pour le jour de taf de nuit et le repos pour que le script ne démarre que lorsque ta femme n'a pas travaillé de nuit la veille. J'ai fait pas mal d'autres modif pq après test il y avait pas mal d'erreurs en fait et des choses qui n'auraient pas fonctionné. La j'ai tout revu et presque testé moi même et normalement tout est en ordre. J'ai rajouté pas mal d'explications si tu cherches à comprendre et à modifier ou rajouter des choses. Du coup merci pq j'ai encore appris pas mal de choses ^^ Pour le problème de volet j'ai pas trop compris à quel moment tu veux ajouter une fermeture mais c'est possible. Même si le script tourne en boucle, l'action que tu décides de réaliser ne se passera qu'une seule fois, à l'heure que tu indiqueras. Donc si tu mets un script de fermeture des volets à ton départ au boulot à 7:00 et que ta femme se lève à 8:00 au lieu de 9:00 et ouvre les volets, ils resteront ouverts jusqu'au prochain horaire de fermeture. Et à 9:00 ils ne forceront pas l'ouverture car le script vérifie l'état du volet avant l'ouverture Taf_Novembre(1).vfib Tu peux prendre le code dans le main loop du module virtuel, pq le copié collé à partir du site t'enlevera la disposition que j'ai faite des fonctions, if etc... Comme ca ton code sera plus propre et tu comprendra mieux si c'est bien structuré 2
Bloug Posté(e) le 9 novembre 2014 Auteur Signaler Posté(e) le 9 novembre 2014 Le mode bloc est formidable car pour les non initié beaucoup de choses sont et demeurent possibles, mais la puissance du Script est gigantesque ! avec le lua le scénario ne demande qu'a grandir et donne envie d'ajouter et rajouter plein de choses ! Merci d'avoir pris le temps de détailler le script ! c'est moi qui vais pouvoir apprendre ! je teste cela ( à travers des jours ou elle taff c'est moins risqué et je poste un retour Bravo à vous deux, deux très beaux exemples de script avec des HC2 et HCL. 1
Bloug Posté(e) le 10 novembre 2014 Auteur Signaler Posté(e) le 10 novembre 2014 me revoilà avec une nouvelle question Pour le travail de jour, les volet s'ouvrent en fait pour moi à 7h00 car Mme, démarre plus tôt, donc si elle se lève à 5h00 je souhaite .... pour être agréable ....démarrer le chauffage à 4h00 J'ai donc (tenté) inséré un fonction chauffage sous les variables locale : ligne 41 à 43 function Ouverture_50_Volets() -- La on laisse comme tu as mis car tu veux une valeur différente pour presque chaque volet (les fameux vrais 50% des volets) donc c'est le plus simple fibaro:call(35, "setValue", "68") fibaro:call(36, "setValue", "65") fibaro:call(41, "setValue", "65") fibaro:call(42, "setValue", "60") fibaro:call(7, "setValue", "65") fibaro:call(43, "setValue", "60") end function Chauffage_24() -- Fonction Chauffage à 24° fibaro:call(52, "setTargetLevel", "24") end function Extinction_Lumiere() -- vérification de l'état de chaque lumières avant exctinction for i = 1, #ID_Lumieres do local Niveau_Lumieres = tonumber(fibaro:getValue(ID_Lumieres[i], "value")) if (Niveau_Lumieres) > 0 then fibaro:call(ID_Lumieres[i], "turnOff") end end end Et dans c'est dans la partie : -- TRAVAIL DE JOUR que je souhaite ajouter le chauffage à 4h00 : J'ai donc une nouvelle fois joué et tenté d'ajouter avec la magie des copier/coller/modifier, ma ligne de chauffage en ligne 42 à 44 et ajouté un END de plus ( ligne 59 ) for i = 1, #jour do -- Pour chaque valeur dans le croisillon "jour" à partir de la 1ere valeur, on fait if jour[i] == tonumber(AujourdHui) then -- si la valeur du croisillon "jour" en cours de vérif est égale au jour numérique d'aujourd'hui alors -- départ chauffage if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "04:00" then -- Si il est 4h00 function Chauffage_24() -- Ouverture des volets à 07h00 et extinction des lumières elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "07:00" then -- Si il est 07h00 Ouverture_100_Volets() -- Démarre la fonction correspondante écrite plus haut Extinction_Lumiere() -- Fermeture à 50% des volets à 10h00 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "10:00" then -- Si il est 10h00 Ouverture_50_Volets() -- Ouverture des volets pour 12h00 elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "12:00" then --Si il est 12h00 Ouverture_100_Volets() end end end end Et grand bravo ...... [ERROR] 08:45:30: line 144: '' expected near 'end' Si je supprime le "end" en ligne 144 l'erreur disparait .... mais je doute qu'utiliser la fonction fibaro:call(déshabiller_Paul_pour_habiller_Jacques) soit la solution Est il possible de pointer mon erreur ? Merci
Messages recommandés