Aller au contenu

Messages recommandés

Posté(e)

ligne 137 du script il y a "sum_rain &date_end=last". SI tu regardes bien, j'ai laissé un espace avant le &, pourrais-tu supprimer cet espace et retester.

 

Merci d'avance

Posté(e)

@Steven, C'est beaucoup mieux par contre j'ai été obligé de faire quelques adaptations :

1 - dans le main loop de la passerelle :

XX étant l'ID du module passerrelle

local int = fibaro:getValue(96, "ui.sIntTemp.value")
local ext = fibaro:getValue(XX, "ui.sExtTemp.value")
local inth = fibaro:getValue(XX, "ui.sIntHum.value")
local exth = fibaro:getValue(XX, "ui.sExtHum.value")

fibaro:call(XX, "setProperty", "ui.lblInfo.value", "Intérieur "..int.." C° / Extérieur "..ext.." C°")
fibaro:call(XX, "setProperty", "ui.lblInt.value", int.." C° / " ..inth.."%")
fibaro:call(XX, "setProperty", "ui.lblExt.value", ext.." C° / " ..exth.."%")

2 - dans le main loop les modules (température int pour l'exemple):

XX étant l'ID du module passerelle

YY étant l'ID du module

local int = fibaro:getValue(XX, "ui.sIntTemp.value")

local inth = fibaro:getValue(XX, "ui.sIntHum.value")

fibaro:call(YY, "setProperty", "ui.lblInfo.value", int.." C° / " ..inth.."%")

3 - Pour l'icone de la passerelle :

Si jamais elle a tendance à  s'éclipser, changer l'icône de chaque slider, et là  plus de soucis.

 

Encore un grand merci à  toi Steven pour cette magnifique intégration.

Posté(e)

Pour allez plus loin dans mes besoins personnels, j'ai rajouté la quantité de pluie de la semaine ainsi que celle du mois.

 

Et ben c'est pas très très fiable ce que me retourne l'API :)

 

Heure 0

Aujourd'hui 10.2

Semaine 8.800000000000001

Mois 44.4

 

Il y a eu moins depluie cette semaine qu'aujourd'hui ... hummmm est ce que hier les nuages ont aspirer la pluie pour faire -1.4 ? Je vais suivre cela avec attention.

Posté(e)

c'est l'évaporation alors :15:

 

ou alors, dans la semaine, il ne compte pas le jour en cours. Il faudra que tu vérifies demain si la valeur pour la semaine a bien augmentée ou pas.

Posté(e)

Les mesures de type : 

 

1week  - sont remises à  zéro tout les lundi matin

1month - sont remises à  zéro tout les 1er du mois.

 

Pour obtenir la bonne information, il faut demandé les valeurs 1day depuis aujourd'hui - 7 jour et additionner les 7 valeurs retournées

  var d = new Date();
  var t = 1000 * 60 * 60 * 24 * 7
  t = d.getTime() - t;
  d = new Date(t);
  httpmesures = getResponse("https://api.netatmo.net/api/getmeasure","access_token="+token+"&device_id="+int_id+"&module_id="+rain_id+"&scale=1day&type=sum_rain&date_begin="+d.toUTCString())
  data = JSON.parse(httpmesures)
  for (var i in data.body[0].value) {
    rain_week = rain_week + data.body[0].value[i][0]
  }
  rain_week = rain_week.toFixed(2)

Posté(e)

Ah oui c'est plus compréhensible ça.

 

J'avais lu trop vite hier soir et loupé le "les nuages ont aspiré la pluie".... très bon :60:

Posté(e)

@Steven,

 

Pour que le script puisse mettre à  jour directement le module virtuel depuis Google Drive, il faut que le HC2 soit accessible depuis Internet. Exact ?

Posté(e)

Je viens d'aller acheter la mienne.

69,95€ chez Tel and Com pendant les soldes.

 

Pour info, il en reste une chez Tel and Com Thionville

Posté(e)

Et c'est dans tout les Tel and com de France.

Ils liquident car ils ne veulent plus vendre de Netatmo.

 

Je voulais partager l'info au plus vite.

 

Merci pour ton script et ton module.

Je test ça chez moi ce soir.

Posté(e)

Lol Gwendal c'est DeuxG qui à  donné l'info.

 

J'espère pouvoir aller chercher la mienne demain après midi. Merci :)

Posté(e)

lol oui mais bon cela ne presse pas, j'ai d'abord le tuto dont tu as posté le lien pour le PHP à  regarder / mettre en place ;)

 

Voici voilà 

 

Si on pars du principe que tu as un module virtuel qui contient les données utiles pour l'arrosage ... soit la quantité de pluie de la semaine, ou des X derniers jours.

 

409818Pluie.png

 

Je me base sur 2 choses :

  • Les prévisions de pluie
  • La quantité de pluie reçue la semaine dernière
Pour obtenir la quantité de pluie, voici mon code ... j'utilise Weather Underground il faut une clé API que tu peux créer sur leur site et il faut aussi trouvé le PWS le plus proche de chez toi

452822LyonFranceMtorologieWeatherUndergr

 

 

Code du bouton Prévision. Le résultat est stocké dans le label 3 Jours -> qui a comme ID "lblPrevu"

local max_day = 3
local api_key = "XXXXXXXXXXXX"
local pws = "IGENVEVE2"

