[LUA] Vigilance MétéoFrance
Re: LUA: vigilance météoFrance
Bonsoir, merci de la réponse , hélas, je ne suis pas bon, je n'ai pas compris le débogage .
Pour mon problème, ou dois-je mettre le "print" puisque que c'est marqué la ligne 38 :"attempt to index a nil value (Global 'domoticz').
Si vous pouviez me guider , Merci.
Pour mon problème, ou dois-je mettre le "print" puisque que c'est marqué la ligne 38 :"attempt to index a nil value (Global 'domoticz').
Si vous pouviez me guider , Merci.
Re: LUA: vigilance météoFrance
Sans voir ton code, il est difficile de t'aider.
La fonction Print permet d'envoyer des informations dans les logs de DomoticZ. Le script utilise des variables pour fonctionner et en fonctionnement normal, on ne les voit pas. L'idée est de faire print("nom-de-la-variable = "..nom-de-la-variable) pour faire afficher dans les logs les informations qu'elle contient.
J'ai également écrit un guide pour débuter en programmation (voir ma signature). Ça pourra également t'aider à comprendre.
La fonction Print permet d'envoyer des informations dans les logs de DomoticZ. Le script utilise des variables pour fonctionner et en fonctionnement normal, on ne les voit pas. L'idée est de faire print("nom-de-la-variable = "..nom-de-la-variable) pour faire afficher dans les logs les informations qu'elle contient.
J'ai également écrit un guide pour débuter en programmation (voir ma signature). Ça pourra également t'aider à comprendre.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: LUA: vigilance météoFrance
Bonsoir, et merci pour la réponse.
Ci-joint mon script vigilance météo france.
J'ai bien pris note des tutos et guides et j'y passe une partie de la journée en ce moment (c'est l'hiver) mais avant de pouvoir appliquer il va falloir un peu de temps.
Encore merci.
Edit Keros : Il y des balises avec le bouton </> qui permettent de mettre le script directement dans le corps du message.
Ce qui donne pour ton script :
Ci-joint mon script vigilance météo france.
Code : Tout sélectionner
--[[
vigilanceMeteoFrance.lua
author/auteur = papoo
update/mise à jour = 09/08/2020
création = 28/04/2018
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance
Les informations disponibles sont :
- couleur vigilance météo (Rouge, Orange, Jaune, Vert)
- risque associé : vent violent, pluie-inondation, orages, inondations, neige-verglas, canicule, grand-froid, avalanche, vagues-submersion
Une vigilance peut ne pas être associée à un risque. dans ce cas, affichage de la mention "vigilance météo".
URL forum : http://easydomoticz.com/forum/viewtopic.php?f=17&t=5492
URL blog : http://pon.fr/vigilance-meteofrance-v2/
URL github : https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/vigilanceMeteoFrance.lua
--]]
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local departement = 44 -- renseigner votre numéro de département sur 2 chiffres exemples : 01 ou 07 ou 87
local alert_device = 'Vigilance Meteo' -- renseigner le nom de l'éventuel device alert vigilance météo associé (dummy - alert)
local conseil_meteo = "Conseil Meteo" --'Conseil Météo' -- renseigner le nom de l'éventuel device alert Conseils Météo associé si souhaité, sinon nil
local commentaire_meteo = "Commentaire Meteo" --'Commentaire Météo' -- renseigner le nom de l'éventuel device alert Commentaire Météo associé si souhaité, sinon nil
local display_conseils = true -- true pour voir les conseils sans condition, false seulement en cas de vigilance dans le département sélectionné
local display_commentaire = true -- true pour voir les commentaires sans condition, false seulement en cas de vigilance dans le département sélectionné
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName = 'Vigilance météo France'
local scriptVersion = '2.06'
local response = "vigilance_meteoFrance"
return {
active = true,
on = { timer = { "every minute"},
httpResponses = { response } },
logging = { level = domoticz.LOG_DEBUG,
--level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion },
execute = function(dz, item)
local devAlert = dz.devices(alert_device)
local function logWrite(str,level)
dz.log(tostring(str),level or dz.LOG_DEBUG)
end
local function seuilAlerte(level)
if level == 0 or level == nil then return dz.ALERTLEVEL_GREY end
if level == 1 then return dz.ALERTLEVEL_GREEN end
if level == 2 then return dz.ALERTLEVEL_YELLOW end
if level == 3 then return dz.ALERTLEVEL_ORANGE end
if level == 4 then return dz.ALERTLEVEL_RED end
end
local function risqueTxt(nombre)
if nombre == 1 then return "vent violent"
elseif nombre == 2 then return "pluie-inondation"
elseif nombre == 3 then return "orages"
elseif nombre == 4 then return "inondations"
elseif nombre == 5 then return "neige-verglas"
elseif nombre == 6 then return "canicule"
elseif nombre == 7 then return "grand-froid"
elseif nombre == 8 then return "avalanche"
elseif nombre == 9 then return "vagues-submersion"
else return "Vigilance Météo" end
end
local function EnumClear(Text) -- replace the last character
a=string.len(Text)
b=string.sub(Text,a,a)
if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
a=string.len(Text)
b=string.sub(Text,a,a)
if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
return Text
end
if (item.isHTTPResponse and item.trigger == response) then
local abr = dz.utils.fromXML(item.data,"erreurXML")
local dv = abr.CV.DV
local textAlert = ""
local vigilanceColor = ""
local conseil = ""
local commentaire = ""
for i, departements in ipairs(dv) do
for _, result in pairs(departements) do
--logWrite(result.dep)
--logWrite(result.coul)
if tonumber(result.dep) == departement then
logWrite("departement : "..result.dep)
logWrite("Couleur vigilance : "..result.coul)
vigilanceColor = tonumber(result.coul)
if dv[i].risque then
risques = dv[i].risque
for _, risque in pairs(risques) do
for _, risqueDep in pairs(risque) do
if risqueDep.val and (type(risqueDep) == "table") then
logWrite(risqueDep.val)
logWrite(risqueTxt(tonumber(risqueDep.val)))
textAlert = textAlert .. risqueTxt(tonumber(risqueDep.val)) .. ", "
else
logWrite(risqueDep)
textAlert = textAlert .. risqueTxt(tonumber(risqueDep)) .. ", "
logWrite(textAlert)
end
end
end
end
end
end
end
text = EnumClear(textAlert)
if text == '' then text = 'Aucune vigilance' end
logWrite("------ vigilance ".. vigilanceColor .. " " .. text .. " pour le département " .. departement,dz.LOG_INFO)
if alert_device ~= nil then
if devAlert.color ~= vigilanceColor or devAlert.lastUpdate.minutesAgo > 1440 then
devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
elseif devAlert.text ~= text then
devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
end
end
-- ====================================================================================================================
-- Conseil météo (merci denis_brasseur )
-- ====================================================================================================================
if conseil_meteo ~= nil then
local vconseil = abr.CV.EV.VCONSEIL
if vconseil and (type(vconseil) == "table") then
for i, result in pairs(vconseil) do
if vconseil[i].texte then
conseil = vconseil[i].texte
end
end
else conseil = 'Aucun conseil disponible'
end
if (conseil ~= nil and vigilanceColor > 1) or (conseil ~= nil and display_conseils == true) then -- Mise à our du devise texte conseil météo si il existe
if dz.devices(conseil_meteo).text ~= conseil then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), conseil) end
elseif (conseil == nil) or (conseil ~= nil and display_conseils == false) then -- Mise à jour du devise texte conseil météo si il existe même s'il n'y a pas de conseil disponible
if dz.devices(conseil_meteo).text ~= 'Aucun conseil disponible' then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun conseil disponible') end
end
end
-- ====================================================================================================================
-- Commentaire météo (merci denis_brasseur )
-- ====================================================================================================================
if commentaire_meteo ~= nil then
local vcommentaire = abr.CV.EV.VCOMMENTAIRE
if vcommentaire and (type(vcommentaire) == "table") then
for i, result in pairs(vcommentaire) do
if vcommentaire[i].texte then
commentaire = vcommentaire[i].texte
end
end
else commentaire = 'Aucun commentaire disponible'
end
if (commentaire ~= nil and vigilanceColor > 1) or (commentaire ~= nil and display_commentaire == true) then -- Mise à jour du devise texte commentaire météo si il existe
if dz.devices(commentaire_meteo).text ~= commentaire then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), commentaire) end
elseif (commentaire == nil) or (commentaire ~= nil and display_commentaire == false) then -- Mise à jour du devise texte commentaire météo si il existe même s'il n'y a pas de commentaire disponible
if dz.devices(commentaire_meteo).text ~= 'Aucun commentaire disponible' then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun commentaire disponible') end
end
end
-- ====================================================================================================================
-- ====================================================================================================================
else
local url = "http://vigilance2019.meteofrance.com/data/NXFR33_LFPW_.xml"
dz.openURL({
url = url,
method = "GET",
callback = response})
end
end
}
Encore merci.
Edit Keros : Il y des balises avec le bouton </> qui permettent de mettre le script directement dans le corps du message.
Ce qui donne pour ton script :
Code : Tout sélectionner
--[[
vigilanceMeteoFrance.lua
author/auteur = papoo
update/mise à jour = 09/08/2020
création = 28/04/2018
Principe : Ce script a pour but de remonter les informations de vigilance de météoFrance
Les informations disponibles sont :
- couleur vigilance météo (Rouge, Orange, Jaune, Vert)
- risque associé : vent violent, pluie-inondation, orages, inondations, neige-verglas, canicule, grand-froid, avalanche, vagues-submersion
Une vigilance peut ne pas être associée à un risque. dans ce cas, affichage de la mention "vigilance météo".
URL forum : http://easydomoticz.com/forum/viewtopic.php?f=17&t=5492
URL blog : http://pon.fr/vigilance-meteofrance-v2/
URL github : https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/vigilanceMeteoFrance.lua
--]]
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local departement = 44 -- renseigner votre numéro de département sur 2 chiffres exemples : 01 ou 07 ou 87
local alert_device = 'Vigilance Meteo' -- renseigner le nom de l'éventuel device alert vigilance météo associé (dummy - alert)
local conseil_meteo = "Conseil Meteo" --'Conseil Météo' -- renseigner le nom de l'éventuel device alert Conseils Météo associé si souhaité, sinon nil
local commentaire_meteo = "Commentaire Meteo" --'Commentaire Météo' -- renseigner le nom de l'éventuel device alert Commentaire Météo associé si souhaité, sinon nil
local display_conseils = true -- true pour voir les conseils sans condition, false seulement en cas de vigilance dans le département sélectionné
local display_commentaire = true -- true pour voir les commentaires sans condition, false seulement en cas de vigilance dans le département sélectionné
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName = 'Vigilance météo France'
local scriptVersion = '2.06'
local response = "vigilance_meteoFrance"
return {
active = true,
on = { timer = { "every minute"},
httpResponses = { response } },
logging = { -- level = domoticz.LOG_DEBUG,
level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion },
execute = function(dz, item)
local devAlert = dz.devices(alert_device)
local function logWrite(str,level)
dz.log(tostring(str),level or dz.LOG_DEBUG)
end
local function seuilAlerte(level)
if level == 0 or level == nil then return dz.ALERTLEVEL_GREY end
if level == 1 then return dz.ALERTLEVEL_GREEN end
if level == 2 then return dz.ALERTLEVEL_YELLOW end
if level == 3 then return dz.ALERTLEVEL_ORANGE end
if level == 4 then return dz.ALERTLEVEL_RED end
end
local function risqueTxt(nombre)
if nombre == 1 then return "vent violent"
elseif nombre == 2 then return "pluie-inondation"
elseif nombre == 3 then return "orages"
elseif nombre == 4 then return "inondations"
elseif nombre == 5 then return "neige-verglas"
elseif nombre == 6 then return "canicule"
elseif nombre == 7 then return "grand-froid"
elseif nombre == 8 then return "avalanche"
elseif nombre == 9 then return "vagues-submersion"
else return "Vigilance Météo" end
end
local function EnumClear(Text) -- replace the last character
a=string.len(Text)
b=string.sub(Text,a,a)
if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
a=string.len(Text)
b=string.sub(Text,a,a)
if b=="," or b==" " then Text=string.sub(Text,1,a-1) end
return Text
end
if (item.isHTTPResponse and item.trigger == response) then
local abr = dz.utils.fromXML(item.data,"erreurXML")
local dv = abr.CV.DV
local textAlert = ""
local vigilanceColor = ""
local conseil = ""
local commentaire = ""
for i, departements in ipairs(dv) do
for _, result in pairs(departements) do
--logWrite(result.dep)
--logWrite(result.coul)
if tonumber(result.dep) == departement then
logWrite("departement : "..result.dep)
logWrite("Couleur vigilance : "..result.coul)
vigilanceColor = tonumber(result.coul)
if dv[i].risque then
risques = dv[i].risque
for _, risque in pairs(risques) do
for _, risqueDep in pairs(risque) do
if risqueDep.val and (type(risqueDep) == "table") then
logWrite(risqueDep.val)
logWrite(risqueTxt(tonumber(risqueDep.val)))
textAlert = textAlert .. risqueTxt(tonumber(risqueDep.val)) .. ", "
else
logWrite(risqueDep)
textAlert = textAlert .. risqueTxt(tonumber(risqueDep)) .. ", "
logWrite(textAlert)
end
end
end
end
end
end
end
text = EnumClear(textAlert)
if text == '' then text = 'Aucune vigilance' end
logWrite("------ vigilance ".. vigilanceColor .. " " .. text .. " pour le département " .. departement,dz.LOG_INFO)
if alert_device ~= nil then
if devAlert.color ~= vigilanceColor or devAlert.lastUpdate.minutesAgo > 1440 then
devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
elseif devAlert.text ~= text then
devAlert.updateAlertSensor(seuilAlerte(vigilanceColor), text)
end
end
-- ====================================================================================================================
-- Conseil météo (merci denis_brasseur )
-- ====================================================================================================================
if conseil_meteo ~= nil then
local vconseil = abr.CV.EV.VCONSEIL
if vconseil and (type(vconseil) == "table") then
for i, result in pairs(vconseil) do
if vconseil[i].texte then
conseil = vconseil[i].texte
end
end
else conseil = 'Aucun conseil disponible'
end
if (conseil ~= nil and vigilanceColor > 1) or (conseil ~= nil and display_conseils == true) then -- Mise à our du devise texte conseil météo si il existe
if dz.devices(conseil_meteo).text ~= conseil then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), conseil) end
elseif (conseil == nil) or (conseil ~= nil and display_conseils == false) then -- Mise à jour du devise texte conseil météo si il existe même s'il n'y a pas de conseil disponible
if dz.devices(conseil_meteo).text ~= 'Aucun conseil disponible' then dz.devices(conseil_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun conseil disponible') end
end
end
-- ====================================================================================================================
-- Commentaire météo (merci denis_brasseur )
-- ====================================================================================================================
if commentaire_meteo ~= nil then
local vcommentaire = abr.CV.EV.VCOMMENTAIRE
if vcommentaire and (type(vcommentaire) == "table") then
for i, result in pairs(vcommentaire) do
if vcommentaire[i].texte then
commentaire = vcommentaire[i].texte
end
end
else commentaire = 'Aucun commentaire disponible'
end
if (commentaire ~= nil and vigilanceColor > 1) or (commentaire ~= nil and display_commentaire == true) then -- Mise à jour du devise texte commentaire météo si il existe
if dz.devices(commentaire_meteo).text ~= commentaire then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), commentaire) end
elseif (commentaire == nil) or (commentaire ~= nil and display_commentaire == false) then -- Mise à jour du devise texte commentaire météo si il existe même s'il n'y a pas de commentaire disponible
if dz.devices(commentaire_meteo).text ~= 'Aucun commentaire disponible' then dz.devices(commentaire_meteo).updateAlertSensor(seuilAlerte(vigilanceColor), 'Aucun commentaire disponible') end
end
end
-- ====================================================================================================================
-- ====================================================================================================================
else
local url = "http://vigilance2019.meteofrance.com/data/NXFR33_LFPW_.xml"
dz.openURL({
url = url,
method = "GET",
callback = response})
end
end
}
Dernière modification par Moulins58 le 30 janv. 2021, 17:47, modifié 2 fois.
Re: LUA: vigilance météoFrance
Pardon excuse-moi, ton souci est un peu plus compliquer dans le sens où ton script planterait sur domoticz.LOG_INFO,.
C'est juste la ligne de base pour écrire dans les logs
Est-ce que tu as d'autres scripts qui fonctionnent ? En lua et en DZvents ?
Tu peux nous en dire un peu plus sur ton installation : version de DomoticZ, version d'OS, version de Python ? C'est une nouvelle installation ?
C'est juste la ligne de base pour écrire dans les logs
Est-ce que tu as d'autres scripts qui fonctionnent ? En lua et en DZvents ?
Tu peux nous en dire un peu plus sur ton installation : version de DomoticZ, version d'OS, version de Python ? C'est une nouvelle installation ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: LUA: vigilance météoFrance
Bonjour, et encore milles excuses pour mon manque de savoir, j'ai déjà beau appris depuis mon 2 ans.
Ma configuration est la suivante: Domoticz 2020.2 est installé sur un Raspberry-Pi3+ et un disque SSD de 120Go.
Version Raspbian GNU/linux 10 (buster).
Version Python 2.7.16
En matériel :
Plugin Linky (dernière version) fonctionne très bien après plusieurs mois de galère.
MQTT client Gateway.With Lan Interface (Arrêté) ne fonctionne pas .
1_Wire (system)
Motherboard sensors (Domoticz_Pi)
Dunny
Darksky prévision météo
RFxCom 433,92 Mz Version Pro XL 1:1034
En dispositifs ils sont :
En scripts Lua:
dossier lua/xmlhandler:
Dossier dzvents :
Voila, le détail de mon installation.
Bonne journée.
Ma configuration est la suivante: Domoticz 2020.2 est installé sur un Raspberry-Pi3+ et un disque SSD de 120Go.
Version Raspbian GNU/linux 10 (buster).
Version Python 2.7.16
En matériel :
Plugin Linky (dernière version) fonctionne très bien après plusieurs mois de galère.
MQTT client Gateway.With Lan Interface (Arrêté) ne fonctionne pas .
1_Wire (system)
Motherboard sensors (Domoticz_Pi)
Dunny
Darksky prévision météo
RFxCom 433,92 Mz Version Pro XL 1:1034
En dispositifs ils sont :
En scripts Lua:
dossier lua/xmlhandler:
Dossier dzvents :
Voila, le détail de mon installation.
Bonne journée.
Re: LUA: vigilance météoFrance
Ton script Prévision Météo en Dzvent fonctionne ? Tu peux nous le poster ? Je voudrais voir ce qu'il peut y avoir comme différence avec ton script de vigilance météo.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: LUA: vigilance météoFrance
Ok,ll fonctionne super bien.
le voici !
Bonne après-midi
le voici !
Code : Tout sélectionner
--[[
previsionMeteo.lua
author/auteur = papoo
update/mise à jour = 31/03/2020
création = 18/08/2019
https://pon.fr/dzvents-mise-en-cache-des-donnees-de-lapi-prevision_meteo-ch
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/previsionMeteo.lua
https://easydomoticz.com/forum/viewtopic.php?f=17&t=8865
encodage UTF8 sans BOM
Principe : Le site prevision-meteo.ch subit de nombreux ralentissements, rendant aléatoire l'affichage des prévisions météo sur monitor
https://pon.fr/prevision-meteo-a-3-jours/
Ce script permet la récupération des données via l'API, la modification du chemin d'accès aux icones afin de les stocker en local.
Si les données sont inaccessibles lors de l'appel de l'API, les données précédentes ne sont pas écrasées, permettant le fonctionnement continue de la page météo
Téléchargez les 36 icones météo dans le dossier dédié de monitor /home/pi/domoticz/www/monitor/icons/prevision-meteo/
https://www.prevision-meteo.ch/style/images/icon/ensoleille.png
https://www.prevision-meteo.ch/style/images/icon/nuit-claire.png
https://www.prevision-meteo.ch/style/images/icon/ciel-voile.png
https://www.prevision-meteo.ch/style/images/icon/nuit-legerement-voilee.png
https://www.prevision-meteo.ch/style/images/icon/faibles-passages-nuageux.png
https://www.prevision-meteo.ch/style/images/icon/nuit-bien-degagee.png
https://www.prevision-meteo.ch/style/images/icon/brouillard.png
https://www.prevision-meteo.ch/style/images/icon/stratus.png
https://www.prevision-meteo.ch/style/images/icon/stratus-se-dissipant.png
https://www.prevision-meteo.ch/style/images/icon/nuit-claire-et-stratus.png
https://www.prevision-meteo.ch/style/images/icon/eclaircies.png
https://www.prevision-meteo.ch/style/images/icon/nuit-nuageuse.png
https://www.prevision-meteo.ch/style/images/icon/faiblement-nuageux.png
https://www.prevision-meteo.ch/style/images/icon/fortement-nuageux.png
https://www.prevision-meteo.ch/style/images/icon/averses-de-pluie-faible.png
https://www.prevision-meteo.ch/style/images/icon/nuit-avec-averses.png
https://www.prevision-meteo.ch/style/images/icon/averses-de-pluie-moderee.png
https://www.prevision-meteo.ch/style/images/icon/averses-de-pluie-forte.png
https://www.prevision-meteo.ch/style/images/icon/couvert-avec-averses.png
https://www.prevision-meteo.ch/style/images/icon/pluie-faible.png
https://www.prevision-meteo.ch/style/images/icon/pluie-forte.png
https://www.prevision-meteo.ch/style/images/icon/pluie-moderee.png
https://www.prevision-meteo.ch/style/images/icon/developpement-nuageux.png
https://www.prevision-meteo.ch/style/images/icon/nuit-avec-developpement-nuageux.png
https://www.prevision-meteo.ch/style/images/icon/faiblement-orageux.png
https://www.prevision-meteo.ch/style/images/icon/nuit-faiblement-orageuse.png
https://www.prevision-meteo.ch/style/images/icon/orage-modere.png
https://www.prevision-meteo.ch/style/images/icon/fortement-orageux.png
https://www.prevision-meteo.ch/style/images/icon/averses-de-neige-faible.png
https://www.prevision-meteo.ch/style/images/icon/nuit-avec-averses-de-neige-faible.png
https://www.prevision-meteo.ch/style/images/icon/neige-faible.png
https://www.prevision-meteo.ch/style/images/icon/neige-moderee.png
https://www.prevision-meteo.ch/style/images/icon/neige-forte.png
https://www.prevision-meteo.ch/style/images/icon/pluie-et-neige-melee-faible.png
https://www.prevision-meteo.ch/style/images/icon/pluie-et-neige-melee-moderee.png
https://www.prevision-meteo.ch/style/images/icon/pluie-et-neige-melee-forte.png
--]]
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local jsonFile = '/home/pi/domoticz/www/monitor/prevision-meteo.json' -- nom du fichier (et son chemin complet) contenant les données de l'API
local iconsPath = 'http://192.168.1.--:8080/monitor/icons/prevision-meteo/' -- adresse local où sont stockés les icones
--local city = '-----' -- nil si vous souhaitez utiliser les coordonnées de latitude/longitude
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName = 'Extraction prévisions météo'
local scriptVersion = '1.02'
local response = "prevision-meteo_response"
return {
active = true,
on = { timer = { "every 6 minutes" },
httpResponses = { response } },
-- logging = { level = domoticz.LOG_DEBUG,
-- -- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
-- -- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- -- level = domoticz.LOG_MODULE_EXEC_INFO,
-- marker = scriptName..' v'..scriptVersion },
execute = function(domoticz, item)
local function logWrite ( str, level) -- afficher le contenu d'un tableau
local logTableWrite_cache = {}
local function sub_logTableWrite(str, indent)
if (logTableWrite_cache[tostring(str)]) then
domoticz.log(indent.."*"..tostring(str), level or domoticz.LOG_DEBUG)
else
logTableWrite_cache[tostring(str)]=true
if (type(str)=="table") then
for pos,val in pairs(str) do
if (type(val)=="table") then
--domoticz.log(indent.."["..tostring(pos).."] - ["..tostring(str).."] => {", level or domoticz.LOG_DEBUG)
domoticz.log(indent.."["..tostring(pos).."] => {", level or domoticz.LOG_DEBUG)
sub_logTableWrite(val,indent..string.rep(" ",string.len(pos)+8))
domoticz.log(indent..string.rep(" ",string.len(pos)+6).."}", level or domoticz.LOG_DEBUG)
elseif (type(val)=="string") then
domoticz.log(indent.." "..pos..' = "'..val..'"', level or domoticz.LOG_DEBUG)
--domoticz.log(indent..pos..' => "'..val..'"', level or domoticz.LOG_DEBUG)
else
domoticz.log(indent.." "..pos.." = "..tostring(val), level or domoticz.LOG_DEBUG)
--domoticz.log(indent..pos.." = "..tostring(val), level or domoticz.LOG_DEBUG)
end
end
else
domoticz.log(indent..tostring(str), level or domoticz.LOG_DEBUG)
end
end
end
if (type(str)=="table") then
domoticz.log("["..tostring(str).."] => {", level or domoticz.LOG_DEBUG)
sub_logTableWrite(str," ")
domoticz.log("}", level or domoticz.LOG_DEBUG)
else
sub_logTableWrite(str," ")
end
print()
end
if (item.isHTTPResponse and item.trigger == response) then
if (not item.isJSON) then
logWrite('Last http response was not what expected. Trigger: '..item.trigger,domoticz.LOG_ERROR)
else
local contents = domoticz.utils.toJSON(item.json)
contents = contents:gsub('https://www(.?)prevision(.?)meteo(.?)ch/style/images/icon/', iconsPath)
logWrite(contents)
if contents then
file = io.open(jsonFile, "w+")
file:write( contents )
io.close( file )
--file:close()
logWrite('ecriture des données dans le fichier '..jsonFile)
end
end
else
if city ~= nil then
url = "https://www.prevision-meteo.ch/services/json/"..city
else
local latitude = domoticz.settings.location.latitude
-- local latitude = '----'
logWrite('latitude : '..latitude)
local longitude = domoticz.settings.location.longitude
-- local longitude = '----'
logWrite('longitude : '..longitude)
url = "https://www.prevision-meteo.ch/services/json/lat="..latitude.."lng="..longitude
end
domoticz.openURL({
url = url,
method = "GET",
callback = response})
end
end
}
Dernière modification par Moulins58 le 30 janv. 2021, 17:58, modifié 2 fois.
Re: LUA: vigilance météoFrance
Ne mets pas ton script en pièce jointe, on ne peut pas le lire sur le forum. Obliger de le télécharger, le dézipper ...
Il y a un bouton </ > qui permet de placer des balises autour de ton code pour qu'il s'affiche dans un petit cadre blanc. Je t'invite à modifier ton message précédent et à retirer tes coordonnées GPS
Tu as fait un comparatif entre les deux scripts ? La partie Logging est complètement commentée. Tu as essayé :
Il y a un bouton </ > qui permet de placer des balises autour de ton code pour qu'il s'affiche dans un petit cadre blanc. Je t'invite à modifier ton message précédent et à retirer tes coordonnées GPS
Tu as fait un comparatif entre les deux scripts ? La partie Logging est complètement commentée. Tu as essayé :
Code : Tout sélectionner
-- logging = { level = domoticz.LOG_DEBUG,
-- -- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
-- -- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- -- level = domoticz.LOG_MODULE_EXEC_INFO,
-- marker = scriptName..' v'..scriptVersion },Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: LUA: vigilance météoFrance
Merci pour l'info, j'ai bien enregistré
J'ai dé-commenté la ligne erreur, a force de chercher, je les avais toutes commentées
j'ai la même erreur.
J'ai dé-commenté la ligne erreur, a force de chercher, je les avais toutes commentées
Code : Tout sélectionner
logging = { level = domoticz.LOG_DEBUG,
--level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion },
Re: LUA: vigilance météoFrance
Est-ce que tu as essayé ce que je t'ai dit plus haut ? > Commenter toutes les lignes correspondantes à la fonction logging ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos