DZVents : mise en cache des données de l’API prevision_meteo.ch

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par Doudy »

Hello,
Bonjour,

Voilà le résultat, pas de soucis :

Code : Tout sélectionner

pi@raspberrypi:~/domoticz/scripts/dzVents/scripts $ wget https://www.prevision-meteo.ch/services/json/Limoges
--2019-11-21 08:04:42--  https://www.prevision-meteo.ch/services/json/Limoges
Résolution de www.prevision-meteo.ch (www.prevision-meteo.ch)… 91.121.52.89
Connexion à www.prevision-meteo.ch (www.prevision-meteo.ch)|91.121.52.89|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : non indiqué [application/json]
Sauvegarde en : « Limoges »

Limoges                               [ <=>                                                          ]  52,73K  --.-KB/s    in 0,04s

2019-11-21 08:04:43 (1,46 MB/s) - « Limoges » sauvegardé [53993]
J'ai ensuite adapté le scripts comme demandé :

Code : Tout sélectionner

                --local latitude  = domoticz.settings.location.latitude
                local latitude  = '45.85860'
                logWrite('latitude : '..latitude)
                --local longitude = domoticz.settings.location.longitude
                local longitude = '1.23190'
                logWrite('longitude : '..longitude)
                local url = "https://www.prevision-meteo.ch/services/json/lat="..latitude.."lng="..longitude
Résultat :

Code : Tout sélectionner

2019-11-21 08:12:00.548 Status: dzVents: Info: ------ Start external script: previsionMeteo.lua:, trigger: every 6 minutes
2019-11-21 08:12:00.548 Status: dzVents: Info: ------ Finished previsionMeteo.lua 

2019-11-21 08:12:02.199 Status: dzVents: Info: Handling httpResponse-events for: "prevision-meteo_response
2019-11-21 08:12:02.199 Status: dzVents: Info: ------ Start external script: previsionMeteo.lua: HTTPResponse: "prevision-meteo_response"
2019-11-21 08:12:02.199 Status: dzVents: Error (2.4.19): Last http response was not what expected. Trigger: prevision-meteo_response
2019-11-21 08:12:02.199 Status: dzVents: Info: ------ Finished previsionMeteo.lua

;)
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

papoo
Messages : 2027
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par papoo »

pourrais tu stp poster le script modifié en entier stp voir si il fonctionne chez moi?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par Doudy »

Voici :

Code : Tout sélectionner

--[[
previsionMeteo.lua
author/auteur = papoo
update/mise à jour = 04/10/2019
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
https://easydomoticz.com/forum/
https://easydomoticz.com/forum/viewtopic.php?f=17&t=8865&p=75038#p75038


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 jsonFile      = 'http://192.168.1.xxx:xxxx/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.xxx:xxxx/home/pi/domoticz/www/monitor/icons/prevision-meteo/' -- adresse local où sont stockés les icones

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Extraction prévisions météo'
local scriptVersion     = '1.01'
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
                --local latitude  = domoticz.settings.location.latitude
                local latitude  = '45.85860'
                logWrite('latitude : '..latitude)
                --local longitude = domoticz.settings.location.longitude
                local longitude = '1.23190'
                logWrite('longitude : '..longitude)
                local url = "https://www.prevision-meteo.ch/services/json/lat="..latitude.."lng="..longitude

            domoticz.openURL({
                  url = url,
                        method = "GET",
                        callback = response})
        end
    end
}
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

papoo
Messages : 2027
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par papoo »

mis à part le fait que tu n'ai pas renseigné l'adresse locale pour les icones (iconsPath) ton script fonctionne chez moi
2019-11-25 22_23_43-Window.png
2019-11-25 22_23_43-Window.png (171.45 Kio) Vu 2971 fois

Code : Tout sélectionner

--[[
previsionMeteo.lua
author/auteur = papoo
update/mise à jour = 04/10/2019
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
https://easydomoticz.com/forum/
https://easydomoticz.com/forum/viewtopic.php?f=17&t=8865&p=75038#p75038


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 jsonFile      = 'http://192.168.1.xxx:xxxx/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.24:8080/home/pi/domoticz/www/monitor/icons/prevision-meteo/' -- adresse local où sont stockés les icones

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Extraction prévisions météo'
local scriptVersion     = '1.01'
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
                --local latitude  = domoticz.settings.location.latitude
                local latitude  = '45.85860'
                logWrite('latitude : '..latitude)
                --local longitude = domoticz.settings.location.longitude
                local longitude = '1.23190'
                logWrite('longitude : '..longitude)
                local url = "https://www.prevision-meteo.ch/services/json/lat="..latitude.."lng="..longitude

            domoticz.openURL({
                  url = url,
                        method = "GET",
                        callback = response})
        end
    end
}
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par Doudy »

Bonjour,
Merci pour ton suivi. ;)

Je ne comprends pas.
papoo a écrit :
25 nov. 2019, 22:26
mis à part le fait que tu n'ai pas renseigné l'adresse locale pour les icones (iconsPath) ton script fonctionne chez moi
2019-11-25 22_23_43-Window.png
J'ai quand même la ligne :

Code : Tout sélectionner

local iconsPath     = 'http://192.168.1.xxx:xxxx/home/pi/domoticz/www/monitor/icons/prevision-meteo/' -- adresse local où sont stockés les icones
ou les xxx:xxxx sont remplacés par mes paramètres.

Comparé à ta version ci-dessus, je viens de décommenter les lignes suivantes :

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 },
Le résultat dans mon log :

