[LUA] Températures min/max et envoi par mail

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Températures min/max et envoi par mail

Message par Keros »

Merci Denis, je ne disais qu'une fonction devait bien exister :D
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Températures min/max et envoi par mail

Message par denis_brasseur »

Keros a écrit : 12 déc. 2020, 17:59 Merci Denis, je ne disais qu'une fonction devait bien exister :D
La seule limite aux fonctions, c'est notre imagination :D
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Températures min/max et envoi par mail

Message par Keros »

Oui mais sur ce coup là, il faut connaitre et savoir utiliser string.format("%02d",minute)

D'ailleurs, la fonction ne permet que d'afficher un code plus facile à lire : deuxDigits(minute) revient exactement au même que string.format("%02d",minute).

Tu pourrais même intégrer le tostring dans la fonction pour simplifier encore plus le code ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Températures min/max et envoi par mail

Message par denis_brasseur »

Keros a écrit : 12 déc. 2020, 18:07
Tu pourrais même intégrer le tostring dans la fonction pour simplifier encore plus le code ;)
Pas la peine, fonctionne avec une valeur en string ou en integer.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Températures min/max et envoi par mail

Message par Keros »

Pardon, en voyant ton exemple, je pensais que le tostring() était nécessaire.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Jbelbus
Messages : 28
Inscription : 26 févr. 2020, 11:31

Re: Températures min/max et envoi par mail

Message par Jbelbus »

J'ai testé la fonction qui fonctionne et sans la fonction qui fonctionne également.

@Keros
J'ai crié victoire trop tôt, pour faire ces test je modifie les variables en conséquence, j'indique 3 dans la variable Temp_min_ext_min je reçois donc 03 dans les messages sauf que la variable est passée à 20 et là la valeur dans les messages indique NIL.

Du coup, j'ai mis le mode sans fonction (plus court).

Une question, j'ai vu dans pas mal de scripts, la déclaration de variables locales en tête de script, ex:
local debug = 'yes'
hour = tonumber(os.date("%H"));
etc...
et ensuite commandArray = {}
D'autres scripts commence par commandArray = {} et ensuite la déclaration de variables locales.
C'est quoi la différence et l'intérêt ?
Remerci, et je crois que je vais passer beaucoup de temps pour décoder et comprendre tout cela.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Températures min/max et envoi par mail

Message par Keros »

Le Lua est un langage où il n'est pas nécessaire de déclarer une variable. Déclarer une variable signifie indiquer en tout début de script quels sont les variables qui seront utilisées et quelle est leur format (texte, nombre entier, décimal).

Concernant les scripts, les programmeurs regroupe souvent les variables de paramètre en haut du script afin quelles soient facilement identifiables et modifiable.
Mais que ce soit avant ou après le commandArray = {} ne change pas grand chose. Je pense qu'il vaut mieux le mettre après car ton script commence alors par commandArray = {} et fini par return commandArray
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Jbelbus
Messages : 28
Inscription : 26 févr. 2020, 11:31

Re: Températures min/max et envoi par mail

Message par Jbelbus »

Ok,
Une petite dernière pour comprendre.

temp = tonumber(otherdevices_svalues[sonde])

tonumber c'est compris mais otherdevices_svalues je coince.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Températures min/max et envoi par mail

Message par Keros »

otherdevices_svalues ça fait partie de la base des script en LUA : cela te permet de récupérer la valeur d'un autre device que celui qui appelle le script.

Je prends un exemple : tu as un chauffage dont tu gères les modes éco et confort par un planning. Disons que ton planning passe ton chauffage en mode eco le matin car tu pars travailler. Tu as, en plus du planning, un bouton Présence qui te permet de laisser ton chauffage en confort pendant toute la journée (pour les jours fériés par exemple).
Dans la gestion de ton chauffage, il faut donc faire appel à Présence pour savoir s'il doit appliquer la consigne Eco ou pas. C'est là qu'on utilise otherdevices_svalues['Présence'] pour récupérer l'info d'un autre device.

Mais là, on s'écartes du sujet qui est à la base un tuto pour les températures. Il faudrait plutôt que tu ouvres un sujet pour tes questions qui ne sont en lien avec celui-ci ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Jbelbus
Messages : 28
Inscription : 26 févr. 2020, 11:31

Re: Températures min/max et envoi par mail

Message par Jbelbus »

Ok, grand merci, je ne suis pas un adepte forum je vais suivre tous ces conseils j'ai bien compris.
Salutations.
Répondre