[PYTHON] Créer un bouton Nyan

Objectif

Je veux tweeter quand je veux

Bouton Nyan n ° 1

Fabriqué avec IFTTT. スケッチ.png

Tweet avec l'heure actuelle lorsque le bouton est enfoncé. Très pratique à utiliser sur les smartphones et Apple Watch Screenshot_20170818-121248.png IMG_-96qcj7.jpg

problème

Le texte publié ressemble à "Nyan 24 août 2017 à 03h45", et je ne peux pas publier en raison de messages en double dans la minute. Parfois, je veux lancer Nyan en continu.

Bouton Nyan n ° 2

J'ai une tarte aux râpes à la maison alors je veux qu'il travaille Comme pratique, essayez Webhooking avec IFTTT J'ai fait une pomme pour ignorer Webhook et une pomme pour recevoir avec IFTTT.

maker.ifttt.com-use-dFATP1QGninuFBL9kK7NLv(Laptop with HiDPI screen).png Lorsque j'ouvre le paramètre Webhook avec IFTTT, une URL comme celle-ci doit être affichée, donc j'aurais dû l'utiliser telle quelle. Webhook est très pratique Un exemple de saisie curl est également affiché

Skipper Webhook

ifttt.com-applets-59725732d--edit(Laptop with HiDPI screen).png

Celui qui reçoit le webhook

ifttt.com-applets-59725732d--edit(Laptop with HiDPI screen) (1).png Spécifiez le nom de l'événement décidé par la personne à ignorer.

Le n ° 2 fonctionne également très bien, il suffit de demander à Razupai de le piloter.

Bouton Nyan n ° 3

En parlant de tarte aux râpes, il semble que ce soit Python, j'ai donc décidé d'utiliser Python

import wiringpi as pi ,time,requests,datetime
SW_PIN = 15 #Numéro de broche auquel le commutateur est connecté
url='https://maker.ifttt.com/trigger/python1/with/key/******'
swi=0
pi.wiringPiSetupGpio()
pi.pinMode(SW_PIN,pi.INPUT)
pi.pullUpDnControl(SW_PIN,pi.PUD_DOWN)

while True:
    if(pi.digitalRead(SW_PIN)==pi.HIGH):
        if(swi==0):
            print("Switch ON")
            str = datetime.datetime.now().strftime('%H:%M:%S')
            payload = {'value1':str}
            requests.post(url,data=payload)
            swi=1
    else:
       print("Switch OFF")
       swi=0
    time.sleep(0.01)

Maintient le commutateur allumé et éteint dans swi, récupère l'heure où 0 → 1 et passe à la destination du webhook.

payload = {'value1':str}
requests.post(url,data=payload)

Vous pouvez ignorer les données de temps en faisant. IMG_-x10jmo.jpg Publier en appuyant sur un bouton

problème

L'envoi du POST prend beaucoup de temps, et même si je le frappe à plusieurs reprises lors de l'envoi, cela ne fonctionne pas. Je veux frapper davantage

Bouton Nyan n ° 4

Je veux enfiler uniquement l'émetteur et le rendre asynchrone. Quand je l'ai recherché, Python avait une fonction pour créer des sous-threads, mais je ne suis pas sûr, j'ai donc décidé de ne déplacer que l'émetteur en arrière-plan et cela a été résolu.

Le problème a été résolu en divisant l'émetteur en nyaan.py et en le réécrivant comme ʻos.system ('sudo python3 nyaan.py &')`. Avec cela, même si vous appuyez sur le bouton Nyan à plusieurs reprises, vous pouvez Nyan à l'intervalle le plus court de 1 seconde.

problème

C'est un peu décevant car vous exécuterez sudo python3 nyaan.py & à chaque fois. Je veux le compiler, mais j'ai sommeil alors je vais le refaire.

Bouton Nyan n ° 5

Puisque l'élan des coups répétés a augmenté, il correspond à l'affichage en millisecondes. Dans les spécifications jusqu'à présent, un tweet par seconde était la limite (tweets en double)

