Aller au contenu
Sakkhho

Pluviométrie Avec Weatherunderground

Recommended Posts

hihi t'y es presque ;-)

 

C'est :

 Precipitations

Partager ce message


Lien à poster
Partager sur d’autres sites

je dirais "p" d'après le debug

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est bien dans global, 

 

j'ai fais les deux lol, toujours pareil

Partager ce message


Lien à poster
Partager sur d’autres sites

Precipitations dans les variables

Mais pas une variable prédéfinie

Partager ce message


Lien à poster
Partager sur d’autres sites

lol il m'aime pas le plugin c'est pas possible mdr !

[DEBUG] 18:43:22: Prévision pour les 2 prochains jours : 0 mm
[ERROR] 18:43:22: line 52: attempt to index local 'precipitation' (a number value)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

est ce qu'il y a un besoin d'aller chercher la prevision à5 ou 10jours ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ok je peux voir pour rajouter 5jours par exemple.

Partager ce message


Lien à poster
Partager sur d’autres sites

Et je me rends compte avec les orages de ces jours que la notion de pluie dans l heure est inutile.

Les stations ne remontent pas assez vite l info.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
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é ?!?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui il me semble car ca bug chez eux en ce moment, j'etais aller voir sur leur site et beacoup de stations ne repondaient plus

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

my pleasure :-)

 

n'hesite pas à  partager tes evolutions, c'est toujours sympa de faire progresser les VDs avec les idées de tous

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 43 minutes, pedia a dit :

calcul d'intervalle de temps entre les 2

entre les 2 quoi ? 

avec un diff tu peux le faire non ? 

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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


 

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 7 heures, Plap3014 a dit :

@pedia Peux-tu partager ton VD?

 

Merci,

 

ou peut être un resumé des motifs faits et ou (petit tuto) pour ceux qui ont deja installé l'ancienne version.

 

merci @pedia

Partager ce message


Lien à poster
Partager sur d’autres sites

×