Raspeberry-pi: bouton poussoir pour lancer un scénario jeedom (ou autre action)

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:

https://www.quartoknows.com/page/raspberry-pi-bouton-darret

https://gpiozero.readthedocs.io/en/stable/

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le quatrième caractère du mot pq7bz ? :