LUA Debute 1 inter et 1 sortie

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Bonjour,
J'essaie de me mettre au LUA, mon premier script un inter actionne une sortie (GPIO16).

Code : Tout sélectionner

commandArray = {}

-- Remplacez "Interrupteur_GPIO" par le nom de votre interrupteur dans Domoticz
local switchName = "Bouton poussoir"

-- Numéro du GPIO à contrôler (exemple: GPIO16)
local gpioPin = 16

-- Vérifiez l'état de l'interrupteur
if devicechanged[switchName] == "On" then
    print("Bouton appuyé!")
    -- Active la GPIO
    os.execute("sudo sh -c 'echo " .. gpioPin .. " > /sys/class/gpio/export'")
    os.execute("sudo sh -c 'echo out > /sys/class/gpio/gpio" .. gpioPin .. "/direction'")
    os.execute("sudo sh -c 'echo 1 > /sys/class/gpio/gpio" .. gpioPin .. "/value'")
    print("GPIO " .. gpioPin .. " activée")
elseif devicechanged[switchName] == "Off" then
    -- Désactive la GPIO
    os.execute("sudo sh -c 'echo 0 > /sys/class/gpio/gpio" .. gpioPin .. "/value'")
    print("GPIO " .. gpioPin .. " désactivée")
end

return commandArray
Dans le log:
2025-03-10 14:57:01.392 Status: User: admin (IP: 192.168.1.13) initiated a switch command (2/Bouton poussoir/On)
2025-03-10 14:57:01.401 Capteur Virtuel: Light/Switch (Bouton poussoir)
2025-03-10 14:57:01.403 Status: LUA: Bouton appuyé!
2025-03-10 14:57:01.572 Status: LUA: GPIO 16 activée
2025-03-10 14:57:06.566 Status: User: admin (IP: 192.168.1.13) initiated a switch command (2/Bouton poussoir/Off)
2025-03-10 14:57:06.576 Capteur Virtuel: Light/Switch (Bouton poussoir)
2025-03-10 14:57:06.661 Status: LUA: GPIO 16 désactivée
Et dans la page interrupteur le "Bouton Poussoir" change d'état mais pas la gpio16.
Que faut t'il faire pour que la gpio16 change d' état?

Dans le /etc/init.d/domoticz.sh j'ai rajouté :

Code : Tout sélectionner

# Do NOT "set -e"

echo 16>/sys/class/gpio/export
echo out> /sys/class/gpio/gpio16/direction
echo 0> /sys/class/gpio/gpio16/active_low
Pour déclarer la gpio 16 en sortie.

Merci pour votre aide, c'est pour moi la première fois que j'utilise LUA.
Daniel
Dernière modification par Keros le 10 mars 2025, 19:53, modifié 1 fois.
Raison : Ajout les balises pour les logs. Merci de lire la section Bien utiliser le forum
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

Re: LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Je viens de changer mon script:

Code : Tout sélectionner

commandArray = {}

-- Remplacez "Interrupteur_GPIO" par le nom de votre interrupteur dans Domoticz
local switchName = "Bouton poussoir"

-- Numéro du GPIO à contrôler (exemple: GPIO17)
local gpioPin = 16

-- Vérifiez l'état de l'interrupteur
if devicechanged[switchName] == "On" then
    print("Bouton appuyé!")
    -- Active la gpio
    commandArray['gpioPin']='On'
    print("GPIO " .. gpioPin .. " activée")
elseif devicechanged[switchName] == "Off" then
    -- Désactive la GPIO
    commandArray['gpioPin']='Off'
    print("GPIO " .. gpioPin .. " désactivée")
end

return commandArray
Malheureusement j'ai le même résultat.
Daniel
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

Re: LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Bonjour,
Personne pour me donner des idées.
Comment LUA active une gpio en sortie, y'a t'il un fichier entre lua et la sortie gpio?
Je suis perdu!
Merci
Daniel
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: LUA Debute 1 inter et 1 sortie

Message par Keros »

Est-ce que le bouton de DomoticZ réalise l'action sur le GPIO (sans passer par le script LUA) ?
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
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

Re: LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Oui j’ai écrit un blocky avec le bouton et la sortie gpio 16 est bien activé, ma led s’allume et s’éteint avec le bouton virtuel sur Off.
Est-ce qu’il y a un paquet à installer ? Ou autre ?
Daniel
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: LUA Debute 1 inter et 1 sortie

Message par Keros »

En blocky, le script commande le widget qui change dans DomoticZ et la led sur le GPIO change.

En LUA, le script commande le widget qui change dans DomoticZ et la led sur le GPIO ne change pas.

C'est ça ?

Tu as fait l'essai sur le même widget / GPIO ?
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
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

Re: LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Bonjour,
Oui c’est ça.
En Blocky la led s’allume et s’éteint.
En Lua elle ne change pas, mais dans le log domoticz, j’ai le message que la gpio16 est activé ou désactivé.
Comment fait on pour faire l’essai sur le même widget / gpio?
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: LUA Debute 1 inter et 1 sortie

Message par fcBourgogne »

Bonjour,

Dans un premier temps il faut que tu t'assures que Domoticz est intégré le GPIO au démarrage,
as tu dans le log au démarrage au moins ceci:

Code : Tout sélectionner

2025-03-13 07:35:41.684 Status: GPIO: Startup - polling:no interrupts:no debounce:50msec inputs:0 outputs:4
Je ne sais si cela fait la différence mais ce que tu as déclaré dans /etc/init.d/domoticz.sh j'en ai fait de même dans le fichier
/etc/rc.local avant la fin "exit", ensuite il faut un redémarrage à froid.

A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
daniel4860
Messages : 84
Inscription : 26 sept. 2016, 18:31
Localisation : Lapoutroie Haut-Rhin

Re: LUA Debute 1 inter et 1 sortie

Message par daniel4860 »

Bonjour,
Je n'ai pas dans le log de Domoticz cette ligne de code:

Code : Tout sélectionner

2025-03-13 07:35:41.684 Status: GPIO: Startup - polling:no interrupts:no debounce:50msec inputs:0 outputs:4
Que faut-il installer pour obtenir ce code dans le log?
Faut-il installer le wiringpi?

As tout hasard j'ai inserré la déclaration des gpio également dans le fichier /etc/rc.local :

Code : Tout sélectionner

sudo sh -c 'echo 16>/sys/class/gpio/export'
sudo sh -c 'echo out> /sys/class/gpio/gpio16/direction'
sudo sh -c 'echo 0> /sys/class/gpio/gpio16/active_low'
C'est les mêmes lignes que dans le fichier /etc/init.d/domoticz.sh, placé au début aprés la ligne:

Code : Tout sélectionner

# Do NOT "set -e"
sudo sh -c 'echo 16>/sys/class/gpio/export'
sudo sh -c 'echo out> /sys/class/gpio/gpio16/direction'
sudo sh -c 'echo 0> /sys/class/gpio/gpio16/active_low'
Cela n'a rien changé après un sudo reboot du Raspberry pi3B+.
Merci
Domoticz sur Raspberry sur lequel 3 sondes prennent la température.
Une Gpio Out fait basculer un relais pour enclencher un circulateur.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: LUA Debute 1 inter et 1 sortie

Message par Keros »

Selon moi, le problème ne vient pas du GPIO puisque le Blocky actionne la led.

J'ai écris des petits guides dans ma présentation dont un concerne les débuts en programmation (lien dans ma signature). Commence à faire un script tout simple pour changer un widget virtuel. Ensuite tu amélioreras pour changer le widget de ton GPIO.
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