Page 7 sur 8

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 00:15
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 ...

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:01
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

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:02
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

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:07
par Flying Domotic
Ça serait plus propre, même si ça marche comme ça, vu que temperature est initialisé plus haut.

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:20
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.....

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:22
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.

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:28
par salinois
je comprends pas entre quoi et quoi !!!

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:28
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.

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 12:50
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.

Re: 1er Script avec weewx

Publié : 12 févr. 2024, 13:02
par salinois
@Flying Domotic

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