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
C'est madame qui grogne, j'y passe mes soirées

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
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
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
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
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 ....?)