[DzVents] DarkSky et probabilité de pluie
Re: DZVents : DarkSky et probabilité de pluie
De retour,
bo ben j'avance pas... mon encodage était bien en utf8 sans BOM, j'ai fait un chmod +x mais toujours la même erreur. J'ai essayer de copié-coller dans le gestionnaire d'évènement, mais toujours la même erreur... Par contre, que veux-tu dire par déclarer le script en Time ? Je n'ai pas trouvé de réponse dans google.
bo ben j'avance pas... mon encodage était bien en utf8 sans BOM, j'ai fait un chmod +x mais toujours la même erreur. J'ai essayer de copié-coller dans le gestionnaire d'évènement, mais toujours la même erreur... Par contre, que veux-tu dire par déclarer le script en Time ? Je n'ai pas trouvé de réponse dans google.
Re: DZVents : DarkSky et probabilité de pluie
OK alors il y a un problème: dans le gestionnaire d'évènement je n'ai pas de choix en dzvent, le menu déroulant est bloqué sur (ALL) et la flèche est grisé.
Je n'ai vu le choix Time que dans les menus "LUA" et "Python".
J'ai quand même essayé de copier coller le script dans LUA en le déclarant Time, et là nouveau message:
la ligne 60 c'est
J'y comprend rien....
Si tu pouvais juste me donner la requête curl pour obtenir la probabilité de pluie pour 1h, 6h et 12h, je pourrais me débrouiller en bash
Je n'ai vu le choix Time que dans les menus "LUA" et "Python".
J'ai quand même essayé de copier coller le script dans LUA en le déclarant Time, et là nouveau message:
Code : Tout sélectionner
Error: EventSystem: in Darksky: [string "--[[ darksky.lua for [ domoticzVents >= 2.4 ]..."]:60: attempt to index global 'domoticz' (a nil value)Code : Tout sélectionner
level = domoticz.LOG_DEBUG,Si tu pouvais juste me donner la requête curl pour obtenir la probabilité de pluie pour 1h, 6h et 12h, je pourrais me débrouiller en bash
Re: DZVents : DarkSky et probabilité de pluie
vérifie dans Réglages, Paramètres, Autres que DZvents est bien activé, tout en bas.
Tu as quelle version de domoticz?
Tu as quelle version de domoticz?
Re: DZVents : DarkSky et probabilité de pluie
Dzvent est bien activé. J'utilise domoticz 3.8153.
Re: DZVents : DarkSky et probabilité de pluie
ce n'est pas la derniere stable
je ne t'ai pas demandé ta version de dzvents?
ce script ne fonctionne qu'avec les versions supérieures a la 2.4 de dzvents (comme indiqué en début de script)
la requete pour obtenir les infos de l'api est
je ne t'ai pas demandé ta version de dzvents?
ce script ne fonctionne qu'avec les versions supérieures a la 2.4 de dzvents (comme indiqué en début de script)
la requete pour obtenir les infos de l'api est
Code : Tout sélectionner
https://api.darksky.net/forecast/NumerodAPI/latitude;longitude/?units=ca&exclude=currently,minutely,daily,alerts,flagsRe: DZVents : DarkSky et probabilité de pluie
Effectivement tout s'explique ! Ma version de dzvent est 2.2.
Je n'ai pas la derniére version de domoticz car ça m'obligerait a passer sous Stretch. Comme il est déconseillé de mettre à jour mais plutot de partir sous un systéme tout neuf, il faudrait que je réinstalle tout (il n'y a pas que domoticz qui tourne sur mon Pi)
De plus d'apres ce que j'ai lu la mise à jour vers domoticz 4 a été catastrophique pour beaucoup de personnes.... je sais qu'un jour ou l'autre je serai obligé de mettre à jour mon systéme... mais tant que je peux l'éviter
Merci pour ton aide en tout cas. Je n'ai plus qu'a trouver la formule pour parser le résultat du curl en fonction de l'heure avec jq.
Je n'ai pas la derniére version de domoticz car ça m'obligerait a passer sous Stretch. Comme il est déconseillé de mettre à jour mais plutot de partir sous un systéme tout neuf, il faudrait que je réinstalle tout (il n'y a pas que domoticz qui tourne sur mon Pi)
De plus d'apres ce que j'ai lu la mise à jour vers domoticz 4 a été catastrophique pour beaucoup de personnes.... je sais qu'un jour ou l'autre je serai obligé de mettre à jour mon systéme... mais tant que je peux l'éviter
Merci pour ton aide en tout cas. Je n'ai plus qu'a trouver la formule pour parser le résultat du curl en fonction de l'heure avec jq.
Re: DZVents : DarkSky et probabilité de pluie
Bonjour,
Merci pour le srcipt
J'ai essayé de mettre ca en place mais mes % ne se mettent pas à jour...
Création du script directement sous domoticz en dzvents "timer" en modifiant la clef et en mettant les Idx des dummys type %, mais il ne se passe rien. Je n'ai pas non plus d'indication dans les logs d'une erreur quelconque (j'ai laissé le niveau de log par défaut, peut être une faute de ma part).
Je suis sur la Béta de Domoticz si cela peut jouer.
Une idée sur l'étape que j'ai raté?
Merci pour le srcipt
J'ai essayé de mettre ca en place mais mes % ne se mettent pas à jour...
Création du script directement sous domoticz en dzvents "timer" en modifiant la clef et en mettant les Idx des dummys type %, mais il ne se passe rien. Je n'ai pas non plus d'indication dans les logs d'une erreur quelconque (j'ai laissé le niveau de log par défaut, peut être une faute de ma part).
Je suis sur la Béta de Domoticz si cela peut jouer.
Une idée sur l'étape que j'ai raté?
Re: DZVents : DarkSky et probabilité de pluie
est-ce ton premier script dzvents?
quelle est ta version beta?
dans Réglages > Paramètres > Autres
tout en bas de page, DZvents est il bien activé? pourrais tu nous mettre une copie de ton script modifié (en occultant ton api)?
quelle est ta version beta?
dans Réglages > Paramètres > Autres
tout en bas de page, DZvents est il bien activé? pourrais tu nous mettre une copie de ton script modifié (en occultant ton api)?
Re: DZVents : DarkSky et probabilité de pluie
Hello,
merci pour la réponse super rapide
Alors je suis pas un grand spécialiste dzvents mais j'en ai déja un ou deux qui tournent correctement a coté, mais sur appel via blockly (et non sur timer).
Dzvents est bien activé.
Ma version beta est : 4.10619 avec dzvents 2.4.18
Le script est le suivant, copié collé via le téléphone c'est pas génial pour garder la mise en page...
(avec modifié dans le script uniquement : les idx des %, la clef et les coordonées. il faut peut être modifier autre chose?):
local proba_pluie_h = {}
proba_pluie_h[1]= 103
proba_pluie_h[2]= 104
proba_pluie_h[3]= nil
proba_pluie_h[4]= 105
proba_pluie_h[5]= nil
proba_pluie_h[6]= 106
proba_pluie_h[12]= 107
proba_pluie_h[24]= 108
proba_pluie_h[36]= nil
proba_pluie_h[48]= nil
return {
active = true,
on = { timer = { 'every 30 minutes' }, -- remember only 1000 requests by day, 30mn = 48 requests
httpResponses = { "DarkSky_Trigger" } -- Trigger the handle Json part
},
logging = {--level = domoticz.LOG_DEBUG,
level = domoticz.LOG_MODULE_EXEC_INFO,
marker = "Darksky Rain Probability v1.03 " },
data = { rainForecast = {initial = {} }, -- Keep a copy of last json just in case
},
execute = function(domoticz, item)
local DarkSkyAPIkey = domoticz.variables('api_forecast_io').value
local geolocalisation = domoticz.variables('Latitude').value..","..domoticz.variables('Longitude').value
local DarkSkyAPIkey = "MaclefAPI"
local geolocalisation = "Mes coordonnées" -- latitude,longitude
local Forecast_url = "https://api.darksky.net/forecast/" -- url
local extraData = "?units=ca&exclude=currently,minutely,daily,alerts,flags"
local function debugMessage(message)
domoticz.log(message,domoticz.LOG_DEBUG)
end
if (item.isTimer) then
domoticz.openURL({
url = Forecast_url..DarkSkyAPIkey.."/"..geolocalisation..extraData,
callback = 'DarkSky_Trigger'
})
end
if (item.isHTTPResponse and item.ok) then
-- we know it is json but dzVents cannot detect this
-- convert to Lua
local json = domoticz.utils.fromJSON(item.data)
-- json is now a Lua table
if #item.data > 0 then
domoticz.data.rainForecast = domoticz.utils.fromJSON(item.data)
rt = domoticz.utils.fromJSON(item.data)
else
domoticz.log("Problem with response from DarkSky (no data) using data from earlier run",domoticz.LOG_ERROR)
rt = domoticz.data.rainForecast -- json empty. Get last valid from domoticz.data
if #rt < 1 then -- No valid data in domoticz.data either
domoticz.log("No previous data. are DarkSkyAPIkey and geolocalisation ok?",domoticz.LOG_ERROR)
return false
end
end
debugMessage("heure systeme")
debugMessage(os.date('%Y-%m-%d %H:%M:%S', time))
local now = tonumber(os.time(os.date("*t")))
j = 1
for i = 1,48 do
if now > tonumber(json.hourly.data[j].time) then
local h = domoticz.utils.round((now - tonumber(json.hourly.data[j].time)) / 3600,0)
j = j+h
debugMessage("j : "..j)
end
if proba_pluie_h then
debugMessage("heure "..i)
debugMessage(os.date('%Y-%m-%d %H:%M:%S', json.hourly.data[j].time))
debugMessage(json.hourly.data[j].time)
debugMessage(json.hourly.data[j].precipProbability)
domoticz.devices(proba_pluie_h).updatePercentage(json.hourly.data[j].precipProbability*100)
end
if j == 48 then break end
j = j +1
end
end
end
}
merci pour la réponse super rapide
Alors je suis pas un grand spécialiste dzvents mais j'en ai déja un ou deux qui tournent correctement a coté, mais sur appel via blockly (et non sur timer).
Dzvents est bien activé.
Ma version beta est : 4.10619 avec dzvents 2.4.18
Le script est le suivant, copié collé via le téléphone c'est pas génial pour garder la mise en page...
(avec modifié dans le script uniquement : les idx des %, la clef et les coordonées. il faut peut être modifier autre chose?):
local proba_pluie_h = {}
proba_pluie_h[1]= 103
proba_pluie_h[2]= 104
proba_pluie_h[3]= nil
proba_pluie_h[4]= 105
proba_pluie_h[5]= nil
proba_pluie_h[6]= 106
proba_pluie_h[12]= 107
proba_pluie_h[24]= 108
proba_pluie_h[36]= nil
proba_pluie_h[48]= nil
return {
active = true,
on = { timer = { 'every 30 minutes' }, -- remember only 1000 requests by day, 30mn = 48 requests
httpResponses = { "DarkSky_Trigger" } -- Trigger the handle Json part
},
logging = {--level = domoticz.LOG_DEBUG,
level = domoticz.LOG_MODULE_EXEC_INFO,
marker = "Darksky Rain Probability v1.03 " },
data = { rainForecast = {initial = {} }, -- Keep a copy of last json just in case
},
execute = function(domoticz, item)
local DarkSkyAPIkey = domoticz.variables('api_forecast_io').value
local geolocalisation = domoticz.variables('Latitude').value..","..domoticz.variables('Longitude').value
local DarkSkyAPIkey = "MaclefAPI"
local geolocalisation = "Mes coordonnées" -- latitude,longitude
local Forecast_url = "https://api.darksky.net/forecast/" -- url
local extraData = "?units=ca&exclude=currently,minutely,daily,alerts,flags"
local function debugMessage(message)
domoticz.log(message,domoticz.LOG_DEBUG)
end
if (item.isTimer) then
domoticz.openURL({
url = Forecast_url..DarkSkyAPIkey.."/"..geolocalisation..extraData,
callback = 'DarkSky_Trigger'
})
end
if (item.isHTTPResponse and item.ok) then
-- we know it is json but dzVents cannot detect this
-- convert to Lua
local json = domoticz.utils.fromJSON(item.data)
-- json is now a Lua table
if #item.data > 0 then
domoticz.data.rainForecast = domoticz.utils.fromJSON(item.data)
rt = domoticz.utils.fromJSON(item.data)
else
domoticz.log("Problem with response from DarkSky (no data) using data from earlier run",domoticz.LOG_ERROR)
rt = domoticz.data.rainForecast -- json empty. Get last valid from domoticz.data
if #rt < 1 then -- No valid data in domoticz.data either
domoticz.log("No previous data. are DarkSkyAPIkey and geolocalisation ok?",domoticz.LOG_ERROR)
return false
end
end
debugMessage("heure systeme")
debugMessage(os.date('%Y-%m-%d %H:%M:%S', time))
local now = tonumber(os.time(os.date("*t")))
j = 1
for i = 1,48 do
if now > tonumber(json.hourly.data[j].time) then
local h = domoticz.utils.round((now - tonumber(json.hourly.data[j].time)) / 3600,0)
j = j+h
debugMessage("j : "..j)
end
if proba_pluie_h then
debugMessage("heure "..i)
debugMessage(os.date('%Y-%m-%d %H:%M:%S', json.hourly.data[j].time))
debugMessage(json.hourly.data[j].time)
debugMessage(json.hourly.data[j].precipProbability)
domoticz.devices(proba_pluie_h).updatePercentage(json.hourly.data[j].precipProbability*100)
end
if j == 48 then break end
j = j +1
end
end
end
}