ESP32 - Lancer un déclencheur sur IFTTT-Webhooks en MicroPython

introduction

ESP32 - Décrit comment demander des IFTTTT-Webhooks à l'aide de MicroPython.

Environnement de développement

Ce qui suit est l'environnement confirmé.

équipement

article Nom du modèle Remarques
ESP32-WROOM-32 Carte de développement [NodeMCU-32S ESP32-WROOM-32]

code

Le code dont le fonctionnement a été confirmé est le suivant.

ファイル名:sample_ifttt.py

import urequests as requests
import time

SSID = "xxxxxxxxx"  #SSID du point d'accès
PASSWORD = "xxxxxxxxx" #Mot de passe du point d'accès
MY_KEY = "xxxxxxxxx" #IFTTT - webhooks -Spécifiez le jeton
EVENT_ID = "xxxxxxxxx" #Spécifiez le nom d'événement des webhooks enregistrés

def do_connect():

    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASSWORD)
        while not wlan.isconnected():
            pass
            time.sleep(1)
    print('network config:', wlan.ifconfig())



# IFTTT_Webhook
def ifttt_webhook(eventid):

    #Des informations à valoriser
    payload = "value1="
    payload += "dummy1"
    payload += "&value2="
    payload += "dummy2"
    payload += "&value3="
    payload += "dummy3"

    url = "http://maker.ifttt.com/trigger/" + eventid + "/with/key/" + MY_KEY

    response = requests.post(url, headers={"Content-Type": "application/x-www-form-urlencoded"}, data=payload)
    #Si vous n'avez pas besoin de spécifier la valeur, cliquez sur ↓ pour ok
    # response = requests.post(url)

    response.close()

#Connectez-vous au wifi
do_connect()

# ifttt-Déclenchement vers les webhooks
ifttt_webhook(EVENT_ID)

Méthode d'exécution

>>> import sample_ifttt

→ Confirmez que l'événement spécifié dans le code est appelé

Note

À propos de la spécification de la valeur

C'était le plus addictif.

Auparavant, j'ai écrit le code pour faire une requête à IFTTT en Python 3.7 comme suit. ..

import requests

def ifttt_webhook(eventid, values):
    payload = {"value1": "",
                "value2": "",
                "value3": "" }
    payload["value1"] = values[0]
    payload["value2"] = values[1]
    payload["value3"] = values[2]

    url = "https://maker.ifttt.com/trigger/" + eventid + "/with/key/" + my_key
    print(url)
    response = requests.post(url, data=payload)

Si vous écrivez ceci tel quel en MicroPython, cela ne provoquera pas d'erreur, mais la valeur ne sera pas appliquée.

Quand j'ai vérifié le code de urequests, j'ai senti que ce serait inutile si je ne le spécifiais pas avec json.

Donc, j'ai spécifié json, mais dans urequests, l'en-tête est passé en caractères fixes, "Content-Type: application/x-www-form-urlencoded" J'ai trouvé que cela ne fonctionnait pas.

Donc, spécifiez respectivement les en-têtes et les données, Je l'ai appliqué à la valeur.

Le site que j'ai utilisé comme référence

Recommended Posts

ESP32 - Lancer un déclencheur sur IFTTT-Webhooks en MicroPython
Lancer une demande avec un certificat sur httpie
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Jusqu'à dessiner un graphe 3D avec Python dans Windows10
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Configurez un serveur gratuit sur AWS en 30 minutes
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python