[LUA] Station météo Excelvan WH2310 & récupération de l'irradiance et de l'indice UV

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Madcat
Messages : 20
Inscription : 13 oct. 2017, 20:41

[LUA] Station météo Excelvan WH2310 & récupération de l'irradiance et de l'indice UV

Message par Madcat »

Bonjour à tous,
Je laisse ici un petit script pour ceux qui, comme moi, utilise une station météo pas chère, style Excelvan WH2310 ou équivalent. Cette station premier prix est visiblement assez copiée. Juste pour info, la mienne transmet fidèlement depuis 5 ans maintenant, en bord de mer, avec pour seule panne la casse il y a un mois du roulement à billes (0,23€ sur Ali E***ess).
Pour revenir au sujet, la température extérieure, l'humidité, le vent (vitesse, direction) et la pluviométrie (vitesse et cumul) sont récupérés directement par Domoticz sans aucune manipulation spéciale. Mais ni l'indice UV, ni l'irradiance solaire totale n'apparaissent, tout du moins sous leurs formes correctes.
L'indice UV apparait comme une température (t=-31,5°C pour 0 UVI, -5,9°C pour 1 UVI, etc., le pas d'incrémentation est donc de +25,6°/seuil UVI), l'irradiance apparait comme un cumul de pluie et une vitesse de précipitation (puisque deux valeurs dont une que je n'identifie pas encore).
Première chose, rajouter un $ devant le nom des mesures de température et de pluie (pour moi, $mesureUV et $irradianceSolaire) ce qui permet de les masquer à l'affichage mais de les laisser actives pour le calcul.
Les idx utilisés sont 480 ($mesureUV), 481 ($irradianceSolaire), tous deux masqués donc, et 483 (Indice UV) et 484 (Irradiance solaire) qui eux sont des capteurs virtuels crées pour l'occasion et affichés dans l'onglet Météo. Bien entendu, ces deux capteurs virtuels crées sont déclarés à la création comme capteurs UV et irradiance.
Ensuite les deux scripts, mis en "Trigger : Time" dans Domoticz, puisque les sondes émettent toutes les 45 secondes.

Pour le script UV:

Code : Tout sélectionner

--
-- Conversion mesure UV (idx 480  483)
--
commandArray = {}
--print('---***--- Script de conversion idx 480  483')
Level = otherdevices_svalues['$mesureUV']
--print('Mesure brute UV (idx 480):'..Level)
Zero = 31.5 -- Quand UV=0, Domoticz affiche -31,5°C
Pas = 25.6 -- Quand UV=1, Domoticz affiche -5,9°C = -31,5 + 25,6
Level = (Zero + Level) / Pas
--print('Indice UV (idx 483):'..Level)
commandArray[#commandArray+1] = {['UpdateDevice'] = 483 .. '|0|' .. Level .. ';UVI'}
--print('---***--- Script idx 480  483 terminé !')
return commandArray
Les -- devant les "print()" peuvent être retirés pour afficher les mesures dans le log.

Pour le script d'irradiance solaire:

Code : Tout sélectionner

--
-- Conversion mesure irradiance (idx 481  484)
--
commandArray = {}
--print('---***--- Script de conversion idx 481  484')
Irrad1, Irrad2 = otherdevices_svalues['$irradianceSolaire']:match("([^;]+);([^;]+)") -- match permet de séparer les 2 variables
--print('Mesure brute solaire non identifiée (idx 484, valeur 1):'..Irrad1)
--print('Mesure brute irradiance solaire (idx 484, valeur 2):'..Irrad2)
Diviseur = 5
--Irrad2 = 110080
Irrad2 = Irrad2 / Diviseur
--print('Irradiance solaire (idx 484):'..Irrad2)
commandArray[#commandArray+1] = {['UpdateDevice'] = 484 .. '|0|' .. Irrad2 .. ';W/m2'}
--print('---***--- Script idx 481  484 terminé !')
return commandArray
Je commenterai ce post dés que j'aurai identifié la deuxième valeur, et trouvé un diviseur plus juste pour le script d'irradiance.
Normalement, cette station météo devrait être intégrée totalement (avec UV et irradiance) dans RFLink v.49, mais il tarde à venir.
Si vous ave une remarque, une idée ou une amélioration, je suis quelquefois disponibles, tentez votre chance, on ne sait jamais...
L'hiver vient...
Répondre