[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 »

Ce n'est pas ça qu'il faut enlver mais les --[[ jusqu'au ]]-- qui englobe la partie, ce qui désactive tous le code qu'il y a entre les deux balises.

Et concernant ta question de départ, il me semble que le script n'affiche rien dans le log hormis la ligne 'Réception de WeatherVisualCrossing'
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
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

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

Message par Doudy »

Keros a écrit : 25 août 2023, 17:19 Ce n'est pas ça qu'il faut enlver mais les --[[ jusqu'au ]]-- qui englobe la partie, ce qui désactive tous le code qu'il y a entre les deux balises.
Il me semble que c'est ce que j'ai testé après avoir envoyé mon message précédent. J'ai enlevé les --[[ et les ]]-- afin d'activer les IDX 700, 701 et 702

Code : Tout sélectionner

    
    -- Meteo
    {idx = 700,  cde = function (dz, idx, v)
        local txt = v.current.weather[1].description..' ('..v.current.weather[1].main..' - '..v.current.weather[1].id..')'
        dz.devices(idx).updateText(txt)
    end },
  
   -- Moon
    {idx = 701,  cde = function (dz, idx, v)
        -- local dt  = os.date("%a %d %b à %X", v.daily[1].dt) -- UTC
        local moonrise  = os.date("%Hh%M", v.daily[1].moonrise) -- UTC
        local moonset   = os.date("%Hh%M", v.daily[1].moonset) -- UTC
        local p = v.daily[1].moon_phase*100 -- 0 and 1 are 'new moon', 0.25 is 'first quarter moon', 0.5 is 'full moon' and 0.75 is 'last quarter moon'.
        if p==0 or p==100 then phase = "Nouvelle Lune ?"
        elseif p<25     then phase = "Premier Croissant ?"
        elseif p==25    then phase = "Premier Quartier ?"
        elseif p<50     then phase = "Gibeuse Croissante ?"
        elseif p==50    then phase = "Pleine Lune  ?"
        elseif p<75     then phase = "Gibeuse Décroissante  ?"
        elseif p==75    then phase = "Dernier Quartier  ?"
        elseif p<100    then phase = "Dernier Croissant  ?"
        end
        -- luminosity
        p = 2*p 
        if p>100 then p = 200-p end
        local txt = "Lever à "..moonrise.."\nCoucher à  "..moonset.."\nPhase : "..phase.."  ("..p.."%)"
        dz.devices(idx).updateText(txt)
    end },
    

    -- Moon Phase (%)
    {idx = 702,  cde = function (dz, idx, v)
        dz.devices(idx).updatePercentage(v.daily[1].moon_phase*100)
    end },
    
Lorsque je fait cela, j'ai les messages suivants :
Pour IDX 700 :

Code : Tout sélectionner

2023-08-25 13:36:11.642 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: An error occurred when calling event handler WeatherVirtualCrossing
2023-08-25 13:36:11.642 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: ...oticz/scripts/dzVents/scripts/WeatherVirtualCrossing.lua:186: attempt to index a nil value (field 'current') 
Pour IDX 701 :

Code : Tout sélectionner

2023-08-25 13:38:12.619 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: An error occurred when calling event handler WeatherVirtualCrossing
2023-08-25 13:38:12.620 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: ...oticz/scripts/dzVents/scripts/WeatherVirtualCrossing.lua:193: attempt to index a nil value (field 'daily') 
Pour IDX 702 :

Code : Tout sélectionner

2023-08-25 13:39:12.244 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: An error occurred when calling event handler WeatherVirtualCrossing
2023-08-25 13:39:12.244 Error: dzVents: Error: (3.1.8) -- weather.visualcrossing v1.21: ...oticz/scripts/dzVents/scripts/WeatherVirtualCrossing.lua:215: attempt to index a nil value (field 'daily') 
Keros a écrit : 25 août 2023, 17:19 Et concernant ta question de départ, il me semble que le script n'affiche rien dans le log hormis la ligne 'Réception de WeatherVisualCrossing'
Il me semble que dans le log après 'Réception de WeatherVisualCrossing' il doit y avoir les valeurs de "Alerts" (chez moi IDX 703)
Capture.PNG
Mais je ne vois pas où et comment il va chercher les données !
;) :(
Dernière modification par Keros le 27 août 2023, 16:22, modifié 1 fois.
Raison : Merci de grouper les réponses dans un message
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Si tu désactives des portions de code par ce que tu as des erreurs, c'est normal qui les widgets ne soient pas mis à jour :lol:

Les erreurs indiquent que le script n'arrive pas à trouver les infos "field" dans les données Json qu'il récupère. Ouvre le Json dans un navigateur et essaye de retrouver les infos. Si tu as besoin de comprendre comment récupérer les données dans un Json, tu peux regarder mon Tuto sur OpenWeatherMap (lien dans ma signature) : le principe est le même.
En comprenant le principe, tu pourras même te faire tes propres widgets avec les infos que tu souhaites.

Concernant les alertes, c'est pour remplir un widget de type Alerte ; pas pour être mis dans les logs de DomoticZ.
Maintenant, tu peux très bien customizer le code pour mettre des infos dans les logs.
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
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

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

Message par Doudy »

Keros a écrit : 27 août 2023, 16:31 Les erreurs indiquent que le script n'arrive pas à trouver les infos "field" dans les données Json qu'il récupère. Ouvre le Json dans un navigateur et essaye de retrouver les infos.
Il me semble avoir trouvé :

Code : Tout sélectionner

    -- Meteo
    {idx = 700,  cde = function (dz, idx, v)
	local txt = v.currentConditions.conditions
        dz.devices(idx).updateText(txt)
    end },
En effet, les fields utilisés dans le script sont encore ceux de "OpenWeatherMap"

Je regarde pour mon 701 et 702
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Malheureusement, c'est le risque en récupérant des scripts complets :?

C'est la raison pour laquelle j'ai limité mon tuto sur OpenWeatherMap a expliqué comment récupérer les infos. Je savais que si je mettais un script complet, il aurait fallu faire ce type de SAD (Service Après Diffusion).
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
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

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

Message par patoche »

Salut,

Pour DOUdy et Maiden91

Pour info avec ma version domoticz 4.97, les capteurs ne se mettaient pas à jour.
J'ai remplacé les dz par domoticz. Et pour le capteur Baromètre, la parametre domoticz.HUM_COMPUTE n'est pas reconnu. Je l'ai forcé à dry et depuis le capteur se met à jour.

domoticz.devices(idx).updateTempHumBaro(v.currentConditions.temp, v.currentConditions.humidity, domoticz.HUM_DRY, v.currentConditions.pressure, baro)

me reste encore le vent la pluie et la lune non fonctionnel.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

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

Message par Doudy »

👍
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

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

Message par patoche »

Bonjour

Pour la Lune j'ai du remplacer Vdaily par Vdays et remplacer moon_phase par moonphase pour la mise à jour des 2 capteurs. Par contre je suis un peu sceptique sur les valeurs retournées

Code : Tout sélectionner

-- Moon
    {idx = 'Phase Lune',  cde = function (domoticz, idx, v)
      --  local dt  = os.date("%a %d %b à %X", v.daily[1].dt) -- UTC
      local moonrise  = os.date("%Hh%M", v.days[1].moonrise) -- UTC
     local moonset   = os.date("%Hh%M", v.days[1].moonset) -- UTC
      local p = v.days[1].moonphase*100 -- 0 and 1 are 'new moon', 0.25 is 'first quarter moon', 0.5 is 'full moon' and 0.75 is 'last quarter moon'.
        --local p = 0
		if p==0 or p==100 then phase = "Nouvelle Lune ?"
        elseif p<25     then phase = "Premier Croissant ?"
        elseif p==25    then phase = "Premier Quartier ?"
        elseif p<50     then phase = "Gibeuse Croissante ?"
        elseif p==50    then phase = "Pleine Lune  ?"
        elseif p<75     then phase = "Gibeuse Décroissante  ?"
        elseif p==75    then phase = "Dernier Quartier  ?"
        elseif p<100    then phase = "Dernier Croissant  ?"
        end
        -- luminosity
        p = 2*p 
        if p>100 then p = 200-p end
		local txt = "Lever à "..moonrise.."\nCoucher à  "..moonset.."\nPhase : "..phase.."  ("..p.."%)"
        domoticz.devices(idx).updateText(txt)
    end }, 
   -- Moon Phase (%)
    {idx = 'Lune',  cde = function (domoticz, idx, v)
        domoticz.devices(idx).updatePercentage(v.days[1].moonphase*100)
    end },
Dernière modification par patoche le 10 nov. 2023, 15:51, modifié 2 fois.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

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

Message par patoche »

Pour la pluie j'ai cette ligne qui bloque
023-11-08 18:20:03.944 Status: dzVents: Error (2.4.6): -- weather.visualcrossing v1.21: ...oticz/scripts/dzVents/scripts/weathervisualcrossing2.lua:172: attempt to index global 'domoticz' (a nil value)

Code : Tout sélectionner

 172     local f_rainValTable = domoticz.utils.stringSplit(domoticz.devices(idx).sValue,';')
Dernière modification par Keros le 08 nov. 2023, 20:10, modifié 1 fois.
Raison : Ajout des balises
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

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

Message par Doudy »

J'ai le même genre de soucis avec :

Code : Tout sélectionner

2023-11-08 22:45:07.147 Error: dzVents: Error: (3.1.8) -- WeatherVisualCrossing.lua v1.21: ...oticz/scripts/dzVents/scripts/WeatherVirtualCrossing.lua:54: attempt to index a nil value (field '?')
2023-11-08 23:00:27.718 Error: dzVents: Error: (3.1.8) -- WeatherVisualCrossing.lua v1.21: An error occurred when calling event handler WeatherVirtualCrossing
2023-11-08 23:00:27.718 Error: dzVents: Error: (3.1.8) -- WeatherVisualCrossing.lua v1.21: ...oticz/scripts/dzVents/scripts/WeatherVirtualCrossing.lua:72: attempt to index a nil value (field '?')
2023-11-08 23:15:04.691 Error: dzVents: Error: (3.1.8) -- WeatherVisualCrossing.lua v1.21: An error occurred when calling event handler WeatherVirtualCrossing 
;)
Dernière modification par Keros le 09 nov. 2023, 12:27, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Répondre