Files
revpi-middleware/data/examples/io_controller.py
Sven Sager e7768d8b2b doc(io): Add IO example program
Signed-off-by: Sven Sager <s.sager@kunbus.com>
2025-05-22 11:09:26 +02:00

47 lines
1.2 KiB
Python

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()