1er Script avec weewx

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: 1er Script avec weewx

Message par Flying Domotic »

Je pense qu'il faut déplacer la ligne ...

Code : Tout sélectionner

temperature = temperature:gsub(",", ".")
... juste derrière ...

Code : Tout sélectionner

temperature=string.match(line, "%-?%d+,?%d*")
Comme l'a dit Keros, il faut modifier les données juste après les avoir chargées, et avant de les utiliser.

Si, en plus, il y a des "if" autour du chargement, il est recommandé d'initialiser les variables pour être sûr qu'il y aura un truc dedans. En mettant une valeur irréelle, on peu repérer facilement quand l'extraction n'a pas été réalisée.

Après, comme le résultat est utilisé en tant que chaîne de caractères, le plus simple est de virer la conversion en numérique, qui n'apporte rien de plus que des ennuis ...
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: 1er Script avec weewx

Message par salinois »

bonjour, Flying Domotic »

ok, j'ai déplacé comme tu l'as suggéré et c'est OK.
tu m'as pas expliqué les changements dans le script...
merci

salinois
Dernière modification par salinois le 12 févr. 2024, 12:06, modifié 1 fois.
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: 1er Script avec weewx

Message par salinois »

Flying Domotic a écrit : 12 févr. 2024, 00:15 Je pense qu'il faut déplacer la ligne ...

Code : Tout sélectionner

temperature = temperature:gsub(",", ".")
... juste derrière ...

Code : Tout sélectionner

temperature=string.match(line, "%-?%d+,?%d*")
Comme l'a dit Keros, il faut modifier les données juste après les avoir chargées, et avant de les utiliser.

Si, en plus, il y a des "if" autour du chargement, il est recommandé d'initialiser les variables pour être sûr qu'il y aura un truc dedans. En mettant une valeur irréelle, on peu repérer facilement quand l'extraction n'a pas été réalisée.

Après, comme le résultat est utilisé en tant que chaîne de caractères, le plus simple est de virer la conversion en numérique, qui n'apporte rien de plus que des ennuis ...
je dois remodifier des choses sur ta derniere remarque ?

salinois
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: 1er Script avec weewx

Message par Flying Domotic »

Ça serait plus propre, même si ça marche comme ça, vu que temperature est initialisé plus haut.
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: 1er Script avec weewx

Message par salinois »

Code : Tout sélectionner

for line in io.lines(filename) do
   if string.find(line,"\"temp\"") then
      temperature=string.match(line, "%-?%d+,?%d*")
      print("Temperature: "..tostring(temperature))
  end
   if string.find(line,"\"hum\"") then
      humidity=string.match(line, "%d+")
      print("Humidity: "..tostring(humidity))
   end
   if string.find(line,"\"barometer\"") then
      pressure=string.match(line, "%d+")
      print("Pressure: "..tostring(pressure))
   end
end
c'est là que ça se passe, dans la boucle , la converstion numerique? comme tu as dû le voir je ne suis pas le meilleur en programmation.....
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: 1er Script avec weewx

Message par Flying Domotic »

A déplacer entre

Code : Tout sélectionner

      temperature=string.match(line, "%-?%d+,?%d*")
qui est le chargement de la variable et

Code : Tout sélectionner

      print("Temperature: "..tostring(temperature))
qui est son affichage.
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: 1er Script avec weewx

Message par salinois »

je comprends pas entre quoi et quoi !!!
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: 1er Script avec weewx

Message par Keros »

salinois a écrit : 12 févr. 2024, 12:20 c'est là que ça se passe, dans la boucle , la converstion numerique? comme tu as dû le voir je ne suis pas le meilleur en programmation.....
Oui, le tonumber convertissait en numérique.

C'est en essayant qu'on apprend ;)


Tu peux même aller jusqu'à retirer la conversion en caractère (tostring) pour l'affichage des prints puisque les variables sont déjà sous forme de caractères.
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
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: 1er Script avec weewx

Message par Flying Domotic »

salinois a écrit : 12 févr. 2024, 12:28 je comprends pas entre quoi et quoi !!!
Désolé, j'ai mal compris la question.

Pour la conversion, Keros a répondu.

En ce qui concerne mon message, l'idée était de déplacer la ligne

Code : Tout sélectionner

temperature = temperature:gsub(",", ".")
de la fin de la boucle à l'endroit indiqué, entre la lecture de la valeur et son affichage. De la sorte, on est certain qu'on ne fea la substitution que si on en a besoin, et les tests éventuels à l'intérieur de la boucle seront faits avec la bonne valeur.
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: 1er Script avec weewx

Message par salinois »

@Flying Domotic

ok, c'est ce que j'ai fait, donc je n'ai plus rien à toucher alors?
Répondre