Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

3Verbindung zu Adafruit IO herstellen

Nun wollen wir erstmalig Daten ins Internet übertragen. Dazu nutzen wir den Feed test, den wir im Browser beobachten. Kopiere den Code in eine neue Datei mit dem Namen wlan-aio.py. In Zeile 37 steht der Name des feeds. In unserem Falle test. Vergiss nicht, die Datei in der code.py zu importieren.

1import time
2import board
3import busio
4from digitalio import DigitalInOut
5import neopixel
6from adafruit_esp32spi import adafruit_esp32spi
7from adafruit_esp32spi import adafruit_esp32spi_wifimanager
8
9print("ESP32 SPI webclient test")
10
11# Get wifi details and more from a secrets.py file
12try:
13    from secrets import secrets
14except ImportError:
15    print("WiFi secrets are kept in secrets.py, please add them there!")
16    raise
17
18esp32_cs = DigitalInOut(board.D13)
19esp32_ready = DigitalInOut(board.D11)
20esp32_reset = DigitalInOut(board.D12)
21
22spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
23esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
24
25status_light = neopixel.NeoPixel(
26    board.NEOPIXEL, 1, brightness=0.2
27)
28
29wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(esp, secrets, status_light)
30
31counter = 0
32
33while True:
34    try:
35        print("Posting data...", end="")
36        data = counter
37        feed = "test"
38        payload = {"value": data}
39        response = wifi.post(
40            "https://io.adafruit.com/api/v2/"
41            + secrets["aio_username"]
42            + "/feeds/"
43            + feed
44            + "/data",
45            json=payload,
46            headers={"X-AIO-KEY": secrets["aio_key"]},
47        )
48        print(response.json())
49        response.close()
50        counter = counter + 1
51        print("OK")
52    except OSError as e:
53        print("Failed to get data, retrying\n", e)
54        wifi.reset()
55        continue
56    response = None
57    time.sleep(15)

Wenn alles klappt, dann solltest du in deinem feed erkennen, dass ein Zahl, die ständig erhöht wird ankommt. Diese Zahl hat den langen und beschwerlichen Weg durch dein WLAN, anschließend durch das Internet zum Adafruit-Server in Amerika und von dort zurück über den Großen Teich in dein Browserfenster zurückgelegt. Ist das nicht großartig.

Bild

Was passiert eigentlich, wenn du das Programm neu startest? Und warum sollte es bei einer langweilige Zahl, die nur hochgezählt wird, bleiben? Versuche mal einen Sensorwert in einen neuen Feed zu übertragen! Wir wäre es mit der Raumtemperatur.


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?