Précipitation en LUA

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 <\>.
Olivierxp
Messages : 15
Inscription : 29 sept. 2018, 09:58

Précipitation en LUA

Message par Olivierxp »

Bonjour,

je souhaiterai convertir ce blocky en LUA :
prec.PNG
prec.PNG (82.42 Kio) Consulté 2284 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é 2284 fois
donc quel est la bonne commande pour préciser la valeur a lire dans la programmation?

Cordialement
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Précipitation en LUA

Message 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).
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
Olivierxp
Messages : 15
Inscription : 29 sept. 2018, 09:58

Re: Précipitation en LUA

Message 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.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Précipitation en LUA

Message par Keros »

Poste-nous ton script avec ton problème de syntaxe (ma philosophie sur le forum)
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
Olivierxp
Messages : 15
Inscription : 29 sept. 2018, 09:58

Re: Précipitation en LUA

Message 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
Répondre