Did Posté(e) le 16 septembre 2014 Signaler Posté(e) le 16 septembre 2014 Ah, tu vas pas nous le fâcher avec ta 4.017.
Nicolas33140 Posté(e) le 17 septembre 2014 Signaler Posté(e) le 17 septembre 2014 Dans mon cas je veux seulement connaitre la quantité de pluie qui est tombé. Cela me permet de savoir s'il faut que j'arose le potager ou non. Actuellement, j'ai un pluviomètre "manuel" que je monitore àla mimine. Je tiens également un fichier excel des précipitations annuelle. Du coup, je ne veux que connaitre la quantité d'eau qui est tombé. Je n'ai pas les mêmes contrainte que vous avec un arrosage automatique. Je pourrais effectivement utiliser la méthode de Nico qui consiste a utiliser la zibase comme passerelle mais ça me ferai un peu cher le pluviomètre. C'est pour ça que je veux faire intervenir la méthode "électronique". Maintenant ma question est pour les électroniciens : est ce que les entrées du capteur de porte fibaro sont assez sensible pour faire le job ?
Shad Posté(e) le 17 septembre 2014 Signaler Posté(e) le 17 septembre 2014 Je te dirais de regarder pour trouver un pluviomètre compatible avec le rgb, car celui-ci peut te remonter diverses informations. 1
q.philippe Posté(e) le 17 septembre 2014 Signaler Posté(e) le 17 septembre 2014 Le pluiviometre Netatmo puisque now c'est intégrer a la HC2, si tu utilises un Netatmo station bien sure,
Nicolas33140 Posté(e) le 18 septembre 2014 Signaler Posté(e) le 18 septembre 2014 Pour le module rgb, ça m'intéresse moyennement car il nécessité le 220v. Ça limite un peu les lieux d'application. Pour la Netatmo, c'est peut être plus envisageable. Faut que je vois son prix. En plus, on a un accès direct aux données via sa base. A voir. Par contre est-ce que le plugin Netatmo sera disponible pour la HCL ?
Steven Posté(e) le 18 septembre 2014 Signaler Posté(e) le 18 septembre 2014 Le RGB c'est du 12 ou 24V. Si cela peut changer ton intérêt
Nicolas33140 Posté(e) le 18 septembre 2014 Signaler Posté(e) le 18 septembre 2014 Merci pour la précision ! Mais effectivement, ça ne change pas mon intérêt, voire ça le réduit encore puisque il me faudrait un transformateur pour l'utiliser. Par ailleurs, j'ai regardé le prix de la Netatmo, et c'est pas donné ! En plus, je pensais qu'il y avait un écran comme sur une station classique mais non ! Du coup, je vais vraiment me tenter le bricolage d'Oregon PCR800 !
Steven Posté(e) le 18 septembre 2014 Signaler Posté(e) le 18 septembre 2014 Je rejoint ton choix. J'aime bien la Netatmo mais pour le prix, il n'y a aucun visuel. C'est un peu dommage.
Bouliboule Posté(e) le 22 avril 2015 Signaler Posté(e) le 22 avril 2015 Hello, Je déterre le sujet avec les beaux jours qui arrivent. Steven, utilises-tu ce script en 4.042 ? cela fonctionne ? Merci pour ta réponse
Nico Posté(e) le 22 avril 2015 Signaler Posté(e) le 22 avril 2015 Et question : Qqun avait réussi àintégrer la consigne dans le panneau d'arrosage ?
Bouliboule Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 Salut Steven, arrives-tu a détailler un peu plus ton module ? cela m'aiderait beaucoup. Un grand merci d'avance.
Steven Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 Tu parles du module virtuel que j'utilise ?
Sakkhho Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 Moi aussi je suis intéressé par ce module si ont pouvait uniquement avec les Météo passées et futures dire si il faut arroser ou non ça serait top.
Steven Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 OK, je fourni tout cela demain. Info et module.
HANSOLO Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Pour ceux qui veulent automatiser l'arrosage et qui n'ont pas la possibilité d'installer une électrovanne, il y a la nouvelle solution de KOUBACHI http://www.koubachi.com/products/smart-watering/ En pré-commande à 199€ avec 20% de remise inclut, livraison prévue en été. Un capteur (sur pile), une électrovanne (sur pile) et une gateway Internet.
Bouliboule Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Ce serait top effectivemenent
kiwi Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Hello, J'ai fait un truc (mais je l'ai cassé donc ca sera pour plus tard) avec un RFXCOM et un Oregon Scientific PCR800. Bon le seul soucis c'est que mon PI se vautre avec Domoticz et que la résolution de la PCR800 est de l'heure
fuuss Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Je serais aussi interessé , merci d'avance
mprinfo Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Moi aussi je suis intéressé @STEVEN on peut pas avoir cela aujourd'hui lol Envoyé avec mon SmartPhone
Bouliboule Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Ya du monde sur la corde àlinge
Steven Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Donc pour commencé, il faut comme annoncé un détecteur de pluie Netatmo qui va nous donner les quantités de pluie, ça c'est la partie facile. Ensuite il faut aller chercher chez Netatmo les derniers relevés de votre Station. Pour ceci, j'ai une petite scène qu'il faut importer chez vous puis modifier les 4 premières lignes. Pour pouvoir remplir ces 4 lignes, il vous faut un compte chez Netatmo : https://auth.netatmo.com/fr-FR/access/signup Voici le script. Je viens de le ré-ecrire en LUA pour ne plus avoir besoin de Google Script, soyez donc indulgent. Avant d'aller plus loin, tester ce script et donner moi votre retour car s'il marche chez personne d'autre que chez moi, je dois revenir a l'ancienne méthode qui est plus compliquée. local n_client_id = "11b1111d11111111111b111b" local n_client_secret = "lyZkHXRLMO8xShAAtmQhsCQM4U3djL08Zq1hUStbUJ4" local n_username = "______._____@_____.com" local n_password = "password" local hc2_module_virtuel = 135 -- on s'en fiche pour l'instant local debug = true -- ------------------------------------------------------------------------ -- NE PAS TOUCHER -- ------------------------------------------------------------------------ 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 end if (rains["day"] > -1000) then end if (rains["week"] > -1000) then end if (rains["month"] > -1000) then 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 -- ------------------------------------------------------------------------ -- Mesure du détecteur de pluie historique -- ------------------------------------------------------------------------ function getMesuresRain(duree, scale, typescale, variable) local now = os.time(); getResponseData("https://api.netatmo.net/api/getmeasure","access_token="..token.."&device_id="..int_id.."&module_id="..rain_id.."&scale="..scale.."&type="..typescale.."&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() --getMesuresRain1heure() if (rain_id ~= "") then getMesuresRain(1000 * 60 * 60, "max", "Rain", "hour") getMesuresRain(1000 * 60 * 60 * 24, "1hour", "sum_rain", "day") getMesuresRain(1000 * 60 * 60 * 24 * 7, "1day", "sum_rain", "week") getMesuresRain(1000 * 60 * 60 * 24 * 30, "1day", "sum_rain", "month") 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) 4
Bouliboule Posté(e) le 28 avril 2015 Signaler Posté(e) le 28 avril 2015 Merci Steven, Voici le message d'erreur que j'obtiens: [ERROR] 16:29:01: line 83: attempt to index global 'net' (a nil value) Voir post suivant
Messages recommandés