Reputation: 1437
I'd like to discover as much information about IoT devices on a network as possible. I've seen code to enumerate the devices, find the IP Addresses and MAC Addresses, but what else can I find? In particular, I'd like to know that something is a lamp, and more importantly, what the manufacturer is.
I've been looking through some documentation for IoTivity and AllJoyn as well as the various Zero Configuration protocols. From what I understand, these things are more concerned with the services exposed rather than exactly what the device is.
Do I misunderstand this? Is there some way to map out a local network and know exactly what each device is?
Upvotes: 5
Views: 4614
Reputation: 1671
AllJoyn offers About Announcement service through which you can get what you are looking for:
Upvotes: 2
Reputation: 1416
uPnP is quite common protocol nowadays and implemented in quite a lot of devices (i.e. printers). This is used for some modern IoT projects too. It supports a device description also. See an example:
<?xml version='1.0'?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<pnpx:X_deviceCategory>MediaDevices</pnpx:X_deviceCategory>
<deviceType>urn:schemas-microsoft-com:device:MediaCenterExtenderMFD:1</deviceType>
<friendlyName>Xbox 360 Media Center Extender</friendlyName>
<manufacturer>Microsoft Corporation</manufacturer>
<manufacturerURL>http://www.xbox.com/</manufacturerURL>
<modelDescription>Xbox 360 Media Center Extender</modelDescription>
<modelName>Xbox 360</modelName>
<modelNumber></modelNumber>
<modelURL>http://go.microsoft.com/fwlink/?LinkID=53081</modelURL>
<serialNumber></serialNumber>
<UDN>uuid:10000000-0000-0000-0200-00125A702E78</UDN>
<UPC></UPC>
<iconList>
...
</iconList>
<serviceList>
...
</serviceList>
</device>
</root>
Upvotes: 0
Reputation: 7607
Start by looking into DPWS (Device Profile for Web Services). This is a subset of we service standards (e.g., WSDL or SOAP) that allows minimal interaction with web services running on embedded devices. Usually the messages exchanged while using such service contains metadata which can inform you about:
To use these devices you need a control layer which provides a certain abstraction to these devices. This layer is called a middleware. I suggest you look into SOCRADES. It is an EU project and I believe their source code should be available on their dedicated website.
I'm mentioning SOCRADES because it has a feature that can force network installation. It is possible to install new services on these devices using their DPWS profiles and assuming they have some communication and computation capabilities.
Other examples of middlewares are: OpenIot, Choreos, Ubiware, etc. All these middlewares mentioned are opensource. Now, on top of these middleware you build your application. This is what do you want to do with the devices.
Upvotes: 0