Logique et syntaxe LUA
Re: Logique et syntaxe LUA
J'ai ajouté un print juste en dessous de la ligne local temperature = devicechanged[sonde]
Dans le log je vois bien la température 21.0
donc ça fonctionne comme vous me le disiez, mais pourquoi il ne compare pas cette valeur avec les autres valeur consigne et hysteresis (temperature < (consigne - hysteresis) )
J'ai l'impression d'être à ça [--] de comprendre un truc qui m'échappe....
Dans le log je vois bien la température 21.0
donc ça fonctionne comme vous me le disiez, mais pourquoi il ne compare pas cette valeur avec les autres valeur consigne et hysteresis (temperature < (consigne - hysteresis) )
J'ai l'impression d'être à ça [--] de comprendre un truc qui m'échappe....
Dernière modification par Keros le 24 déc. 2020, 16:39, modifié 1 fois.
Raison : Message reçu en MP
Raison : Message reçu en MP
Re: Logique et syntaxe LUA
Redonne nous ton script complet.
Dis nous quel est le nom des devices que tu utilises.
Mets nous les log d'erreur.
Avec tout ça, on saura où tu es es et on pourra t'aider.
Dis nous quel est le nom des devices que tu utilises.
Mets nous les log d'erreur.
Avec tout ça, on saura où tu es es et on pourra t'aider.
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Logique et syntaxe LUA
Bonjour tout le monde,
C'est noté Keros pour les MPs
J'ai réussi à faire ce que je voulais, donc j'ai modifié deux trois points par rapport au script d'origine.
Les devices sont tous dans la liste "Start of edit section"
C'est noté Keros pour les MPs
J'ai réussi à faire ce que je voulais, donc j'ai modifié deux trois points par rapport au script d'origine.
Code : Tout sélectionner
-- Alexandre DUBOIS - 2014
-- This script allows to maintain the temperatue between 19°C et 21°C when virtual
-- 'Thermostat atelier' is ON.
--------------------------------
------ Start of edit section ------
--------------------------------
local consigne = 'Consigne Atelier' --Température de consigne dans Mesures
local hysteresis = 0.5 --Valeur seuil pour éviter que le relai ne cesse de commuter dans les 2 sens
local sonde = 'Sonde Atelier' --Nom de la sonde de température
local thermostat = 'Mode Auto' --Nom de l'interrupteur virtuel du thermostat
local radiateur = 'Aerotherme Atelier' --Nom du radiateur à allumer/éteindre
--------------------------------
-- End of edit section --
--------------------------------
commandArray = {}
if (devicechanged[sonde]) or (devicechanged[thermostat]) or (devicechanged[consigne]) then
local consigne = tonumber(otherdevices[consigne])
local temperature = tonumber(otherdevices[sonde]) --Temperature relevée dans l'atelier
--print("temperature : "..temperature.."°C")
--print(type(temperature))
--print("Consigne : "..consigne.."°C")
--print(type(consigne))
--print("hysteresis : "..hysteresis.."°C")
--print(type(hysteresis))
--On n'agit que si le "Thermostat" est actif
if (otherdevices[thermostat]=='On') then
-- print('-- Gestion du thermostat pour l'atelier --')
if (temperature < (consigne - hysteresis) ) then
print('Allumage du chauffage dans l'atelier')
commandArray[radiateur]='On'
elseif (temperature > (consigne + hysteresis)) then
print('Extinction du chauffage dans l'atelier')
commandArray[radiateur]='Off'
end
end
end
return commandArrayRe: Logique et syntaxe LUA
Très bien ce code avec des prints possibles pour comprendre ce qui ce passe
Pour aller plus loin, tu enregistres les valeurs de consigne et température et après tu vérifies si le thermostat est à On avant de "faire" quelque chose. Si ton thermostat est à Off, tu as enregistré consigne et température pour rien ... C'est con : vérifie toutes tes conditions avant de faire calculer ton programme
Pour aller plus loin, tu enregistres les valeurs de consigne et température et après tu vérifies si le thermostat est à On avant de "faire" quelque chose. Si ton thermostat est à Off, tu as enregistré consigne et température pour rien ... C'est con : vérifie toutes tes conditions avant de faire calculer ton programme
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Logique et syntaxe LUA
Oui oui effectivement.
J'ai bien compris l'intérêt mais le gain à le faire après est réel ? Domoticz peux vraiment "ralentir" si on lui fait faire ça dans 10 scripts à la suite ? (Rpi 3b + Raspbian + Domoticz2020.2) le système est "sensible" ?
Mais maintenant que j'ai compris quelques rudiments grâce à l'aide du forum, je test, je fais ma p'tite tambouille et c'est génial ! on peut faire une infinité de choses !
J'ai bien compris l'intérêt mais le gain à le faire après est réel ? Domoticz peux vraiment "ralentir" si on lui fait faire ça dans 10 scripts à la suite ? (Rpi 3b + Raspbian + Domoticz2020.2) le système est "sensible" ?
Mais maintenant que j'ai compris quelques rudiments grâce à l'aide du forum, je test, je fais ma p'tite tambouille et c'est génial ! on peut faire une infinité de choses !
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Logique et syntaxe LUA
Je ne pense pas que affecter des variables sans les utiliser change grand chose dans le code, chacun sa méthode, si cela ne nuit pas aux performances du code. Il ne s'agit pas d'un calcul dans ce cas de figure.
Je suis plus attaché à l'indentation du code, afin de le rendre plus lisible.
Idem pour les parenthèse, ainsi
peux aussi s'écrire comme ceci
mais cela ne change rien au fonctionnement du script.
Chacun sa méthode, ne soyons pas trop puriste.
Je suis plus attaché à l'indentation du code, afin de le rendre plus lisible.
Idem pour les parenthèse, ainsi
Code : Tout sélectionner
if (devicechanged[sonde]) or (devicechanged[thermostat]) or (devicechanged[consigne]) thenCode : Tout sélectionner
if devicechanged[sonde] or devicechanged[thermostat] or devicechanged[consigne] thenChacun sa méthode, ne soyons pas trop puriste.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Logique et syntaxe LUA
Tu n'auras pas de gain et ton système ne va pas ralentir pour ce cas. Mais d'en d'autres cas, ça peut avoir un petit impact.Thib38 a écrit : 27 déc. 2020, 15:16 J'ai bien compris l'intérêt mais le gain à le faire après est réel ? Domoticz peux vraiment "ralentir" si on lui fait faire ça dans 10 scripts à la suite ? (Rpi 3b + Raspbian + Domoticz2020.2) le système est "sensible" ?
Je faisais la remarque pour te sensibiliser puisque c'est tes débuts
Là, t'as tout comprisThib38 a écrit : 27 déc. 2020, 15:16 Mais maintenant que j'ai compris quelques rudiments grâce à l'aide du forum, je test, je fais ma p'tite tambouille et c'est génial ! on peut faire une infinité de choses !
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Logique et syntaxe LUA
Bonjour,
Désolé de mettre le doute mais je ne comprends pas cela.
pour moi sonde_temperature indique que tu ne veux récupérer que la valeur "Temperature" de la sonde que tu dois nommer?
vous pouvez rajouter cette ligne dans un script lua de type device et vous verrez tous les évènements passer.
Par exemple pour ma sonde de température Garage voici ce qui passe :
Pour le même "devicechanged" domoticz envoi toutes les valeurs de la sonde. dans mon exemple il envoi le barometre, le pourcentage d'humidité, le point de rosée et enfin la températture pour ma sonde qui s'appelle "Temperature Xiaomi Cuisine".
Du coup si vous codez le nom de la sonde et que vous rajoutez "_Temperature" vu n'obtiendrez que la valeur de la température de la sonde.
J'espère que je ne me suis pas trompé...
Désolé de mettre le doute mais je ne comprends pas cela.
pour moi sonde_temperature indique que tu ne veux récupérer que la valeur "Temperature" de la sonde que tu dois nommer?
vous pouvez rajouter cette ligne dans un script lua de type device
Code : Tout sélectionner
for i, v in pairs(devicechanged) do print(i, v) end
Par exemple pour ma sonde de température Garage voici ce qui passe :
Code : Tout sélectionner
2020-12-30 10:11:36.084 Status: LUA: Temperature Xiaomi Cuisine
2020-12-30 10:11:36.084 Status: LUA: 22.91;72.23;0;988;0
2020-12-30 10:11:36.084 Status: LUA: Temperature Xiaomi Cuisine_Barometer
2020-12-30 10:11:36.084 Status: LUA: 988.0
2020-12-30 10:11:36.084 Status: LUA: Temperature Xiaomi Cuisine_Humidity
2020-12-30 10:11:36.084 Status: LUA: 72.0
2020-12-30 10:11:36.084 Status: LUA: Temperature Xiaomi Cuisine_Dewpoint
2020-12-30 10:11:36.084 Status: LUA: 17.594240188599
2020-12-30 10:11:36.084 Status: LUA: Temperature Xiaomi Cuisine_Temperature
2020-12-30 10:11:36.084 Status: LUA: 22.909999847412
Du coup si vous codez le nom de la sonde et que vous rajoutez "_Temperature" vu n'obtiendrez que la valeur de la température de la sonde.
J'espère que je ne me suis pas trompé...
Re: Logique et syntaxe LUA
Maintenant que tu le dis, cette syntaxe "_Temperature" me dit un petit quelque chose... Il me semble l'avoir vu à mes débuts mais comme j'utilise des dispositifs différents pour chaque info, je n'ai jamais utilisé cette syntaxe
Thib38, désolé je t'ai dit des bêtises
Thib38, désolé je t'ai dit des bêtises
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Logique et syntaxe LUA
Bonjour, (et bonne année)
Ah ah tout l'intérêt d'un forum !
Voilà donc à quoi sert ce _Temperature ! Merci drabo !
Ah ah tout l'intérêt d'un forum !
Voilà donc à quoi sert ce _Temperature ! Merci drabo !