Page 1 of 1

Detecting sensors attached to VINT hub

Posted: Wed Sep 27, 2023 5:44 pm
by sinman
How can we detect the port and type of sensor and attached to a VINT hub?

We have a TON of devices with sensors attached to VINT hubs. And we have to manually write down which sensor is attached to which port on the hub to do the configuration.

What I want to do is connect to the vint hub, and have it tell me "port 1 is SND_1000, port 2 is PHIDID_1040, port 3 is PHIDID_1008"

edit: Right now it's only telling me it's a "Voltage Ratio" or "digital output", but not the actual device that's plugged in (there's a TON of "voltage ratio" sensors)

Re: Detecting sensors attached to VINT hub

Posted: Thu Sep 28, 2023 10:37 am
by Patrick
Are you using analog sensors or VINT devices? You can use the Phidget manager to enumerate all channels, and get device properties per channel. A VINT Hub will list all of the hubs port modes as well as any attached VINT devices. If you use analog sensors, there isn't any way to read out the sensor type.

-Patrick

Re: Detecting sensors attached to VINT hub

Posted: Thu Sep 28, 2023 1:52 pm
by sinman
ok, I think I found it. there was a lot of duplicates in the attach_handler, so I missed that the getDeviceID() would actually get the real deviceID of the attached sensor, and not just the vint hub.

For anyone else coming across this problem, here's the code that discovers everything attached and removes duplicates.

Code: Select all

import json
import time

from beryl_libs.Phidget22.Devices.Manager import Manager
from beryl_libs.Phidget22.DeviceClass import *

sensors = []

def AttachHandler(self, channel):
    sensor = {}
    sensor["DeviceSerialNumber"] = channel.getDeviceSerialNumber()
    sensor["DeviceID"] = hex(channel.getDeviceID())

    json_str = json.dumps(sensor, ensure_ascii=True)

    match = any(json.dumps(s, ensure_ascii=True) == json_str for s in sensors)
    if match == False:
        sensors.append(sensor)


manager = Manager()

manager.setOnAttachHandler(AttachHandler)
manager.open()

time.sleep(5)

manager.close()

print(json.dumps(sensors))
the "DeviceID" in the result corresponds to the Phidget22.DeviceID table (https://www.phidgets.com/?prodid=972#Tab_API, from the Phidget API)