websocket
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung | |||
websocket [2022/02/10 10:00] – varnholt | websocket [2022/02/21 19:56] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
Baue ich doch eine Verbindung zwischen den beiden auf, und hole mir die Daten vom Handy. | Baue ich doch eine Verbindung zwischen den beiden auf, und hole mir die Daten vom Handy. | ||
+ | |||
+ | === Erster Versuch - Websocket Clients === | ||
+ | |||
+ | Mit dieser Seite https:// | ||
+ | |||
+ | Auf dieser Seite https:// | ||
+ | |||
+ | Jetzt muss ich mir nur überlegen, wer de Server und der Client werden soll... | ||
+ | |||
+ | === Nächster Versuch - Websocket Server === | ||
+ | |||
+ | Mein Problem war, dass ich vom macOS nicht an den Emulierten Server dran gekommen bin. Bin fast verzweifelt. Habe diverse Server ausprobiert, | ||
+ | adb forward tcp:9000 tcp:6000 | ||
+ | Im Python client example script von hier: https:// | ||
+ | pip3 install websocket-client | ||
+ | und dem eingetragenen URL: | ||
+ | " | ||
+ | war ich erfolgreich. Ok, dann kanne s in den nächsten Tagen weiter gehen. | ||
+ | < | ||
+ | import websocket | ||
+ | if __name__ == " | ||
+ | websocket.enableTrace(True) | ||
+ | ws = websocket.create_connection(" | ||
+ | ws.recv() | ||
+ | print(" | ||
+ | ws.send(" | ||
+ | print(" | ||
+ | print(" | ||
+ | result = ws.recv() | ||
+ | print(" | ||
+ | ws.close() | ||
+ | </ | ||
+ | oder | ||
+ | < | ||
+ | import asyncio | ||
+ | import websockets | ||
+ | |||
+ | async def test(): | ||
+ | |||
+ | async with websockets.connect(' | ||
+ | |||
+ | await websocket.send(" | ||
+ | |||
+ | response = await websocket.recv() | ||
+ | print(response) | ||
+ | |||
+ | asyncio.get_event_loop().run_until_complete(test()) | ||
+ | </ | ||
+ | |||
+ | === GPS Wifi und Server-Websocket === | ||
+ | |||
+ | Ich habe eine Hauptaktivität und Location sowie Wifi als eigene Klassen. Von der Hauptaktivität rufe ich alles auf. Problem ist, dass das ja immer seine Zeit braucht, bis die Daten gesammelt sind. Da muss ich noch googlen. AKtuell schreibt die eine Klasse direkt in ein Feld und die andere setzt ein Flag, das ich abfrage um neue Daten zu holen. | ||
+ | |||
+ | GPS Abfragen im Hintergrund brauchen eine eigene Berechtigung! | ||
+ | |||
+ | WiFi-Scan im Hintergrund geht nur alle zwei Minuten, was inakzeptabel ist. Alternativ werde ich einen ForgroundService bauen, in den das reinkommt. Im Vordergund kann mal 4 Abfragen in 2 Minuten machen. Das passt. | ||
+ | |||
+ | Der Server läuft und wenn die App im Vordergrund ist, werden auch Daten übermittelt. Jetzt kann ich mir überlegen, ob als nächstes die Anbindung an den Raspberry oder die verschönerung der App dran ist. | ||
+ | |||
+ | |||
+ | === Links und Infos === | ||
+ | |||
+ | https:// | ||
+ | |||
+ | app am handy, um raspberryZero zu steuern | ||
https:// | https:// | ||
https:// | https:// | ||
+ | |||
+ | Zwei wifi, einer als ap, der andere zum internet: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | === Zeroconf === | ||
+ | |||
+ | Mein Android WebsocketServer funktioniert jetzt. Bei XIAOMI Redmi gibt es eine Energiesparmodus, | ||
+ | |||
+ | Dann noch länger mit jmdns-discovery rumprobiert, | ||
+ | |||
+ | pip3 install zeroconf | ||
+ | < | ||
+ | from zeroconf import ServiceBrowser, | ||
+ | |||
+ | |||
+ | class MyListener: | ||
+ | |||
+ | def remove_service(self, | ||
+ | print(" | ||
+ | |||
+ | def add_service(self, | ||
+ | info = zeroconf.get_service_info(type, | ||
+ | print(" | ||
+ | |||
+ | |||
+ | zeroconf = Zeroconf() | ||
+ | listener = MyListener() | ||
+ | browser = ServiceBrowser(zeroconf, | ||
+ | try: | ||
+ | input(" | ||
+ | finally: | ||
+ | zeroconf.close() | ||
+ | </ | ||
+ | |||
Stand Februar 2022 | Stand Februar 2022 |
websocket.1644487209.txt.gz · Zuletzt geändert: 2022/02/10 10:00 von varnholt