Scénario pluie blockly lua avec Weather Underground
Scénario pluie blockly lua avec Weather Underground
Bonjour,
Je souhaite créér un scénario très simple d'arrosage conditionnel en fonction des précipitations du type :
SI il a plu
ALORS annuler arrosage
J'arrive à récupérer les données de précipitations depuis Weather Underground (WU) mais pas à les exploiter avec Domoticz dans un scénario blockly et là est mon problème.
Ces données en millimètre sont récupérées selon le format WU "PluieParHeure,PluieParJour". Par exemple "0;1.7" signifie 0mm dans l'heure et 1.7mm dans la journée. Ce qui m'intéresse c'est la pluie dans la journée et non dans l'heure.
La widget Météo de Domoticz est associée à la variable "Pluie_WU". Cette widget affiche 1,7 mm (voir Pluie_WU.jpg).
Mais Pluie_WU dans blockly est associé à la valeur de PluieParHeure.
Alors j'ai créé un scénario lua afin d'isoler les deux variables locales "PluieParHeure,PluieParJour" selon le script suivant qui fonctionne bien et renvoie les deux valeurs dans le log :
Script lua :
commandArray = {}
PluieParHeure, PluieParJour = otherdevices_svalues['Pluie_WU']:match("([^;]+);([^;]+)")
PluieParHeure = tonumber(PluieParHeure)
PluieParJour = tonumber(PluieParJour)
print("Pluie par heure " .. PluieParHeure)
print("Pluie par jour " .. PluieParJour)
return commandArray
Print dans le log :
2022-02-18 22:38:00.014 Status: LUA: Pluie par heure 0
2022-02-18 22:38:00.015 Status: LUA: Pluie par jour 1.7
2022-02-18 22:39:00.031 Status: LUA: Pluie par heure 0
2022-02-18 22:39:00.032 Status: LUA: Pluie par jour 1.7
Et là je suis sec car je ne sais pas comment exploiter dans un scénario bockly ces deux variables qui sont locales à lua.
Il doit bien y avoir une possibilité de passerelle entre lua et blockly ?
Merci pour vos conseils.
Je souhaite créér un scénario très simple d'arrosage conditionnel en fonction des précipitations du type :
SI il a plu
ALORS annuler arrosage
J'arrive à récupérer les données de précipitations depuis Weather Underground (WU) mais pas à les exploiter avec Domoticz dans un scénario blockly et là est mon problème.
Ces données en millimètre sont récupérées selon le format WU "PluieParHeure,PluieParJour". Par exemple "0;1.7" signifie 0mm dans l'heure et 1.7mm dans la journée. Ce qui m'intéresse c'est la pluie dans la journée et non dans l'heure.
La widget Météo de Domoticz est associée à la variable "Pluie_WU". Cette widget affiche 1,7 mm (voir Pluie_WU.jpg).
Mais Pluie_WU dans blockly est associé à la valeur de PluieParHeure.
Alors j'ai créé un scénario lua afin d'isoler les deux variables locales "PluieParHeure,PluieParJour" selon le script suivant qui fonctionne bien et renvoie les deux valeurs dans le log :
Script lua :
commandArray = {}
PluieParHeure, PluieParJour = otherdevices_svalues['Pluie_WU']:match("([^;]+);([^;]+)")
PluieParHeure = tonumber(PluieParHeure)
PluieParJour = tonumber(PluieParJour)
print("Pluie par heure " .. PluieParHeure)
print("Pluie par jour " .. PluieParJour)
return commandArray
Print dans le log :
2022-02-18 22:38:00.014 Status: LUA: Pluie par heure 0
2022-02-18 22:38:00.015 Status: LUA: Pluie par jour 1.7
2022-02-18 22:39:00.031 Status: LUA: Pluie par heure 0
2022-02-18 22:39:00.032 Status: LUA: Pluie par jour 1.7
Et là je suis sec car je ne sais pas comment exploiter dans un scénario bockly ces deux variables qui sont locales à lua.
Il doit bien y avoir une possibilité de passerelle entre lua et blockly ?
Merci pour vos conseils.
- Pièces jointes
-
- Pluie_WU.jpg (12.11 Kio) Consulté 1708 fois
Re: Scénario pluie blockly lua avec Weather Underground
Bonjour Johndalar et bienvenu sur le forum
Je viens de déplacer ton sujet dans la section dédiée aux scripts.
Le langage Blocky est vite limité. Si tu arrives à utiliser le LUA pour récupérer les infos que tu souhaites, pourquoi ne continus tu pas en LUA ?
Si tu as besoin d'infos supplémentaire sur le LUA, tu peux regarder le lien Débuter en programmation que j'ai dans ma signature.
Je viens de déplacer ton sujet dans la section dédiée aux scripts.
Le langage Blocky est vite limité. Si tu arrives à utiliser le LUA pour récupérer les infos que tu souhaites, pourquoi ne continus tu pas en LUA ?
Si tu as besoin d'infos supplémentaire sur le LUA, tu peux regarder le lien Débuter en programmation que j'ai 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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Scénario pluie blockly lua avec Weather Underground
Bonjour Keros
,
En fait ce n'est pas pour moi.
Un scénario intégralement en lua sera difficile à maintenir pour une personne qui n'y connait rien en programmation alors que blockly elle y arriverait car très didactique.
Et c'est dommage que blockly/Domoticz soit si limité dans la gestion des variables externes.
Bon, je vais passer du temps sur lua mais si j'arrive à un script intégralement en lua je sais que ce ne sera pas jouable pour la personne qui l'utilisera.
Merci quand même.
En fait ce n'est pas pour moi.
Un scénario intégralement en lua sera difficile à maintenir pour une personne qui n'y connait rien en programmation alors que blockly elle y arriverait car très didactique.
Et c'est dommage que blockly/Domoticz soit si limité dans la gestion des variables externes.
Bon, je vais passer du temps sur lua mais si j'arrive à un script intégralement en lua je sais que ce ne sera pas jouable pour la personne qui l'utilisera.
Merci quand même.
Re: Scénario pluie blockly lua avec Weather Underground
Peut-être que tu peux le couper en deux parties : tu récupères l'info souhaitée en LUA et tu la pousses dans une variable utilisateur. Dans un deuxième temps, le blocky peut récupérer la variable utilisateur et traiter la partie "programme" sans se soucier de la récupération des données.
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Scénario pluie blockly lua avec Weather Underground
Bonsoir Keros,
Merci.
C'est ce que j'ai tenté mais ça ne marche pas. J'ai déclaré la variable utilisateur "PluieParJourVariable" depuis Domoticz.
Ensuite, dans le code lua je lui donne la valeur récupérée depuis Pluie_WU (voir tous les artifices pour y arriver, il y a probablement plus simple ...), je la vois évoluer en log mais elle ne bouge pas dans Domoticz et donc inexploitable dans blockly.
Voilà le code que j'ai écrit en lua :
Et voilà le blockly tout simple qui devrait exploiter cette variable "PluieParJourVariable" :
![Image]()
J'ai tout essayé en vain, conversion en tostring, des curl, etc.
Si tu as une idée, je suis preneur.
A+
Merci.
C'est ce que j'ai tenté mais ça ne marche pas. J'ai déclaré la variable utilisateur "PluieParJourVariable" depuis Domoticz.
Ensuite, dans le code lua je lui donne la valeur récupérée depuis Pluie_WU (voir tous les artifices pour y arriver, il y a probablement plus simple ...), je la vois évoluer en log mais elle ne bouge pas dans Domoticz et donc inexploitable dans blockly.
Voilà le code que j'ai écrit en lua :
Code : Tout sélectionner
-- SCRIPT LUA Pluie
-- Ce script fonctionne avec Weather Underground (WU)
-- en recuperant les valeurs pluie par jour (en mm)
-- et permet de stopper un arrosage si il y a eu des precipitations.
-- Sur Domoticz le capteur meteo (widget) est declare par Pluie_WU.
-- Pluie_WU se décompose en PluieParHeure et PluieParJour.
-- Deux capteurs virtuels PluieParHeureVirtual et PluieParJourVirtual sont egalement declares en tant que Precipitations.
-- Cela permet de visualiser en direct sur Domoticz les deux valeurs de Pluie_WU.
-- PluieParJourVirtual se decompose en deux variables PluieParJourVirtual1 et PluieParJourVirtual2.
-- C'est PluieParJourVirtual2 qui nous intéresse et qui est copiee dans PluieParJourVariable.
-- La variable utilisateur PluieParJourVariable est egalement déclaree sur Domoticz.
-- Elle est utilisee dans blockly en test et stoppe un arrosage en cas de precipitations.
commandArray = {}
-- Declaration des deux varirables PluieParHeureVirtual et PluieParJourVirtual selon index
local idx_PluieParHeureVirtual = 21
local idx_PluieParJourVirtual = 22
-- Extraction de PluieParHeure et PluieParJour de Pluie_WU
PluieParHeure, PluieParJour = otherdevices_svalues['Pluie_WU']:match("([^;]+);([^;]+)")
-- Conversion en number
PluieParHeure = tonumber(PluieParHeure)
PluieParJour = tonumber(PluieParJour)
-- Tracage log
print("Pluie par heure " .. PluieParHeure)
print("Pluie par jour " .. PluieParJour)
-- Copies de PluieParHeure et PluieParJour dans respectivement PluieParHeureVirtual et PluieParJourVirtual
commandArray[idx_PluieParHeureVirtual] = { ['UpdateDevice'] = idx_PluieParHeureVirtual..'|1|0;'..PluieParHeure+2 }
commandArray[idx_PluieParJourVirtual] = { ['UpdateDevice'] = idx_PluieParJourVirtual..'|1|0;'..PluieParJour+3 }
-- Extraction des deux valeurs de PluieParJourVirtual dans PluieParJourVirtual1 et PluieParJourVirtual2
PluieParJourVirtual1, PluieParJourVirtual2 = otherdevices_svalues['PluieParJourVirtual']:match("([^;]+);([^;]+)")
-- Conversion en number
PluieParJourVirtual1 = tonumber(PluieParJourVirtual1)
PluieParJourVirtual2 = tonumber(PluieParJourVirtual2)
-- commandArray['variable:PluieParJourVariable']= tostring(uservariables["PluieParJourVariable"])
-- Tracage log
print("Pluie par jour virtuel1 " .. PluieParJourVirtual1)
print("Pluie par jour virtuel2 " .. PluieParJourVirtual2)
-- Recuperation de PluieParJourVirtual2 dans la variable utilisateur PluieParJourVariable
PluieParJourVariable = PluieParJourVirtual2
-- Tracage log
print("Pluie par jour variable " .. PluieParJourVariable)
return commandArray J'ai tout essayé en vain, conversion en tostring, des curl, etc.
Si tu as une idée, je suis preneur.
A+
- Pièces jointes
-
- Sans titre 3.jpg (15.3 Kio) Consulté 1613 fois
Re: Scénario pluie blockly lua avec Weather Underground
As tu vérifié que ton script s'exécutait ? Tu as mis quoi comme trigger ?
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Scénario pluie blockly lua avec Weather Underground
Oui et toutes les minutes, voici extract du log car j'ai mis des traces dans tous les coins :
En trigger : All
Code : Tout sélectionner
2022-03-02 16:13:00.331 Status: LUA: Pluie par heure 0
2022-03-02 16:13:00.331 Status: LUA: Pluie par jour 0.0
2022-03-02 16:13:00.331 Status: LUA: Pluie par jour virtuel1 0
2022-03-02 16:13:00.331 Status: LUA: Pluie par jour virtuel2 3.0
2022-03-02 16:13:00.332 Status: LUA: Pluie par jour variable 3.0
2022-03-02 16:13:00.380 Status: EventSystem: Script event triggered: Script lua Pluie
2022-03-02 16:14:00.352 Status: LUA: Pluie par heure 0
2022-03-02 16:14:00.352 Status: LUA: Pluie par jour 0.0
2022-03-02 16:14:00.352 Status: LUA: Pluie par jour virtuel1 0
2022-03-02 16:14:00.352 Status: LUA: Pluie par jour virtuel2 3.0
2022-03-02 16:14:00.353 Status: LUA: Pluie par jour variable 3.0
2022-03-02 16:14:00.402 Status: EventSystem: Script event triggered: Script lua Pluie
Dernière modification par Keros le 02 mars 2022, 18:37, modifié 1 fois.
Raison : Merci d'éditer le dernier message pour y rajouter l'information supplémentaire
Raison : Merci d'éditer le dernier message pour y rajouter l'information supplémentaire
Re: Scénario pluie blockly lua avec Weather Underground
Tu remplis ta variable avec :
La valeur est une chaine avec le formatage tostring().
Et dans ton blocky, tu essayes de faire une comparaison mathématique. Ta uservariable est de quel type ?
Code : Tout sélectionner
commandArray['variable:PluieParJourVariable']= tostring(uservariables["PluieParJourVariable"])Et dans ton blocky, tu essayes de faire une comparaison mathématique. Ta uservariable est de quel type ?
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos