diff --git a/sensors/co2_sensor.py b/sensors/co2_sensor.py index a306064..8009967 100644 --- a/sensors/co2_sensor.py +++ b/sensors/co2_sensor.py @@ -37,6 +37,9 @@ def generate_co2_reading(self): value = self.read_value() return self.generate_reading(value, "ppm") + def get_reading(self): + return self.generate_co2_reading() + # ------------------------ # Manual Test diff --git a/sensors/noise_sensor.py b/sensors/noise_sensor.py index c8eb628..fb24c03 100644 --- a/sensors/noise_sensor.py +++ b/sensors/noise_sensor.py @@ -37,6 +37,9 @@ def generate_noise_reading(self): value = self.read_value() return self.generate_reading(value, "dB") + def get_reading(self): + return self.generate_noise_reading() + # ------------------------ # Manual Test diff --git a/sensors/occupancy_sensor.py b/sensors/occupancy_sensor.py index 4fa6650..8e30f85 100644 --- a/sensors/occupancy_sensor.py +++ b/sensors/occupancy_sensor.py @@ -39,6 +39,9 @@ def generate_occupancy_reading(self): """ value = self.read_value() return self.generate_reading(value, "people") + + def get_reading(self): + return self.generate_occupancy_reading() # ------------------------ diff --git a/sensors/run_sensors.py b/sensors/run_sensors.py new file mode 100644 index 0000000..9e076e4 --- /dev/null +++ b/sensors/run_sensors.py @@ -0,0 +1,55 @@ +import json +import time + +from sensors.temperature_sensor import TemperatureSensor +from sensors.co2_sensor import CO2Sensor +from sensors.noise_sensor import NoiseSensor +from sensors.occupancy_sensor import OccupancySensor + + +def load_config(): + with open("config.json") as f: + return json.load(f) + + +def create_sensors(rooms): + sensors = [] + + for room in rooms: + sensors.append(TemperatureSensor(room)) + sensors.append(CO2Sensor(room)) + sensors.append(NoiseSensor(room)) + sensors.append(OccupancySensor(room, capacity=40)) # adjust if needed + + return sensors + + +def get_topic(sensor, config): + room = sensor.room_id.lower() # match config keys (room101) + sensor_type = sensor.sensor_type + + return config["topics"][room][sensor_type] + + +def main(): + config = load_config() + + rooms = list(config["topics"].keys()) + + sensors = create_sensors(rooms) + + print("Starting multi-room simulation...\n") + + while True: + for sensor in sensors: + reading = sensor.get_reading() + topic = get_topic(sensor, config) + + print(f"Topic: {topic} | Message: {reading}") + + print("-" * 50) + time.sleep(2) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sensors/temperature_sensor.py b/sensors/temperature_sensor.py index 56bbb28..a56cc9e 100644 --- a/sensors/temperature_sensor.py +++ b/sensors/temperature_sensor.py @@ -37,6 +37,9 @@ def generate_temperature_reading(self): value = self.read_value() return self.generate_reading(value, "C") + def get_reading(self): + return self.generate_temperature_reading() + # ------------------------ # Manual Test