[PYTHON] Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen

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

Was wurde gemacht

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.

Screen Shot 2016-03-31 at 11.43.22 AM.png

Umgebung

Draht

Ich habe es wie folgt verkabelt. Genau das wurde in dem Buch geschrieben. Ich habe den Schaltplan mit der Software fritzing gezeichnet.

qiitatest_bb.jpg

In der Tat sieht es so aus.

reduce.jpg

Holen Sie sich, ob die Schaltfläche in Python gedrückt wurde

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

Murmeln Sie in Slack zu einem bestimmten Kanal

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.

slackhq/python-slackclient

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-token

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.

Screen Shot 2016-03-31 at 10.56.07 AM.png

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:'
)

Screen Shot 2016-03-31 at 11.21.28 AM.png

Sie sind fertig.

Lassen Sie Slack etwas sagen, wenn Sie den Knopf drücken

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.

Screen Shot 2016-03-31 at 11.43.22 AM.png

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!

Recommended Posts

Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich habe versucht, einen Bot für die Ankündigung eines Wiire-Ereignisses zu erstellen
Ich habe versucht, mit Open AI Gym eine verbesserte Lernumgebung für Othello zu schaffen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Ausführung] (3/3) zu erstellen.
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Setup] (1/3) zu erstellen.
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Ich habe versucht, ein Modell mit dem Beispiel von Amazon SageMaker Autopilot zu erstellen
Ich möchte manuell eine Legende mit matplotlib erstellen
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
Ich habe versucht, eine Klasse für die Suche nach Dateien mit der Glob-Methode von Python in VBA zu erstellen
Ich habe versucht, einen Pandas-Datenrahmen zu erstellen, indem ich mit Python Informationen zum Lebensmittelrückruf abgekratzt habe
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Ich habe versucht, mit Hy ・ Define a class zu beginnen
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich möchte vorerst eine Docker-Datei erstellen.
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen
Ich wollte den Motor mit einer Raspeltorte laufen lassen, also habe ich versucht, das Motor Driver Board von Waveshare zu verwenden
Ich habe versucht, eine Quip-API zu erstellen
Verwenden einer Webkamera mit Raspberry Pi
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Ich habe versucht, einen einfachen Kredit-Score mit logistischer Regression zu erstellen.
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, die Lesezeichen zu visualisieren, die mit Doc2Vec und PCA nach Slack fliegen
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, alle Bemerkungen von Slack mit Wordcloud (Python) zusammenzufassen.