Page 8 sur 18

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 10:43
par Pyrrhus
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.

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 13:33
par papoo
dzventsTimer.png
dzventsTimer.png (10.56 Kio) Consulté 5192 fois

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 17:45
par Pyrrhus
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:

Code : Tout sélectionner

Error: EventSystem: in Darksky: [string "--[[ darksky.lua for [ domoticzVents >= 2.4 ]..."]:60: attempt to index global 'domoticz' (a nil value)
la ligne 60 c'est

Code : Tout sélectionner

level    =   domoticz.LOG_DEBUG,
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 ;)

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 18:41
par papoo
vérifie dans Réglages, Paramètres, Autres que DZvents est bien activé, tout en bas.
Tu as quelle version de domoticz?

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 19:14
par Pyrrhus
Dzvent est bien activé. J'utilise domoticz 3.8153.

Re: DZVents : DarkSky et probabilité de pluie

Publié : 31 mars 2019, 21:15
par papoo
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

Code : Tout sélectionner

https://api.darksky.net/forecast/NumerodAPI/latitude;longitude/?units=ca&exclude=currently,minutely,daily,alerts,flags

Re: DZVents : DarkSky et probabilité de pluie

Publié : 01 avr. 2019, 14:25
par Pyrrhus
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 :oops:
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

Publié : 25 avr. 2019, 11:25
par Loky31200
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é?

Re: DZVents : DarkSky et probabilité de pluie

Publié : 25 avr. 2019, 11:56
par papoo
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é?
2019-04-25 11_55_26-Window.png
2019-04-25 11_55_26-Window.png (2.85 Kio) Consulté 5031 fois
pourrais tu nous mettre une copie de ton script modifié (en occultant ton api)?

Re: DZVents : DarkSky et probabilité de pluie

Publié : 25 avr. 2019, 12:21
par Loky31200
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
}