ESP32 - Beschreibt, wie IFTTTT-Webhooks mit MicroPython angefordert werden.
Das Folgende ist die bestätigte Umgebung.
Artikel | Modellname | Bemerkungen |
---|---|---|
ESP32-WROOM-32 Entwicklungsboard | [NodeMCU-32S ESP32-WROOM-32] |
Der Code, dessen Funktion bestätigt wurde, lautet wie folgt.
ファイル名:sample_ifttt.py
import urequests as requests
import time
SSID = "xxxxxxxxx" #Access Point SSID
PASSWORD = "xxxxxxxxx" #Zugangspunkt-Passwort
MY_KEY = "xxxxxxxxx" #IFTTT - webhooks -Geben Sie das Token an
EVENT_ID = "xxxxxxxxx" #Geben Sie den Ereignisnamen der registrierten Webhooks an
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):
#Informationen, um Wert zu legen
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)
#Wenn Sie den Wert nicht angeben müssen, klicken Sie auf ↓, um auf OK zu klicken
# response = requests.post(url)
response.close()
#Stellen Sie eine Verbindung zu WLAN her
do_connect()
# ifttt-Auslöser für Webhooks
ifttt_webhook(EVENT_ID)
>>> import sample_ifttt
→ Vergewissern Sie sich, dass das im Code angegebene Ereignis aufgerufen wird
Das machte süchtig.
Zuvor habe ich den Code geschrieben, um eine Anfrage an IFTTT in Python 3.7 wie folgt zu stellen. ..
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)
Wenn Sie dies so schreiben, wie es in MicroPython ist, wird kein Fehler verursacht, aber der Wert wird nicht angewendet.
Als ich den Code von urequests überprüfte, hielt ich es für nutzlos, wenn ich ihn nicht mit json spezifizierte.
Also habe ich json angegeben, aber in urequests wird der Header in festen Zeichen übergeben. "Content-Type: application/x-www-form-urlencoded" Ich fand, dass es nicht funktionierte.
Geben Sie also jeweils Header und Daten an. Ich habe es auf den Wert angewendet.
Recommended Posts