some update

This commit is contained in:
Mobkom21 2026-05-10 23:01:08 +02:00
parent cbd4870b0c
commit e7ba61585b
2 changed files with 104 additions and 6 deletions

View File

@ -1,21 +1,113 @@
import time
import json
import paho.mqtt.client as mqtt
from gps_hat import GPS_DATA
from sens_hat import SENS_HAT
def update_hat_data():
if gps.get_gps_info():
# print(gps)
client.publish("MOBKOM/GPS/N", gps.breitengrad)
client.publish("MOBKOM/GPS/E", gps.laengengrad)
client.publish("MOBKOM/GPS/hoehe", gps.hoehe)
client.publish("MOBKOM/GPS/geschwindigkeit", gps.geschwindigkeit_km_h)
sens.get_sensor_data()
client.publish("MOBKOM/SENS/temp", sens.temp)
client.publish("MOBKOM/SENS/humidity", sens.humidity)
client.publish("MOBKOM/SENS/pressure", sens.pressure)
client.publish("MOBKOM/IMU/pitch", sens.pitch)
client.publish("MOBKOM/IMU/roll", sens.roll)
client.publish("MOBKOM/IMU/yaw", sens.yaw)
client.publish("MOBKOM/IMU/x", sens.x)
client.publish("MOBKOM/IMU/y", sens.y)
client.publish("MOBKOM/IMU/z", sens.z)
# print(sens.temp)
def encode_led_set_payload(payload):
try:
data = json.loads(payload)
x = int(data["pos"][0])
y = int(data["pos"][1])
r = int(data["rgb"][0])
b = int(data["rgb"][1])
g = int(data["rgb"][2])
print(data)
sens.led_set_pixel(x, y, r, g, b)
except json.JSONDecodeError:
print("Ungültiges JSON formatt:\n" + payload)
except KeyError:
print("Ungültige Keys:\n" + payload)
except ValueError:
print("Werte müssen int sein:\n" + payload)
def encode_led_get_payload(payload):
try:
data = json.loads(payload)
x = int(data["pos"][0])
y = int(data["pos"][1])
print(data)
# sens.led_set_pixel(x, y)
except json.JSONDecodeError:
print("Ungültiges JSON formatt:\n" + payload)
except KeyError:
print("Ungültige Keys:\n" + payload)
except ValueError:
print("Werte müssen int sein:\n" + payload)
def on_message(client, userdata, message):
payload = message.payload.decode("utf-8").lower()
topic = message.topic
match topic:
case "MOBKOM/LED/clear":
print("clear LEDs")
sens.led_clear()
case "MOBKOM/LED/set_pixel":
encode_led_set_payload(payload)
case "MOBKOM/LED/get_pixel":
encode_led_get_payload(payload)
case _:
print(f"Eingehend auf {topic}: {payload}")
def on_connect(client, userdata, flags, rc):
if rc == 0:
print(f"Connected")
else:
print("Failed to connect, return code %d\n", rc)
exit(2)
client.subscribe("MOBKOM/test")
client.subscribe("MOBKOM/LED/set_pixel")
client.subscribe("MOBKOM/LED/get_pixel")
client.subscribe("MOBKOM/LED/clear")
client.on_message = on_message
if __name__ == "__main__":
# gps = GPS_DATA("/dev/ttyUSB0")
gps = GPS_DATA("/dev/serial0")
sens = SENS_HAT()
client = mqtt.Client()
client.connect("localhost", 1883)
client.on_connect = on_connect
update_timer = 0
try:
while True:
if gps.get_gps_info():
print(gps)
print(sens.temp)
time.sleep(2)
if update_timer + 2 < time.time():
update_hat_data()
update_timer = time.time()
client.loop()
time.sleep(0.1)
except KeyboardInterrupt:
gps.ser.close()
client.disconnect()

View File

@ -47,3 +47,9 @@ class SENS_HAT:
return
self.sense.set_pixel(x, y, r, g, b)
def led_get_pixel(self, x, y):
if not (0 <= x <= 7) or not (0 <= y <= 7):
print("x und y müssen zwischen 0 und 7 sein!")
return
return self.led_matrix[x][y]