# leftSensor and broker file #Preliminary code for an outer pi, definitely not finished just an idea import time import board import os import threading from gpiozero import MotionSensor from gpiozero import Servo from paho.mqtt import client as mqtt from paho.mqtt import publish from paho.mqtt import subscribe IRSensor = MotionSensor(4) servo = Servo(16) ThermalCamOff = 1 #temp variable at the moment stopLSensorReading = False broker = '192.168.1.15' port = 1883 topic = "peripheralSensor/leftSensor" clientID = "leftPumpkin" subscription = ("servoPosition", 2) def subscribe(client, subscription): r = client.subscribe(subscription) if r[0] == 0: print(f"Successfully subscribed to {subscription}") else: print(f"Failed to subscribe to {subscription}") def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc==0: print("connected to MQTT Broker!") else: print("failed to connect") client = mqtt.Client(clientID) client.on_connect = on_connect client.on_message = on_message client.connect(broker, port) subscribe(client, subscription) return client def publish(client, msg): print("in publish") result = client.publish(topic, msg) status = result[0] if status == 0: print(f"sent `{msg}` to topic `{topic}`") else: print(f"failed to send message to topic {topic}") time.sleep(5) def on_message(client, userdata, message): print("in response to subscription") global stopLSensorReading if (message.payload == "0enmasse"): stopLSensorReading = True servo.value = 0 print("0enmasse") time.sleep(60) stopLSensorReading = False LSensor() else: servo.value = message.payload print(f'{message.payload}') def LSensor(client): print("in LSensor") global stopLSensorReading while(True): print("loop") if stopLSensorReading: break IRSensor.wait_for_motion() print('seen') publish(client, 1) def run(): leftSensorThread = threading.Thread(target = LSensor) client = connect_mqtt() client.loop_start() LSensor(client) if __name__ == '__main__': run()