Page 3 sur 5

Re: Correction de script LUA

Publié : 06 févr. 2019, 17:22
par f0emm
Salut
Merci Denis !
Du coup c'est bon, enfin à quelques parenthèses près ?
Verdict d'ici une heure à l'heure du coucher de soleil.
Je continue dans ma lancé et le plus compliqué reste à venir avec la filtration de la piscine.
Je vais m'attaquer au store banne dans un premier temps.
Merci encore.
Bonne soirée.
A+
Fab

Re: Correction de script LUA

Publié : 06 févr. 2019, 18:13
par denis_brasseur
Tu peux simplifier ceci :

Code : Tout sélectionner

commandArray={}

local heure = os.date("%H:%M")
-- retourne l'heure du coucher de soleil ex: "22:15"
coucherSoleil = string.sub(os.date("!%X",60*timeofday['SunsetInMinutes']), 1, 5)
---------------------------------------------------------------------------------------

 if heure == coucherSoleil and heure < "19:15" and otherdevices['Alarme']=='Off' then
    
    commandArray['Appoint salon']='On'
    end
        
    if heure == coucherSoleil and heure < "19:15" and otherdevices['Alarme']=='Off' and otherdevices['A1-Eclairage piscine']=='Off' then
        
    commandArray['A1-Eclairage piscine']='On'
    
end
return commandArray
comme cela, meme fonctionnement, plus simple et plus propre

Code : Tout sélectionner

commandArray={}

local heure = os.date("%H:%M")
-- retourne l'heure du coucher de soleil ex: "22:15"
coucherSoleil = string.sub(os.date("!%X",60*timeofday['SunsetInMinutes']), 1, 5)
---------------------------------------------------------------------------------------
if (heure == coucherSoleil and heure < "19:15" and otherdevices['Alarme']=='Off') then
    commandArray['Appoint salon']='On'
    	if otherdevices['A1-Eclairage piscine']=='Off' then
    		commandArray['A1-Eclairage piscine']='On'
	end
end
return commandArray

Re: Correction de script LUA

Publié : 06 févr. 2019, 18:29
par f0emm
Tout c'est mis en marche ! nickel.

Je vais jeter un œil sur la simplification, mais déjà je suis content, ça avance et je commence à comprendre le principe.

Du coup je me suis penché sur le chauffe eau et une petit erreur s'est glissée en ligne 4 .....

Code : Tout sélectionner

commandArray={}

local heure = os.date("%H:%M")
local Temp. = tonumber(string.format("%.1f", otherdevices_temperature['Temp. exterieur']))
---------------------------------------------------------------------------------------

if Temp. <= 3 and heure == "02:00" and otherdevices['V-Chauffe eau']=='Off' then
commandArray['V-Chauffe eau']='On'
end
  
   if Temp. > 3 and heure == "03:00" and otherdevices['V-Chauffe eau']=='Off' then
   commandArray['V-Chauffe eau']='On'
   
        if heure == "07:25" and otherdevices['V-Chauffe eau']=='On' then
        commandArray['V-Chauffe eau']='Off'

end
return commandArray
Je vais même finir par aimer ça :lol:
C'est madame qui grogne, j'y passe mes soirées :oops:

Re: Correction de script LUA

Publié : 06 févr. 2019, 18:40
par f0emm
C'était le point après Temp qui déconnait

Code : Tout sélectionner

commandArray={}

local heure = os.date("%H:%M")
now=os.date("*t")
---------------------------------------------------------------------------------------
if now.min % 5 == 0 then  -- exécution toutes les 5 minutes
local matemperature = tonumber(string.format("%.1f", otherdevices_temperature['Temp. exterieur']))
    end

if matemperature <= 3 and heure == "02:00" and otherdevices['V-Chauffe eau']=='Off' then
commandArray['V-Chauffe eau']='On'
end
  
   if matemperature > 3 and heure == "03:00" and otherdevices['V-Chauffe eau']=='Off' then
   commandArray['V-Chauffe eau']='On'
   end
   
        if heure == "07:25" and otherdevices['V-Chauffe eau']=='On' then
        commandArray['V-Chauffe eau']='Off'
        end

return commandArray
Je pense que c'est OK.
Je l'espère, sinon c'est douche froide pour tout le monde demain soir !

Re: Correction de script LUA

Publié : 06 févr. 2019, 20:43
par f0emm
Arfff !

Error: EventSystem: in 50 Script-Chauffe eau: [string "commandArray={}..."]:10: attempt to compare nil with number

Oula, c'est la douche froide assurée :lol:


Plus d'erreur dans le LOG avec ce script

Code : Tout sélectionner

commandArray={}

