Files
board-mate/rpi/main.py
2025-12-27 11:30:29 +01:00

103 lines
2.7 KiB
Python

#!/usr/bin/env python3
import cv2
from hardware.screen.screen import Screen
from hardware.rfid.reader import RfidReader
from services.detection_service import DetectionService
from services.mqtt_service import MQTTService
screen = Screen()
mqtt_service = MQTTService("127.0.0.1", 1883)
detection_service = DetectionService()
def publish(chip_id : int) :
screen.displayMessage(str(chip_id))
mqtt_service.publish("app", "/board-mate/rfid/scan", str(chip_id), 0)
def detect() :
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cap.set(cv2.CAP_PROP_FPS, 30)
print("Initialized")
if not cap.isOpened():
print("Error: Could not open camera")
exit()
while True:
ret, frame = cap.read()
fen = detection_service.get_fen(frame)
print(fen)
if not ret:
print("Error: Failed to grab frame")
break
if __name__ == "__main__":
screen.enableBackground()
screen.displayMessage("Waiting for scan...")
reader = RfidReader("/dev/serial0", 9600)
reader.subscribe(publish)
reader.start()
detect()
while True:
pass
"""
def get_move(prompt, move_queue):
while True:
move = input(prompt)
move_queue.put(move)
if __name__ == "__main__":
config = Configuration(host="http://192.168.15.120:8000")
setRGB(255, 255, 255)
controller = ApiController(config)
white_name = input("White Name: ")
black_name = input("Black Name: ")
time_value = int(input("Time value: "))
increment = int(input("Increment: "))
white_clock = Clock(time_value, increment)
black_clock = Clock(time_value, increment)
print("Creating the party...")
game_id = controller.create_party(white_name, black_name, time_value, increment)
if game_id is None:
print("An error occurred while creating the party. Exiting...")
exit()
print("Party Created!")
currentPlayer = 0
white_clock.start()
move_queue = queue.Queue()
input_thread = threading.Thread(target=get_move, args=("", move_queue), daemon=True)
input_thread.start()
while True:
setText(f"W {white_clock.clock_to_str()}\n B {black_clock.clock_to_str()}")
try:
move = move_queue.get_nowait()
message = "White to play" if currentPlayer == 0 else "Black to play"
controller.add_move(game_id, move)
if currentPlayer == 0:
currentPlayer = 1
white_clock.start()
black_clock.stop()
else:
currentPlayer = 0
black_clock.start()
white_clock.stop()
except queue.Empty:
pass
time.sleep(1)"""