si un pipe avait été nécessaire, la modification que je t'ai proposé aurait également généré la même erreur..
puisque ça ne fait que supprimer le besoin d'aller lire le contenu de la variable, en écrivant directement..
d'ailleurs étrange que lire la variable ne fonctionnait pas..
si je peux me permettre l'usage de la variable InterrupteursSansEtat et la fonction gmatch pour remplir la table switch,
c'est sympa pour le côté didactique mais c'est un peu se compliquer la vie.
perso je trouve plus simple de remplir la table directement à la main dans le script
serte éditer le script ou la variable ne se fait pas aussi simplement, mais en à-t-on un besoin régulier?
exemple, remplacer ceci,
Code : Tout sélectionner
local switchs={}
InterrupteursSansEtat=uservariables["InterrupteursSansEtat"]
for DeviceName in string.gmatch(InterrupteursSansEtat, "[^|]+") do
switchs[#switchs + 1] = DeviceName
end
par ceci
Code : Tout sélectionner
local switchs={}
switchs['0']='Prise1'
switchs['1']='Prise2'
switchs['2']='Prise3'
-- etc..
l'usage de variables et gestion du lastupdate c'est un peu too much à mon gout aussi..
autant lancer le script toutes les 30 minutes plutôt que de vérifier que le device à été actionné il y a au moins 30 minutes..
l'idée est sympa c'est juste que j'aime faire au plus simple..
évidement ça ne donne pas le même résultat, le device pouvant être ré actionné bien avant les 30 minutes, mais est-ce gênant ?
voici le script que j'utilise personnellement, sans usage de variables.
Code : Tout sélectionner
-- script_time_check.lua
--
-- ce script renvoie la commande 'Off' aux périphériques listés, toutes les 15 minutes
-- biensure, seulement s'il sont censés être à Off ^^
--------------------------------
------ Tableau à éditer ------
--------------------------------
local check={}
check['0']='la cafetiere'
-- check['1']='la chambre'
-- check['2']='le salon'
-- check['3']='les pierres'
-- check['4']='leds'
-- etc...
--------------------------------
-- Fin du tableau à éditer --
--------------------------------
commandArray = {}
date = os.date("*t")
-- toutes les 15 minutes
if (date.min % 15 == 0) then
for key, valeur in pairs(check) do
if (otherdevices[valeur] == 'Off') then
print('CHECK : '..valeur.. ' -> ' ..otherdevices[valeur])
commandArray[tonumber(key)]={[valeur]=otherdevices[valeur]}
end
end
end
return commandArray
simplement supprimer
et le end qui suit pour prendre aussi en compte la valeur On
ce que je ne fais pas car j'ai un délai d'extinction sur le On (de ma cafetière) et cela le relancerait indéfiniment..
ce script permet de sans cesse toute les 15 minutes de lui renvoyer Off si elle est censé être éteinte bien sure, question de sécurité.
pour les commandes de chauffage ou autres..lancées par script, il suffit de ne pas tester l'état du device avant d'envoyer la commande.
ce qui est souvent fait c'est
si device pas déjà à On, envoyer On
perso j'envoie On même si déjà à On, du coups ça fiabilise d’emblée..