local heure = os.date("%H:%M")
now=os.date("*t")
---------------------------------------------------------------------------------------
if now.min % 1 == 0 then  -- exécution toutes les minutes
	local t = tonumber(string.format("%.1f", otherdevices_temperature['Temp. exterieur']))
	
      if t <= 3 and heure == "02:00" and otherdevices['V-Chauffe eau']=='Off' then
      commandArray['V-Chauffe eau']='On'
      commandArray['SendNotification']='Chauffe eau#Mise en marche à 2h00##0###GCM'
      end
  
         if t > 3 and heure == "03:00" and otherdevices['V-Chauffe eau']=='Off' then
         commandArray['V-Chauffe eau']='On'
         commandArray['SendNotification']='Chauffe eau#Mise en marche à 3h00##0###GCM'
         end
   
             if heure == "07:25" and otherdevices['V-Chauffe eau']=='On' then
             commandArray['V-Chauffe eau']='Off'
             commandArray['SendNotification']='Chauffe eau#Extinction##0###GCM'
         end
end
return commandArray

Re: Correction de script LUA

Publié : 07 févr. 2019, 18:46
par f0emm
Coucou c'est encore moi :lol:

Une petite question, est il possible dans un script d'en activer/désactiver un autre ?
J'ai cru lire par là que cela était déconseillé ?

C'est pour commander mon store banne en manuel.

Script de mon store en automatique avec sécurité vent et ouverture/fermeture suivant le vent et les UV.

Code : Tout sélectionner

commandArray={}

local Vent = uservariables['Vent']

UVN1, UVN2 = otherdevices_svalues['Oregon UVN']:match("([^;]+);([^;]+)")
UV1 = tonumber(UVN1)
UV2 = tonumber(UVN2)
--print("UV1 " .. UV1)
--print("UV2 " .. UV2)

----------------------------------------------------------------------------------------------

if otherdevices['Store Terrasse']=='Closed' then
  if Vent <= 15 and UV1 >= 6 then
               
  commandArray['Store Terrasse']='Open'
  commandArray['SendNotification']='Store banne#Il fait beau, le store s\'ouvre.##0###GCM'

    if otherdevices['Store Terrasse']=='Open' then
      if Vent >= 25 or UV1 <= 4 then
               
      commandArray['Store Terrasse']='Closed'
      commandArray['SendNotification']='Store banne#Trop de vent, manque d UV, le store s\'est fermé.##0###GCM'
      end
    end
  end
end
return commandArray
Merci.
Ah oui ! la douche sera chaude ce soir :D

Bonne soirée.
A+
Fab

Re: Correction de script LUA

Publié : 07 févr. 2019, 18:57
par denis_brasseur
Tu a imbriqué Open dans le Closed, ta conditon if = Closed ne sera jamais respectée, le store ne peux pas etre ouvert et fermé :

Code : Tout sélectionner

if otherdevices['Store Terrasse']=='Closed' then
	---------------
    if otherdevices['Store Terrasse']=='Open' then
     --------------
	end
end

Code : Tout sélectionner

commandArray={}

local Vent = uservariables['Vent']

UVN1, UVN2 = otherdevices_svalues['Oregon UVN']:match("([^;]+);([^;]+)")
UV1 = tonumber(UVN1)
UV2 = tonumber(UVN2)
--print("UV1 " .. UV1)
--print("UV2 " .. UV2)

----------------------------------------------------------------------------------------------

if otherdevices['Store Terrasse']=='Closed' then
	if Vent <= 15 and UV1 >= 6 then	   
		commandArray['Store Terrasse']='Open'
		commandArray['SendNotification']='Store banne#Il fait beau, le store s\'ouvre.##0###GCM'
	end
else if otherdevices['Store Terrasse']=='Open' then
	if Vent >= 25 or UV1 <= 4 then   
		commandArray['Store Terrasse']='Closed'
		commandArray['SendNotification']='Store banne#Trop de vent, manque d UV, le store s\'est fermé.##0###GCM'
	end
end
return commandArray

Re: Correction de script LUA

Publié : 07 févr. 2019, 19:50
par f0emm
Salut
Ah ! le elseif.

Respect, un coup d’œil et hop ....... un petit rappel au novice que je suis :roll:
Merci Denis.
Bonne soirée.
A+
Fab

Re: Correction de script LUA

Publié : 07 févr. 2019, 22:25
par f0emm
Bonsoir,

Une petite question, est il possible dans un script d'en activer/désactiver un autre ?
J'ai cru lire par là que cela était déconseillé ?

Merci
Bonne soirée
A+
Fab

Re: Correction de script LUA

Publié : 08 févr. 2019, 09:10
par landaisbenj
Hello. La seule facon de faire et de creer un device virtuelle.. Tu pourras le passer a On ou Off par un script, et tu pourras le valider en condition dans un autre.

Mais tu ne peux pas modifier les activations des scripts. (du moins pas encore, ce serait peutetre possible en json un jour qui sait ....?)