ich möchte mit einem Raspberry Pi Pico W eine Art Webserver erstellen, auf dem ne primitive HTML-Seite angezeigt wird. Diese Seite aktualisiert nach einer gewissen Zeit immer mal wieder die Werte (Temperatur / Luftfeuchtigkeit)
Ich habe mir da einige Codeschnipsel von Google geklaut und versucht diese für mein Vorhaben zu "optimieren".
Die HTML-Seite im Code wird angezeigt, wenn ich diese öffne.
Lasse ich das Programm laufen, wird eine Verbindung 192.168.2.XXX hergestellt, sobald ich die IP in die Adresszeile des Browsers eingebe, laufen mehrere gleiche IP Adressen mit verschiedenen Anschlüssen durch und letzendlich wird disconnected, ohne das ein Fehler angezeigt wird.
Die HTML-Seite wird auch nicht angezeigt. KAnn sich jemand den kopierten Code mal anschauen und mir nen Tip geben, waran das liegt.
Code: Alles auswählen
# Bibliotheken laden
import rp2
import network
import socket
from machine import Pin
from utime import sleep
from dht import DHT22
# Initialisierung GPIO und DHT22
dht22_sensor = DHT22(Pin(15, Pin.IN, Pin.PULL_UP))
rp2.country('DE')
ssid = 'xxxxx'
password = 'xxxxxxxx'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head><title>Pi Pico W - BME280 Sensordaten</title><style>h1{text-align:center;font-size:28px;}fieldset{width:340px;margin:0 auto;}label {width:190px;display:inline-block;}input[type=text]{width:120px;}input[type=text], label{font-size:20px;}legend{font-size:26px;}</style></head><body><h1>Raspberry Pi Pico W - Sensordaten vom BME280</h1><fieldset><legend>Sensordaten</legend><label for="temperaturText">Temperatur: </label><input type="text" value="%s °C" id="temperaturText" disabled=disabled/><br/><label for="luftfeuchtigkeitText">rel. Luftfeuchtigkeit: </label><input type="text" value="%s %" id="luftfeuchtigkeitText" disabled=disabled/></body></html>'
print('waiting for connection...')
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('.', end='')
sleep(1)
print('')
if wlan.status() != 3:
raise RuntimeError('network connection failed')
else:
print('connected')
status = wlan.ifconfig()
print('ip = ' + status[0])
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('listening on', addr)
while True:
try:
cl, addr = s.accept()
print('client connected from', addr)
dht22_sensor.measure()
temperatur = dht22_sensor.temperature()
luftfeuchtigkeit = dht22_sensor.humidity()
website = html % (temperatur, luftfeuchtigkeit )
cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
cl.send(website)
cl.close()
except OSError as e:
cl.close()
print('connection closed')