Code : Tout sélectionner

 2019-11-26 09:06:00.343 Status: dzVents: Info: Extraction prévisions météo v1.01: ------ Start external script: previsionMeteo.lua:, trigger: every 6 minutes
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: latitude : 45.85860
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: longitude : 1.23190
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: OpenURL: url = https://www.prevision-meteo.ch/services/json/lat=45.85860lng=1.23190
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: OpenURL: method = GET
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: OpenURL: post data = nil
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: OpenURL: headers = nil
2019-11-26 09:06:00.344 Status: dzVents: Debug: Extraction prévisions météo v1.01: OpenURL: callback = prevision-meteo_response
2019-11-26 09:06:00.344 Status: dzVents: Info: Extraction prévisions météo v1.01: ------ Finished previsionMeteo.lua
2019-11-26 09:06:00.345 Status: EventSystem: Script event triggered: /home/pi/domoticz/dzVents/runtime/dzVents.lua
2019-11-26 09:06:02.522 Status: dzVents: Info: Handling httpResponse-events for: "prevision-meteo_response
2019-11-26 09:06:02.522 Status: dzVents: Info: Extraction prévisions météo v1.01: ------ Start external script: previsionMeteo.lua: HTTPResponse: "prevision-meteo_response"
2019-11-26 09:06:02.522 Status: dzVents: Error (2.4.19): Extraction prévisions météo v1.01: Last http response was not what expected. Trigger: prevision-meteo_response
2019-11-26 09:06:02.523 Status: dzVents: Info: Extraction prévisions météo v1.01: ------ Finished previsionMeteo.lua 
J'ai laissé tes paramètres pour la latitude et la longitude.

Je n'ai pas ceci :
Image

et je n'ai toujours pas de fichier "prevision-meteo.json" dans /home/pi/domoticz/www/monitor/

Il y a un soucis quelque part mais ou ?
Tu as encore une idée ?
;)
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

papoo
Messages : 2027
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par papoo »

