ESP32 - Décrit comment demander des IFTTTT-Webhooks à l'aide de MicroPython.
Ce qui suit est l'environnement confirmé.
article | Nom du modèle | Remarques |
---|---|---|
ESP32-WROOM-32 Carte de développement | [NodeMCU-32S ESP32-WROOM-32] |
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)
>>> import sample_ifttt
→ Confirmez que l'événement spécifié dans le code est appelé
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.
Recommended Posts