[DzVents] Données Météo Weather Visual Crossing

Vous avez créé 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.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [DzVents] Données Météo Weather Visual Crossing

Message par Keros »

C'est peut-être normal. Un moyen de vérifier serait de générer le json et regarder les données qu'il y a dedans.
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
Loky31200
Messages : 144
Inscription : 05 mars 2019, 10:13

Re: [DzVents] Données Météo Weather Visual Crossing

Message par Loky31200 »

gawel3164 a écrit : 04 juin 2023, 16:48 Merci beaucoup pour cet excellent script !!! ça m'enlève une sacrée épine du pied!
Par contre, il y a effectivement un problème sur les probabilités de pluie. Avec Darksky je gérais mon arrosage automatique en fonction des probabilités de pluie et j'avais donc besoin des proba à 1h, 5h, 12h et 24h. J'ai donc modifié le script de BernardC afin de retrouver ces 4 probabilités et aujourd'hui, les quatre affichent 47.6%. Etrange non?
J'ai l'impression que les probas sur cette sont plus "généreuses" (je trouve les % très élevé à comparé de Dark)et surtout elles sont souvent égales sur une tranche horaire ( typiquement quelques heures).

Moi aussi je gère mon arrosage avec cela et je pense avoir perdu un peu de précision dans la bataille mais le principe marche quand même :)
Il faut un peu raffiner en fonction des % quand même.
BernardC
Messages : 18
Inscription : 10 avr. 2023, 10:31

Re: [DzVents] Données Météo Weather Visual Crossing

Message par BernardC »

Bonjour,
j'ai testé pour ma part, les résultats sont cohérents avec les donnés JSON...
il faut voir vos données JSON avec la requête :
https://weather.visualcrossing.com/Visu ... ine/<votre localitée>?unitGroup=metric&maxDistance=20000&include=days%2Ccurrent%2Chours&key=<votre clé API>&contentType=json
ou sans l'option 20km de distance:
https://weather.visualcrossing.com/Visu ... ine/<votre localitée>?&include=days%2Ccurrent%2Chours&key=<votre clé API>&contentType=json
en utilisant le navigateur firefox en développant tout et filtrant avec "precipprob" c'est très facile de voir la cohérence des résultats.
je pense que l'option des 20km peut poser des soucis suivant la position géographique des stations avec la localité choisie, j'ai fait une MAJ du script sans l'option.
Il est intéressant aussi de se connecter à https://www.visualcrossing.com/weather/ ... -services#
pour les probabilités en ajustant les paramètres pour les stations.
Dernière modification par Keros le 08 juin 2023, 19:00, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
BernardC
Messages : 18
Inscription : 10 avr. 2023, 10:31

Re: [DzVents] Données Météo Weather Visual Crossing

Message par BernardC »

@Loky31200

Bonjour,
Mon script fait la probabilité pour une période, 5H=> on a la probabilité de pluie la plus élevée pour la période de 5H00, et non la probabilité de l'heure H+5, exemple il est 10H, ce n'est la probabilité pour 15H qui est retournée.

J'ai vu dans script de viewtopic.php?p=58822#p58822 de papoo pour lequel il semble que c'est la 2eme option qui est utilisée. Si c'est cette option que vous utilisez, l'utilisation de la probabilité est différente.
Dernière modification par Keros le 12 juin 2023, 20:48, modifié 1 fois.
Raison : Citation supprimée
Loky31200
Messages : 144
Inscription : 05 mars 2019, 10:13

Re: [DzVents] Données Météo Weather Visual Crossing

Message par Loky31200 »

Merci pour la réponse très claire :)

Du coup si je modifie la fonction comme suivant :

Code : Tout sélectionner

local function lectProb(duree,v)
    -- duree--durée en H de la probabilité 
    -- V données JSON 
    local Time = require('Time')
    local now = Time()
    local Heure = now.hour+1 -- heure de debut + 1 pour index
    local J = 1 --init jour
    local Prob,ResulProb =0,0
    
    H=Heure + duree
    Prob= v.days[J].hours[H].precipprob
    ResulProb = Prob
    return (ResulProb )
end
Cela donnera bien la proba de pluie de l'heure considérée non?
Dernière modification par Keros le 19 juin 2023, 20:48, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe
BernardC
Messages : 18
Inscription : 10 avr. 2023, 10:31

Re: [DzVents] Données Météo Weather Visual Crossing

Message par BernardC »

Citation supprimée

Bonjour,
Oui, mais il faut Un test pour le changement de jour:

Code : Tout sélectionner