local WGROUND = Net.FHttp("api.wunderground.com",80)
local response ,status, err = WGROUND:GET("/api/"..api_key.."/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)
Derrière le code du bouton calculer arrosage, j'ai mis le code suivant 

-- Déterminer si un arrosage est nécessaire
-- en ce basant sur les 7 derniers jours
-- et les 3 prochains

local quantie_jour_mm = 4 -- mon gazon nécessite 4mm / jour
local quantite_mm_en_une_heure = 0.3*4   -- mon arrosage fourni 1.2mm / heure
local nb_jour_prevision = 3 -- le prévisions sont basé sur 3 jours 


local semaine = tonumber(fibaro:getValue(fibaro:getSelfId(), "ui.lblSemaine.value"))
local prevision = tonumber(fibaro:getValue(fibaro:getSelfId(), "ui.lblPrevu.value"))
local pluiencours = tonumber(fibaro:getValue(fibaro:getSelfId(), "ui.lblHeure.value")) > 0.2

local msg = ""
if (prevision > (quantie_jour_mm*nb_jour_prevision)*1.5 ) then
	-- Il est prévu de pluvoir plus que souhaité
	msg = "Il est prévu de beaucoup pleuvoir"
	fibaro:setGlobal("Arrosage", "NON")
elseif (semaine > (quantie_jour_mm*nb_jour_prevision)*1.5) then
	-- Il a trop plu
	msg = "Il a déjà  trop plu"
	fibaro:setGlobal("Arrosage", "NON")
elseif (semaine == 0 and (prevision < (quantie_jour_mm*nb_jour_prevision)*1.5) and (prevision >= (quantie_jour_mm*nb_jour_prevision))) then
	-- Sol sec, préparation utile
	if (pluiencours) then
		msg = "Il pleux"
		fibaro:setGlobal("Arrosage", "NON")
	else
		msg = "Sol sec, préparation souhaitée"
		fibaro:setGlobal("Arrosage", "PREPARATION")
	end
else
	if (pluiencours) then
		msg = "Il pleux"
		fibaro:setGlobal("Arrosage", "NON")
	else
		local besoin = nb_jour_prevision * quantie_jour_mm
		besoin = besoin - prevision
		msg = "Besoin de " .. besoin .. " mm soit " .. math.floor((besoin/quantite_mm_en_une_heure) ).. " heures"
		fibaro:setGlobal("Arrosage", "OUI")
	end
end

-- Je m'envoi un push après chaque calculme laissant le temps d'intervenir.
fibaro:call(122, "sendPush", msg)
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label7.value", msg)
fibaro:debug(msg)
Ce code joue avec la variable globale "Arrosage" qui peut être à  "OUI", "NON", "PREPARATION" ensuite j'utilise GEA pour appuyer sur mon bouton "Prévision" tout les jours (Préparation = on attend un peu de pluie mais la terre est trop sèche. On arrose donc un tout petit peu pour préparer le terrain).

 

Je calcule le besoin d'arrosage tout les mardi et vendredi matin  et enclenche si nécessaire (mardi pour un arrosage complet (3h), mardi et vendredi pour un petit arrosage 30mn)

-- ===  Arrosage === --
-- On rafraichi les prévisions de pluie toutes les heures
GEA.add({"Global", "", ""}, 60*60, "", {{"VirtualDevice", id["VD_PLUIE"], "7"}})
-- On calcul le besoin d'arrosage
GEA.add({"Global", "", ""}, 30, "", {{"VirtualDevice", id["VD_PLUIE"], "9"},{"Days", "Tuesday, Friday"}, {"Time", "07:55", "07:56"}})
-- Allumage de l'arrosage automatique
GEA.add({"Global", "Arrosage", "OUI"}, 30, "", {{"turnOn", id["ARROSAGE"]}, {"Days", "Tuesday"}, {"Time","08:00","11:00"}})
GEA.add({"Global", "Arrosage", "PREPARATION"}, 30, "", {{"turnOn", id["ARROSAGE"]}, {"Days", "Tuesday, Friday"}, {"Time","08:00","08:30"}})
-- On éteint
local longarrosage = {"If", {{"Global", "Arrosage", "OUI"}}}
local courtarrosage = {"If", {{"Global", "Arrosage", "PREPARATION"}}}
GEA.add(id["ARROSAGE"], 3*60*60, "", {{"turnOff"}, longarrosage, {"Global", "Arrosage", "NON"}})
GEA.add(id["ARROSAGE"], 30*60, "", {{"turnOff"}, courtarrosage, {"Global", "Arrosage", "NON"}})
 

 

Voilà ,en gros, c'est tout. Si tu as besoin de quoi que ce soit (virtuel device ou autre) hurle.

Posté(e)

Effectivement Yohan j'ai fait mon boulet... Merci a DeuxG ;)


Par contre je suis deg, j'ai voulu commander par correspondance sur le net et on peut pas :( Et j'ai pas de magasin Telandcom vers chez moi :(

Posté(e)

Super bien foutu ton VD et les scripts pour la gestion de l'arrosage! Cela doit être bien plus fiable que se baser sur la meteo de la HC2 ;)

Posté(e)

Gwendal, je t'aurais bien proposé de te l'acheter, moyennant les frais de port, mais à  mon avis Xtrem57 est passé chercher la dernière dès que j'ai mis l'info.

 

Autre chose, je vais faire mon boulet, analphabète du codage, mais chez moi, je n'ai aucun retour sur le module passerelle.

 

Tout reste à  0

 

J'ai vu qu'il y avais des log dans le code PHP, comment peut on vérifier qu'il fonctionne bien. En clair, est ce que je l'ai bien configuré ?

×
×
  • Créer...