Page 1 sur 1

Précipitation en LUA

Publié : 13 juil. 2021, 18:09
par Olivierxp
Bonjour,

je souhaiterai convertir ce blocky en LUA :
prec.PNG
prec.PNG (82.42 Kio) Consulté 2286 fois
Le souci que je rencontre et, qui m incite a me lancer en LUA, est que le device weather précipitation qui est tiré de darksky me propose plusieurs data :

rain et rain rate.

Or, dans blocky il lie rain rate et non pas rain, ce qui rend mon programme non utilisable.
rain.PNG
rain.PNG (147.14 Kio) Consulté 2286 fois
donc quel est la bonne commande pour préciser la valeur a lire dans la programmation?

Cordialement

Re: Précipitation en LUA

Publié : 13 juil. 2021, 18:28
par Keros
Il te faut lire le fichier Json. Il y a plusieurs exemples sur le forum. J'en ai écrit un pour récupérer la météo de OpenWeatherMap (voir lien dans ma signature).

Re: Précipitation en LUA

Publié : 23 juil. 2021, 16:57
par Olivierxp
Bonjour,

j ai juste un problème de syntaxe pour écrire le script : Ce que je souhaite pour m entrainer c est juste faire un bouton Pluie qui s active quand la pluviométrie est supérieur a 0. C est a dire la sous valeur rain et non rainrate.
En gros un code qui ressemblerai a ca :

Code : Tout sélectionner

commandArray = {}
   if otherdevices_svalues['Rain'] > 0 and otherdevices['pluie'] == 'Off' then
      commandArray['pluie'] = 'On'
   end
return commandArray
Mais du coup, si vous pouvez me faire une version corrige qui fonctionne.
Moi learning hard :D
Apres quand darksky sera fini je n aurai qu' a récupérer les données ailleurs.

Re: Précipitation en LUA

Publié : 23 juil. 2021, 17:10
par Keros
Poste-nous ton script avec ton problème de syntaxe (ma philosophie sur le forum)

Re: Précipitation en LUA

Publié : 05 oct. 2022, 00:20
par Olivierxp
Je m'auto réponds, voici le script pour extraire les sous values qui sont en faite les chaines de données. J'en ai tiré un sélecteur Biome qui va basculer sur la condition du moment en fonction de critère météo : Pluie, vent, gèle, canicule.

Code : Tout sélectionner

commandArray = {}
local executionTime = '05:03'
--Rainmeter data:
sRainmeterCurrent, sRainmeterTotal = otherdevices_svalues['Precipitation']:match("([^;]+);([^;]+)")

sRainmeterCurrent = tonumber(sRainmeterCurrent);
sRainmeterTotal = tonumber(sRainmeterTotal);
--Température ext data:
stemp = otherdevices_svalues['THB']:match("([^;]+)")

stemp = tonumber(stemp);
--Vent data
sDirection, sDirectionStr, sSpeed, sGust, sTemp, sChill  = otherdevices_svalues['Vent']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")

sSpeed = tonumber(sSpeed);

if (otherdevices['Biome']   ~= 'Pluie' and sRainmeterTotal >= 2 and otherdevices['Biome']  ~= 'Gele' and otherdevices['Hiver']  == 'Off')
   then commandArray['Biome']='Set Level: 10'
       
elseif (otherdevices['Biome']   ~= 'Gele' and stemp <= 0)
then commandArray['Biome']='Set Level: 20'
       
elseif (otherdevices['Biome']   ~= 'Canicule' and stemp >= 25 and os.date('%H:%M') == executionTime)
   then commandArray['Biome']='Set Level: 30'
       
elseif (otherdevices['Biome']   ~= 'Automne' and sRainmeterTotal >= 2 and otherdevices['Hiver']  == 'On')
    then commandArray['Biome']='Set Level: 40'
        
elseif (otherdevices['Biome']   ~= 'Vent' and sSpeed >= 100 and otherdevices['Biome']  ~= 'Gele' and otherdevices['Biome']  ~= 'Canicule')
    then commandArray['Biome']='Set Level: 50'

return commandArray

end