now = datetime.datetime.now()
str = now.strftime('%H:%M:%S.') + "%03d" % (now.microsecond // 1000)

Difficile Progura Mingu Je ne comprends pas vraiment http://shohu.hatenablog.com/entry/20081117/1226936130 Je viens de déménager ici.

résultat

Théoriquement, vous pouvez tweeter 1000 fois par seconde sans aucun problème.

Bouton Nyan n ° 6

Depuis lors, il y a eu diverses choses, et il est devenu multi-thread et le son sort du haut-parleur.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading,tweepy,datetime,kjfsm4,wiringpi as pi,time

import pygame.mixer

SW_PIN = 14
swi=0
pi.wiringPiSetupGpio()
pi.pinMode(SW_PIN,pi.INPUT)
pi.pullUpDnControl(SW_PIN,pi.PUD_DOWN)

auth = tweepy.OAuthHandler(kjfsm4.consumer_key,kjfsm4.consumer_secret)
auth.set_access_token(kjfsm4.access_token,kjfsm4.access_secret)
api = tweepy.API(auth)

pygame.mixer.init()
pygame.mixer.music.load('nyan.mp3')

def tweet():
    pygame.mixer.music.play(1)
    print("tweet")
    now = datetime.datetime.now()
    str = now.strftime('%H:%M:%S.') + "%03d" % (now.microsecond // 1000)
    print (str)
    str = 'Nyan'+str
    api.update_status(str)

while True:
    if(pi.digitalRead(SW_PIN)==pi.HIGH):
        if(swi==0):
            th_me = threading.Thread(target=tweet,name="th_me")
            th_me.start()
            swi=1
    else:
       swi=0
    time.sleep(0.01)

Recommended Posts

Créer un bouton Nyan
Faisons un jeu de squash
Faire un décorateur de fonction
Je vais créer un mot de passe!
Créez un jeu à la Tetris!
Créer un décodeur Base64
Créez un Slackbot simple avec un bouton interactif en python
Faisons un robot Discord.
Créer un backend Blueqat ~ Partie 1
[Django] Créer un menu déroulant
Créer un LINE BOT (chat)
Créer un bookmarklet en Python
Faire de Responder un démon (service)
Faire un feu avec kdeplot
Faire une impression de forage de calcul
Faisons une rumba distante [Matériel]
Comment faire une traduction japonais-anglais
Créer un identifiant Santa à partir d'une image du Père Noël
Faisons une rumba distante [Logiciel]
Créer une boîte à Tweet pour Pepper
Faites un son avec le notebook Jupyter
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Comment créer un bot slack
Faisons une rupture de bloc avec wxPython
Faisons un service de vente au comptant 1
Comment créer un robot - Avancé
Comment créer une fonction récursive
Rendre la compilation C un peu plus facile
python / Créer un dict à partir d'une liste.
[Python] Faire de la fonction une fonction lambda
Créer un système de recommandation avec python
[Blender] Comment créer un plug-in Blender
Créer un filtre avec un modèle django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Comment créer un robot - Basic
Créer un itérateur de modèle avec PySide
Faire un joli graphique avec plotly
Créez un générateur de rideaux avec Blender
Faisons un service de vente au comptant 3
Faisons un jeu de shiritori avec Python
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
Faisons un noyau jupyter
Faire de Jupyter Notebook un service sur CentOS
Créez un pipeline de notebook avec Kedro + Papermill
Faire une figure partiellement zoomée avec matplotlib
Créez un quiz de dessin avec kivy + PyTorch
Faisons la voix lentement avec Python
Créez un classificateur en cascade avec Google Colaboratory
Faisons un langage simple avec PLY 1
Qt pour l'application de bureau de l'application Python
Fabriquez-vous quelque chose comme une fusée?
Faire un circuit logique avec Perceptron (Perceptron multicouche)
Faire Oui Non Popup avec Kivy
Faire une minuterie de lavage-séchage avec Raspberry Pi
Cours ROS 107 Créer un client pour rosblidge
Créer une animation GIF avec surveillance des dossiers
J'ai créé une API Web
Pour rendre une propriété de type dict en lecture seule