Hallo guten Tag, ich habe hier ein Gerät was auf MQTT reagiert. Mein mosquitto Broker läuft auf einem Raspberry. Ich würde gerne über eine Website das Gerät von überall aus Steuern. Da gibt es bestimmt leichte Wege. Aber ich habe noch keinen gefunden.... ... Ich habe schon versucht mit ngrok eine Apache2 Html Seite zu starten und öffentlich zu machen. Diese HTML Seite soll an einen python-Server, der auf dem Port 8000 hört, Daten senden wenn, man auf einen Button klickt. Der Python Server soll dann den Befehl os.system('mosquitto_pub ( ...)') durchführen. Das klappt aber irgendwie nur wenn ich die öffentliche Seite auf meinem PC ausführe. Man sieht dann, dass sich jemand einloggt beim Python Server. Wenn ich die Seite auf meinem Handy ausführe sehe ich keine Aktivität mehr beim Python Server. Somit funktionieren die mosquitto_pub ( ...) Befehle auch nicht. Also wie mache ich es, dass der Python server auch erreicht wird?
1 | const socket = new WebSocket('ws://127.0.0.1:8000'); /// ?????????? |
Hier ist der Server:
1 | import asyncio |
2 | import websockets |
3 | import os |
4 | |
5 | # create handler for each connection
|
6 | |
7 | async def handler(websocket, path): |
8 | |
9 | data = await websocket.recv() |
10 | |
11 | reply = f"Data12312312 recieved as:{data}!" |
12 | os.system('mosquitto_pub -t /test -h xxx.xxx.xxx.xxx -m "1"') |
13 | await websocket.send(reply) |
14 | |
15 | ## handles messages?
|
16 | async def handler(websocket): |
17 | async for message in websocket: |
18 | print(message) |
19 | reply = f" recieved data from browser:!" |
20 | if '1' in message: |
21 | print ('there was a one') |
22 | os.system('mosquitto_pub -t /test -h xxx.xxx.xxx.xxx -m "1"') |
23 | if '2' in message: |
24 | print ('there was a 2') |
25 | os.system('mosquitto_pub -t /test -h xxx.xxx.xxx.xxx -m "2"') |
26 | if '3' in message: |
27 | print ('there was a 3') |
28 | os.system('mosquitto_pub -t /test -h xxx.xxx.xxx.xxx -m "3"') |
29 | if '4' in message: |
30 | print ('there was a 4') |
31 | os.system('mosquitto_pub -t /test -h xxx.xxx.xxx.xxx -m "4"') |
32 | |
33 | start_server = websockets.serve(handler, "localhost", 8000) |
34 | |
35 | asyncio.get_event_loop().run_until_complete(start_server) |
36 | asyncio.get_event_loop().run_forever() |
Danke ...