Steven Posté(e) le 4 août 2016 Auteur Signaler Posté(e) le 4 août 2016 Fibaro ne remonte (de mémoire) que la pluviométrie à l'instant présent donc aucun cumul sur l'heure/jours/... Envoi moi ton code (sans les identifiants) si tu veux que je jette un .
Berale64 Posté(e) le 4 août 2016 Signaler Posté(e) le 4 août 2016 La partie que j'ai gardée de ton code fonctionne parfaitement. Pour ce qui est de l'exploitation des remontées Fibaro, voilà ce que je fais. --[[ %% properties 302 value %% events 302 value %% globals --]] v = fibaro:getValue(302, "value") fibaro:debug(v); Plus simple tu peux pas Et voilà les résultats Cumulé ça donne 1.4 mais en fait c'est 2.9
Steven Posté(e) le 4 août 2016 Auteur Signaler Posté(e) le 4 août 2016 Normal, les scènes ne sont "triggée" que lorsqu'il y a un changement de valeur donc si tu as 2 fois 0.101mm de suite, elle ne t'enverra que la 1ère. Ce n'est donc pas une solution viable.
Berale64 Posté(e) le 4 août 2016 Signaler Posté(e) le 4 août 2016 Entièrement d'accord pour les trigger, mais les résultats semblent quand même étranges. On se demande aussi à quoi sert ce device ? Pourquoi ne pas avoir mis dans la config des options du genre - remonter la pluviométrie de la dernière heure -remonter la pluviométrie de la dernière journée - etc ... Enfin, que des infos disponibles chez Netatmo. Mais bon, c'est Fibaro et on ne les refera pas. PS: Pour ceux que ça peut interresser: Pour la valeur "day", tu remontes les dernières 24h, moi je voulais depuis minuit, j'ai donc fais la modif suivante: if (rain_id ~= "" and not force_use_rain_public) then getMesuresRain(60 * 60, "hour") local d = os.date("*t"); -- debub modif local t = 3600*d.hour + 60*d.min; getMesuresRain(t, "day") -- fin modif -- getMesuresRain(60 * 60 * 24, "day") getMesuresRain(60 * 60 * 24 * 7, "week") getMesuresRain(60 * 60 * 24 * 30, "month") end 1
Steven Posté(e) le 5 août 2016 Auteur Signaler Posté(e) le 5 août 2016 C'est vrai que ce device est assez inutile, c'est d'ailleurs à cause/ou grâce à lui que j'ai fait ce script. Il permet juste de savoir s'il pleut ou pas. Perso, j'en avais besoin pour l'arrosage du jardin, j'avais donc besoin d'avoir des moyennes et non pas l'instant présent. Arrosage que j'ai toujours pas mis en place d'ailleurs. C'est un peu comme quand tu as tout les legos, le mode d'emploi et envie débordante du résultat ... mais la flemme de rassembler les pièces 2
flechg Posté(e) le 24 octobre 2017 Signaler Posté(e) le 24 octobre 2017 Bonsoir j ai posté plusieurs demande sur le forum pour trouver la ligne pour l api car sur ce module j ai ce message d erreur [DEBUG] 19:23:22: Last request : 10/24/17 - 19:23:22 [DEBUG] 19:23:22: ERROR !!! https://api.netatmo.net/oauth2/token cela vient sûrement du token mais je sais plus comment faire pour le recuperer merci encore
speedoxx007 Posté(e) le 10 septembre 2018 Signaler Posté(e) le 10 septembre 2018 Hello j'ai aussi cette erreur: [DEBUG] 13:07:25: Last request : 09/10/18 - 13:07:25[DEBUG] 13:07:25: 570cbcb3acb39bfb230212ce|8724fa5200da3e2011df2f6c2c7fda0a[DEBUG] 13:07:26: ----------========== D e v i c e s =========----------[DEBUG] 13:07:26: 05:00:00:03:c2:c6[DEBUG] 13:07:26: ----------========== Module extérieur ==========----------[DEBUG] 13:07:26: temperature_exterieure = 24.5[DEBUG] 13:07:26: humidite_externe = 51[DEBUG] 13:07:26: ----------========== Pluie histo ==========----------[DEBUG] 13:07:26: [1;31m2018-09-10 13:07:26.663855 [ fatal] LUA error: /opt/fibaro/scenes/88.lua:223: bad argument #1 to 'pairs' (table expected, got nil) Comment on peu résoudre ce problème?
Sakkhho Posté(e) le 2 février 2019 Signaler Posté(e) le 2 février 2019 hello @Steven il y a effectivement depuis la 4.5x un problème avec la requête netatmo ? [DEBUG] 08:34:04: 2019-02-02 08:34:04.484586 [ error] Handshake error: certificate verify failed [DEBUG] 08:34:04: ERROR !!! https://api.netatmo.net/oauth2/token tu sais dire ce qu'il faut faire pour corriger la scène ?
Sakkhho Posté(e) le 2 février 2019 Signaler Posté(e) le 2 février 2019 edit : corrigé, suffit de rajouter le checkCertificate = false dans la requête POST local selfhttp = net.HTTPClient({timeout=2000}) url = 'some.url.com' selfhttp:request(url, { options={ checkCertificate = false, method = 'GET' } ... merci @tinman
christos Posté(e) le 17 mars 2019 Signaler Posté(e) le 17 mars 2019 Bonjur This script still work? i get error [DEBUG] 09:51:44: 2019-03-17 09:51:44.813505 [ fatal] Unknown exception: /opt/fibaro/scenes/2881.lua:130: '}' expected (to close '{' at line 125) near 'data' Merci
Sakkhho Posté(e) le 17 mars 2019 Signaler Posté(e) le 17 mars 2019 To get the NETATMO data from your device it works - the issue is the forecast. WU does not work anymore.
pedia Posté(e) le 13 juin 2019 Signaler Posté(e) le 13 juin 2019 (modifié) Bonjour à tous, J'ai finalement investi dans la station météo et le pluviomètre. Reçu il y a 48h. Tout marchait très bien sauf depuis 2 heures environ. Je ne sais pour quelle raison, toutes les valeurs rains hour, Day, week, month, ont la même valeur, celle de month en fait. Je n'ai évidemment rien changé. J'ai malheureusement effacé les logs (pensant à un problème de scène) mais on voit bien que je passe des mesures différenciées en fonction du temps, à toutes les mêmes valeurs, depuis 2 heures : [DEBUG] 18:51:18: humidite_externe = 66 [DEBUG] 18:51:18: ----------========== Pluie histo ==========---------- [DEBUG] 18:51:18: rain[hour] = 15.15 [DEBUG] 18:51:18: ----------========== Pluie histo ==========---------- [DEBUG] 18:51:18: rain[day] = 15.15 [DEBUG] 18:51:18: ----------========== Pluie histo ==========---------- [DEBUG] 18:51:18: rain[month] = 15.15 [DEBUG] 18:51:18: ----------========== Pluie histo ==========---------- [DEBUG] 18:51:18: rain[week] = 15.15 Sur le site, j'ai le bon relevé du pluviomètre qui fonctionne toujours. Quand je fais la requête dans le navigateur, j'obtiens ça {"body":[{"beg_time":1560265200,"step_time":3600,"value":[[0.808],[5.656],[2.525],[0],[0.808],[0.303],[0],[0],[0],[0],[0],[0],[0],[0],[0.505],[0.101],[0],[0],[0.303],[1.01],[1.818],[0.808],[0],[0],[0.101],[0.404],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]]}],"status":"ok","time_exec":0.087869882583618,"time_server":1560447237} Donc apparemment les mesures restent bien différenciées du côté de l'api. Mais là ça dépasse grandement mon niveau débutant de programmation. C'est déjà arrivé à qqun ? C'est l'api Netatmo qui a changé et du coup le script ne marche plus ? Merci d'avance pour vos lumières. Modifié le 13 juin 2019 par pedia 1
pedia Posté(e) le 13 juin 2019 Signaler Posté(e) le 13 juin 2019 (modifié) Finalement je me réponds. Ils ont bien changé quelque chose. J'ai remplacé la requête par ça : 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((now - duree)), Le format de date a semble t'il changé. J'ai juste enlevé le format :"!%c" os.date qui était avant os.date("!%c", (now - duree)) et ça remarche : [DEBUG] 19:52:16: ----------========== Pluie histo ==========---------- [DEBUG] 19:52:16: rain[hour] = 0 [DEBUG] 19:52:16: ----------========== Pluie histo ==========---------- [DEBUG] 19:52:16: rain[month] = 15.15 [DEBUG] 19:52:16: ----------========== Pluie histo ==========---------- [DEBUG] 19:52:16: rain[48h] = 6.16 [DEBUG] 19:52:16: ----------========== Pluie histo ==========---------- [DEBUG] 19:52:16: rain[week] = 15.15 [DEBUG] 19:52:16: ----------========== Pluie histo ==========---------- [DEBUG] 19:52:16: rain[day] = 0 Par contre ça ne pousse pas vers le VD qui reste pour le moment sur les mêmes valeurs 15.15. Ça marche en fait très bien, un vulgaire problème de rafraîchissement de page du navigateur : J'en profite. Dans l'application Netatmo il y a les prévisions de pluviométrie données WeatherPro apparement qui me narguent... Il n'y a vraiment aucune possibilité pour le moment de les récupérer ? Modifié le 13 juin 2019 par pedia 3
Berale64 Posté(e) le 14 juin 2019 Signaler Posté(e) le 14 juin 2019 Merci pour la modif. J'avais aussi la même valeur dans les 3 champs.
Steven Posté(e) le 16 juin 2019 Auteur Signaler Posté(e) le 16 juin 2019 Pour WeatherPro, il y a déjà d'autres VD de disponible sur le forum. Envoyé de mon SM-G935F en utilisant Tapatalk
Yorino Posté(e) le 22 avril 2020 Signaler Posté(e) le 22 avril 2020 (modifié) Hello, J'ai configuré la scène en modifiant le "checkCertificate = false", cependant j'ai toujours un plantage. Voici le debug : [DEBUG] 17:49:55: Last request : 04/22/20 - 17:49:55 [DEBUG] 17:49:56: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [DEBUG] 17:49:56: ----------========== D e v i c e s =========---------- [DEBUG] 17:49:56: ----------========== Module intérieur ==========---------- [DEBUG] 17:49:56: temperature_interieure = 21.7 [DEBUG] 17:49:56: co2 = 476 [DEBUG] 17:49:56: humidite_interne = 45 [DEBUG] 17:49:56: pression = 1012.5 [DEBUG] 17:49:56: bruit = 52 [DEBUG] 17:49:56: ----------========== Module extérieur ==========---------- [DEBUG] 17:49:56: 2020-04-22 17:49:56.786047 [ fatal] LUA error: /opt/fibaro/scenes/16.lua:162: attempt to index field '?' (a nil value) La ligne 162 contient ceci : temperature_exterieure = data.body[1].value[1][1] Des idées ? Modifié le 22 avril 2020 par Yorino
Yorino Posté(e) le 24 avril 2020 Signaler Posté(e) le 24 avril 2020 Je me suis permis de modifier le code de la scène pour l'adapter, je n'interroge donc que le module pluie et uniquement lui. J'ai viré l'info de l'état de batterie. Et tout ceci remonte donc dans le module virtuel pluie. 2 autres modifs pour que la scène fonctionne : - La non vérification du certificat : method = 'POST', checkCertificate = false, - La modif de la requête part : 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((now - duree)), Je m'attaque à le modif du module désormais pour voir comment intégrer les prévisions autres que WU. A+ local n_client_id = "xxxxxxxxxxxxxxxxxx" local n_client_secret = "xxxxxxxxxxxxxxxxxxxxxxxx" local n_username = "xxxxxx.xxxxx@xxxxx.xx" local n_password = "xxxxxxxxx" local hc2_module_virtuel = xxx -- le module virtuel "Pluie" local debug = true -- affiche ou non les message dans la console local version = 2.1 -- ------------------------------------------------------------------------ -- NE PAS TOUCHER -- ------------------------------------------------------------------------ local token = "" local int_id = "" local rain_id = "" local rain_bat = 0 local rains = {hour = -1000, day = -1000, week = -1000, month = -1000} -- ------------------------------------------------------------------------ -- Exécuté après chaque requète HTTP -- ------------------------------------------------------------------------ function afterHttpRequest() 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 -- ------------------------------------------------------------------------ -- 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', checkCertificate = false, 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 -- ------------------------------------------------------------------------ -- 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)), 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((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 end end int_id = data.body.devices[1]._id if (rain_id ~= "") 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)
Sakkhho Posté(e) le 2 janvier 2022 Signaler Posté(e) le 2 janvier 2022 hello je viens de me rendre compte mais je pense que cela est le cas depuis pas mal de temps qu'il y a une erreur maintenant dans la scene [DEBUG] 16:43:28: Last request : 01/02/22 - 16:43:27 [DEBUG] 16:43:28: Erreur requête serveur, response.status = 403 [DEBUG] 16:43:28: xxxxxx|xxxxxxxxx [DEBUG] 16:43:29: ----------========== D e v i c e s =========---------- [DEBUG] 16:43:29: ----------========== Pluie historique ==========---------- [DEBUG] 16:43:29: rain[hour] = 0 [DEBUG] 16:43:29: ----------========== Pluie historique ==========---------- [DEBUG] 16:43:29: rain[day] = 0 [DEBUG] 16:43:29: ----------========== Pluie historique ==========---------- [DEBUG] 16:43:29: rain[week] = 4.14 pareil chez vous?
Messages recommandés