jimbo007be Posté(e) le 2 janvier 2014 Signaler Posté(e) le 2 janvier 2014 (modifié) Quelqu'un a déjàjoué avec ça ? j'en ai une en commande qui ne devrait pas tarder àarriver ... Modifié le 23 juin 2020 par Lazer 1
Moicphil Posté(e) le 2 janvier 2014 Signaler Posté(e) le 2 janvier 2014 J'ai pas de Netatmo. Peut être l'as tu déjà vu, Pascal a fait un bel article sur comment l'interfacer avec la HC2 : http://domotique-info.fr/2013/09/collecter-les-donnees-netatmo-depuis-home-center-2/
Krikroff Posté(e) le 3 janvier 2014 Signaler Posté(e) le 3 janvier 2014 @jimbo007be, je l'utilise depuis plus d'un an, c'est une très bonne station météo, fiable, petite, design, extensible, elle a beaucoup de choses pour elle. Mais, car il y a un toujours mais: L' API n'est pas disponible en local se qui oblige à passer obligatoirement par une connexion internet lors des échanges peut être un jour les Dev de chez NetAtmo prendrons en compte les nombreuses réclamations à ce sujet ! En attendant nous faisons avec . De plus, l'authentification OAuth2 (http://fr.wikipedia.org/wiki/OAuth) pose quelques petits problèmes à notre HC2 , je m'explique: A ce jour le HC2 n'est pas compatible avec le protocole https pour l’émission de requêtes et pour l'appi de la NetAtmo il faut HTTPS. J'ai bien essayé des chemins détournés notamment avec mon Framework Lua mais l'Api ne veut toujours rien savoir (je ne perd pas espoir ). Conclusion l'emploi d'un script externe est par conséquent obligatoire entre l'Api NetAtmo et le HC2 et Il y a de nombreux scripts php sur le web pour cela (cf. article de Pascal du blog domotique-info). Perso étant très technos Microsoft j' ai réalisé ma passerelle en C# disponible soit par webservice hébergé sur mon micro serveur HP, soit sur une petite box maison (en test) réalisée à base de FEZ Cerberus de GHI Electronics. J'ai aussi un autre projet en cours, je vous en reparlerais . Félicitation pour cet achat que tu ne regretteras pas
Domodial Posté(e) le 3 janvier 2014 Signaler Posté(e) le 3 janvier 2014 Moi qui voulait acheter leur nouveau Thermostat (avec API) pour ma chaudière. Si c'est le même binzz d'api non local, alors je laisse tomber ^^
jimbo007be Posté(e) le 3 janvier 2014 Auteur Signaler Posté(e) le 3 janvier 2014 Krikroff : j'avais effectivement vu le soucis mais bon, le produit a vraiment l'air chouette alors je me suis laissé tenter ... je vais essayer d'héberger le script php sur mon Synology ... je suis a priori plus MS aussi mais bon ... à la limite, si tu veux bien me filer ta version, je peux le mettre sur un des mes IIS au bureau Domodial : j'avais aussi commandé le thermostat mais j'ai annulé ... j'espère trouver une solution plus compatible avec HC2 j'avais posé la question concernant l'éventuelle disparition de la société et de l'impact sur l'utilisation des produits ... ils m'ont répondu que si il devait y avoir un soucis, les logiciels seraient rendus open-source ... bon, je sais pas si on doit y croire ... mais c'est vrai que la station meteo est vraiment superbe 1
Jack67 Posté(e) le 6 janvier 2014 Signaler Posté(e) le 6 janvier 2014 Pour le chauffage j'ai des radiateurs j'utilise des têtes Danfoss, ça marche très bien. Et pour rester dans le sujet, j'ai également la station netatmo, aucun regret ça marche nickel.
Krikroff Posté(e) le 7 janvier 2014 Signaler Posté(e) le 7 janvier 2014 je suis a priori plus MS aussi mais bon ... à la limite, si tu veux bien me filer ta version, je peux le mettre sur un des mes IIS au bureau Pas de soucis pour partager ma version, je dois juste faire quelques modifications dessus pour pouvoir te la passer ...
jimbo007be Posté(e) le 7 janvier 2014 Auteur Signaler Posté(e) le 7 janvier 2014 station reçue aujourd'hui ! toute info est donc la bienvenue ! :)
Krikroff Posté(e) le 8 janvier 2014 Signaler Posté(e) le 8 janvier 2014 Un nouveau capteur en vue pour notre station Netatmo: le pluviomètre http://www.cultofmac.com/261126/weather-geeks-rejoice-netatmo-adds-rain-gauge-ces-2014-exclusive/
jimbo007be Posté(e) le 11 janvier 2014 Auteur Signaler Posté(e) le 11 janvier 2014 krikroff : j'ai réussi àfaire fonctionner le script php sur mon synology ... par contre je ne suis pas très doué pour les devices virtuels tu pourrais faire un screenshot du tien pour voir ce que ca donne ?
Krikroff Posté(e) le 11 janvier 2014 Signaler Posté(e) le 11 janvier 2014 il y a un script sympa niveau VD ici http://domotique-info.fr/2013/09/collecter-les-donnees-netatmo-depuis-home-center-2/ mais tout est en fonction du script php que tu as installé !
jimbo007be Posté(e) le 11 janvier 2014 Auteur Signaler Posté(e) le 11 janvier 2014 oui c'est ce tuto que j'ai suivi ... le script php retourne toutes les valeurs de la sonde intérieur ou extérieur ... c'est surtout que je ne sais pas trop quel est la plus belle manière de les afficher
Krikroff Posté(e) le 20 janvier 2014 Signaler Posté(e) le 20 janvier 2014 Voici les modifications que j'ai apporté au code de i-magin (publié avec son accord): Cf. http://www.domotique-fibaro.fr/index.php/topic/262-empêcher-une-function-de-bloquer-un-script/?p=2468 Edit: mise à jour du code du Main() pour renforcer la prévention des erreurs type T_END, Unknown etc.. --[[ %% autostart %% properties %% globals --]] fibaro:debug("process start"); selfId = fibaro:getSelfId(); local domaine = "www.xxxxxxxxxx.com"; if (temperature_exterieure==nil) then temperature_exterieure = ""; end if (humidite_exterieure==nil) then humidite_exterieure = ""; end if (temperature_interieure==nil) then temperature_interieure = ""; end if (humidite_interieure==nil) then humidite_interieure = ""; end if (co2==nil) then co2 = ""; end if (pression==nil) then pression = ""; end if (bruit==nil) then bruit = ""; end --ne charger en mémoire uniquement que à la premiere execution if(refreshUI==nil) then function refreshUI(temp, hum, press, co2, bruit) fibaro:call(selfId,"setProperty","ui.temperature.value",temp); fibaro:call(selfId,"setProperty","ui.humidite.value",hum); fibaro:call(selfId,"setProperty","ui.pression.value",press); fibaro:call(selfId,"setProperty","ui.co2.value",co2); fibaro:call(selfId,"setProperty","ui.bruit.value",bruit); end; end --ne charger en mémoire uniquement que à la premiere execution if(getExt==nil) then function getExt(retry) retry = retry or 0 -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo extérieur local response = FHTE:GET("/netatmo/netatmo.php?intext=ext"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_exterieure = result.body[1].value[1][1] or "n.c"; humidite_exterieure =result.body[1].value[1][2] or "n.c"; -- variable globale pour info sms local msg = "Température extérieure : "..temperature_exterieure.."°C"; fibaro:setGlobal("tempext", msg); return true; else fibaro:debug("Netatmo EXT: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo EXT: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo EXT:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getInt(tonumber(retry+1)); else return false; end end; end --ne charger en mémoire uniquement que à la premiere execution if(getInt==nil) then function getInt(retry) retry = retry or 0; -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo intérieur local response = FHTE:GET("/netatmo/netatmo.php?intext=int"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_interieure = result.body[1].value[1][1] or "n.c"; humidite_interieure = result.body[1].value[1][3] or "n.c"; co2 = result.body[1].value[1][2] or "n.c"; pression = result.body[1].value[1][4] or "n.c"; bruit = result.body[1].value[1][5] or "n.c"; -- variable globale pour info sms fibaro:setGlobal("tempint", "Température intérieure : "..temperature_interieure.."°C"); return true; else fibaro:debug("Netatmo INT: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo INT: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo INT:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end local function main() -- demande au service web les informations... local resInt, resExt = false, false; local status, err = pcall(function () resInt = getInt(); end); fibaro:debug("Récupération des données interieurs: " .. tostring(resInt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resExt = getExt(); end); fibaro:debug("Récupération des données extérieurs : " .. tostring(resExt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end -- affichage infos dans module virtuel refreshUI( temperature_interieure.." °C / "..temperature_exterieure.." °C", humidite_interieure.." % / "..humidite_exterieure.." %", pression.." mbar", co2.." ppm", bruit.." dB" ); -- tempo de 30 secondes fibaro:sleep(30*60*1000); end -- lance le script à chaque loop main(); - La sortie DEBUG pour la mise en évidence la gestion des erreurs... 1
jimbo007be Posté(e) le 20 janvier 2014 Auteur Signaler Posté(e) le 20 janvier 2014 merci m'sieur ! je vois que tu testes si tu es à la première exécution sur script avant chaque fonction ... je suppose que cela veut dire que ça pourrait provoquer une espèce de "surcharge" de la mémoire si tu ne le fais pas ? par contre tu ne fais pas ce test dans le cas de ton script de surveillance du main loop ... oubli ? pas nécessaire ? ou bien tu as trouvé ça par après ?
Krikroff Posté(e) le 20 janvier 2014 Signaler Posté(e) le 20 janvier 2014 Oui je test la première exécution, pour effectivement ne pas surcharger la mémoire et aussi et surtout moins d'occupation processeur car le LUA en bon langage de script doit tout interpréter à la volée et comme ça vient... Le main loop garde tout en mémoire tant qu 'il n'a pas été réinitialisé donc pas la peine de lui proposer un code qu'il a déjà en mémoire. Pas mis dans le script surveillance du main loop car: 1. je ne le fait pas en permanence, juste dans mes scripts importants... 2. le "script surveillance du main loop" était juste pour mettre en évidence que le main loop tourne rond ou pas ! D’ailleurs, sur mon HC2 j'en suis à 7787 boucles depuis 129 heures et 48 minutes sans plantage ... Tout ça pour dire que, c'est sur il y a des plantages, mais il y a aussi souvent des solutions pour éviter cela... En revanche j'attends toujours le support du HTTPS pour pouvoir tout faire depuis le HC2 sans passer par un php ou un .aspx , c'est malin maintenant je suis énervé
jimbo007be Posté(e) le 20 janvier 2014 Auteur Signaler Posté(e) le 20 janvier 2014 OUPS ! désolé ! LOL
Krikroff Posté(e) le 21 janvier 2014 Signaler Posté(e) le 21 janvier 2014 mise à jour du code du Main() pour renforcer la prévention des erreurs type T_END, Unknown etc.. local function main() -- demande au service web les informations... local resInt, resExt = false, false; local status, err = pcall(function () resInt = getInt(); end); fibaro:debug("Récupération des données interieurs: " .. tostring(resInt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resExt = getExt(); end); fibaro:debug("Récupération des données extérieurs : " .. tostring(resExt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end -- affichage infos dans module virtuel refreshUI( temperature_interieure.." °C / "..temperature_exterieure.." °C", humidite_interieure.." % / "..humidite_exterieure.." %", pression.." mbar", co2.." ppm", bruit.." dB" ); -- tempo de 30 secondes fibaro:sleep(30*1000); end 1
jimbo007be Posté(e) le 21 janvier 2014 Auteur Signaler Posté(e) le 21 janvier 2014 je me trompe ou c'est tempo de 30 minutes ? (un détail hein )
Krikroff Posté(e) le 21 janvier 2014 Signaler Posté(e) le 21 janvier 2014 Ohh!! faut pas voir le mal partout, j'avais juste mis à30 minutes car comme i-magin àla gentillesse de me laisser utiliser les données de sa station je ne voulais pas abuser ! ça marche aussi avec 30 secondes ...
Shad Posté(e) le 21 janvier 2014 Signaler Posté(e) le 21 janvier 2014 Non, tempo de 30 sec. edit: ha oui le premier code c'est 30 min ^^.
jimbo007be Posté(e) le 21 janvier 2014 Auteur Signaler Posté(e) le 21 janvier 2014 LOL c'était juste pour confirmer que le sleep est en millisecondes aucune mauvaise intention de ma part je le jure de toute manière pour la netatmo, elle fait un refresh toutes les 10 minutes je crois et donc pas la peine d'aller rechercher les données plus souvent .... d'ailleurs je crois avoir lu quelque part qu'on risquait meme des ennuis si on se connecte trop souvent ...
Krikroff Posté(e) le 21 janvier 2014 Signaler Posté(e) le 21 janvier 2014 Il me semble que le refresh du NetAtmo c'est toutes les 5 minutes, àconfirmer car par certain de moi ! I-Magin fait un refresh avec un tempo de 6 minutes.
i-magin Posté(e) le 21 janvier 2014 Signaler Posté(e) le 21 janvier 2014 Je confirme la fréquence des enregistrements faits par netatmo : 5mn
Jack67 Posté(e) le 24 janvier 2014 Signaler Posté(e) le 24 janvier 2014 Petite news intéressante netatmo s'ouvre àl'IFTTT http://www.pcinpact.com/news/85537-netatmo-station-meteo-souvre-aux-autres-objets-connectes-avec-ifttt.htm Ceci pourrai s'intégrer àterme dans la domotique, je ne sais pas encore comment mais je crois que certains vont avoir de bonnes idées
q.philippe Posté(e) le 29 avril 2014 Signaler Posté(e) le 29 avril 2014 krikroff bonjour ton module fonctionne super. petite question: peut on récupérer les valeurs de Netatmo (avec ton module virtuel) pour déclencher des scènes? et comment (récupération des valeurs invisible dans mes scènes).
Messages recommandés