Page 1 sur 1

[Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 27 mai 2018, 21:09
par Greg.O
Bonjour à tous,

s'il m'en restait, je serais en train de m'arracher les cheveux. Ca fait 2 heures que je bloque sur une erreur dans mon premier script. Mon but est de faire un script pour gérer les vitesses de ma VMC en prenant en compte l'humidité des mes salles de bain. Alors, comme je suis débutant en lua, j'ai tenté un script tout simple qui me permettrait d'afficher la valeur de l'humidité de mes salles de bain. Mais je n'ai jamais réussi ! J'ai toujours la même erreur :
attempt to concatenate local 'val_test' (a nil value)

Je mets le code ci-dessous. J'ai tout vérifié : la syntaxe des fonctions, déclarer ma variable en locale, en global, ne pas la déclarer. :evil:

Est-ce que vous voyez une erreur évidente ?

Code : Tout sélectionner

  commandArray = {}

                                    
NOM_INTERRUPTEUR_PILOTAGE_VMC = 'VMC'
NOM_INTERRUPTEUR_OnOff_VMC = 'VMC-OnOff'
NOM_INTERRUPTEUR_GV_VMC = 'VMC-GV'  
NOM_INTERRUPTEUR_DEBUG = 'ModeDebugVMC'   
NOM_INTERRUPTEUR_TEST = 'Test_GV_SDB'   
NOM_CAPTEUR_VIRTUEL_HYGRO_MOYENNE= 'Hygro_Maison_Moyenne'
VALEUR_TEST_HUMIDITE1 = 'VMC_TST_HUM_SDB1'   -- valeur de test pour l'umidité positionné dans les variables domoticz
VALEUR_TEST_HUMIDITE2 = 'VMC_TST_HUM_SDB2'   -- valeur de test pour l'umidité positionné dans les variables domoticz
local val_test = "val_test"

-- ---------------------------------------------------------------------
-- Récupération de paramètres de Domoticz passés par les interrupteurs               
-- ---------------------------------------------------------------------
  if(otherdevices[NOM_INTERRUPTEUR_DEBUG]=='On') then   -- Si le mode debug est activé dans Domoticz (inter debug sur on)
    MODE_DEBUGG= true
  else
    MODE_DEBUGG= false
  end

  if(otherdevices[NOM_INTERRUPTEUR_TEST]=='On') then   -- Si le mode test est activé dans Domoticz (inter Test sur on)
    MODE_TEST=true
  else
    MODE_TEST=false
  end

 
  if MODE_DEBUGG== true then
    val_test= otherdevices_svalues[Hum_SDB_Laurie]
    val_test= tonumber(val_test)
    print(' ')
    print(' ')
    print(' ') 
    print(' ')
    print('>>>>>>>>>>>>>>  Script de controle de la VMC v1.0 <<<<<<<<<<<<<<<<<<<<<')
	print('Humidité dans la salle de bain de Laurie : '.. val_test)
  end
 

return commandArray

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 27 mai 2018, 21:28
par thier
essai avec ça

Code : Tout sélectionner

 commandArray = {}

                                   
NOM_INTERRUPTEUR_PILOTAGE_VMC = 'VMC'
NOM_INTERRUPTEUR_OnOff_VMC = 'VMC-OnOff'
NOM_INTERRUPTEUR_GV_VMC = 'VMC-GV' 
NOM_INTERRUPTEUR_DEBUG = 'ModeDebugVMC'   
NOM_INTERRUPTEUR_TEST = 'Test_GV_SDB'   
NOM_CAPTEUR_VIRTUEL_HYGRO_MOYENNE= 'Hygro_Maison_Moyenne'
VALEUR_TEST_HUMIDITE1 = 'VMC_TST_HUM_SDB1'   -- valeur de test pour l'umidité positionné dans les variables domoticz
VALEUR_TEST_HUMIDITE2 = 'VMC_TST_HUM_SDB2'   -- valeur de test pour l'umidité positionné dans les variables domoticz


-- ---------------------------------------------------------------------
-- Récupération de paramètres de Domoticz passés par les interrupteurs               
-- ---------------------------------------------------------------------
  if(otherdevices[NOM_INTERRUPTEUR_DEBUG]=='On') then   -- Si le mode debug est activé dans Domoticz (inter debug sur on)
    MODE_DEBUGG= true
  else
    MODE_DEBUGG= false
  end

  if(otherdevices[NOM_INTERRUPTEUR_TEST]=='On') then   -- Si le mode test est activé dans Domoticz (inter Test sur on)
    MODE_TEST=true
  else
    MODE_TEST=false
  end

 
  if MODE_DEBUGG== true then
    local val_test=  tonumber(otherdevices_svalues['Hum_SDB_Laurie'])
    print(' ')
    print(' ')
    print(' ')
    print(' ')
    print('>>>>>>>>>>>>>>  Script de controle de la VMC v1.0 <<<<<<<<<<<<<<<<<<<<<')
   print('Humidité dans la salle de bain de Laurie : '.. val_test)
  end
 

return commandArray
Hum_SDB_Laurie doit être le nom de la sonde dont tu récupères l'humidité

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 28 mai 2018, 18:28
par Greg.O
Merci pour le coup de main, mais j'ai toujours la même erreur :

Code : Tout sélectionner

Error: EventSystem: in Gestion_VMC_Auto: [string "commandArray = {}..."]:48: attempt to concatenate local 'val_test' (a nil value)
Je ne me trompe pas de capteur au moins ?
Voici mes dispositifs.
Image

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 28 mai 2018, 19:11
par fredandrick65
if MODE_DEBUGG== true then
local val_test= tonumber(otherdevices_svalues['Hum_SDB_Laurie'])
print(' ')
print(' ')
print(' ')
print(' ')
print('>>>>>>>>>>>>>> Script de controle de la VMC v1.0 <<<<<<<<<<<<<<<<<<<<<')
print('Humidité dans la salle de bain de Laurie : '.. val_test)
end
Tu essayes de concaténer une chaine avec un nombre dans ton print .
A mon avis ,il faudrait plutôt concaténer une chaine avec une chaine --> tostring au lieu de tonumber

Code : Tout sélectionner

  if MODE_DEBUGG== true then
    local val_test=  tostring(otherdevices_svalues['Hum_SDB_Laurie'])
    print(' ')
    print(' ')
    print(' ')
    print(' ')
    print('>>>>>>>>>>>>>>  Script de controle de la VMC v1.0 <<<<<<<<<<<<<<<<<<<<<')
   print('Humidité dans la salle de bain de Laurie : '.. val_test)
  end

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 28 mai 2018, 19:16
par Greg.O
Il y a du mieux : je n'ai plus de message d'erreur. Par contre, ça ne me retourne pas la bonne valeur :

Code : Tout sélectionner

dzVents: Humidité dans la salle de bain de Laurie : nil

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 28 mai 2018, 19:44
par vil1driver
Salut,

Concaténer une chaîne avec un nombre est ok
Mail nil signifie inexistant
Voir de ce côté..

Re: [Débutant] attempt to concatenate local 'val_test' (a nil value)

Publié : 28 mai 2018, 22:24
par Greg.O
J'avance petit à petit :

j'ai rebooté mon NAS pour voir s'il n'y avait pas un bug. Alors, les messages ont changé.

Code : Tout sélectionner

Error: Xiaomi Passerelle hardware (2) thread seems to have ended unexpectedly
J'ai manifestement un problème de connexion avec tous mes capteurs, sauf un !
J'ai donc fait mont test avec celui-ci et j'ai bien le message souhaité :

Code : Tout sélectionner

dzVents: Humidité dans la salle de bain de Laurie : 78
(c'est très humide : il y a de l'orage dans l'air ! :) )

Me reste plus qu'à trouver pourquoi je ne peux plus communiquer avec mes capteurs.