Utilisation d’IFTTT avec le Raspberry Pi

Utilisation dIFTTT avec le Raspberry Pi.PNGv1541717238
Utilisation dIFTTT avec le Raspberry Pi.PNGv1541717238

IFTTT (If This Then That) est un service IoT gratuit qui vous permet d’envoyer un déclencheur à partir d’un appareil / chose, et de permettre à ce déclencheur de faire quelque chose ailleurs.

Déroutant? Peut-être, mais un exemple rapide devrait aider à en montrer la simplicité:

Notre recette («applet») pourrait être: « Si j’envoie un e-mail avec le sujet ‘allumer’, alors allumez mon ampoule intelligente ».

Le ‘CETTE’ est l’e-mail et le ‘CETTE’ allume l’ampoule WiFi. C’est simple, non?

Services IFTTT

Ce qui est passionnant avec IFTTT, c’est le nombre prestations de service vous pouvez utiliser comme déclencheurs (CECI) ou actions (CELA). Il y en a des centaines à utiliser, notamment Google Drive, Pushbullet et Android Wear. Il existe même des services de niche qui peuvent être liés à votre machine à laver intelligente, Dominos Pizza, BMW et Tesco shopping!

Imaginez maintenant si nous pouvions combiner la puissance de l’IFTTT avec le Raspberry Pi?

Compte tenu de la flexibilité de Python, de la puissance du GPIO et de la vaste gamme de capteurs, de composants et d’entrées que nous pouvons y associer – les possibilités sont vraiment infinies!

Services IFTTT

Webhooks IFTTT

Eh bien, c’est possible grâce à l’IFTTT Service de webhooks, spécialement conçu pour les fabricants.

Les webhooks peuvent envoyer et recevoir des déclencheurs via des requêtes HTML POST et GET, qui peuvent être facilement ajoutées à votre code en utilisant le ‘demandes‘bibliothèque python.

Une demande GET extrait des données d’une source / d’un serveur, et une demande POST fait le contraire – elle envoie (ou met à jour) des données à un serveur.

Webhooks IFTTT

Projet IFTTT Motion Alert

Pour expliquer comment utiliser IFTTT, nous allons vous montrer un vrai projet en action utilisant un Raspberry Pi Zero W et l’un de nos capteurs PIR abordables (également inclus dans notre kit de capteurs EduKit).

Notre projet IFTTT utilisera le service Webhooks comme déclencheur, qui sera utilisé conjointement avec le service Pushbullet pour envoyer une notification contextuelle à notre smartphone lorsque cela se produit.

Ce projet détectera quand quelqu’un entre dans une pièce – attrapant quelqu’un qui fouille là où il ne devrait pas être quand nous sommes hors de la maison! Cela pourrait être utilisé dans un bureau où les enfants ne sont pas autorisés à surveiller votre petite sœur emprunt vos affaires, ou même en tant qu’alarme antivol DIY Raspberry Pi super simple!

Nous pouvons même utiliser l’application mobile IFTTT pour activer / désactiver les déclencheurs, afin que vous ne receviez pas de notifications constantes lorsque vous êtes à la maison.

Capteur PIR

Étape 1: hypothèses

Pour cet exemple de projet, nous allons supposer ce qui suit:

Étape 2: Configuration du compte

Avant de nous approcher de notre Raspberry Pi, nous devons configurer nos comptes IFTTT et Pushbullet.

IFTTT

