dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Forum dédié aux questions concernant la configuration de votre serveur sous Linux
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Doudy »

Bonjour,
Depuis 2/3 jours j'ai le message suivant toutes les 10'
J'ai déjà cherché sur les forums easydomoticz et sur domoticz mais les solutions proposées ne fonctionnent pas.
Message :

Code : Tout sélectionner

2021-10-22 04:20:00.627 Error: EventSystem: in /home/pi/domoticz/dzVents/runtime/dzVents.lua: /home/pi/domoticz/dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value (local 'fileStorage')
Quelqu'un a une idée ?
;)
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/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Keros »

Tu as essayé redémarrer ton système d'exploitation ?

Tu as essayé de désactiver tes scripts au fur à mesure pour voir si l'erreur était générée par l'un d'entre eux ?
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/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Doudy »

Keros a écrit : 22 oct. 2021, 12:34 Tu as essayé de désactiver tes scripts au fur à mesure pour voir si l'erreur était générée par l'un d'entre eux ?
Voilà, j'ai désactivé "darksky_probabilite_pluie.lua" et depuis plus de message d'erreur.

Question :
Quel est le lien entre ce scripts et un "runtime/EventHelpers" ? :shock:

;)
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/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Keros »

Tu peux nous mettre le script en question stp ?
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/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Doudy »

Voici, voilà 🔽

Code : Tout sélectionner

--[[ darksky.lua for [ domoticzVents >= 2.4 ]
author/auteur = papoo
update/mise à jour = 06/03/2019
creation = 15/09/2018
https://pon.fr/dzvents-darksky-et-probabilite-de-pluie/
This script requires prior registration to the DarkSky API
Ce script nécessite l'inscription préalable à l'API DarkSky
Enter the URL and request a free API key
Entrez l'URL et demandez une clé API gratuite
https://darksky.net/dev
]]--               
	local proba_pluie_h = {}
--[[
    Add, modify or delete variables proba_pluie_h [] by changing the number (hour) between []
    the name "in quotation marks" or the idx without quotes (avoid accents) of the device of percentage of rain at [x] associated time, nil if not used
    This script can potentially retrieve the 48 available time forecasts. Create as many percent virtual sensors as you would expect from the hourly forecasts.
    for my part, I only get the forecasts at 1 hour, 2 hours, 4 hours, 6 hours, 12 hours and 24 hours.
    Only 48 possible forecasts
    Ajoutez, modifiez ou supprimez les variables proba_pluie_h[] en changeant le nombre (heure) entre []
    renseigner ensuite le nom "entre guillemets" ou l'idx sans guillemets (évitez les accents) du device pourcentage probabilité pluie à [x] heure associé, nil si non utilisé
    Ce script peut potentiellement récupérer les 48 prévisions horaires disponible. Créez autant de capteurs virtuels pourcentage correspondant aux prévisions horaires que vous souhaitez.
    pour ma part, je ne récupère que les prévisions à 1 heure, 2 heures, 4 heures, 6 heures, 12 heures et 24 heures.
    Seulement 48 prévisions possible
    My DarkSky secret key, the latitude and longitude of my home are contained in 3 user variables
    Ma clé secrète DarkSky, la latitude et la longitude de mon domicile sont contenus dans 3 variables utilisateurs
    
--    local DarkSkyAPIkey = domoticz.variables('api_forecast_io').value
--    local geolocalisation = domoticz.variables('Latitude').value..","..domoticz.variables('Longitude').value
 
    If you want to enter this information directly into the script, comment on the two lines above, uncomment the following two lines
    Si vous souhaitez inscrire ces informations dans le script, commentez les deux lignes ci-dessus, décommentez les deux lignes suivantes
    
--    local DarkSkyAPIkey = "f9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb3"
--    local geolocalisation = "45.xx,1.xx" -- latitude,longitude 


    by personalizing them with your personal data
    finally, you can choose the level of logs, only one level can be active; comment on others in the section
    en les personnalisant avec vos données personnelles. 
    enfin vous pouvez choisir le niveau de "verbiage" des logs, seulement un niveau peut être actif; commenter les autres dans la section logging
]]--
--    local DarkSkyAPIkey = "f9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb3"
--    local geolocalisation = "50.xxxxx,3.xxxx" -- latitude,longitude 

local DarkSkyAPIkey = "f9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb3"
--print ('DarkSkyAPIkey ' .. DarkSkyAPIkey)
--local DarkSkyAPIkey = domoticz.variables('api_forecast_io').value
local geolocalisation = "50.xxxx,3.xxxx" -- latitude,longitude 
--local geolocalisation = domoticz.variables('Latitude').value..","..domoticz.variables('Longitude').value



