Page 1 sur 1

Script allumage TV WIP

Publié : 14 nov. 2017, 16:41
par francklek
Hello à tous, j'ai démarrer de convertir tous mes blocky en Lua pour plus de fonctions et parcequ'il faut bien apprendre !
J'ai un script pour démarrer la TV en fonction de la luminosité du salon. Le script doit d'abord comparer la luminosité d'un capteur avec celle d'un seuil (fixé aléatoirement pour l'instant) et allumer la freebox et fermer les volets si la luminosité est au dessu du seuil. Mon problème est que j'ai un message d'erreur lorsque je compare luminosité et seuil. Voici mon script

Code : Tout sélectionner

-- Script Freebox et luminosité --
--si jour allume freebox et ferme les volets, si sombre, allume freebox seule.
         

--seuil luminosité au delà de laquelle la condition est remplie
--
time = tonumber(os.date('%H'))
Seuil_Lux=999
Seuil_Lux=tonumber(Seuil_Lux)
valeur_lux = tonumber(otherdevices_svalues['Luminosite-salon'])
         commandArray = {}
        
  
if    (devicechanged['Inter TV'] == 'Double Click') and (otherdevices['TV'] == 'Off') then
         print ("luminosité :") print (valeur_lux) print (Seuil_Lux) print (time)
        
         if  (valeur_lux >= Seuil_Lux) and (time >= 9 and time < 19 ) and (otherdevices['Etat-Freebox'] == 'Off') then
        -- Fermeture des volets entre 9H et 19H Luminosité forte - allumage Box
   
        print("Condition remplie luminosité forte")
        commandArray ['Freebox_Player']='On'
         commandArray ['SalonSud'] = 'On'
        commandArray ['SalonNord'] = 'On'
        print ("allumage box + fermeture volets")
        commandArray['Group:Vert']='On'
        commandArray['Group:Vert']='Off AFTER 10'
        commandArray ['SalonSud'] = "Stop AFTER 14"
        commandArray ['SalonNord'] = "Stop AFTER 14"
        print("stop envoyé volets roulants")
                                              
                elseif (valeur_lux > Seuil_Lux) and (time >= 9 and time < 19 ) and (otherdevices['Etat-Freebox'] == 'On') then
                -- Fermeture des volets entre 9H et 19H Luminosité forte - Box allumée
                print("box déjà allumée donc fermeture volet")
                commandArray['SalonSud'] = 'On'
                commandArray['SalonNord'] = 'On'
                commandArray['SalonSud'] = "Stop AFTER 14"
                commandArray['SalonNord'] = "Stop AFTER 14"
                                           
                elseif (valeur_lux < Seuil_Lux) and (otherdevices['Etat-Freebox'] == 'Off') then
                -- Pas de fermeture - Luminosité faible - allumage Box                                                    
                print("pas assez de lumière pour fermer les volets")    
                commandArray ['Freebox_Player']='On'
    
                elseif (valeur_lux < Seuil_Lux) and (otherdevices['Etat-Freebox'] == 'On') then
                -- Luminosité faible - extinction Box
                print("Freebox déjà allumée , pas de soleil, on eteind ")
                commandArray ['Freebox_Player']='Off'
                commandArray['SalonSud'] = 'Off'
                commandArray['SalonNord'] = 'Off'
            end
                                                
            if (devicechanged['Inter TV'] == 'Double Click') and (otherdevices['TV'] == 'On') then
            -- Extinction Box      
            commandArray ['TV']='Off'
            commandArray['SalonSud'] = 'Off'
            commandArray['SalonNord'] = 'Off'
            commandArray['Group:Vert']='On'
            commandArray['Group:Vert']='Off AFTER 10'
        end
  end
        
   return commandArray
   
         
       
J'obtiens bien avec des print les valeurs seuil et luminosité mais lors de la comparaison des 2 valeurs j'ai un message d'erreur :
2017-11-14 17:17:13.430 LUA: luminosité :
2017-11-14 17:17:13.430 LUA: 1292
2017-11-14 17:17:13.430 LUA: 999
2017-11-14 17:17:13.430 LUA: 17
2017-11-14 17:17:13.431 Error: EventSystem: in script volet soleil 1: [string "-- Script mesure de la luminosité, si jour a..."]:18: attempt to compare number with string
Quelq'un pourrait m'aider et me dire ou je fais une erreur ???

Merci à tous

Re: Script allumage TV WIP

Publié : 14 nov. 2017, 16:59
par rapinou
Salut,
Tu as une variable nulle, si ce n'est pas les deux citées, c'est peut-être time.hour ? Tu as fait un print avec ?

Re: Script allumage TV WIP

Publié : 14 nov. 2017, 17:21
par francklek
rapinou a écrit :Salut,
Tu as une variable nulle, si ce n'est pas les deux citées, c'est peut-être time.hour ? Tu as fait un print avec ?
C'est ce que j'ai remarqué. J'ai modifié le script avec pour l'heure : os.date('%H')

dans les logs j'ai bien mes 3 valeurs qui s'affichent (luminosité, seuil et heure) mais j'ai toujours la même erreur.

Le premier post a été corrigé

Re: Script allumage TV WIP

Publié : 14 nov. 2017, 17:40
par rapinou
Non, ce n'est plus la même erreur.
Maintenant il essaie de comparer un nombre avec une chaine.
Précédemment c'était un nombre avec une variable nulle.
A priori le problème vient donc de ta variable d'heure qu'il faut passer en nombre, essaie :

Code : Tout sélectionner

time = tonumber(os.date('%H'))

Re: Script allumage TV WIP

Publié : 14 nov. 2017, 18:39
par francklek
J'avance, j'avance, effectivement en passant toutes les valeurs en entier je n'ai plus de message d'erreur mais le script s’arrête sans remplir de condition. Aucun print (hormis l'affichage des valeurs) ne s'exécute. Se pourrait il que je n'ai aucune option de remplie ou alors j'ai fais une bourde dans l'intrication des if et elseif ?

Le premier post a été corrigé

Re: Script allumage TV WIP

Publié : 14 nov. 2017, 18:56
par rapinou
Pour aider, revois l'indentation de ton code, car il est très difficilement lisible.

Re: Script allumage TV WIP

Publié : 15 nov. 2017, 08:55
par francklek
rapinou a écrit :Pour aider, revois l'indentation de ton code, car il est très difficilement lisible.
Je viens de remettre en premier post le script identé correctement. J'ai cherché mais je n'ai pas trouvé ou j'ai fais une bourde. le script se déroule maintenant comme si aucune condition n'était remplie lors de l'appui sur le switch.

Re: Script allumage TV WIP

Publié : 15 nov. 2017, 12:11
par rapinou
Je te conseille de lire ça si tu veux de l'aide, car si le forum est rempli de bonnes âmes prêtes à aider, il faut tout de même leur simplifier la tâche au minimum : https://fr.wikipedia.org/wiki/Style_d%27indentation.

Pour le debug, il faut que tu fasses des print sur chacune des variables et chacune des conditions jusqu'à trouver l'erreur.