Accédez au site Web de l’IFTTT (https://ifttt.com) et sélectionnez « S’inscrire » dans le coin supérieur droit:

Page d'accueil IFTTT

C’est un processus d’inscription simple comme les autres – nous avons choisi de nous connecter avec notre compte Google pour supprimer le besoin de se souvenir encore un autre mot de passe.

Il affichera un écran vous demandant de choisir 3 services pour commencer – ignorez cela et cliquez simplement sur le «X» dans le coin supérieur droit.

Vous serez ensuite redirigé vers la page d’accueil – c’est tout, un compte IFTTT créé!

Pushbullet

Pushbullet est à nouveau un processus d’inscription simple, mais comme nous voulons des alertes sur smartphone, nous devons également installer l’application mobile.

Nous allons commencer avec l’ouverture de compte. Accédez au site Web de Pushbullet (https://www.pushbullet.com/) et sélectionnez pour vous inscrire avec Google ou Facebook.

Page d'accueil de Pushbullet

Vous serez ensuite guidé à travers quelques étapes de configuration recommandées. Vous voudrez ajouter l’application mobile pour Pushbullet car c’est ainsi que nous recevons les notifications sur notre téléphone.

Sélectionnez l’option «Configurer votre téléphone», puis sélectionnez Android ou iPhone. Cela vous amènera à la page de l’App Store respective où vous pouvez télécharger l’application Pushbullet.

Configuration de Pushbullet

Assurez-vous d’ouvrir l’application mobile et de vous connecter avec la même méthode (Google / Facebook) que celle utilisée sur le site pour ordinateur.

Les autres options de configuration de Pushbullet peuvent être ignorées pour l’instant. Votre compte Pushbullet est maintenant créé!

Étape 3: activer les services Webhooks et Pushbullet

Ouvrez IFTTT dans un navigateur, sélectionnez votre nom d’utilisateur dans le coin supérieur droit, puis sélectionnez «Services».

Vous devriez voir une petite sélection de services – ce sont les services par défaut avec lesquels tous les utilisateurs commencent. En bas de la page, sélectionnez «tous les services».

IFTTT Add Service

Lorsque la page suivante apparaît, tapez «Webhooks» dans la zone de filtre, ce qui distinguera le service des webhooks:

Filtre IFTTT Webhooks

Sélectionnez l’icône Webhooks, puis cliquez sur «se connecter» sur l’écran suivant pour activer ce canal.

Il n’y a rien à se connecter pour celui-ci, car il active simplement un moyen de demander et de transmettre des données à IFTTT.

La page s’actualisera et vous remarquerez qu’un bouton «Documentation» apparaît à droite. Sélectionnez-le pour trouver votre «clé» unique (notez-la):

Clé IFTTT Webhooks

Revenez à la page d’accueil IFTTT et répétez les étapes pour ajouter un service, mais cette fois filtrez pour «Pushbullet». Comme précédemment, vous verrez un bouton pour connecter IFTTT au service Pushbullet.

En supposant que vous êtes toujours connecté à Pushbullet, vous devriez voir la page suivante où il vous demande d’approuver la demande d’IFTTT pour se connecter à votre compte Pushbullet:

Approbation IFTTT Pushbullet

Une fois que vous avez approuvé l’accès, nous sommes prêts à commencer.

Étape 4: créer une applet IFTTT

Une applet est notre recette qui relie les services entre eux – reliant un déclencheur «CECI» à une action «CELA».

Pour ce projet, le capteur PIR déclenchera le Raspberry Pi pour envoyer une demande HTML POST au service de webhooks IFTTT, et déclenchera Pushbullet pour envoyer une note lorsque cela se produit. Cela apparaîtra alors sur votre téléphone lorsque vous aurez installé l’application Pushbullet.

Sur la page d’accueil IFTTT, sélectionnez le lien «Mes applets» en haut de la page. Vous verrez l’écran ci-dessous, ainsi que les applets par défaut que IFTTT configure pour les nouveaux utilisateurs. Sélectionnez le bouton «Nouvelle applet» sur le côté droit de l’écran.

IFTTT New Applet

Une interface facile à utiliser se chargera sur votre écran. Sélectionnez le lien bleu «CECI».

Création de l'applet IFTTT Étape 1

Recherchez maintenant «Webhooks», puis sélectionnez l’icône Webhooks.

Il n’y a qu’une seule option de déclenchement pour les Webhooks, qui est «Recevoir une demande Web». Sélectionnez cette option:

Déclencheur d'applet IFTTT

Maintenant, nous devons ajouter des détails à ce déclencheur. L’écran suivant vous demandera un nom d’événement. C’est quelque chose que nous ajoutons à la demande HTML Python plus tard lorsque nous écrivons le script sur le Raspberry Pi.

Nous appellerons cet événement «motion_detected», puis cliquez sur «créer un déclencheur»:

Détails du déclencheur IFTTT

Vous verrez que l’icône Webhooks a maintenant pris la place du texte «CECI». Nous devons maintenant définir l’action « CELA » – cliquez sur le texte bleu « CELA »:

Déclenchement IFTTT terminé

En utilisant à nouveau le filtre, tapez «Pushbullet» puis sélectionnez l’icône Pushbullet lorsqu’elle apparaît. Nous voulons que Pushbullet nous envoie une note (une notification) lorsque cette applet se déclenche, sélectionnez donc la première option « Poussez une note ».

Nous pouvons configurer cela comme nous le souhaitons, y compris des «ingrédients» qui sont des éléments de données que nous pouvons configurer pour envoyer notre Raspberry Pi avec notre demande de Webhooks.

Nous allons garder celui-ci simple et pousser simplement du texte avec la date / heure de détection du mouvement, comme suit:

IFTTT Pushbullet Action

Sélectionnez «Créer une action» pour passer à l’écran final.

Ici, nous voyons un résumé de notre applet et confirmons que nous voulons le compléter. Sélectionnez le bouton «Terminer»:

Confirmation de l'applet IFTTT

C’est tout – notre applet attend que nous le déclenchions à partir de notre Raspberry Pi, alors passons à cette partie maintenant.

Étape 5: Configuration du Raspberry Pi

Étape 1: mise à jour de Raspbian

Comme toujours, nous vous recommandons de commencer avec une nouvelle copie de Raspbian et de la mettre à jour en exécutant les commandes suivantes dans une fenêtre de terminal, toutes deux suivies de la touche Entrée:

sudo apt-get update

puis

sudo apt-get upgrade

Étape 2: installer pip

Pip est un gestionnaire de packages pour Python. Vous aurez probablement déjà installé pip sur votre Raspberry Pi, mais vérifions quand même au cas où.

Tapez la commande suivante, puis entrez:

sudo apt-get install python3-pip

Étape 3: installer les demandes

Requests est le module qui nous permet d’envoyer la requête HTML POST à ​​IFTTT.

Installez les demandes en tapant la commande suivante, puis entrez:

sudo pip3 install requests

Étape 4: installer RPi.GPIO

Si vous utilisez Raspbian Lite, vous devrez peut-être également installer RPi.GPIO. Tapez la commande suivante suivie de la touche Entrée:

sudo apt-get install python-rpi.gpio python3-rpi.gpio

Étape 6: script Python

Comme nous utilisons le capteur PIR du kit CamJam EduKit Sensors, le script Python est basé principalement sur le Code CamJam pour ce capteur. Nous avons légèrement modifié la disposition / le style, puis ajouté juste deux lignes de code pour envoyer la requête POST à ​​IFTTT:

  • Nous avons ajouté la ligne 6 pour importer le module de requêtes. Nous devons importer des demandes pour nous permettre de l’utiliser, comme n’importe quel autre module.
  • Nous avons ajouté la ligne 46, qui est l’URL et la clé nécessaires pour déclencher la recette IFTTT.
    • Vous devrez modifier la partie qui indique YOUR_KEY à votre clé IFTTT
    • Vous devrez modifier la partie qui indique YOUR_EVENT_NAME par le nom de l’événement que vous souhaitez utiliser avec les Webhooks (rappelez-vous, nous avons utilisé ‘motion_detected’ dans l’exemple)

C’est aussi simple que d’ajouter deux lignes de code!

Le code

Voici le script Python complet. Sous le code, vous verrez comment le télécharger facilement directement sur votre Raspberry Pi:

#! /usr/bin/python

# Imports
import RPi.GPIO as GPIO
import time
import requests

# Set the GPIO naming convention
GPIO.setmode(GPIO.BCM)

# Turn off GPIO warnings
GPIO.setwarnings(False)

# Set a variable to hold the GPIO Pin identity
pinpir = 17

# Set GPIO pin as input
GPIO.setup(pinpir, GPIO.IN)

# Variables to hold the current and last states
currentstate = 0
previousstate = 0

try:
    print("Waiting for PIR to settle ...")

    # Loop until PIR output is 0
    while GPIO.input(pinpir) == 1:

        currentstate = 0

    print(" Ready")

    # Loop until users quits with CTRL-C
    while True:

        # Read PIR state
        currentstate = GPIO.input(pinpir)

        # If the PIR is triggered
        if currentstate == 1 and previousstate == 0:

            print("Motion detected!")

            # Your IFTTT URL with event name, key and json parameters (values)
            r = requests.post('https://maker.ifttt.com/trigger/YOUR_EVENT_NAME/with/key/YOUR_KEY_HERE', params={"value1":"none","value2":"none","value3":"none"})

            # Record new previous state
            previousstate = 1

            #Wait 120 seconds before looping again
            print("Waiting 120 seconds")
            time.sleep(120)

        # If the PIR has returned to ready state
        elif currentstate == 0 and previousstate == 1:

            print("Ready")
            previousstate = 0

        # Wait for 10 milliseconds
        time.sleep(0.01)

except KeyboardInterrupt:
    print(" Quit")

    # Reset GPIO settings
    GPIO.cleanup()

Téléchargement du script

Le moyen le plus simple de télécharger le script Python sur votre Raspberry Pi est avec une simple commande ‘wget’, qui indique à votre Raspberry Pi de télécharger le script.

Tout d’abord, dans une fenêtre de terminal, créez un nouveau répertoire en tapant la commande ci-dessous puis en entrant:

mkdir IFTTT

Entrez ensuite ce répertoire à l’aide de la commande suivante, à nouveau suivie de la touche Entrée:

cd IFTTT

Enfin, téléchargez le script dans ce répertoire à l’aide de la commande suivante, puis entrez:

wget https://cdn.shopify.com/s/files/1/0176/3274/files/iftttpir.py

Ensuite, vérifiez que cela a fonctionné en utilisant la commande ci-dessous, puis entrez:

ls

Votre répertoire devrait ressembler à l’image ci-dessous:

Terminal

Conseil de pro!

Avez-vous remarqué à la fin de la ligne 46 qu’il y a une ligne de code «params» après l’URL?

params={"value1":"none","value2":"none","value3":"none"})

Nous ne les utilisons pas dans cet exemple, mais ils peuvent être utilisés pour envoyer jusqu’à 3 valeurs à IFTTT dans votre demande POST, qui peut être n’importe quelle chaîne que votre script peut créer.

Voici où vous les ajoutez dans IFTTT, lorsque vous créez votre applet:

Valeurs de Webhook IFTTT

Considérez l’utilisation de ces valeurs lorsqu’elles sont combinées avec d’autres capteurs tels que la température, les ultrasons ou l’humidité (ou l’un des nombreux autres capteurs disponibles)!

Étape 7: exécutez le script

Pour exécuter votre code, assurez-vous d’abord que vous êtes dans le répertoire IFTTT, puis exécutez le code avec cette commande, puis entrez:

sudo python3 iftttpir.py

Étape 8: Le résultat

Avec votre code en cours d’exécution, vous commencerez à recevoir des notifications de Pushbullet chaque fois que quelqu’un se déplace devant votre capteur PIR!

Voici à quoi cela ressemble sur notre smartphone:

Notification Pushbullet

Le script inclut un délai de 120 secondes après la détection d’un mouvement, juste pour vous assurer de ne pas continuer à recevoir des notifications chaque seconde lorsqu’il y a quelqu’un dans la pièce. Vous pouvez modifier ce paramètre pour l’adapter aux besoins de votre projet (ligne 53).

Faites-nous savoir ce que vous avez créé avec IFTTT et votre Raspberry Pi. Envoyez-nous vos photos et projets sur Twitter, Facebook ou Instagram.

  • Freenove Breakout Board for Raspberry Pi 5 / 4B / 3B+ / 3B / 3A+ / 2B / 1B+ / 1A+ / Zero W/Zero, Terminal Block Hat, GPIO Status LED
    Compatible models -> Raspberry Pi 5 / 4B / 3B+ / 3B / 3A+ / 2B / 1B+ / 1A+ / Zero W / Zero. (Note: NOT compatible with Raspberry Pi 400.) GPIO status LED -> LED on if GPIO outputs/inputs high level, LED off if GPIO outputs/inputs low level. Independent LED -> The status LED is driven by the chip instead of the GPIO so the GPIO will not be affected. Terminal block and header -> Connect to all pins of Raspberry Pi's 40-pin GPIO header, 2.54mm / 0.1in pitch. GPIO name -> The BCM numbering name of each GPIO is printed next to the port.
  • Geekworm 2x20 40 Pin Stacking Female Header Kit for Raspberry Pi 5 / Raspberry Pi 4 / 3B+ / 3B / 2B / B+ / Zero (Zero W) (4 Specifications), Raspberry Pi GPIO Stacking Header/Extender
    Packing List: 2 * 2x20 Female Header (Pin Len: 12mm), 2 * 2x20 Female Header (Pin Len: 10.7mm), 2 * 2x20 Female Header (Pin Len: 5.5mm), 2 * 2x20 Pin Header The 2x20 Pin Header is for Raspberry Pi Zero / Zero W. Material: Insulated plastic, hard metal pin Application: Widely be used in Raspberry Pi DIY project, such as for electronic circuit, PCB circuit board etc. electronic project Stacking header for Raspberry Pi 4, Pi 3, Pi 2, Pi Model B+, Pi A+, Pi Zero, Pi Zero W
  • Adeept Kit de démarrage pour Raspberry Pi 3, 2 modèles B/B+, LCD1602, Moteur, C et Python, kit de démarrage avec manuel d'utilisation (français non garanti)
    Livraison rapide et gratuite avec un numéro de suivi. Un manuel d'utilisation détaillé (PDF) avec 13 leçons et deux versions de code (Python et C) sont fournis, il est facile pour vous d'apprendre la programmation Raspberry Pi et C & Python. Après votre achat, envoyez-nous un e-mail avec le titre « require files for RPi starter kit », puis nous vous montrerons comment accéder à ces documents. Support technique à réponse rapide gratuite. Étui redessiné, il est très beau, et c'est un merveilleux cadeau pour les enfants. Raspberry Pi non inclus.