Aller au contenu

Pluviométrie Avec Weatherunderground


Sakkhho

Messages recommandés

Trop stressé, reprendre calmement.

la variable est bonne ? "

Precipitations

"

mets une valeur 0 dedans même si je crois que ça marche sans

Click sur Initialiser

Click (après 1mn) sur rafraichir

pas de raison que ca marche pas chez toi

Lien vers le commentaire
Partager sur d’autres sites

yop :)

 

alors voila ... ca marche la je pense

[DEBUG] 20:32:14: 0
[DEBUG] 20:32:14: 1
[DEBUG] 20:32:14: Il est tombé 0 mm depuis 1 heure
[DEBUG] 20:32:14: Il est tombé 1 mm aujourd'hui
[DEBUG] 20:32:14: Partiellement nuageux
[DEBUG] 20:32:14: 0
[DEBUG] 20:32:14: Partiellement nuageux
[DEBUG] 20:32:14: 0
[DEBUG] 20:32:14: Partiellement nuageux
[DEBUG] 20:32:14: 0
[DEBUG] 20:32:14: Prévision pour les 2 prochains jours : 0 mm
Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Bizarrement depuis quelques jour le VD plante parfois et parfois ca passe.

[ERROR] 09:03:54: line 18: attempt to index field 'current_observation' (a nil value)

ligne 18

fibaro:debug(jsonTable.current_observation.precip_1hr_metric)

je me demande si il y a pas qq chose qui a changé chez WU

Lien vers le commentaire
Partager sur d’autres sites

dans le doute, remplace comme ça, ça évitera le plantage :

fibaro:debug(jsonTable.current_observation.precip_1hr_metric or "")

WU ne doit pas renvoyer un JSON complet de temps en temps, peut-être un bug de leur coté ?!?

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Merci Sakkhho pour ce VD...

Apres une grosse periode sans travail sur ma domotique, je m'y remets un peu pour me changer les idees. La base de ton module me plaît beaucoup. Je vais la travailler àma sauce.

Envoyé de mon SM-N910F en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

  • 8 mois après...

Bonjour à tous,

 

Je me suis penché ce week-end sur ce sympathique VD. 

Je vous propose mes petits ajustements :

J'ai tweaké les icônes des @couillerot pour les rendre un peu plus parlant pour moi, avec une icône :

- on n'arrose pas parce qu'il pleut,

- on n'arrose pas car pas besoin,

- un arrosage court est nécessaire,

- un arrosage long est nécessaire (notez l'herbe jaunissante qui a très soif... ;-)

 

 

Comme dans le calcul d'arrosage, on sait s'il pleut ou pas, je récupère l'information dans une variable globale, qui me sert avec GEA pour me prévenir si j'ai laissé une fenêtre ouverte en plein déluge, et j'en profite pour adapter l'icône.

if (pluiencours) then
		msg = "Il pleut"
		fibaro:setGlobal("Arrosage", "Non")
        fibaro:call(selfId,"setProperty","currentIcon", 1021)
		fibaro:setGlobal("Pluie", "oui")

 

Il m'est arrivé que ma station de référence ne soit plus connectée et n'ai pas transmis depuis un certain temps (sur le site). J'ai donc fait un petit bout de code dans le bouton Rafraichir les données, pour vérifier que la date d'observation est bien la même que celle du jour en prenant la date de relevé :

if tonumber(jsonTable.current_observation.observation_epoch) ~= nil then
   observationtime = jsonTable.current_observation.observation_epoch

puis un peu plus bas

--Avertissement si station de référence inactive
local t1 = os.date("%d/%m/%y", observationtime)
local t2 = os.date("%d/%m/%y", now)
if (t1 == t2) then
  fibaro:debug('All Good')
  else
  fibaro:debug ('Not Good !')
  fibaro:call(id_phone, "sendPush", "Attention, station météo non joignable")
  end

J'ai adapté GEA pour qu'il ne rafraîchisse pas autour de minuit pour ne pas me faire avoir. J'essaie de m'entrainer à faire un calcul d'intervalle de temps entre les 2, afin de dire par exemple de m'envoyer un avertissement en cas de différence supérieure à 12h par exemple, mais pour le moment je patine un peu. Voir mon autre post un peu plus bas.

 

Je n'aimais pas trop le format de la date dans traitement '%Y%M%D', qui était imposé je pense pour l'intégration dans la table et les calculs dessus. J'ai donc enlevé la mise à jour du label "LblTrait" du VD qui devient : 

-- Affichage --
fibaro:call(selfId, "pressButton", "9")
fibaro:call(selfId, "setProperty", "ui.lblHier.value", rainyesterday  .. " ")
fibaro:call(selfId, "setProperty", "ui.lbl5.value", rain5days  .. " ")
fibaro:call(selfId, "setProperty", "ui.lbl10.value", rain10days  .. " ")

Le label est mis à jour par GEA au moment où il fait le traitement des données, je peux donc choisir le format voulu pour l'affichage dans le VD indépendamment de la table precipitations :

        GEA.add(true, 30, "", {{"Time", "00:06", "00:07"},{"VirtualDevice", 114, 14}, {"Function", function() fibaro:call(114, "setProperty", "ui.LblTrait.value", os.date("%x", now)) end}}) --  Traitement de l'Historique Pluie

Bravo encore pour le VD sinon.

Arrosage léger.png

Arrosage Important.png

Arrosage Non.png

Pluie_Non_Arrosage.png

Capture d’écran 2017-05-10 à 08.33.23.png

Modifié par pedia
Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, pepite a dit :

entre les 2 quoi ? 

avec un diff tu peux le faire non ? 

Entre la date actuelle et la date de mesure. 

 

Bah ce n'est pas si simple... pour moi... Et le net ne donne pas de réponse claire.

Lien vers le commentaire
Partager sur d’autres sites

Regarde ça si ça peut t'aider. 

 

-- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée.
if (not instance) then
    -- on indique la fréquence d'execution souhaitée (en minutes)
    instance = { lastrun = 0, every = 1 }
    fibaro:debug("first run")
end
 
-- on vérifie la différence entre cette exéction et la dernière (stocké dans instance.lastrun)
diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
 
-- si la différence en minutes et supérieure ou égale à  la fréquence souhaitée (instance.every)
if (diff.min >= instance.every) then
          fibaro:call(selfId, "pressButton", "1")
             
   -- on stock l'heure de la nouvelle exécution
   instance.lastrun = os.time()
   fibaro:debug("executed")
 end


 

Lien vers le commentaire
Partager sur d’autres sites

Ok j'ai trouvé simplement, quand on comprend que observation_epoch et os.time sont exprimées toutes 2 en secondes. Donc facile à soustraire.

 

Du coup : 

local interval = math.floor((tonumber(os.time())-tonumber(observationtime))/3600)
if (interval < 12) then
  fibaro:debug('All Good')
  else

  fibaro:debug ('Not Good !')
  fibaro:call(id_phone, "sendPush", "Attention, station météo non joignable depuis" ..interval .."h")

  end

Comme ça on ne se fait pas avoir si la station ne transmet plus au site.

Modifié par pedia
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
×
×
  • Créer...