local function lectProb(duree,v)
    -- duree--durée en H de la probabilité 
    -- V données JSON 
    local Time = require('Time')
    local now = Time()
    local Heure = now.hour
    local J = 1 --init jour
    local Prob = 0
    H = Heure + duree
    
    if H > 23 then 
            J = math.floor(H/24)+1
            H = math.fmod(H,24) 
    end
    H=H+1 -- heure de debut + 1 pour index
    
    Prob= v.days[J].hours[H].precipprob
    return (Prob )
end

end
Dernière modification par Keros le 20 juin 2023, 12:32, modifié 1 fois.
Raison : Citation supprimée. Mercid de ne pas citer le message précédent lors d'une réponse directe.
Loky31200
Messages : 144
Inscription : 05 mars 2019, 10:13

Re: [DzVents] Données Météo Weather Visual Crossing

Message par Loky31200 »

Cool merci :)

J'avais codé ca :

Code : Tout sélectionner

 h=Heure + duree
    if h > 24 then J =2 H = h-24 
    else
        H=h 
    end
Mais je vais prendre ce que tu m'as indiqué dans ton message même si je comprends toujours pas le "H=H+1 -- heure de debut + 1 pour index" :)
BernardC
Messages : 18
Inscription : 10 avr. 2023, 10:31

Re: [DzVents] Données Météo Weather Visual Crossing

Message par BernardC »

Bonjour,
pour accéder aux probabilités d'aujourd'hui à 0H00 il faut mettre: v.days[1].hours[1].precipprob et non v.days[0].hours[0].precipprob. le premier index est 1.

je joins le script pour les prévisions vent sur le même principe que la pluie :

Code : Tout sélectionner

local function lectProbVent(duree,v,dz)
    -- duree--durée en H de la probabilité 
    -- V données JSON 
    local Time = require('Time')
    local now = Time()
    local Heure = now.hour
    local J = 1 --init jour
    local Rafale,Vent =0,0
    local degrees= 0
    
    if H > 23 then 
        J = math.floor(H/24)+1
        H = math.fmod(H,24) 
    end
    H=H+1 -- heure de debut + 1 pour index

    Rafale= v.days[J].hours[H].windgust

    Vent= v.days[J].hours[H].windspeed
    degrees = degrees + v.days[J].hours[H].winddir

    local quad = 'N'
    local quadrants = {"NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"}
    if degrees <= 348.75 and degrees > 11.25 then quad = quadrants[tonumber(math.floor((degrees - 11.25) / 22.5)+1)] end
 
    return degrees, quad, Vent/3.6, Rafale/3.6 
end
l'appel de la fonction:

Code : Tout sélectionner

    --Proba Vent dans 5H  ajout d'un capteur virtuel "Vent"  sans températeures le 9/06/2023           lectProb(Nbre H proba vent,JSON,domoticz)
    {idx = 'Proba Vent dans 5H', cde = function (dz, idx, v) dz.devices(idx).updateWind(lectProbVent(5,v,dz)) end },  
Loky31200
Messages : 144
Inscription : 05 mars 2019, 10:13

Re: [DzVents] Données Météo Weather Visual Crossing

Message par Loky31200 »

Génial!!!

Merci encore!!!

Du coup j'ai fait la même pour la prévision des températures dans les heures suivantes :

Code : Tout sélectionner

--======================Températures MAJ le 26/6/2023==============================

local function lectTemp(duree,v)
    local Time = require('Time')
    local now = Time()
    local Heure = now.hour+1 -- heure de debut + 1 pour index
    local J = 1 --init jour
    H=Heure + duree
    if H > 23 then 
            J = math.floor(H/24)+1
            H = math.fmod(H,24) 
    end
    Temp= v.days[J].hours[H].temp
    return (Temp)
    
end
--================================================================================
avec un appel:

Code : Tout sélectionner

--Température  
    --Temp dans 1 H  ajout d'un capteur virtuel Tempdans 1H           lectTemp(Nbre H de projection pluie,JSON)
    {idx = 'Temp dans 1H', cde = function (dz, idx, v) dz.devices(idx).updateTemperature(lectTemp(1,v)) end },
Merci encore pour les exemples :)
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: [DzVents] Données Météo Weather Visual Crossing

Message par denis_brasseur »

Attention, ceux qui comme moi ont copié le code récemment,, en l'absence du paramètre unitGroup, les données du json sont au format us au lieu de métric

Code : Tout sélectionner

-- MAJ le8/6/2023  enlevé "unitGroup=metric&maxDistance=20000" de la requête
Ce qui signifie températures en fahrenheit et longueurs et distances en miles.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre