hackaton-2025/serveur.py
2025-03-06 12:19:35 +01:00

72 lines
1.7 KiB
Python

import socket
import ollama
import serial
import time
import threading
ip = '127.0.0.1'
port = 5000
usbPort = '/dev/ttyACM0'
baud_rate = 9600
stopFlag = False
instruction = "Ne fait pas de long paragraphe répond simplement"
def send_message(client_socket, message):
client_socket.send(message.encode())
def connect_arduino():
count = 0
ser = serial.Serial(usbPort, baud_rate)
while not ser.isOpen():
if (count == 5):
count = 0
print("Serial port still trying to open...")
time.sleep(1)
count += 1
return (ser)
def arduino_thread(thread_name, ser):
global stopFlag
while not stopFlag:
if ser.in_waiting > 0:
data = ser.readline().decode('utf-8').strip()
print("Arduino data:", data)
def start_server():
global stopFlag
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((ip, port))
server_socket.listen(1)
print("Server ready!")
ser = connect_arduino()
client_socket, client_address = server_socket.accept()
thread1 = threading.Thread(target=arduino_thread, args=("Thread1", ser))
thread1.start()
while (1):
message = client_socket.recv(1024).decode()
if (message == "exit"):
send_message(client_socket, "exit")
break
message = message + instruction
response = ollama.chat(model='mistral', messages=[
{
'role': 'user',
'content': message,
},
])
send_message(client_socket, response['message']['content'])
stopFlag = True
print("closed server.")
thread1.join()
client_socket.close()
start_server()