Ich habe versucht, einen Trivia-Knopf im Springbrunnen-Stil zu erstellen, der "Hey" zu Slack sagt, wenn ich den Taktschalter drücke, der mit dem Raspeltorte verbunden ist
Wenn Sie die mit dem Steckbrett verbundene Taste drücken, wird "Hey" zu einem bestimmten Kanal in Slack angezeigt, wie unten gezeigt. Wenn Sie mehrmals darauf drücken, wird so oft "Hey" angezeigt.
Ich habe es wie folgt verkabelt. Genau das wurde in dem Buch geschrieben. Ich habe den Schaltplan mit der Software fritzing gezeichnet.
In der Tat sieht es so aus.
Schreiben Sie das folgende Programm.
inputsw.py
#Magie
import RPi.GPIO as GPIO
import time
import signal
import sys
# Ctrl+Handler, wenn C ein SIGINT-Signal sendet. GPIO vor dem Ende.Bereinigung aufrufen
def handler(signum, frame):
print 'Signal handler called with signal', signum
GPIO.cleanup()
sys.exit(0)
#Registrieren eines Handlers
signal.signal(signal.SIGINT, handler)
#Verwenden Sie GPIO9 als Eingabe
GPIO.setmode(GPIO.BCM)
GPIO.setup(9, GPIO.IN)
before = 0
#Endlosschleife
while True:
#Gibt 1 zurück, wenn gedrückt, 0, wenn nicht gedrückt
now = GPIO.input(9)
if before == 0 and now == 1:
print("Push!!!")
time.sleep(0.1)
before = now
Wenn nun der Schalter während der Programmausführung gedrückt wird, wird ** Push !!! ** am Standardausgang angezeigt. Wenn Sie unterbrechen möchten, drücken Sie Strg + C, um ein Signal zum Unterbrechen zu senden.
$python inputsw.py
Push!!!
Push!!!
Push!!!
^CSignal handler called with signal 2
Es ist in Ordnung, es von Anfang an in das Obige aufzunehmen, aber da Python Slack zum ersten Mal benachrichtigt hat, habe ich zunächst nur dieses implementiert.
Als ich nachgesehen habe, gab es eine Bibliothek für Slack, die von Slack verwaltet wurde, also werde ich diese verwenden.
Installieren Sie es zuerst.
$sudo pip install slackclient
Lassen Sie uns überprüfen, ob es mit dem Inhalt der offiziellen Readme-Datei funktioniert. Greifen Sie für den Teil "Token" im Voraus auf die folgende URL zu, stellen Sie ein Token aus und legen Sie das ausgegebene Token fest.
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:'
)
Ich werde es versuchen.
$python slack.py
Wenn es eine Einstellung gibt, wird diese wie folgt in Slack angezeigt.
Lassen Sie uns die Nachricht ändern. Da ich auf Japanisch schreibe, habe ich auch hinzugefügt, dass es UTF-8 ist.
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="Hallo:neutral_face:",
username='pybot', icon_emoji=':robot_face:'
)
Sie sind fertig.
Bringen Sie einfach den Programminhalt zu den zuerst erstellten inputw.py
.
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="Hallo: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
Dieses Mal werde ich es im Hintergrund ausführen.
$python inputsw.py &
Wenn Sie in diesem Zustand die Taste drücken, spricht Slack. Wenn Sie mehr als eine Taste drücken, werden Sie so oft gesprochen, wie Sie drücken.
nervig.
Beende den Prozess, wenn du fertig bist.
#Überprüfen Sie die Prozess-ID
$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
#Senden Sie ein Signal
$kill -KILL 2630
#Bestätigen Sie das Ende
$ps aux |grep python
pi 2641 0.0 0.1 5724 1832 pts/0 S+ 17:44 0:00 grep --color=auto python
[1]+Python-Eingaben mit erzwungener Beendigungw.py
#Beim Drücken der Taste wird nichts gesagt
Ich möchte verschiedene Dinge in Kombination mit LEDs und Sensoren ausprobieren!