2019-06-20 21:44:36 +02:00

136 lines
4.5 KiB
Python

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!")