Skip to content

[SENSOR] Add multi-location simulation (#27) #33

Merged
merged 1 commit into from
Mar 25, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions sensors/co2_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions sensors/noise_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions sensors/occupancy_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()


# ------------------------
Expand Down
55 changes: 55 additions & 0 deletions sensors/run_sensors.py
Original file line number Diff line number Diff line change
@@ -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()
3 changes: 3 additions & 0 deletions sensors/temperature_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down