from meross_iot.manager import MerossManager from meross_iot.meross_event import MerossEventType from meross_iot.cloud.devices.light_bulbs import GenericBulb from meross_iot.cloud.devices.power_plugs import GenericPlug from meross_iot.cloud.devices.door_openers import GenericGarageDoorOpener import time import os EMAIL = "thomas.fransolet@hotmail.be" PASSWORD = "Coconuts07" def event_handler(eventobj): if eventobj.event_type == MerossEventType.DEVICE_ONLINE_STATUS: print("Device online status changed: %s went %s" % (eventobj.device.name, eventobj.status)) pass elif eventobj.event_type == MerossEventType.DEVICE_SWITCH_STATUS: print("Switch state changed: Device %s (channel %d) went %s" % (eventobj.device.name, eventobj.channel_id, eventobj.switch_state)) else: print("Unknown event!") if __name__=='__main__': # Initiates the Meross Cloud Manager. This is in charge of handling the communication with the remote endpoint manager = MerossManager(meross_email=EMAIL, meross_password=PASSWORD) # Register event handlers for the manager... manager.register_event_handler(event_handler) # Starts the manager manager.start() # You can retrieve the device you are looking for in various ways: # By kind bulbs = manager.get_devices_by_kind(GenericBulb) plugs = manager.get_devices_by_kind(GenericPlug) door_openers = manager.get_devices_by_kind(GenericGarageDoorOpener) all_devices = manager.get_supported_devices() # Print some basic specs about the discovered devices print("All the bulbs I found:") for b in bulbs: print(b) print("All the plugs I found:") for p in plugs: print(p) print("All the garage openers I found:") for g in door_openers: print(g) print("All the supported devices I found:") for d in all_devices: print(d) # You can also retrieve devices by the UUID/name # a_device = manager.get_device_by_name("My Plug") # a_device = manager.get_device_by_uuid("My Plug") # Or you can retrieve all the device by the HW type # all_mss310 = manager.get_devices_by_type("mss310") # ------------------------------ # Let's play the garage openers. # ------------------------------ for g in door_openers: if not g.online: print("The garage controller %s seems to be offline. Cannot play with that..." % g.name) continue print("Opening door %s..." % g.name) g.open_door() print("Closing door %s..." % g.name) g.close_door() # --------------------- # Let's play with bulbs # --------------------- for b in bulbs: # type: GenericBulb if not b.online: print("The bulb %s seems to be offline. Cannot play with that..." % b.name) continue print("Let's play with bulb %s" % b.name) if not b.supports_light_control(): print("Too bad bulb %s does not support light control %s" % b.name) else: # Let's make it red! b.set_light_color(rgb=(255, 0, 0)) b.turn_on() time.sleep(1) b.turn_off() # --------------------------- # Let's play with smart plugs # --------------------------- for p in plugs: # type: GenericPlug if not p.online: print("The plug %s seems to be offline. Cannot play with that..." % p.name) continue print("Let's play with smart plug %s" % p.name) channels = len(p.get_channels()) print("The plug %s supports %d channels." % (p.name, channels)) for i in range(0, channels): print("Turning on channel %d of %s" % (i, p.name)) p.turn_on_channel(i) time.sleep(1) print("Turning off channel %d of %s" % (i, p.name)) p.turn_off_channel(i) usb_channel = p.get_usb_channel_index() if usb_channel is not None: print("Awesome! This device also supports USB power.") p.enable_usb() time.sleep(1) p.disable_usb() if p.supports_electricity_reading(): print("Awesome! This device also supports power consumption reading.") print("Current consumption is: %s" % str(p.get_electricity())) # At this point, we are all done playing with the library, so we gracefully disconnect and clean resources. print("We are done playing. Cleaning resources...") manager.stop() print("Bye bye!")