Example #1
0
def get_target_from_index(device_index):
    """Return target (If available) based on index from list of devices"""
    devices = sispm.connect()
    try:
        return devices[int(device_index) - 1]
    except IndexError:
        return None
Example #2
0
def get_target_from_id(device_id):
    """Return target (If available) based on ID from list of devices"""
    devices = sispm.connect()
    for device in devices:
        if sispm.getid(device) == device_id:
            return device
    return None
Example #3
0
 def __init__(self, device_room):
     super().__init__()
     os.chdir('/home/roomuser/Roomware/roomware')
     config = ConfigParser()
     config.read('config.ini')
     self.devices = sispm.connect()
     self.device_room = device_room
     self.device_id = config.get('powerstrip', 'device_id')
     self.powerstrip_length = config.getint('powerstrip',
                                            'powerstrip_length')
     self.first_socket = config.getint('powerstrip', 'first_socket')
     self.powerstrips_rooms = {}
     if len(self.devices) > 1:
         self.powerstrips_rooms = {
             "1": self.devices[0],
             "2": self.devices[1]
         }
Example #4
0
def get_device_status(device_id=None, port=None):
    """Return dictionary of all device ports and status of each"""

    if device_id is not None:

        if len(device_id) == 1:
            target = get_target_from_index(device_id)
            if target is None:
                return jsonify(
                    {"error": f"Index {device_id} not found in devices list"})

        else:
            target = get_target_from_id(device_id)
            if target is None:
                return jsonify(
                    {"error": f"Device with ID {device_id} not found"})

        if port is None:
            retval = {"status": {}}
            for socket in range(sispm.getminport(target),
                                sispm.getmaxport(target) + 1):
                retval["status"][socket] = sispm.getstatus(target, socket)

        elif validate_port(target, port):
            retval = {"status": sispm.getstatus(target, port)}

        else:
            return jsonify({
                "error":
                "{} is out of range for device ({} - {})".format(
                    port, sispm.getminport(target), sispm.getmaxport(target))
            })

    else:
        retval = {"status": {}}
        for device in sispm.connect():
            device_id = sispm.getid(device)

            retval["status"][device_id] = {}

            for socket in range(sispm.getminport(device),
                                sispm.getmaxport(device) + 1):
                retval["status"][device_id][socket] = sispm.getstatus(
                    device, socket)

    return jsonify(retval)
Example #5
0
    while True:
        c = ser.read(1)
        if (len(c) == 0):
            break
        if (c[0] == 0x0d):
            print(line)
            line = ''
        elif (c[0] >= 32 and c[0] < 128):
            line += chr(c[0])
            if (test and line.find(test) != -1):
                break
    print(line)


# Find Enermax devices.
devices = sispm.connect()

# Were they found?
if len(devices) == 0:
    print('No device found')
    quit()

# Find the device with the correct id
dev = None
for d in devices:
    if sispm.getid(d) == id:
        dev = d
        break

if dev is None:
    print('Device ' + id + ' not found')
Example #6
0
def main():
    # Find our devices.
    devices = sispm.connect()

    # Were they found?
    if len(devices) == 0:
        print("No device found")
        sys.exit(1)

        # If there is only one device, use it as default.
    if len(devices) == 1:
        dev = devices[0]
    else:
        dev = None

        # Define command line options.
    try:
        opts, args = getopt.getopt(sys.argv[1:], "D:d:f:ho:t:")
    except getopt.GetoptError as err:
        print(str(err))
        usage()
        sys.exit(2)

        # Handle command line.
    for o, a in opts:
        if o == "-D":
            dev = None
            for d in devices:
                if sispm.getid(d) == a:
                    dev = d
                    break
            if dev == None:
                print("device with id {} not found".format(a))
                break
        elif o == "-d":
            d = int(a)
            if d < 0 or d >= len(devices):
                print("unknown device {}".format(d))
                break
            dev = devices[d]
        elif o == "-f":
            p = int(a)
            if not checkport(dev, p):
                break
            sispm.switchoff(dev, p)
        elif o == "-h":
            usage()
            print()
        elif o == "-o":
            p = int(a)
            if not checkport(dev, p):
                break
            sispm.switchon(dev, p)
        elif o == "-t":
            p = int(a)
            if not checkport(dev, p):
                break
            if sispm.getstatus(dev, p) == 0:
                sispm.switchon(dev, p)
            else:
                sispm.switchoff(dev, p)
        else:
            break

            # Always output the device status.
    status(devices)

    # Workaround for bug in old version of usb library.
    devices = None
Example #7
0
    while True:
        c = ser.read(1)
        if len(c) == 0:
            break
        if c[0] == 0x0D:
            print(line)
            line = ""
        elif c[0] >= 32 and c[0] < 128:
            line += chr(c[0])
            if test and line.find(test) != -1:
                break
    print(line)


# Find Enermax devices.
devices = sispm.connect()

# Were they found?
if len(devices) == 0:
    print("No device found")
    quit()

# Find the device with the correct id
dev = None
for d in devices:
    if sispm.getid(d) == id:
        dev = d
        break

if dev is None:
    print("Device " + id + " not found")
Example #8
0
def get_devices():
    """Return list of connected devices"""
    devices = sispm.connect()
    return jsonify({"devices": [sispm.getid(d) for d in devices]})