Aller au contenu

Variable Ou Astuce ?


Bloug

Messages recommandés

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

 

Lien vers le commentaire
Partager sur d’autres sites

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

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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/

Lien vers le commentaire
Partager sur d’autres sites

Merci Tomzebest ! c'est une bonne alternative à  creuser :)

 

 

Un calendrier intégré dans la HC serait une bonne chose :P , le projet de Kriek avance bien également http://www.domotique-fibaro.fr/index.php/topic/1703-gestion-dactions-quotidiennes-via-calendrier-google/

Lien vers le commentaire
Partager sur d’autres sites

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  :D 

 

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 ?  :wub:  currentDate.toto.morrow.?

De plus la valeur va repasser en elle_taff_pas le vendredi à  00h00 et ouvrir les volet 9h00 ? :13:   

 

merci pour vos idées :)

Lien vers le commentaire
Partager sur d’autres sites

ç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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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 !

 

 

 

 

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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!!

Lien vers le commentaire
Partager sur d’autres sites

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!!! :P

ok, je passe à  la HC2. Merci pour le cadeau. Je peux t'envoyer mon adresse par MP  :15:

 

@ 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

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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é

 

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

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 :lol:  c'est moins risqué :P  et je poste un retour :) 

 

Bravo à  vous deux, deux très beaux exemples de script avec des HC2 et HCL. :60: 

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

me revoilà  avec une nouvelle question  :wub:

 

 

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 ......  :13:

 

 

[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 :)

 

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...