from time import time from gi.repository import GLib from pydbus import SystemBus detected_signal = False timestamp = time() bus = SystemBus() bus_revpi = bus.get("com.revolutionpi.ios1", "/com/revolutionpi/ios1") interface = bus_revpi["com.revolutionpi.ios1.IoManager"] io_o_1_path = interface.Get("O_1") io_revpiled_path = interface.Get("RevPiLED") io_RevPiLED = bus.get("com.revolutionpi.ios1", io_revpiled_path) io_O_1 = bus.get("com.revolutionpi.ios1", io_o_1_path) def signal_handler(io_name, io_value): global timestamp print(f"Signal received: {io_name} = {io_value}") if io_name == "O_1": timestamp = time() io_RevPiLED.Set("com.revolutionpi.ios1.OutInt", "value", GLib.Variant("i", int(io_value))) elif io_name == "I_1": io_RevPiLED.Set("com.revolutionpi.ios1.OutInt", "value", GLib.Variant("i", int(io_value))) io_O_1.Set("com.revolutionpi.ios1.OutBool", "value", GLib.Variant("b", not io_value)) print(time() - timestamp) # Start event detection interface.ActivateIoEvents() interface.onIoChanged = signal_handler try: loop = GLib.MainLoop() loop.run() except KeyboardInterrupt: pass # Stop event detection interface.DeactivateIoEvents()