import logging from pythonosc import osc_message_builder from time import sleep class HogNet(): # button state constants buttonDOWN = 1 buttonUP = 0 def __init__(self, servers): self.servers = servers def button_press(self, device, path, delay=0.05): self.send_message(device, path, self.buttonDOWN) sleep(delay) self.send_message(device, path, self.buttonUP) # utility function to send simple messages with one argument def send_message(self, device, path, arg): msg = osc_message_builder.OscMessageBuilder(address=path) msg.add_arg(arg) self.send(device, msg.build()) # send python-osc messages def send(self, device, msg): if device is None: osc = list(self.servers.values())[0] # first configured server else: if (device.nodeType().getText().lower() != 'h'): logging.error("ERROR: Only Hog type devices are supported.") return else: try: osc = self.servers[device.number().value] except KeyError: logging.error("ERROR: Net# " + str(device.number().value) + " not found.") return try: osc.send(msg) except Exception as e: logging.error(e)