38. Lektion: Webserver: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Das Webserver Packet phew)
(Das Webserver Packet phew)
Zeile 24: Zeile 24:
 
from phew import server
 
from phew import server
  
# hier werden die auszuliefernden Webseiten definiert.
+
# hier werden die auszuliefernden Webseiten definiert.  Siehe nächste Codebox.
  
 
server.run()
 
server.run()

Version vom 6. Dezember 2023, 21:00 Uhr

Webserver

Wlan einrichten

import network

# Wlan Verbindung herstellen

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
    print('connecting to network...')
    wlan.connect('ssid', 'key')
    while not wlan.isconnected():
        pass
print('network config:', wlan.ifconfig())

Das Webserver Packet phew

Für den Raspberry Pi Pico W gibt es ein Packet, das alles enthält, was zur Einrichtung eines Webservers auf dem Pico erforderlich ist. Es heißt "phew" und ist von Github unter https://github.com/pimoroni/phew zu beziehen. Das Archiv muss entpackt und dann das Unterverzeichnis "phew" ins Filesystem des Pico kopiert werden.
Der Webserver wird einfach gestartet. Es ist keine großartige Konfiguration erforderlich. Allerdings müssen vorher noch die Webseiten und ihre Routen definiert werden.

from phew import server

# hier werden die auszuliefernden Webseiten definiert.   Siehe nächste Codebox.

server.run()

Die Webseiten werden wie Funktionen definiert. Mit einem Decorator wird die Route der Webseite bestimmt.

from phew.template import render_template
from os import stat
HTDOCS = 'htdocs/'          # Hier ist der "/" wichtig, sonst funktioniert es nicht! 

from phew import server

@server.route("/random", methods=["GET"])
def random_number(request):
  import random
  min = int(request.query.get("min", 0))
  max = int(request.query.get("max", 100))
  return str(random.randint(min, max))

@server.route("/info", methods=["GET"])
def info_site(request):
    return "<h1>Infoseite vom Raspberry Pi Pico W</h1>"

@server.route("/test", methods=["GET"])
def test_site(request):
    return render_template(HTDOCS + "html-test_001.html")
#     return render_template("html-test_001.html")
#     return '''
#               <h1>Überschrift</h1>
#               Dieses ist eine kleine HTML-Testseite.
#               <br>
#               Noch ist es nur ein einfacher Test!
#            '''   
#     return render_template("html-test_001.html")


@server.catchall()
def catch_all(request):
    return "<h1>Hallo, diese Webseite gibt es nicht!</h1>", 404
#     return render_template(HTDOCS + index.html)





Lager