Le besoin : lancer un scénario Jeedom à partir d'un bouton physique de type poussoir.
Matériels:
- 1 Bouton poussoir (forcément)
- 1 Raspberry-pi
- Quelques cables
Mon but était de lancer un scénario Jeedom en pressant un bouton physique mais cela pourrait etre adapté à beaucoup d'autres usages, la limite est l'imagination.
- Branchement du bouton poussoir:
J'ai choisi les pins 39 (GND) et 40 (GPIO21) pour raccorder le bouton poussoir.
Pour interragir avec les pins, nous aurons besoin de GPIOZERO, pour l'installer:
apt update
apt install python3-gpiozero
Pour visualiser les pins:
pinout
root@raspberrypi:~# pinout
,--------------------------------.
| oooooooooooooooooooo J8 +====
| 1ooooooooooooooooooo | USB
| +====
| Pi Model 2B V1.1 |
| +----+ +====
| |D| |SoC | | USB
| |S| | | +====
| |I| +----+ |
| |C| +======
| |S| | Net
| pwr |HDMI| |I||A| +======
`-| |--------| |----|V|-------'
Revision : a01041
SoC : BCM2836
RAM : 1024Mb
Storage : MicroSD
USB ports : 4 (excluding power)
Ethernet ports : 1
Wi-fi : False
Bluetooth : False
Camera ports (CSI) : 1
Display ports (DSI): 1
J8:
3V3 (1) (2) 5V
GPIO2 (3) (4) 5V
GPIO3 (5) (6) GND
GPIO4 (7) (8) GPIO14
GND (9) (10) GPIO15
GPIO17 (11) (12) GPIO18
GPIO27 (13) (14) GND
GPIO22 (15) (16) GPIO23
3V3 (17) (18) GPIO24
GPIO10 (19) (20) GND
GPIO9 (21) (22) GPIO25
GPIO11 (23) (24) GPIO8
GND (25) (26) GPIO7
GPIO0 (27) (28) GPIO1
GPIO5 (29) (30) GND
GPIO6 (31) (32) GPIO12
GPIO13 (33) (34) GND
GPIO19 (35) (36) GPIO16
GPIO26 (37) (38) GPIO20
GND (39) (40) GPIO21
For further information, please refer to https://pinout.xyz/
Le script python pour lancer une url à la pression du bouton poussoir:
nano button.py
# !/bin/python
# Script simple pour lancer une commande sur action d'un bouton poussoir.
import RPi.GPIO as GPIO
import time
import os
# Utilisation des numéros des broches du SOC
# Initialisation de la broche en lecture avec activation des pullups internes
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Code de la fonction quand le bouton est pressé
def press(channel):
print("Demarrage du cast")
time.sleep(0)
os.system("sudo wget 'http://ip-jeedom/core/api/jeeApi.php?apikey=<api-key>&type=scenario&id=11&action=start'")
# Ajout de la fonction à exécuter quand on appuie sur le bouton
GPIO.add_event_detect(21, GPIO.FALLING, callback=press, bouncetime=2000)
# On attend !
while 1:
time.sleep(1)
Pour lancer un scénario Jeedom sous la forme d'une url, l'ecrire comme ça:
http://ip-jeedom/core/api/jeeApi.php?apikey=<api-key>&type=scenario&id=11&action=start
L'id du scénario se trouve facilement sur l'interface de Jeedom en éditant le dit scénario:
Largement inspiré de: