mirror of
https://bitbucket.org/myhomie/mycorerepository.git
synced 2025-12-06 01:31:19 +00:00
136 lines
4.5 KiB
Python
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!")
|