Aller au contenu

Variable Ou Astuce ?


Messages recommandés

Posté(e)

Super si tout fonctionne bien! Je vais pouvoir l'installer chez moi ce script ^^

 

Pour les nuits consécutives tu n'es pas obligé de refaire un mode spécial. On peut très légèrement changé le mode "travail de nuit" (bon j'avoue on ne gagne que 2 lignes mais c'est plus propre de n'avoir qu'un mode pour la nuit et dans ce mode on vérifie si hier elle bossait de nuit ou pas)

-- 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) then
   if Travail_Hier ~= "Travail De Nuit Hier" then
       if ... -- ton code actuel
       end
   else -- donc si Travail_Hier == "Travail De Nuit Hier"
       if ... -- ton nouveau code dans le cas de nuits consécutives
       end
   end
end
end

Mais dans la logique ton script est très bien!

 

De la même façon tu peux garder ton code "travail de jour" et vérifier dans ce code si c'est le we ou pas. Par contre je crois que ta fonction de vérification si elle bossait de nuit la veille est inutile pq elle ne peut pas bosser de nuit puis reprendre de journée j'imagine...

Autre point à  corriger: effectivement le mode bloc te donne "(currentDate.wday == 1 or currentDate.wday == 7)"

wday est dans LUA le numéro du jour de la semaine donc pas de problème, mais currentDate est une variable locale que le système crée tout en haut avec le mode bloc comme ca :

local currentDate = os.date("*t")

Cette variable est aussi dans notre code mais sous le nom Date_Actuelle ^^ donc

-- 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
   if (Date_Actuelle.wday == 1 or Date_Actuelle.wday == 7) then
   -- ton code si elle bosse de jour et que c'est le we
   else
   -- ton code que tu as déjà  si elle bosse de jour en semaine
   end
end
end

:60: :60: :60:

  • Upvote 1
Posté(e)

IM-PEC-CABLE !

 

J'ai utilisé ton premier exemple Travail de Nuit au dessus pour positionner les END  après test aujourd'hui du mode Travail de jour _ Weekend cela fonctionne :) :

 

 

j'ai grossièrement séparer toutes les étapes pour les débutant comme moi  et laissé juste deux événements pour faciliter les adaptations en copiant/ajoutant les lignes sous les elseif .

 

Voici le script complet & fonctionnel avec la modification de la fonction chauffage :

--[[
%% autostart
%% properties
%% globals
--]]

-------------------------------
---  Auteur : Tomzebest     ---
---  Date   : 30-11-2014    ---
-------------------------------


while true do -- démarrage de la lecture en boucle du script 
-----------------------------------------------------------
------------------   VARIABLES LOCALES   ------------------   
-----------------------------------------------------------
local jour = {1, 2, 10, 11, 19, 20, 21, 24, 25, 29, 30}
local nuit = {5, 6}
local repos = {3, 4, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 22, 23, 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, 28, 29, 30, 45, 50, 72}
-- Voir ici http://www.lua.org/pil/22.1.html pour la table des dates


-----------------------------------------------------------
------------  ENSEMBLE DES FONCTIONS DU SCRIPT ------------  
-----------------------------------------------------------


---------------------------------
-- Fonction Ouverture des volets
---------------------------------

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

------------------------------------
-- Fonction Volets 50%
------------------------------------

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


------------------------------------
-- Fonction Aspirateur
------------------------------------

function Aspirateur() -- Vroum vroumm
    fibaro:call(74, "pressButton", "2")
end


------------------------------------
-- Fonction Chauffage  
------------------------------------

function Chauffage(temperature)
fibaro:call(52, "setTargetLevel", temperature)
end

------------------------------------
-- Fonction Extinction des Lumières
------------------------------------

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


-----------------------------------------------
-- Fonction Verification si travail la veille
-----------------------------------------------

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
 


----------------------------------------------- 
------->>> MODE 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
   if (Date_Actuelle.wday == 1 or Date_Actuelle.wday == 7) then
   
    ---------------------------------------
    -- SOUS-MODE Travail de JOUR le Weekend
    ---------------------------------------
 
          if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "04:00" then -- Si il est 4h00
              Chauffage ("24")
              
          elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "06:00" then -- Si il est 07h00
              Chauffage ("21")    
              
          end
                
   else
    ----------------------------------------
    -- SOUS-MODE Travail de JOUR en Semaine
    ----------------------------------------

          if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "04:00" then -- Si il est 4h00
            Chauffage ("24")
              
          elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "07:00" then -- Si il est 07h00
              Ouverture_100_Volets()
              Extinction_Lumiere()
              Chauffage ("24")            

          end
         
   end
end
end

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

    ---------------------------------------------------
    -- SOUS-MODE Travail de NUIT pour la première nuit
    ---------------------------------------------------
    
if nuit[i] == tonumber(AujourdHui) then
   if Travail_Hier ~= "Travail De Nuit Hier" then
       
       if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "05:30" then -- Si il est 05h30
              Chauffage ("24")

          elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "06:30" then -- Si il est 06h30
              Chauffage ("22")
              
       end
       
    else    

    ---------------------------------------------------------
    -- SOUS-MODE Travail de NUIT pour les nuits consecutives
    ---------------------------------------------------------
 
       if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "05:30" then -- Condition à  changer
              Chauffage ("24")

          elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "06:30" then -- Condition à  changer
              Chauffage ("22")
              
       end
   end
end
end


--------------------------
------->>> MODE 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
      
          if string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "05:30" then -- Si il est 05h30
              Chauffage ("24")

          elseif string.format("%02d", Date_Actuelle.hour) .. ":" .. string.format("%02d", Date_Actuelle.min) == "06:30" then -- Si il est 06h30
              Chauffage ("22")

          end
    end
end
fibaro:sleep(60*1000)
end

post-217-0-52591900-1417344376_thumb.png

post-217-0-13714100-1417344377_thumb.png

post-217-0-76177600-1417344377_thumb.png

post-217-0-47614100-1417344518_thumb.png

Posté(e)

Ahahah super les miniatures j'adore! Merci pour la dédicace dans le script aussi! :P

Le code àl'air impecc! Juste une petite erreur ligne 66 sur la description de ta fonction aspirateur ^^

×
×
  • Créer...