IoT Development With Python: Smart Home Control System

IoT Development With Python: Smart Home Control System

Hello everyone, I’m Xiao Juan! Today I want to share a super interesting topic with you all – developing a smart home control system using Python. With the popularization of IoT technology, our home life has become increasingly intelligent. Let’s get started and build a simple smart home control system with Python, experiencing the convenience brought by technology!

1. Overall System Design

First, we need to design a base class for smart devices, which will serve as the parent class for all smart appliances. This will make our code more organized and easier to extend for new device types.

class SmartDevice:
    def __init__(self, device_id, name, room):
        self.device_id = device_id
        self.name = name
        self.room = room
        self.status = False  # Default device is off
    
    def turn_on(self):
        self.status = True
        print(f"{self.name} has been turned on")
    
    def turn_off(self):
        self.status = False
        print(f"{self.name} has been turned off")

2. Smart Light Control

Next, let’s implement the smart light control feature. In addition to the basic on/off functionality, we will also add brightness and color adjustment features.

class SmartLight(SmartDevice):
    def __init__(self, device_id, name, room):
        super().__init__(device_id, name, room)
        self.brightness = 0
        self.color = "white"
    
    def set_brightness(self, level):
        if 0 <= level <= 100:
            self.brightness = level
            print(f"{self.name} brightness has been set to {level}%")
        else:
            print("Brightness range should be between 0-100")
    
    def set_color(self, color):
        self.color = color
        print(f"{self.name} color has been changed to {color}")

3. Smart AC Control

Temperature regulation is an important feature in smart homes, so let’s implement the smart air conditioning control class:

class SmartAC(SmartDevice):
    def __init__(self, device_id, name, room):
        super().__init__(device_id, name, room)
        self.temperature = 26
        self.mode = "cool"
    
    def set_temperature(self, temp):
        if 16 <= temp <= 30:
            self.temperature = temp
            print(f"{self.name} temperature has been set to {temp}℃")
        else:
            print("Temperature setting range should be between 16-30℃")
    
    def set_mode(self, mode):
        modes = ["cool", "heat", "dehumidify", "fan"]
        if mode in modes:
            self.mode = mode
            print(f"{self.name} has switched to {mode} mode")
        else:
            print("Unsupported air conditioning mode")

4. Smart Home Control Center

Finally, we need a control center to manage all devices uniformly:

class SmartHome:
    def __init__(self):
        self.devices = {}
    
    def add_device(self, device):
        self.devices[device.device_id] = device
        print(f"Device {device.name} has been added to the smart home system")
    
    def remove_device(self, device_id):
        if device_id in self.devices:
            device = self.devices.pop(device_id)
            print(f"Device {device.name} has been removed from the system")
    
    def get_devices_by_room(self, room):
        room_devices = [device for device in self.devices.values() if device.room == room]
        return room_devices

# Example usage
if __name__ == "__main__":
    # Create a smart home system
    my_home = SmartHome()
    
    # Add devices
    living_room_light = SmartLight("L001", "Living Room Light", "Living Room")
    bedroom_ac = SmartAC("AC001", "Bedroom AC", "Bedroom")
    
    my_home.add_device(living_room_light)
    my_home.add_device(bedroom_ac)
    
    # Control devices
    living_room_light.turn_on()
    living_room_light.set_brightness(80)
    living_room_light.set_color("warm yellow")
    
    bedroom_ac.turn_on()
    bedroom_ac.set_temperature(24)
    bedroom_ac.set_mode("cool")

Tips

  1. 1. In actual projects, we also need to add error handling mechanisms, such as handling device offline states.

  2. 2. You can use a database to persistently store device states, so that data won’t be lost after restarting the program.

  3. 3. Consider adding scheduling features, such as setting the air conditioner to automatically turn on or off at specific times.

Exercises

  1. 1. Try adding a smart curtain class (SmartCurtain) to implement opening and closing control.

  2. 2. Add a “one-click home” mode to the SmartHome class that can control multiple devices simultaneously.

  3. 3. Implement a simple logging system to record the operational history of devices.

That’s it for today’s Python learning journey! Remember to code along, and feel free to ask me any questions in the comments. Happy learning, and may your Python skills improve day by day!

Leave a Comment