Anvil: Python-Framework unterstützt Raspberry Pi Pico W

Python-Entwickler nutzen Anvil seit längerer Zeit zur Realisierung von Webapplikationen, die beispielsweise Benutzereingaben über HTTP-Formulare einsammeln. Seit einigen Tagen unterstützt das Framework die Nutzung des Raspberry Pi Pico W als “Endstelle”.

Worum geht es hier?

Wer eine Web-Applikation komplett von Hand zusammenbaut, muss verschiedenste Technologien beherrschen. Frameworks erleichtern die Arbeit insofern, als man – in den meisten Fällen – für die gesamte Lösung auf nur eine Sprache setzen kann. Mit dem unter https://anvil.works/ bereitstehenden Anvil steht eine Programmierumgebung zur Verfügung, die sich an Python-Entwickler wendet.

Wie erfolgt die Einbindung des Raspberry Pi Pico?

Wer den Raspberry Pi Pico in einen Anvil-Verbund einbinden möchte, muss die Programmierung des Prozessrechners unter Nutzung einer um TLS-Unterstützung erweiterten MicroPython-Runtime vornehmen. Für die eigentliche Kommunikation setzt das System dann auf einen WebSocket-Tunnel, der – siehe die beiden Abbildungen – bidirektional aufgebaut ist. Weitere Informationen zu den verwendeten Absicherungsmethoden finden sich übrigens unter https://anvil.works/pico/how-it-works.

(Bildquelle: Anvil)

Wie sieht die API aus?

Die eigentliche Programmierung erfolgt dabei so, wie man es als Python-Entwickler erwartet: in der Dokumentation erwähnt das Anvil-Team an mehreren Stellen, dass die hauseigenen APIs pythonisch korrekt aufgebaut sind.
Für vom Pico aufrufbare Methoden ist dabei die Annotation server.callable erforderlich, die Sie nach folgendem Schema vor dem Funktionskorpus platzieren:

1@anvil.server.callable
2def display_message(msg):
3 morse = “”.join([MORSE_DICT[m] for m in msg])
4 anvil.server.call(morse_message, morse)

Der Server ist zum Aufrufen von Methoden befähigt, die im Pico-Teil der Python-Applikation residieren. Auch hierzu ist nur ein Attribut erforderlich:

1@anvil.pico.callable_async()
2async def morse_message(msg):
3 print(f“{await anvil.pico.get_user_email()} has requested the message: ‘{msg}'”)
4 for m in msg:
5 if m == “.”:
6 await blink(100)
7 . . .

Möchten Sie die Verarbeitung aus irgendeinem Grund synchron erledigen, so ist auch dies kein Problem:

1@anvil.pico.callable
2async def blink_led():
3 for i in range(20):
4 led.toggle()
5 await a.sleep_ms(50)

Eine Komplettbesprechung würde den Rahmen dieser Newsmeldung sprengen – unter https://anvil.works/pico/morse-code findet sich allerdings ein komplett durchimplementiertes Beispiel.

Was kostet es?

Normalerweise bezieht man Anvil als PaaS-Dienst: wer mit dem kostenlosen Basisabonnement nicht auskommt und/oder kommerzielle Nutzung plant, ist mit 15 bis 50 US-Dollar pro Monat dabei.

(Bildquelle: Anvil)

Interessant ist, dass sich Personen mit Rechenkapazität auch den unter https://github.com/anvil-works/anvil-runtime bereitstehenden Server “selbst” hosten können. Die Entwicklung der Applikation erfolgt dabei (normalerweise) in der Cloud, die Ausführung ist dann von den Anvil-Servern unabhängig.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More