Aller au contenu

Messages recommandés

Posté(e)

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)
Posté(e)

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

Posté(e)

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
Posté(e)

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.

  • 4 semaines après...
Posté(e)

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

Posté(e)

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é ?!?

Posté(e)

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

  • 1 an après...
Posté(e)

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

Posté(e)

my pleasure :-)

 

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

  • 8 mois après...
Posté(e) (modifié)

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
Posté(e)
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 ? 

Posté(e)
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.

Posté(e)

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


 

Posté(e) (modifié)

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
  • 1 mois après...
Posté(e)
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

×
×
  • Créer...