proba_pluie_h[1]= "Proba Pluie 1h"     	-- 84		
proba_pluie_h[2]= "Proba Pluie 2h"      -- 85    			 
proba_pluie_h[3]= "Proba Pluie 3h"      -- 86    			            
proba_pluie_h[4]= nil                  	
proba_pluie_h[5]= nil    			            
proba_pluie_h[6]= "Proba Pluie 6h"      -- 87   			
proba_pluie_h[12]= "Proba Pluie 12h"    -- 88    		
proba_pluie_h[24]= "Proba Pluie 24h"    -- 89  			
proba_pluie_h[36]= nil   			            
proba_pluie_h[48]= nil     			            
                                                     
return {
    active = true,
    on      =   {   timer           =   { 'every 10 minutes' },  -- remember only 1000 requests by day, 30mn = 48 requests
                    httpResponses   =   { "trigger" }            -- Trigger the handle Json part
                },
 
  logging =   { -- 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_DEBUG,
                -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                marker    =   "Darksky Rain Probability v1.0 "      },
 
   data    =   {   rainForecast     = {initial = {} },             -- Keep a copy of last json just in case
   },
    execute = function(domoticz, item)
--        local DarkSkyAPIkey = domoticz.variables('api_forecast_io').value
--        local geolocalisation = domoticz.variables('Latitude').value..","..domoticz.variables('Longitude').value 
 
        local Forecast_url  = "https://api.darksky.net/forecast/"  -- url
        local extraData = "?units=ca&exclude=flags"--currently,minutely,daily,alerts,flags" 
 
        local function debugMessage(message)
            domoticz.log(message,domoticz.LOG_DEBUG)
        end
        
        if (item.isTimer) then
            domoticz.openURL({
                url = Forecast_url..DarkSkyAPIkey.."/"..geolocalisation..extraData,
                callback = 'trigger'
            })
 
        end
        if (item.isHTTPResponse and item.ok) then
            -- we know it is json but dzVents cannot detect this
            -- convert to Lua
            local json = domoticz.utils.fromJSON(item.data)
            -- json is now a Lua table
            if #item.data > 0 then
                domoticz.data.rainForecast    = domoticz.utils.fromJSON(item.data)
                rt = domoticz.utils.fromJSON(item.data)
            else
                domoticz.log("Problem with response from DarkSky (no data) using data from earlier run",domoticz.LOG_ERROR)
                rt  = domoticz.data.rainForecast                        -- json empty. Get last valid from domoticz.data
                if #rt < 1 then                                         -- No valid data in domoticz.data either
                    domoticz.log("No previous data. are DarkSkyAPIkey and geolocalisation ok?",domoticz.LOG_ERROR)
                    return false
                end
            end    
            debugMessage("heure systeme")
            debugMessage(os.date('%Y-%m-%d %H:%M:%S', time))
            
            local now = tonumber(os.time(os.date("*t")))
            j = 1
            for i = 1,48 do
 
                 if now > tonumber(json.hourly.data[j].time) then 
                    local h = domoticz.utils.round((now - tonumber(json.hourly.data[j].time)) / 3600,0)
                    j = j+h
                    debugMessage("j : "..j)
                     
                end 
                 
                    if proba_pluie_h[i] then  
                            debugMessage("heure "..i)
                            debugMessage(os.date('%Y-%m-%d %H:%M:%S', json.hourly.data[j].time))
                            debugMessage(json.hourly.data[j].time)
                            debugMessage(json.hourly.data[j].precipProbability)
                            domoticz.devices(proba_pluie_h[i]).updatePercentage(json.hourly.data[j].precipProbability*100)
                    end
                if j == 48 then break end    
                j = j +1
                
            end    
        end
    end
}   

;)
Dernière modification par Keros le 23 oct. 2021, 11:16, modifié 1 fois.
Raison : 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Keros »

Tu n'as pas d'autres scripts avec un httpResponses = { "trigger" } ?
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
Thecyp31
Messages : 17
Inscription : 14 févr. 2017, 19:05

Re: dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Thecyp31 »

Question bête,ton script fonctionné ?

Car d'après ce que j'en comprends,ton script essaye d'indexer une valeur en boolean, ce qui a pas l'air d'être le format attendus
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par boum »

Alors je me trompe peut-être pasque je n'ai jamais eu ce soucis. Il me semble avoir lu sur le forum anglophone que ce type d'erreur est dû à un problème d'écriture du fichier des données persistantes.

https://www.domoticz.com/wiki/DzVents:_ ... ff_work.3F

Au pire, si on supprime le fichier lié au script, il sera recréé à la prochaine invocation du script.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: dzVents/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Doudy »

@ Thecyp31
Oui ce script a fonctionné.
Depuis que je l'ai arrêté plus de messages d'erreur

@boum
Supprimer quel fichier ? :?

;)
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/runtime/EventHelpers.lua:108: attempt to index a boolean value

Message par Keros »

boum a écrit : 23 oct. 2021, 12:33 un problème d'écriture du fichier des données persistantes.
Pourtant, je n'ai pas l'impression que le script utilise des données persistantes.

@Doudy, boum parle d'un fichier qui se trouverait dans le dossier dzvents/data/ et qui contiendrait le nom de ton script.
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
Répondre