peux tu vérifier ou ajouter 192.168.1. * au champ [Réseaux locaux (pas de nom d'utilisateur / mot de passe):] dans [système] [configuration] [paramètres]
afin qu'il ressemble à quelque chose comme: 127.0.0.1; 192.168. 1.* ?

as tu d'autres scripts qui consultent des sites genre darksky? alertePollents? alerteMeteofrancePluie? fonctionnent t'ils correctement?

il y a peu être un problème lors de la création du fichier de destination.
le chemin complet existe il? le script ne créé pas les répertoires si ils n'existent pas.
as tu essayé de créer un fichier prevision-meteo.json vide des fois que les droits d'accès au fichier soient réduits?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

raphy383
Messages : 10
Enregistré le : 03 oct. 2019, 21:31

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par raphy383 »

Je pensais aussi a un problème de droit de fichier...
Mais comme le script créé un fichier "Root" je pensais être hors sujet... Donc je ne suis pas intervenu dans ce sens.

A priori, vu la disposition du fichier (a la racine de monitor) le répertoire doit bien exister...

A vérifier quand même !!

(Sauf si le chemin de monitor a été modifié, comme chez moi... A vérifier ++)

papoo
Messages : 2027
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par papoo »

essayons plus simple
pourrais tu mettre en place le script suivant dans /home/pi/domoticz/scripts/dzVents/scripts/testsUrl.lua
et me dire ce qui fonctionne?

Code : Tout sélectionner

local scriptName        = 'Test Urls'
local scriptVersion     = '0.1'

return {
	active = true,
	--active = false,
	on = {
		timer = {'every minute'},
		httpResponses = { 'testUrl*' },
	},
	
	logging =   {   level    =   domoticz.LOG_DEBUG,
				marker  =   scriptName..' v'..scriptVersion },
				
	execute = function(dz, item)
	
		if item.isHTTPResponse then
			--dz.utils.dumpTable(item)
			dz.log('Domoticz version: ' .. dz.settings.domoticzVersion .. ', and dzVents version : ' .. dz.settings.dzVentsVersion,dz.LOG_FORCE)

			dz.log(item.data,dz.LOG_FORCE)
		else
		    urls =
			{ 					
				["testUrl1"] = dz.settings['Domoticz url'] .. '/json.htm?type=command&param=getuservariables',
				["testUrl2"] = 'http://api.farmsense.net/v1/moonphases/?d='..dz.time.dDate,
				["testUrl3"] = 'http://google.fr',
			}

			for callback, url in pairs(urls) do 
				dz.openURL({ url = url , callback = callback })
			end
		end
	end
}
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par Doudy »

papoo a écrit :
26 nov. 2019, 21:48
peux tu vérifier ou ajouter 192.168.1. * au champ [Réseaux locaux (pas de nom d'utilisateur / mot de passe):] dans [système] [configuration] [paramètres]
afin qu'il ressemble à quelque chose comme: 127.0.0.1; 192.168. 1.* ?
C'était déjà le cas :
Image
papoo a écrit :
26 nov. 2019, 21:48
as tu d'autres scripts qui consultent des sites genre darksky? alertePollents? alerteMeteofrancePluie? fonctionnent t'ils correctement?
Oui darksky fonctionne correctement :

Code : Tout sélectionner

2019-11-27 09:14:47.695 (Darksky) Temp + Humidity + Baro (THB)
2019-11-27 09:14:47.696 (Darksky) Wind (Unknown)
2019-11-27 09:14:47.697 (Darksky) UV (UV Index)
2019-11-27 09:14:47.706 (Darksky) Rain (Rain)
2019-11-27 09:14:47.711 (Darksky) General/Visibility (Visibilité)
2019-11-27 09:14:47.730 (Darksky) General/Custom Sensor (Ozone Sensor) 
papoo a écrit :
26 nov. 2019, 21:48
il y a peu être un problème lors de la création du fichier de destination.
le chemin complet existe il? le script ne créé pas les répertoires si ils n'existent pas.
as tu essayé de créer un fichier prevision-meteo.json vide des fois que les droits d'accès au fichier soient réduits?
Création sans soucis :
Image

Je teste de suite ton script 'Test Urls'

;)
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

Re: DZVents : mise en cache des données de l’API prevision_meteo.ch

Message par Doudy »

papoo a écrit :
26 nov. 2019, 22:31
essayons plus simple

Code : Tout sélectionner

2019-11-27 09:23:01.068 Status: dzVents: Info: Test Urls v0.1: ------ Start external script: testsUrl.lua: HTTPResponse: "testUrl1"
2019-11-27 09:23:01.074 Status: dzVents: !Info: Test Urls v0.1: Domoticz version: 4.10717, and dzVents version : 2.4.19
2019-11-27 09:23:01.074 Status: dzVents: !Info: Test Urls v0.1: {
2019-11-27 09:23:01.074 "result" : [
2019-11-27 09:23:01.074 {
2019-11-27 09:23:01.074 "LastUpdate" : "2019-02-28 11:46:33",
2019-11-27 09:23:01.074 "Name" : "api_weather_underground",
2019-11-27 09:23:01.074 "Type" : "2",
2019-11-27 09:23:01.074 "Value" : "38xx--xx65",
2019-11-27 09:23:01.074 "idx" : "1"
2019-11-27 09:23:01.074 },
2019-11-27 09:23:01.074 {
2019-11-27 09:23:01.074 "LastUpdate" : "2019-02-19 09:40:37",
2019-11-27 09:23:01.074 "Name" : "TWICE_lumière extérieur_On",
2019-11-27 09:23:01.074 "Type" : "2",
2019-11-27 09:23:01.074 "Value" : "0",
2019-11-27 09:23:01.074 "idx" : "2"
2019-11-27 09:23:01.074 },
2019-11-27 09:23:01.074 {
2019-11-27 09:23:01.074 "LastUpdate" : "2019-11-27 05:33:03",
2019-11-27 09:23:01.074 "Name" : "TWICE_I-Chauffage Cuisine_On",
2019-11-27 09:23:01.074 "Type" : "2",
2019-11-27 09:23:01.074 "Value" : "2019-11-27 05:33:01",
2019-11-27 09:23:01.074 "idx" : "3"
2019-11-27 09:23:01.074 },
2019-11-27 09:23:01.074 {
2019-11-27 09:23:01.074 "LastUpdate" : "2019-11-27 09:02:02",
2019-11-27 09:23:01.074 "Name" : "TWICE_I-Chauffage Cuisine_Off",
2019-11-27 09:23:01.074 "Type" : "2",
2019-11-27 09:23:01.074 "Value" : "2019-11-27 09:02:01",
2019-11-27 09:23:01.074 "idx" : "4"
2019-11-27 09:23:01.074 },
2019-11-27 09:23:01.074 {
2019-11-27 09:23:01.074 "LastUpdate" : "2019-05-23 16:19:09",
2019-11-27 09:23:01.074 "Name" : "sms",
2019-11-27 09:23:01.074 "Type" : "2",
2019-11-27 09:23:01.074 "Value" : "WH2600-Outdoor;+xxxxxxxxxxx",
2019-11-27 09:23:01.074 "idx" : "5"
2019-11-27 09:23:01.074 }
2019-11-27 09:23:01.074 ],
2019-11-27 09:23:01.074 "status" : "OK",
2019-11-27 09:23:01.074 "title" : "GetUserVariables"
2019-11-27 09:23:01.074 }
2019-11-27 09:23:01.074
2019-11-27 09:23:01.074 Status: dzVents: Info: Test Urls v0.1: ------ Finished testsUrl.lua
2019-11-27 09:23:01.190 Status: dzVents: Info: Handling httpResponse-events for: "testUrl2
2019-11-27 09:23:01.190 Status: dzVents: Info: Test Urls v0.1: ------ Start external script: testsUrl.lua: HTTPResponse: "testUrl2"
2019-11-27 09:23:01.190 Status: dzVents: !Info: Test Urls v0.1: Domoticz version: 4.10717, and dzVents version : 2.4.19
2019-11-27 09:23:01.190 Status: dzVents: !Info: Test Urls v0.1: [{"Error":0,"ErrorMsg":"success","TargetDate":"1574842980","Moon":["Frosty Moon"],"Index":0,"Age":0.757452870167295788661476763081736862659454345703125,"Phase":"New Moon","Distance":379873.6599999999743886291980743408203125,"Illumination":0.01000000000000000020816681711721685132943093776702880859375,"AngularDiameter":0.52427472695365839872039259716984815895557403564453125,"DistanceToSun":147606447.711989581584930419921875,"SunAngularDiameter":0.54032293537487363632720871464698575437068939208984375}]
2019-11-27 09:23:01.190 Status: dzVents: Info: Test Urls v0.1: ------ Finished testsUrl.lua 


2019-11-27 09:29:01.314 Status: dzVents: Info: Handling httpResponse-events for: "testUrl3
2019-11-27 09:29:01.314 Status: dzVents: Info: Test Urls v0.1: ------ Start external script: testsUrl.lua: HTTPResponse: "testUrl3"
2019-11-27 09:29:01.314 Status: dzVents: !Info: Test Urls v0.1: Domoticz version: 4.10717, and dzVents version : 2.4.19
2019-11-27 09:29:01.331 Status: dzVents: !Info: Test Urls v0.1: <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="nl-BE"><head><meta charset="UTF-8"><meta content="origin" name="referrer"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><meta content="origin" name="referrer"><title>Google</title><script nonce="OWm6zHTmdYZD9acF2YafWg==">(function(){window.google={kEI:'zTPeXeqnBYisa72elMAL',kEXPI:'31',authuser:0,kscs:'c9c918f0_zTPeXeqnBYisa72elMAL',kGL:'BE',kBL:'Ljcm'};google.sn='webhp';google.kHL='nl-BE';google.jsfs='Ffpdje';})();(function(){google.lc=[];google.li=0;google.getEI=function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||google.kEI};google.getLEI=function(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=a.parentNode;return b};google.https=function(){return"https:"==window.location.protocol};google.ml=function(){return null};google.time=function(){return(new Date).getTime()};google.log=function(a,b,e,c,g){if(a=google.logUrl(a,b,e,c,g)){b=new Image;var d=google.lc,f=google.li;d[f]=b;b.onerror=b.onload=b.onabort=function(){delete d[f]};google.vel&&google.vel.lu&&google.vel.lu(a);b.src=a;google.li=f+1}};google.logUrl=function(a,b,e,c,g){var d="",f=google.ls||"";e||-1!=b.search("&ei=")||(d="&ei="+google.getEI(c),-1==b.search("&lei=")&&(c=google.getLEI(c))&&(d+="&lei="+c));c="";!e&&google.cshid&&-1==b.search("&cshid=")&&"slh"!=a&&(c="&cshid="+google.cshid);a=e||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+d+f+"&zx="+google.time()+c;/^http:/i.test(a)&&google.https()&&(google.ml(Error("a"),!1,{src:a,glmm:1}),a="");return a};}).call(this);(function(){google.y={};google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};}).call(this);google.f={};(function(){google.hs={h:true,sie:false};})();(function(){google.c={gl:false,lhc:false};(function(){var e=window.performance;var g=function(a,b,c,d){a.addEventListener?a.removeEventListener(b,c,d||!1):a.attachEvent&&a.detachEvent("on"+b,c)},h=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)};google.timers={};google.startTick=function(a){google.timers[a]={t:{start:google.time()},e:{},m:{}}};google.tick=function(a,b,c){google.timers[a]||google.startTick(a);c=void 0!==c?c:google.time();b instanceof Array||(b=[b]);for(var d=0,f;f=b[d++];)google.timers[a].t[f]=c};google.c.e=function(a,b,c){google.timers[a].e[b]=c};google.c.b=function(a){var b=google.timers.load.m;b[a]&&google.ml(Error("a"),!1,{m:a});b[a]=!0};google.c.u=function(a){var b=google.timers.load.m;if(b[a]){b[a]=!1;for(a in b)if(b[a])return;google.csiReport()}else google.ml(Error("b"),!1,{m:a})};google.rll=function(a,b,c){var d=function(f){c(f);g(a,"load",d);g(a,"error",d)};h(a,"load",d);b&&h(a,"error",d)};google.aft=function(a){a.setAttribute("data-iml",google.time())};google.startTick("load");var k=google.timers.load;a:{var l=k.t;if(e){var m=e.timing;if(m){var n=m.navigationStart,p=m.responseStart;if(p>n&&p<=l.start){l.start=p;k.wsrt=p-n;break a}}e.now&&(k.wsrt=Math.floor(e.now()))}}google.c.b("pr");google.c.b("xe");if(google.c.gl){var q=function(a){a&&google.aft(a.target)};h(document.documentElement,"load",q,!0);google.c.glu=function(){g(document.documentElement,"load",q,!0)}};}).call(this);})();(function(){var b=[function(){google.tick&&google.tick("load","dcl")}];google.dclc=function(a){b.length?b.push(a):a()};function c(){for(var a;a=b.shift();)a()}window.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):window.attachEvent&&window.attachEvent("onload",c);}).call(this);(function(){var b=[];google.jsc={xx:b,x:function(a){b.push(a)},mm:[],m:function(a){google.jsc.mm.length||(google.jsc.mm=a)}};}).call(this);(function(){var f=this||self,g=Date.now||function(){return+new Date};var y={};var aa=function(a,c){if(null===c)return!1;if("contains"in a&&1==c.nodeType)return a.contains(c);if("compareDocumentPosition"in a)return a==c||!!(a.compareDocumentPosition(c)&16);for(;c&&a!=c;)c=c.parentNode;return c==a};var ba=function(a,c){return function(d){d||(d=window.event);return c.call(a,d)}},A=function(a){a=a.target||a.srcElement;!a.getAttribute&&a.parentNode&&(a=a.parentNode);return a},B="undefined"!=typeof navigator&&/Macintosh/.test(navigator.userAgent),ca="undefined"!=typeof navigator&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),da={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},ea=function(){this._mouseEventsPrevented=!0},F={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},G={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},H={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0},fa={A:!0,AREA:!0,BUTTON:!0,DIALOG:!0,IMG:!0,INPUT:!0,LINK:!0,MENU:!0,OPTGROUP:!0,OPTION:!0,PROGRESS:!0,SELECT:!0,TEXTAREA:!0};var I=function(){this.h=this.a=null},K=function(a,c){var d=J;d.a=a;d.h=c;return d};I.prototype.g=function(){var a=this.a;this.a&&this.a!=this.h?this.a=this.a.__owner||this.a.parentNode:this.a=null;return a};var L=function(){this.i=[];this.a=0;this.h=null;this.j=!1};L.prototype.g=function(){if(this.j)return J.g();if(this.a!=this.i.length){var a=this.i[this.a];this.a++;a!=this.h&&a&&a.__owner&&(this.j=!0,K(a.__owner,this.h));return a}return null};var J=new I,M=new L;var O=function(){this.o=[];this.a=[];this.g=[];this.j={};this.h=null;this.i=[];N(this,"_custom")},ha="undefined"!=typeof navigator&&/iPhone|iPad|iPod/.test(navigator.userAgent),P=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")},ia=/\s*;\s*/,ma=function(a,c){return function p(b
2019-11-27 09:29:01.332 Status: dzVents: Info: Test Urls v0.1: ------ Finished testsUrl.lua 

2019-11-27 09:30:05.178 Status: dzVents: Info: Handling httpResponse-events for: "testUrl2
2019-11-27 09:30:05.178 Status: dzVents: Info: Test Urls v0.1: ------ Start external script: testsUrl.lua: HTTPResponse: "testUrl2"
2019-11-27 09:30:05.178 Status: dzVents: !Info: Test Urls v0.1: Domoticz version: 4.10717, and dzVents version : 2.4.19
2019-11-27 09:30:05.178 Status: dzVents: !Info: Test Urls v0.1: [{"Error":0,"ErrorMsg":"success","TargetDate":"1574843400","Moon":["Frosty Moon"],"Index":0,"Age":0.76256815677172584688747747350134886801242828369140625,"Phase":"New Moon","Distance":379897.0900000000256113708019256591796875,"Illumination":0.01000000000000000020816681711721685132943093776702880859375,"AngularDiameter":0.5242423940109588453850619771401397883892059326171875,"DistanceToSun":147606319.5572496950626373291015625,"SunAngularDiameter":0.54032340449398341686304547692998312413692474365234375}]
2019-11-27 09:30:05.178 Status: dzVents: Info: Test Urls v0.1: ------ Finished testsUrl.lua 
Voilà, je pense avoir tout mis.
je vois qu'il y a deux infos avec un ! : "!Info:"


;)
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

Répondre