Steven Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 PLUVIOMETRIE (ET ARROSAGE) AVEC NETATMO firmware 4.x seulement Partie 1 : récupérer l'historique Netatmo est une station météo sur laquelle vous pouvez brancher un "pluviomètre" de la même marque. Afin d'exploiter les données de ce pluviomètre et vous pouvez utiliser l'application Netatmo ou son site web. Vous pouvez aussi installer le plugin Netatmo fourni par Fibaro. Ce dernier vous affichera uniquement les données à l'instant précis ou vous être entrain de le regarder. Nous, nous voulons allez plus loin, nous voulons connaitre les quantités de pluie ayant eu lieu depuis : 1 jour, 1 semaine, 1 mois, cela dans l'optique de pouvoir gérer correctement notre arrosage. Pour ce faire, il existe un grand nombre de script PHP, Google Script qui permet de gérer cela .. mais ... depuis la v4.x, Fibaro nous fait bénéficier de la librairie net.httpClient dans une scène et cette librairie nous permet de récupérer des données via HTTPS, ce qui auparavant n'était pas possible depuis notre HC2. Alors vu que nous avons, aujourd'hui, tout le nécessaire pour attaquer notre Netatmo directement depuis notre HC2, pourquoi s'en priver Les données recueillies par votre Netatmo sont mis à diposition via des API que vous pouvez interroger quand bon vous semble à la seul condition d'avoir un compte Développeur Netatmo (ne vous inquiéter pas, vous n'aurez pas beson de développer, ni de répondre à des questions étranges). Pour vous inscrire, c'est donc ici : https://auth.netatmo.com/fr-FR/access/signup Suite à votre enregistrement, vous allez obtenir : un id (exemple : 45b1931d19665803515b571c) un code secret (exemple : lyRkJXZLIM8xShACtmQjsCQV4U3djL08Zq1hUStbUJ4) Ces informations + votre login et mot de passe vont permettre d'accéder à vos informations. Voici donc le script nécessaire, à vous de l'importer dans une nouvelle scène et de modifier les 4 premières lignes. local n_client_id = "45b1931d19665803515b571c" local n_client_secret = "lyRkJXZLIM8xShACtmQjsCQV4U3djL08Zq1hUStbUJ4" local n_username = "______________@_____.com" local n_password = "password" local hc2_module_virtuel = 139 -- le module virtuel "Pluie" local debug = true -- affiche ou non les message dans la console local long_lat_adjust = 0.1 -- ajustement de la distance pour trouvé un pluviomètre local version = 2.0 -- ------------------------------------------------------------------------ -- NE PAS TOUCHER -- ------------------------------------------------------------------------ local force_use_rain_public = false local loc = api.get("/settings/location") local lat_ne = loc.latitude + long_lat_adjust local lon_ne = loc.longitude + long_lat_adjust local lat_sw = loc.latitude - long_lat_adjust local lon_sw = loc.longitude - long_lat_adjust local token = "" local int_id = "" local ext_id = "" local ext_bat = 0 local rain_id = "" local rain_bat = 0 local temperature_interieure = -1000 local temperature_exterieure = -1000 local co2 = -1000 local humidite_interne = -1000 local humidite_externe = -1000 local pression = -1000 local bruit = -1000 local rains = {hour = -1000, day = -1000, week = -1000, month = -1000} -- ------------------------------------------------------------------------ -- Exécuté après chaque requète HTTP -- ------------------------------------------------------------------------ function afterHttpRequest() if (temperature_interieure > -1000) then end if (temperature_exterieure > -1000) then end if (co2 > -1000) then end if (humidite_interne > -1000) then end if (humidite_externe > -1000) then end if (pression > -1000) then end if (bruit > -1000) then end if (rains["hour"] > -1000) then if (rains["hour"] == -1) then fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblHeure.value", "n/a") else fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblHeure.value", " "..rains["hour"]) end end if (rains["day"] > -1000) then if (rains["day"] == -1) then fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblJour.value", "n/a") else fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblJour.value", " "..rains["day"]) end end if (rains["week"] > -1000) then if (rains["week"] == -1) then fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblSemaine.value", "n/a") else fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblSemaine.value", " "..rains["week"]) end end if (rains["month"] > -1000) then if (rains["month"] == -1) then fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblMois.value", "n/a") else fibaro:call(hc2_module_virtuel, "setProperty", "ui.lblMois.value", " "..rains["month"]) end end end -- ------------------------------------------------------------------------ -- Affichage dans la console -- ------------------------------------------------------------------------ function log(message, force) force = force or false if (debug or force) then print(__convertToString(message)) end end -- ------------------------------------------------------------------------ -- Retourne le niveau de batterie en pourcent -- ------------------------------------------------------------------------ function calcBat(bat, ext) local max = 6000 local min = 4200 if (ext) then max = 6000 min = 3600 end if (bat > max) then bat = max end return math.floor(bat * 100 / max) end -- ------------------------------------------------------------------------ -- Arrondi -- ------------------------------------------------------------------------ local function roundToNthDecimal(num, n) local mult = 10^(n or 0) return math.floor(num * mult + 0.5) / mult end -- ------------------------------------------------------------------------ -- Interrogation de l'API -- ------------------------------------------------------------------------ function getResponseData(url, body, func) local http = net.HTTPClient() http:request(url, { options = { method = 'POST', headers = { ["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8" }, data = body }, success = function(response) func(json.decode(response.data)) afterHttpRequest() end, error = function(response) log(" ERROR !!! " .. url, true) end, }) end -- ------------------------------------------------------------------------ -- Mesures de l'unité interne -- ------------------------------------------------------------------------ function getMesuresInt() getResponseData("https://api.netatmo.net/api/getmeasure","access_token="..token.."&device_id="..int_id.."&scale=max&type=Temperature,CO2,Humidity,Pressure,Noise&date_end=last", function(data) log("----------========== Module intérieur ==========----------") temperature_interieure = data.body[1].value[1][1] co2 = data.body[1].value[1][2] humidite_interne = data.body[1].value[1][3] pression = data.body[1].value[1][4] bruit = data.body[1].value[1][5] log("temperature_interieure = " .. temperature_interieure) log("co2 = " .. co2) log("humidite_interne = " .. humidite_interne) log("pression = " .. pression) log("bruit = " .. bruit) end ) end -- ------------------------------------------------------------------------ -- Mesure de l'unité externe -- ------------------------------------------------------------------------ function getMesuresExt() getResponseData("https://api.netatmo.net/api/getmeasure","access_token="..token.."&device_id="..int_id.."&module_id="..ext_id.."&scale=max&type=Temperature,Humidity&date_end=last", function(data) log("----------========== Module extérieur ==========----------") temperature_exterieure = data.body[1].value[1][1] humidite_externe = data.body[1].value[1][2] log("temperature_exterieure = " .. temperature_exterieure) log("humidite_externe = " .. humidite_externe) end ) end -- ------------------------------------------------------------------------ -- Obtention des informations sur un pluviomètre proche -- ------------------------------------------------------------------------ function getRainNear() getResponseData("https://api.netatmo.net/api/getpublicdata","access_token="..token .. "&lat_ne="..lat_ne.."&lon_ne="..lon_ne.."&lat_sw="..lat_sw.."&lon_sw="..lon_sw, function(data) --log(data) rains["week"] = -1 rains["month"] = -1 rains["hour"] = -1 rains["day"] = -1 log("----------========== D e v i c e s =========----------") for _, v in pairs(data.body) do for l, w in pairs(v.measures) do if (type(w.rain_24h) ~= "nil") then rains["day"] = w.rain_24h rains["hour"] = w.rain_60min end end end if (rains["day"] == -1000) then log("Impossible de trouver un pluviomètre à proximité, augmentez [long_lat_adjust]", true) else log("Pluie jour : " .. rains["day"]) log("Pluie heure : " .. rains["hour"]) end end ) end -- ------------------------------------------------------------------------ -- Mesure du détecteur de pluie historique -- ------------------------------------------------------------------------ function getMesuresRain(duree, variable) local now = os.time(); getResponseData("https://api.netatmo.net/api/getmeasure","access_token="..token.."&device_id="..int_id.."&module_id="..rain_id.."&scale=1hour&type=sum_rain&real_time=true&date_begin="..os.date("!%c", (now - duree)), function(data) log("----------========== Pluie histo ==========----------") local cumul = 0 for k, v in pairs(data.body) do for l, w in pairs(v.value) do cumul = cumul + w[1] end end cumul = roundToNthDecimal(cumul, 2) rains[variable] = cumul log("rain["..variable.."] = " .. rains[variable]) end ) end -- ------------------------------------------------------------------------ -- Obtention des informations sur les devices -- ------------------------------------------------------------------------ function getDevices() getResponseData("https://api.netatmo.net/api/devicelist","access_token="..token, function(data) log("----------========== D e v i c e s =========----------") for _, v in pairs(data.body.modules) do if (v.data_type[1] == "Rain") then rain_id = v._id rain_bat = calcBat(v.battery_vp, true) else ext_id = v._id ext_bat = calcBat(v.battery_vp, true) end end int_id = data.body.devices[1]._id getMesuresInt() getMesuresExt() if (rain_id ~= "" and not force_use_rain_public) then getMesuresRain(60 * 60, "hour") getMesuresRain(60 * 60 * 24, "day") getMesuresRain(60 * 60 * 24 * 7, "week") getMesuresRain(60 * 60 * 24 * 30, "month") else getRainNear() end end ) end -- ------------------------------------------------------------------------ -- Authentification -- ------------------------------------------------------------------------ function auth(nextFunction) local request_body = "grant_type=password&client_id=" .. n_client_id .. "&client_secret=" .. n_client_secret .. "&username=" .. n_username .. "&password=" .. n_password .. "&scope=read_station" getResponseData("https://api.netatmo.net/oauth2/token", request_body, function(data) token = data.access_token log(token) nextFunction() end ) end auth(getDevices) log("Last request : " .. os.date("%x - %X"), true) si vous avez l'âme d'un développeur ou d'un aventurier, la méthode à modifier est afterHttpRequest() sinon, rendez-vous au post suivant.P.S. Merci à @PITP2 pour son support. Edit : nouvelle version du script. Si ce dernier détecte que vous n'avez pas de pluviomètre, il va rechercher un pluviomètre à proximité de chez vous (uniquement les relevés de la dernière heure et jour). La distance de recherche peux être adaptée en ajustant la variable long_lat_adjust (0.1 par défaut). Il s'agit du cercle de recherche en latitude/longitude autour de chez vous. 4 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Partie 2 : Récupérer les prévisions des 3 prochains jours Le post précédent nous fournis une scène qui permet d'aller consulter notre pluviomètre Netatmo et de voir combien de "mm" il y a plu ... mais si pas exemple, on veut gérer son arrosage, il faut aussi connaitre les prévisions de pluie. Pour ceci, personnellement, j'aime bien le site Wundeground car il est rapide, disponible et assez simple. Donc si vous aussi vous souhaitez allez plus loin, il va vous falloir que vous créez un compte sur Wunderground et précisez le lieu géographique où vous êtes. Pour crée un compte : http://www.wunderground.com/weather/api/d/login.html Pour trouver sa "station ID" : http://www.wunderground.com/weatherstation/ListStations.asp?selectedCountry=France La création du compte va vous permettre d'obtenir une "cle api" (exemple : 58096c9e567edfb1) Et la recherche de la station la plus proche de chez vous, une station ID (exemple : IAINTHOI2) Avec ces 2 informations, nous allons pouvoir récupérer les prévisions des 3 prochains jours : Le script ci-dessous doit être inclus dans un module virtuel (voir le post suivant avant de faire quoi que ce soit) : local max_day = 3 -- 3 par défaut local cle_api = "58027c8e567edfb1" -- cle api de chez Wunderground local pws = "IAINTHOI2" -- station ID local scene_netatmo = 294 -- id de la scène fibaro:startScene(scene_netatmo) local WGROUND = Net.FHttp("api.wunderground.com",80) local response ,status, err = WGROUND:GET("/api/"..cle_api.."/forecast/lang:FR/q/pws:"..pws..".json") local rain = -1 if (response ~= nil) then rain = 0 local jsonTable = json.decode(response) max_day = max_day + 1 if (#jsonTable.forecast.simpleforecast.forecastday < max_day) then max_day = #jsonTable.forecast.simpleforecast.forecastday end for i = 1, max_day do fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].conditions) fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm) rain = rain + jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm end fibaro:debug("Prévision pour les " .. (max_day-1) .. " prochains jours : " .. rain .. " mm") end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblPrevu.value", rain) 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Partie 3 : On vous a mâché le travail En effet, votre script de récupération de l'historique de votre pluviomètre a été installé et testé (post #1) ?Vous souhaitez connaitre les prévisions des 3 prochains jours et avez créé votre compte sur Wunderground (post #2) ? Alors voici le module virtuel que vous allez devoir importer (Pluie.vfib) Ce module virtuel va regrouper les données historiques et futurs dans une seule interface : Pour le faire fonctionner correctement, il va falloir modifier 2 ou 3 choses. Importer ce module et noté son ID Modifier la scène précédemment créée (voir post #1) et modifier la ligne suivante local hc2_module_virtuel = 139 -- id du module virtuel Modifier le module virtuelDerrière le bouton "Prévision" local scene_netatmo = 294 -- id de la scène local max_day = 3 -- 3 par défaut local cle_api = "49017e9e567edfb1" -- cle api de chez Wunderground local pws = "IAINTHOI2" -- station ID Derrière le bouton "Calcul"ATTENTION, c'est ici qu'aurons lieu VOS calculs, je vous laisse donc mon code comme exemple. Dans mon cas, je ne fais que de modifier une variable global "Arrossage" qui peut recevoir 3 valeurs :NON : rien à fairePREPARATION : arrossage de courte durée pour préparer le terrain a des pluies avenirOUI : gros arrosage car pas de pluie prévue Dans le main loopVous pouvez mettre le code suivant pour appuyer sur les boutons toutes les 10 minutes. Dans mon cas, j'utilise GEA fibaro:call(fibaro:getSelfId(), "pressButton", "7") fibaro:sleep(3000) -- on attend 3 secondes fibaro:call(fibaro:getSelfId(), "pressButton", "9") -- dodo pendant 10 minutes fibaro:sleep(10*60*1000) Voilà , vous avez tout ce qu'il faut pour gérer votre arrosage. Ce n'est plus qu'à vous de jouer. Pluie.vfib 5 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Vraiment top ce module. Merci Steven EDIT ; Je me demandais, pour faire profiter la communauté, si il n'était pas possible de partager les données de son pluviomètre ? pour peu qu'on trouve qq'un du fofo pas trop loin de chez nous ? donc je cherche quelqu'un de sympa, en region parisienne (idéalement proche de SAINT GERMAIN EN LAYE), , qui voudrait bien partager un accès en MP je paye en bière :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
fuuss Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Je peux te donner accès mais Luxembourg et Saint Germain en Laye , c'est pas top près Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 rien que pour tester le boulot de steven je veux bien ;-) en attendant que je commande le mien. merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
fuuss Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Voila :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 trop cool EDIT : ca marche très bien, j'ai conservé pour le moment les equations de steven, je vais affiner si besoin ca serait pas mal d'afficher le 'msg' dans le bouton de VD ? je croyais que la fonction était bien celle ci fibaro:call(selfId, "setProperty", "ui.Label7.value", msg) mais rien ne s'affiche ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
fuuss Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Pour l'équation : En fait pour calculer l'évaporation on pourra en théorie prendre la loi de Dalton . Une petite explication Selon la loi de Dalton le taux d'évaporation d'un plan d'eau s'exprime en fonction du déficit de saturation (quantité d'eau (ps-pe) que l'air peut stocker, ce qui correspond à la sécheresse de l'air), et de la vitesse du vent. Cette loi est formulée selon la relation suivante: E=k.f(u).(ps–pe) E=k.f(u).(ps–pe) E le taux d'évaporation en (mm/jour) pe la pression effecive ou réelle de vapeur d'eau dans l'air en kPa ps la pression de vapeur saturante ou tension de vapeur à la température de la surface évaporante en kPa ​k est une constante f(u) le facteur de proportionnalité, dépendant de la vitesse du vent u en m/s Donc : La pression de vapeur saturante (ou tension de vapeur) est la pression à laquelle la phase gazeuse d'une substance est en équilibre avec sa phase liquide ou solide à une température donnée dans un système fermé. Elle dépend de la température : La pression de vapeur saturante augmente avec la température. Une substance possédant une pression de vapeur saturante élevée à température ambiante est dit volatile​. La relation de Dalton exprime aussi que, en théorie et dans des conditions de pression et de température données, le processus d'évaporation est possible jusqu'à ce que la pression de vapeur effective atteigne une limite supérieure qui n'est autre que la pression de vapeur saturante (ps-pe soit positif) alors que l'évaporation cesse dès que ps = pe. Rayonnement solaire et température de la surface évaporante Le rayonnement solaire est l'élément moteur de la vaporisation de l’eau en augmentant la température de la surface évaporante. Le taux d'évaporation est ainsi une fonction croissante de la température de l'eau. Etant donné que la température de l'eau varie dans le même sens que la température de l'air, la température de l'air plutôt que celle de l'eau est utilisée dans les formules de calcul.Ainsi la pression de vapeur saturante ps augmente avec la température selon la relation suivante (avec t en ° Celsius et ps en kPa) : ps=0,611exp(17,27.t/(237,3+t)) Ainsi une température élevée augmente la pression de vapeur saturante, ce qui, suivant la loi de Dalton, favorise l’évaporation de l’eau. Humidité relative de l'air L'humidité relative est le rapport entre la pression partielle de vapeur d'eau et la pression de vapeur saturante pour une température et un volume d'air donnés: Hr(%)=100 pe ps avec :pe : pression effective ou réelle de vapeur d'eau dans l'air [kPa],ps : pression de vapeur d'eau saturée (ou tension de vapeur) à la température de la surface évaporante [kPa], Il arrive à un moment donné qu'une masse d'air soit saturée en vapeur d'eau mais pas tout le temps ; l'humidité relative est donc, à une température donnée, le rapport entre la quantité effective d'eau contenue dans une masse d'air et la quantité maximale d'eau que peut contenir cette masse d'air. Ainsi, lorsqu'une masse d'air se refroidit, elle garde la même quantité d'eau. Par contre, la quantité maximale d’eau qu’elle peut contenir diminue avec la température et son humidité relative augmente. Cette diminution implique qu'à un certain moment, l'air devient saturé car Hr = 100%. Vent Le vent joue un rôle essentiel sur les processus d'évaporation. En effet, l'air au voisinage de la surface évaporante se sature plus ou moins rapidement et peut arrêter le processus d'évaporation.L'air saturé est remplacé par de l'air plus sec au voisinage de la surface évaporante en raison des mélanges et mouvements créés par le vent. Ainsi de nombreuses corrélations existent permettant d’estimer l’influence de la vitesse du vent. Pour tenir compte du vent, l'image qui suit évalue un coefficient multiplicateur k à appliquer à la valeur de la vitesse d'évaporation par vent nul (Ve). Ainsi quand on double la vitesse du vent, on double la vitesse d’évaporation, ce qui montre l’importance du vent pour réaliser l’évaporation. Le facteur multiplicateur f(u), est une fonction linéaire de la vitesse du vent et doit être appliqué au taux d’évaporation estimé pour un vent nul.On obtient alors la formule simple suivante pour déterminer la vitesse d’évaporation : Vitesse d’évaporation = Ve (sans vent) x k (dépendant du vent) - Ve (sans vent) étant déterminé sur les courbes d’allures exponentielles - k étant déterminé sur la courbe linéaire En première approche, le facteur de proportionnalité de la formule de Dalton (dépendant de la vitesse du vent u [m/s]) peut s’exprimer ainsi : f(u)=1+0,6u avec u : vitesse du vent [m/s] La formule de Dalton peut donc être reformulée par la formule de Rohwer: E=0.484.f(u).(ps−pe) Soit en remplaçant par les paramètres développés ci-dessus, on obtient: E=0,484.(1+0,6u)exp(17,27.t/(237,3+t)).(1–Hr/100)avec : u (m/s) la vitesse du ventt (°C) la température ambianteHr (%) l'humidité relative de l’air Sans tenir compte du facteur de proportionnalité f(u) lié à l’effet du vent, l’évolution du taux d’évaporation (en mm/jour) d’un plan d’eau pure en fonction de la température (°C) et de l’humidité relative (%) est représentée ici : On constate la très grande importance de la température et de l’humidité relative sur l'évaporation. Plus l'humidité relative est faible et la température est élevée, plus l'évaporation est élevée. En théorie c'est ca , mais dans notre cas , comme les températures se situe entre 10 et 30 degrès en générale , on pourra pour faciliter rendre l'équation plus linéaire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 avec le module ext de la netatmo on a l'humidité relative et la temperature ext. (prevision avec weahterU) le vent on la aussi il me semble depuis la HC2 non ? ou depuis WeatherU surement ` on doit avoir toutes les donnée pour calculer le besoin .. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 @Sakkhoo Avec Netatmo, je ne pourrais que te donner les relevé de pluviométrie du jour et de l'heure en cours a proximité de chez toi. "05:00:00:00:bd:f6":{"rain_24h":13.938, "rain_timeutc":1430405115, "rain_live":0, "rain_60min":0.303 }, Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nico Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Me plait bien tout ça, vais essayer de l'adapter avec mon pluviomètre Oregon. Mais pour cela il faut d'abord que je rapproche de la maison, qu'il soit de nouveau capté par ma Zibase. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Netatmo est entrain de sortie l'anémomètre, ils ont entendu fuuss https://www.netatmo.com/fr-FR/product/accessories/station Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Nouvelle version (2.0) du script (spécial Sakkhho) : Edit : nouvelle version du script. Si ce dernier détecte que vous n'avez pas de pluviomètre, il va rechercher un pluviomètre à proximité de chez vous (uniquement les relevés de la dernière heure et jour). La distance de recherche peux être adaptée en ajustant la variable long_lat_adjust (0.1 par défaut). Il s'agit du cercle de recherche en latitude/longitude autour de chez vous. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Enorme ! Comment fonctionne le calcul si pas de data 7 et 30 jours ? c'est ok aussi ou je dois corriger qq chose ? En tout cas, ça fonctionne bien car il me trouve ca [DEBUG] 18:18:16: ----------========== D e v i c e s =========---------- [DEBUG] 18:18:16: Pluie jour : 8.686 [DEBUG] 18:18:16: Pluie heure : 0.303 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Le calcul, c'est àtoi de l'adapté par rapport àtes données. Je suis entrain de regarder par rapport àla formule de fuuss. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 enoooorme, excellent steven, un grand merciiii ;-) superbe Je n'ai pas de netatmo ni de pluviometre pour l'instant, alors je vais utiliser uniquement la partie prevsion wundergrund ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 Je pense que je vais faire évoluer cette partie pour ceux qui n'ont pas de Netatmo. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 30 avril 2015 Signaler Partager Posté(e) le 30 avril 2015 Hello, j'ai elargit le cercle de recherche car je trouvais que la station que j'interrogeai était pas fiable. quand je regarde sur weather pro ou weatherU, il était tombé plus de 20mm aujourdhui :-( du coup en mettant 0.8 je tombe sur une station avec plus ou moins cette valeur. Ca correspond à quelle distance environ ? Autre question, esthétique cette fois, sur la home page de la HC2; mon VD n'affiche rien, j'aimerai bien qu'il me remonte le "msg" comme dans le VD lui meme j'ai vu la ligne fibaro:call(selfId, "setProperty", "ui.Label7.value", msg) pourquoi ca ne s'affiche pas ? c'est pourtant bien ca qu'il faut non ? le push sur telephone est ok. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 30 avril 2015 Auteur Signaler Partager Posté(e) le 30 avril 2015 C'est assez énorme car cela correspond à1.6 degré de latitude/longitude de distance de ta box Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 1 mai 2015 Signaler Partager Posté(e) le 1 mai 2015 ok effectivement un peu large ... je vais réduire. et pour l'affichage du resultat sur le module ? ca s'affiche chez toi ? edit : steven, comme à 0h00 la "valeur 24h" issue de Netatmo repasse à 0, est ce qu'on pourrait pas stocker cette valeur ? et additionné cette valeur sur 7 jours roulants ? Semaine= V1+V2+V3 etc... et quand on arrive à V7, et bien la nouvelle valeurs reprends V1 ? est ce faisable ? car c'est vrai louper l'information semaine est dommage. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 1 mai 2015 Signaler Partager Posté(e) le 1 mai 2015 Sakkho, J'utilise weather pro depuis en tout cas 5 ans. Au début je le trouvais fiable, mais depuis 1 an ou deux de moins en moins. Je profite de ce module virtual pour passer sur wunderground que je ne connaissait pas. @ Steven: Est-il normal que les valeurs de la première ligne de ton virtual device ne corresponde pas avec le reste des valeurs affichées ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 1 mai 2015 Auteur Signaler Partager Posté(e) le 1 mai 2015 @Bouliboule Il y a quelques semaine, j'avais un script google qui allait chercher les infos de ma Netatmo et qui allait mettre à jour un module virtuel avec TOUTES les valeurs possible. Ce module virtuel mettait à jour des petits modules virtuels (un pour l'extérieur, un pour l'intérieur, un pour la pluie, ...) et c'est donc lui qui mettait à jour la 1ère ligne. Et ben, j'ai complètement oublié de géré cette ligne Pour corriger cela, je vous propose de mettre le code suivant dans le main loop : local sId = fibaro:getSelfId() fibaro:call(sId, "pressButton", "7") fibaro:sleep(3*1000) local j = fibaro:getValue(sId, "ui.lblJour.value") local s = fibaro:getValue(sId, "ui.lblSemaine.value") local m = fibaro:getValue(sId, "ui.lblMois.value") local msg = string.format("[24h] %s, [7j] %s, [30j] %s", j, s, m) fibaro:debug(msg) fibaro:call(sId, "setProperty", "ui.lblAll.value", msg) fibaro:call(sId, "pressButton", "9") -- dodo pendant 10 minutes fibaro:sleep(10*60*1000) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 1 mai 2015 Signaler Partager Posté(e) le 1 mai 2015 Chuis chiant hein ! En tout cas avec les pluies de ce matin je regarde mon VD et tout fonctionne à merveille, les valeurs collent parfaitement maintenant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 1 mai 2015 Signaler Partager Posté(e) le 1 mai 2015 existe il un moyen de renvoyer le message àla ligne, car c'est vrai ici mais aussi dans pas mal de mes VD, le label est tronqué car trop long. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés