Sie brauchen einen Node-RED Server, der im Internet erreichbar ist.
Falls Sie diesen noch nicht aufgesetzt haben, können Sie zum Node-Red Teil wechseln und dort einen Server aufsetzen.
Hier merken wir die Limitationen vom eingesetzten ESP8266: Er ist im allgemeinen nicht schnell genug, um die Zertifikate von sicheren HTTPS Webseiten zu verifizieren. Aus diesem Grund verwenden wir nur HTTP-Verbindungen.
Doch Node-RED ist ausschliesslich ĂŒber HTTPS erreichbar. Wie funktioniert dies nun?
Proxy-Serverâ
Der Proxy Server ist ein Vermittler oder Stellvertreter und nimmt Anfragen entgegen, die er unter seiner eigenen IdentitĂ€t weiterleitet. Kommt eine Verbindung zwischen einem Client und einem Server zustande, bleiben die Adressen von Client und Server den Kommunikationspartnern jeweils verborgen. Im Gegensatz zur Network Address Translation (NAT) werden Adressen nicht nur einfach ausgetauscht, sondern der Proxy Server fĂŒhrt die Kommunikation selbst. 1
Wir verwenden also einen Proxy-Server, welcher ĂŒber HTTP erreichbar ist und die Anfrage dann per HTTPS an den Node-RED Server weiterleitet. Die Antwort wird dann wiederum per HTTP an den ESP8266 zurĂŒckgeschickt.
Der Proxy-Server ist auf dem Informatik-Server der Schule gehostet und ist unter der Adresse http://proxy.gbsl.website erreichbar. Damit nun der Proxy-Server weiss, wohin die eigentliche Anfrage gehen soll, wird die URL wie folgt verÀndert:
Ziel-Adresse: https://node-red-XY7Z.onrender.com/api/joke
\________________________/\_______/
| |
URI path
Proxy-URL: http://<URI>.proxy.gbsl.website/<path>
\___/ \____/
| |
Subsubdomain path
Proxy-Adresse: http://node-red-XY7Z.onrender.com.proxy.gbsl.website/api/joke
ESP8266â
Im Terminal des ESP8266 können wir nun Daten direkt an den Node-RED Server senden. Anstatt mit Postman schicken wir nun also die Daten direkt vom ESP8266 an den Server.
Dazu mĂŒssen wir
-
eine Verbindung zu einem Netzwerk herstellen (
network
) -
Daten abschicken und auf Antwort warten (
urequests
) -
offene Verbindungen schliessen
import network
# WLAN als Empfangsstation initialisieren
wlan = network.WLAN(network.STA_IF)
# WLAN aktivieren
wlan.active(True)
# verbinden mit dem Netzwerk
wlan.connect('SSID', 'PASSWORD')
# ist das Netzwerk verbunden?
wlan.isconnected()
# HTTP-Request erstellen
import urequests
# Datenpaket erstellen
data = {'value': 42}
# Datenpaket abschicken
res = urequests.post('http://node-red-xyzq.onrender.com.proxy.gbsl.website/api/sensor', json=data)
# Antwort ausgeben
res.content
# Verbindung schliessen
res.close()
Material
Laden Sie das Beispiel-Projekt herunter und untersuchen Sie dieses genauer.
Passen Sie dieses so an, dass die Daten an Ihren eigenen Node-RED Server geschickt werden. ()
3. Netzwerk