Phebus06 a écrit :Bonjour à tous,
Comme beaucoup, maintenant que ma domotique tourne correctement et que la détection de présence de mon smartphone et celui de ma femme est opérationnel, je voudrait pouvoir lancer des scénario.
Celui que j'ai en tête doit se lancer qu'une fois par jour à la première détection du smartphone et doit être différent si elle rentre seule, si je rentre seule ou si nous rentrons ensemble.
Comme j'apprends tant bien que mal le Lua, je vais essayer de faire les choses l'une après l'autre.
Première des chose, comme je vais travailler sur des variables, créer dans domoticz une variable entier 'variable_Smartphone_Isa' et une variable entier 'Variable_Smartphone_Fab'
1) - A chaque passage de l'interrupteur virtuel 'Présence_Smartphone_Isa' à ON, rajouter +1 à la variable 'variable_Smartphone_Isa'
Ce qui me permettra plus tard de déclencher un scénari que lorsque la 'variable_Smartphone_Isa' sera à 1
Du coup est ce que vous pensez que le script si dessous est bon ?
Code : Tout sélectionner
commandArray {}
if (devicechanged ['Présence_Smartphone_Isa']=='On') then
commandArray ['Variable:variable_Smartphone_Isa']=tostring(uservariables["variable_Smartphone_Isa"] +1
end
return commandArray
Je pense qu'il y a un espace entre Variable: et variable_Smartphone_Isa.
Deuxième chose, tu met la fonction "tostring", qui permet de transformer n'importe quelle donnée, en chaine. Et après tu fait + 1. En gros tu ajoute un chiffre à une chaîne.
Le LUA est peut être assez intelligent pour faire cela mais je pense qu'il vaut mieux faire chiffre plus chiffre...
Ensuite je voudrais rajouter :
2) - Une remise à 0 de la variable 'variable_Smartphone_Isa' tous les jours à 05h00
et la je bloque ....
Le problème dans ton besoin c'est que pour le point 2 tu veux remettre la variable a 0 a une certaines heures; il faut que domoticz aille vérifier ton script toutes les minutes pour savoir s'il est l'heure.
Et pour le point 1; il faut que domoticz aille vérifier ton script au moment ou ton device change de statu.. Les deux en même temps sont incompatibles. Car si tu verifie toutes les minutes l'heure du script alors ton device n'aura pas changé de statu, tu auras donc une erreure. Il faut faire deux scripts différents.
Un device et un time.
Pour la fonction en elle-même, il te faut l'heure exacte. La fonction os.date contient le timestamp exact au moment de l’exécution en seconde.
On transforme cette valeur en 'hh:mm' ensuite on la compare a '05:00'. Le problème c'est pour la bloquer.
Apres pour t'en donner plus, tu peux décomposer ton script et simplifier son écriture:
1/Utiliser une variable local pour pouvoir la traiter mathematiquement:
et dans ton script:
Code : Tout sélectionner
isa = isa + 1
commandArray['Variable: variable_Smartphone_Isa']=isa
2/Réduire le nom de ta variable:
Au lieu de variable_Smartphone_Isa; Smartphone Isa est suffisant (variable ne sert a rien vu qu'il s'agit forcement d'un variable; _ ne servant a rien vu que tu traite le nom comme une chaine). Moi je mettrai un espace car plus tard quand tu en auras les connaissances tu verras que tu peux traiter la recherche d'un mot dans ta chaîne. Cela pourra t’être utile dans le cas de deux Smartphones.
3/Tu cherches a faire:
SI il est 5h ALORS : variable_Smartphone_Isa = 0
SI Presence_Smartphone_Isa passe a On ALORS : ajouter 1 a la variable
et tu doit ajouter un script quand ta variable est a 1
Je pense que tu peux simplifier en disant:
SI Presence_Smartphone_Isa passe a On ET que c'est la première fois depuis 5h du matin ALORS :
(mais je suis d'accord, ca demande plus de connaissance).
A terme tu pourras faire ca pour tes deux téléphones en disant:
SI 'un des devices commençant par Presence' passe a On ET que c'est la première fois de la journée ALORS :