J'ai essayé de créer un bouton de style fontaine qui dit "Hey" à Slack lorsque j'appuie sur l'interrupteur tactile connecté à la tarte à la râpe
Lorsque vous appuyez sur le bouton connecté à la maquette, il dira "Hey" à un canal spécifique dans Slack comme indiqué ci-dessous. Si vous appuyez dessus plusieurs fois, il dira "Hey" ce nombre de fois.
Je l'ai câblé comme suit. C'est exactement ce qui était écrit dans le livre. J'ai dessiné le schéma de câblage en utilisant un logiciel appelé fritzing.
En fait, ça ressemble à ça.
Écrivez le programme suivant.
inputsw.py
#la magie
import RPi.GPIO as GPIO
import time
import signal
import sys
# Ctrl+Handler lorsque C envoie un signal SIGINT. GPIO avant la fin.Nettoyage des appels
def handler(signum, frame):
print 'Signal handler called with signal', signum
GPIO.cleanup()
sys.exit(0)
#Enregistrer un gestionnaire
signal.signal(signal.SIGINT, handler)
#Utiliser GPIO9 comme entrée
GPIO.setmode(GPIO.BCM)
GPIO.setup(9, GPIO.IN)
before = 0
#boucle infinie
while True:
#Renvoie 1 si enfoncé, 0 si non enfoncé
now = GPIO.input(9)
if before == 0 and now == 1:
print("Push!!!")
time.sleep(0.1)
before = now
Maintenant, lorsque le commutateur est enfoncé pendant l'exécution du programme, ** Push !!! ** sera affiché sur la sortie standard. Si vous souhaitez interrompre, appuyez sur Ctrl + C
pour envoyer un signal d'interruption.
$python inputsw.py
Push!!!
Push!!!
Push!!!
^CSignal handler called with signal 2
Il est normal de l'inclure dans ce qui précède depuis le début, mais comme c'était la première fois que Python notifiait Slack, je n'ai implémenté que celui-ci au début.
Quand j'ai vérifié, il y avait une bibliothèque pour Slack maintenue par Slack, donc je vais l'utiliser.
Tout d'abord, installez-le.
$sudo pip install slackclient
Vérifions si cela fonctionne avec le contenu du Readme officiel.
Pour la partie token
, accédez à l'URL suivante à l'avance, émettez un token et définissez le token émis.
slack.py
import time
from slackclient import SlackClient
token = "xoxp-xxxxx"
sc = SlackClient(token)
print sc.api_call(
"chat.postMessage", channel="#general", text="Hello from Python! :tada:",
username='pybot', icon_emoji=':robot_face:'
)
Je vais essayer.
$python slack.py
S'il existe un paramètre, il sera affiché dans Slack comme suit.
Changeons le message. Puisque j'écris en japonais, j'ai également ajouté que c'était UTF-8.
slack.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
from slackclient import SlackClient
token = "xoxp-xxxx"
sc = SlackClient(token)
print sc.api_call(
"chat.postMessage", channel="#general", text="Hey:neutral_face:",
username='pybot', icon_emoji=':robot_face:'
)
Vous avez terminé.
Apportez simplement le contenu de programmation à ʻinputsw.py` que vous avez créé en premier.
inputsw.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
import signal
import sys
from slackclient import SlackClient
def post(sc):
print sc.api_call(
"chat.postMessage", channel="#general", text="Hey:neutral_face:",
username='pybot', icon_emoji=':robot_face:'
)
def handler(signum, frame):
print 'Signal handler called with signal', signum
GPIO.cleanup()
sys.exit(0)
signal.signal(signal.SIGINT, handler)
GPIO.setmode(GPIO.BCM)
GPIO.setup(9, GPIO.IN)
before = 0
token = "xoxp-xxxxx"
sc = SlackClient(token)
while True:
now = GPIO.input(9)
if before == 0 and now == 1:
print("Push!!!")
post(sc)
time.sleep(0.1)
before = now
Cette fois, je vais l'exécuter en arrière-plan.
$python inputsw.py &
Si vous appuyez sur le bouton dans cet état, Slack parlera. Si vous appuyez sur plus d'un, vous serez parlé le nombre de fois que vous appuyez sur.
ennuyeux.
Tuez le processus lorsque vous avez terminé.
#Vérifier l'ID du processus
$ps aux |grep python
pi 2630 0.4 1.4 18940 13872 pts/0 S 17:41 0:00 python inputsw.py
pi 2639 0.0 0.1 5724 1852 pts/0 S+ 17:44 0:00 grep --color=auto python
#Envoyer un signal
$kill -KILL 2630
#Confirmer la fin
$ps aux |grep python
pi 2641 0.0 0.1 5724 1832 pts/0 S+ 17:44 0:00 grep --color=auto python
[1]+Entrées python de terminaison forcéew.py
#Rien n'est dit lorsque le bouton est enfoncé
J'aimerais essayer diverses choses en combinaison avec des LED et des capteurs!