Page 1 sur 3

LUA Debute 1 inter et 1 sortie

Publié : 10 mars 2025, 15:11
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

Re: LUA Debute 1 inter et 1 sortie

Publié : 10 mars 2025, 15:30
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

Re: LUA Debute 1 inter et 1 sortie

Publié : 12 mars 2025, 18:31
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

Re: LUA Debute 1 inter et 1 sortie

Publié : 12 mars 2025, 18:45
par Keros
Est-ce que le bouton de DomoticZ réalise l'action sur le GPIO (sans passer par le script LUA) ?

Re: LUA Debute 1 inter et 1 sortie

Publié : 12 mars 2025, 21:19
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

Re: LUA Debute 1 inter et 1 sortie

Publié : 12 mars 2025, 21:40
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 ?

Re: LUA Debute 1 inter et 1 sortie

Publié : 13 mars 2025, 06:21
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?

Re: LUA Debute 1 inter et 1 sortie

Publié : 13 mars 2025, 07:53
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+

Re: LUA Debute 1 inter et 1 sortie

Publié : 13 mars 2025, 11:04
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

Re: LUA Debute 1 inter et 1 sortie

Publié : 13 mars 2025, 12:28
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.