Page 1 sur 1

Script LUA de conversion de la pluie

Posté : 08 déc. 2018, 11:51
par gaeldelsart
Bonjour à tous,

J'ai un pluviomètre qui envoie sur Domoticz le taux de pluie à l'heure, et la quantité du jour. Le problème : la valeur brute est en pouce au lieu de mm. Quand il pleut, un auget qui bascule devrait être de 0,2mm, alors que Domoticz reçoit 0,254mm. J'ai donc une valeur 21% plus elevé.

J'ai créé un pluviomètre virtuel via dummy dans domoticz, et aimerais multiplier la valeur par 0,79 pour le taux et la pluie du jour.

J'ai fait ce script, avec mes faibles connaissances, mais cela ne marche pas :

Code : Tout sélectionner

  
 --------------------------------
 ------ Variables à éditer ------
 --------------------------------
 local pluie_vp2 = 135                        -- Numéro idx de la pluie dans Domoticz
 local pluie_mm = 152                        -- Numéro idx de la pluie dans Domoticz
 --------------------------------
 -- Fin des variables à éditer --
 --------------------------------

 ------------------- --------------------
 -- Fonction arrondir à deux décimales --
 ------------------- --------------------
 -- Le chiffre"x" (dec or x) correspond au nombre de décimales à prendre en compte dans le resultat
 function arrondir(num, dec)
 if num == 0 then
 return 0
 else
 local mult = 10^(dec or 1)
 return math.floor(num * mult + 0.5) / mult
 end
 end

commandArray = {}


   -- Envoi de la valeur --
srain1 = otherdevices_svalues['pluie_vp2']:match("([^;]+);")
rain1 = tonumber(srain1)*0.79;
srain2 = otherdevices_svalues['pluie_vp2']:match(";([^;]+)")
rain2 = tonumber(srain2)*0.79;
commandArray = {['UpdateDevice'] = pluie_mm .. '|0|' .. tostring(rain1)..';' .. tostring(rain2)}
return commandArray
J'ai un device pluie en idx 135, et un dummy en idx 152.
Pouvez-vous m'aider pour réaliser ce calcul afin d'avoir une pluie cohérente ?

Merci d'avance pour votre aide.

Re: Script LUA de conversion de la pluie

Posté : 08 déc. 2018, 13:52
par Datawolf
Salut,

Juste une remarque, au cas où: ta fonction arrondir marche bien mais... elle n'est pas utilisée dans le script.

@+
Datawolf

Re: Script LUA de conversion de la pluie

Posté : 08 déc. 2018, 15:48
par fredandrick65
gaeldelsart a écrit :
08 déc. 2018, 11:51
J'ai fait ce script, avec mes faibles connaissances, mais cela ne marche pas :
cela ne marche pas c est vague comme description du problème
mets de print dans ton code au besoin pour voir si les calculs se font correctement
et pourquoi des ";" en fin de ligne ?
rain1 = tonumber(srain1)*0.79;

Re: Script LUA de conversion de la pluie

Posté : 09 déc. 2018, 21:06
par gaeldelsart
Bonsoir,

Merci à vous pour votre aide.
Pour la fonction arrondir, je pensais qu'en la mettant en premier, cela s'appliquerais au résultat. Visiblement, il faut appeler la fonction.
Pour le print, je n'y avais pas pensé, c'est effectivement une bonne solution pour voir le résultat dans le log. Pour le ";" j'ai tout simplement confondu de langage de programmation.

Néanmoins, malgré plusieurs tentatives, je n'y suis pas réussi. J'ai un code d'erreur, je ne me souviens plus lequel.
J'ai réussi avec un script Bash en exécution Cron toute les minutes via le planificateur de taches de mon Synology.
Voici le code :

Code : Tout sélectionner

#!/bin/bash

pluie=`curl -s "http://000.000.0.00:0000/json.htm?type=devices&rid=135" | grep Data | awk -F " " '{print $3}' | awk -F "," '{print $1}' | awk -F ";" '{print $2}' | sed "s/\"//g"`

pluie_mm=$(awk -v scale=1 'BEGIN { printf "%.*f\n", scale, ('$pluie'*0.782609)}')

taux=`curl -s "http://000.000.0.00:0000/json.htm?type=devices&rid=135" | grep Data | awk -F " " '{print $3}' | awk -F "," '{print $1}' | awk -F ";" '{print $1}' | sed "s/\"//g"`

taux_mm=$(awk -v scale=0 'BEGIN { printf "%.*f\n", scale, ('$taux'*0.782609)}')
taux_d10=$(awk -v scale=0 'BEGIN { printf "%.*f\n", scale, ('$taux_mm'/10)}')
taux_m10=$(awk -v scale=0 'BEGIN { printf "%.*f\n", scale, ('$taux_d10'*10)}')

curl -s -i -H "Accept: application/json" "http://000.000.0.00:0000/json.htm?type=command&param=udevice&idx=152&nvalue=0&svalue=$taux_m10;$pluie_mm"
Pour information, le synology ne permets pas de faire de calcul en bash théoriquement. C'est pourquoi j'ai utilisé awk et printf.

Ce script est utile si vous avez une station météo Davis vantage pro 2 relié sur Domoticz, et avec un réglage du pluviomètre en 0,2mm.
En effet, l'impulsion du pluviomètre correspond à 0,2mm, alors que la valeur brute de la console Davis est de 0,254mm. Le calcul de conversion est bien réalisé dans la console en affichage, mais pas dans Domoticz qui effectue uniquement une lecture de la valeur brute.

Bonne soirée.

Re: Script LUA de conversion de la pluie

Posté : 07 août 2019, 12:35
par berserk
bonjour,

j'ai un soucis avec une vantage vue connecté en usb sur domoticz. Je n'ai pas les meme chiffre entre la vantage et domoticz.

Es ce que vous pensez que c'est du a la valeur "brute?"

merci d'avance

cdt