# mihome_energy_monitor.py 28/05/2016 D.J.Whale # # A simple demo of monitoring and logging energy usage of mihome devices # # Logs all messages to screen and to a file energenie.csv # Any device that has a switch, it toggles it every 2 seconds. # Any device that offers a power reading, it displays it. import energenie import Logger import time APP_DELAY = 2 switch_state = False def energy_monitor_loop(): global switch_state # Process any received messages from the real radio energenie.loop() # For all devices in the registry, if they have a switch, toggle it for d in energenie.registry.devices(): if d.has_switch(): d.set_switch(switch_state) switch_state = not switch_state # For all devices in the registry, if they have a get_power(), call it print("Checking device status") for d in energenie.registry.devices(): print(d) try: p = d.get_power() print("Power: %s" % str(p)) except: pass # Ignore it if can't provide a power time.sleep(APP_DELAY) if __name__ == "__main__": print("Starting energy monitor example") energenie.init() # provide a default incoming message handler, useful for logging every message def incoming(address, message): print("\nIncoming from %s" % str(address)) Logger.logMessage(message) energenie.fsk_router.when_incoming(incoming) print("Logging to file:%s" % Logger.LOG_FILENAME) try: while True: energy_monitor_loop() finally: energenie.finished() # END