fix ai shit!

This commit is contained in:
Mobkom21 2026-05-12 22:10:13 +02:00
parent e8cedc7de1
commit a98d9ecd54
3 changed files with 39 additions and 80 deletions

View File

@ -12,7 +12,7 @@ from gps_hat import GPS_DATA
from sens_hat import SENS_HAT
from selecta_mode import SelectaMode
selecta = None
# selecta = None
def update_hat_data():
if 0:
# if gps.get_gps_info():
@ -166,13 +166,13 @@ if __name__ == "__main__":
sens.led_set_pixel(1, 0, 255, 0, 0)
# if not gps.enter_sim_pin():
# exit(1)
#
# sens.led_set_pixel(2, 0, 255, 0, 0)
#
# if not gps.LTE_hat_start():
# exit(1)
if not gps.enter_sim_pin():
exit(1)
sens.led_set_pixel(2, 0, 255, 0, 0)
if not gps.LTE_hat_start():
exit(1)
sens.led_set_pixel(3, 0, 255, 0, 0)
@ -197,10 +197,19 @@ if __name__ == "__main__":
update_hat_data()
update_timer = time.time()
if selecta is not None:
selecta.update()
run = not sens.detect_long_press()
for event in sens.sense.stick.get_events():
if event.direction == "middle":
run = not sens.detect_long_press(event)
if event.direction == "up":
if event.action == "pressed":
print("start selecta_mode")
selecta.activate()
if event.direction == "down":
if event.action == "pressed":
print("stop selecta_mode")
selecta.deactivate()
time.sleep(0.01)
@ -211,5 +220,5 @@ if __name__ == "__main__":
t.join() # warten bis der thread fertig ist
gps.ser.close()
client.disconnect()
# subprocess.run(["sudo", "shutdown", "-h", "0"])
subprocess.run(["sudo", "shutdown", "-h", "0"])
sys.exit(0)

View File

@ -14,9 +14,6 @@ Usage from main.py:
...
selecta.update()
Controls:
Sense HAT joystick UP -> activate Selecta mode
Sense HAT joystick DOWN -> deactivate Selecta mode
MQTT topics:
MOBKOM/SELECTA/state
@ -124,10 +121,6 @@ class SelectaMode:
self.forward_ready = True
self.forward_neutral_angle = 0.0
self._pending_activate = False
self._pending_deactivate = False
self._install_joystick_callbacks()
# -------------------------
# Setup / subscriptions
# -------------------------
@ -140,38 +133,6 @@ class SelectaMode:
for topic in self.mqtt_topics():
c.subscribe(topic)
def _install_joystick_callbacks(self):
stick = self.sens.stick
# stick = None
#
# # Prefer the SenseHat object inside your wrapper if it exists.
# if hasattr(self.sens, "sense") and hasattr(self.sens.sense, "stick"):
# stick = self.sens.sense.stick
# elif hasattr(self.sens, "stick"):
# stick = self.sens.stick
# else:
# try:
# from sense_hat import SenseHat
# stick = SenseHat().stick
# except Exception as e:
# print("Selecta: joystick callbacks not available:", e)
# return
def on_up(event):
if getattr(event, "action", "pressed") == "pressed":
self._pending_activate = True
def on_down(event):
if getattr(event, "action", "pressed") == "pressed":
self._pending_deactivate = True
try:
stick.direction_up = on_up
stick.direction_down = on_down
print("Selecta: UP aktiviert, DOWN deaktiviert")
except Exception as e:
print("Selecta: could not assign joystick callbacks:", e)
# -------------------------
# Stock persistence
# -------------------------
@ -548,14 +509,6 @@ class SelectaMode:
# Called from main loop
# -------------------------
def update(self):
if self._pending_activate:
self._pending_activate = False
self.activate()
if self._pending_deactivate:
self._pending_deactivate = False
self.deactivate()
if self.active:
self.handle_tilt()
self.render()

View File

@ -71,13 +71,10 @@ class SENS_HAT:
for x, col in enumerate(row):
self.sense.set_pixel(x, y, col[0], col[1], col[2])
def detect_long_press(self):
def detect_long_press(self, event):
"""
Returns True wenn der Taster für 4 Sekunden gedrückt werde.
"""
for event in self.sense.stick.get_events():
if event.direction == "middle":
if event.action == "pressed":
self.time_down = time.time()