Monitor Affichage page METEO -

Forum dédié aux interfaces personnalisables : Custom Pages, Reacticz, Domoboard...
christian74100
Messages : 4
Inscription : 14 janv. 2018, 02:52

Monitor Affichage page METEO -

Message par christian74100 »

Bonjour à tous et tous mes meilleurs voeux en ce début d'année

Nouvel utilisateur de DomoticZ j’ai découver ce forum « Easydomoticz » et toutes ces informations sur Monitor et les Custom-Page.s
Whaaooouuuu quelle qualité d’information et d’entraide, tout particulièrement de la part de vil1driver qui ne ménage pas son temps
j’ai les yeux carrés :shock: pour avoir lu les 148 pages du forum.
J’ai utilisé quelques unes des subtilités proposées et me suis interresé plus particulièrement à la page météo (pluie) et je me trouve face à un problème.

Pour la partie du haut de la page météo j’ai compris comment ça marchait et suis satisfait de ce que j’obtiens, mais pour toute la partie du bas (les prévisions heure par heure sur 3 ou 4 jours.) rien ne s’affiche.

j’ai testé en direct la commande d’appel du site « http://www.prevision-meteo.ch/services/json/[maVille] » el les informations remontent bien. Donc à priori pas de blocage de ce coté là.

A force de chercher je crois que c’est la partie du code « $.getJSON(JsonAddress, function (json) { …… » qui ne exécute pas.
Si je pose une « alert() » dans cette partie rien n’est remonté alors que la même alert() est affichée si je la met juste avant cette ligne.

J’ai surement raté quelque chose dans mon installation et je viens chercher du secours auprès de vous.
quelqu’un peut-il m’aider à résoudre ce problème.
Merci par avance

ma config : RPI (raspbian), rfxcom, Macbook pro (safari)
christian74100
Messages : 4
Inscription : 14 janv. 2018, 02:52

Re: Monitor Affichage page METEO -

Message par christian74100 »

Bonsoir
je reprend le clavier pour préciser quelques points (après démontage / remontage de la page météo)

Problème d'affichage seulement sur safari (Version actuelle 11.0.2 )
Affichage correct sur Firefox
Manque la dernière des 4 lignes sur une tablette Android alors qu'il y a la place.

si il y a de bonnes Ames pour m'éclairer !!!
christian74100
Messages : 4
Inscription : 14 janv. 2018, 02:52

Monitor Affichage page METEO -

Message par christian74100 »

bonjour
je reviens sur le sujet car je suis toujours face au même problème
Pour info le problème est aussi regulièrement mais pas systématiquement présent avec firefox sur mac OSX et sur ma tablette LG avec Chrome.

Pour toutes les prévisions heure par heure sur 3 ou 4 jours rien ne s’affiche.
Je confirme que j’ai bien testé en direct la commande d’appel du site « http://www.prevision-meteo.ch/services/json/[maVille] » el les informations remontent bien.
Donc à priori pas de problème pour la récupération des données.

Je suis presque certain que c’est la partie du code « $.getJSON(JsonAddress, function (json { …… )» qui n'est pas exécutée. mais je ne comprend pas pourquoi.
Si je pose une « alert() » dans cette partie du code "JS" pas de message alors que la même alert() est bien affichée si je la pose juste avant cette ligne.

quelqu'un peut-il m'aider à comprendre quel paramétrage j'ai loupé.
merci d'avance
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Monitor Affichage page METEO -

Message par papoo »

en ce moment l'api prevision-meteo.ch a quelques problèmes, surement victime de son succès
tu n'arrive jamais à voir la météo ou seulement de temps en temps?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
christian74100
Messages : 4
Inscription : 14 janv. 2018, 02:52

Re: Monitor Affichage page METEO -

Message par christian74100 »

Merci de me venir en aide

Le problème est épisodique sur Firefox (MAC OSX) et la tablette LG mais systématique sur safari.
Pour moi rien à voir avec l'accès à l'API mais juste un problème de parametrage pour l'exécution de cette fonction javascript $.getJSON().
Comme je le disais dans mes autres messages j'ai une alerte posée en 1ere ligne de la fonction et quand cette alerte est activée les infos météo sont bien affichées ce qui pour moi indique que le *programme* ne passe pas systématiquement dans cette fonction,

ci-dessous le passage du code en question dans la page météo.html
. . . . .
$.getJSON(JsonAddress, function(json) {
alert("dans $.getJSON");
$.each(json.fcst_day_0.hourly_data, function( index, value ) {
. . . . . .

Une idée pour être sur que la fonction est bien "toujours* exécutée ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Monitor Affichage page METEO -

Message par vil1driver »

Salut

F12 ;) onglet network
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Moulins58
Messages : 134
Inscription : 17 févr. 2019, 20:41

Re: Monitor Affichage page METEO -

Message par Moulins58 »

Moi, c'est le contraire, le bas de page fonctionne correctement, mais je n'ai rien en haut de page jusqu'a "météo 11". Je n'ai pas pigé pour ce haut de page.
Voila mon script pour le bas:

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.79:8080/monitor/icons/prevision-meteo/' -- adresse local où sont stockés les icones
local city          = 'treillieres'  -- 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  = '47.366285'
                logWrite('latitude : '..latitude)
                local longitude = domoticz.settings.location.longitude
                -- local longitude = '-1.619198'
                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
}
A placer dans "/home/pi/domoticz/scripts/dzVents/scripts"
Pouvez-vous me donner la solution pour le haut de page.
Merci
Moulins58
Messages : 134
Inscription : 17 févr. 2019, 20:41

Re: Monitor Affichage page METEO -

Message par Moulins58 »

Bonsoir, j'ai réussi à faire la partie haute de la page, j'ai juste une question : comment mettre l'icône Météo dans la cellule 25 de la page Météo comme dans le tuto. J'ai pas compris, mais pas compris!
Quelqu'un pourrait -il m'aider. Merci
ardiced
Messages : 12
Inscription : 18 sept. 2018, 18:17

Re: Monitor Affichage page METEO -

Message par ardiced »

Bonjour,

Dans frontpage_settings.js, pour afficher l'icone météo

Code : Tout sélectionner

['IDX',		'ForecastStr',		'Cell_25',	'Prévision','','','',''],	// Icone prevision du jour	
['IDX',		'ForecastStr',		'Cell_25',	'Prévision','1','','',''],	// Icone prevision du jour +1
['IDX',		'ForecastStr',		'Cell_25',	'Prévision','2','','',''],	// Icone prevision du jour +2
['IDX',		'ForecastStr',		'Cell_25',	'Prévision','3','','',''],	// Icone prevision du jour +3
Pour IDX placer le nom ou l'IDX de ton sensor
C'est 'ForecastStr' qui force l'affichage de l'icone
le 1, 2, 3 ou rien correspond au jour à afficher.
Moulins58
Messages : 134
Inscription : 17 févr. 2019, 20:41

Re: Monitor Affichage page METEO -

Message par Moulins58 »

Merci pour la réponse, demain j'essaie. Bonne soirée.
Répondre