Raspbian : Un bouton alarme

Dans le m?me style que le bouton pour arréter OSMC.
Pour le bouton j'ai utilisé un bouton avec sonnette sans fil . dispo ici
Pour info :
Pour le bouton émetteur la pile 9V est fournie.
Le carillon récepteur fonctionne sous 3V (avec 2 piles AA)
    -Le carillon consomme 0.5 mA en veille, 35 mA en carillonnant.
   - J'ai débranché le carillon et je l'ai remplacé par un opto la consommation est alors de 4 mA en carillonnant.

Pour le câblage: j'ai aliment?é le carillon avec le 3.3V du RPI. J'ai débranché le carillon et je l'ai remplacé par un opto SFH 620A.
L'émetteur de l'opto est relié au 0V et le collecteur sur le GPIO x. J'ai rajouté une capa de 100 nF entre l'émetteur et le collecteur pour filtrer quelques parasistes.

Il faut un programme interruptd.py qui sera lancé au démarrage et qui va traiter l'interruption (bouton).
Dans mon cas, interruptd.py lance un script qui contient les actions à faire (envoie sms, envoie mail ...)

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

# on importe les modules necessaires
import os
import RPi.GPIO as GPIO
import time

intPin = 26
t0=time.time()
decomptMax=8
decompt=decomptMax

# on met RPi.GPIO en mode notation BCM (numero des pins)
GPIO.setmode(GPIO.BCM)

# on met le GPIO 26 a UP pour eviter tout signal faux au demarrage, avec R de pull up
GPIO.setup(intPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def attente_signal():
global t0
    global decompt
    #global decomptMax

    # on met le bouton en attente d'appui et donc de passage du GPIO sur Down
    # le programme est en pause tant qu'il n'y a pas d'appui sur le bouton - pas de charge CPU
    #GPIO.wait_for_edge(intPin, GPIO.FALLING)
    #GPIO.wait_for_edge(intPin, GPIO.BOTH)
    GPIO.wait_for_edge(intPin, GPIO.RISING)
    # lorsque le GPIO passe sur down - appui - on passe a la suite

    t1=time.time()
    dt=t1-t0
    if dt < 2 :                        # pour filtrer les rebonds
        decompt = decompt - 1
    else:
        decompt = decomptMax
    t0=t1

    if decompt < 1:
        print '** Signal sur gpio ' ,intPin ,' - ici ecrire la suite des ... **'
        os.system('/var/www/interruption/alarme_sms.sh')
        decompt = decomptMax

        # Tempo de 10 s avant nouvelle interruption (filtre les rebonds ou melodie carillon)
        time.sleep(10)    
    
while 1:        
    attente_signal()

GPIO.cleanup() # pour sortir propement en cas control C.

Le script qui est appelé.

#!/bin/bash
# script version 1.0 pour envoyer sms + mail
#
#sms pour envoie de l alarme
wget -O- --no-check-certificate 'https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=yyyyyyyyyy&msg=Alarme bouton from  (rpi alarme_sms.sh)'

# Mail pour envoie de l alarme
mail -s Alarme_bouton_from_RPI Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. <Alarme bouton (rpi /var/www/interruption/alarme_sms.sh) a : $(date)
EOF

 

No module Published on Offcanvas position