我想尽可能多地发现有关网络上物联网设备的信息。我已经看到枚举设备、查找 IP 地址和 MAC 地址的代码,但我还能找到什么?我特别想知道什么是灯,更重要的是,制造商是什么。
我一直在查看 IoTivity 和 AllJoyn 以及各种零配置协议的一些文档。据我了解,这些事情更关心的是暴露的服务,而不是设备到底是什么。
我误解了这个吗?有没有办法绘制出本地网络并确切地知道每个设备是什么?
我想尽可能多地发现有关网络上物联网设备的信息。我已经看到枚举设备、查找 IP 地址和 MAC 地址的代码,但我还能找到什么?我特别想知道什么是灯,更重要的是,制造商是什么。
我一直在查看 IoTivity 和 AllJoyn 以及各种零配置协议的一些文档。据我了解,这些事情更关心的是暴露的服务,而不是设备到底是什么。
我误解了这个吗?有没有办法绘制出本地网络并确切地知道每个设备是什么?
AllJoyn 提供About Announcement服务,您可以通过该服务获得您要查找的内容:
首先查看 DPWS(Web 服务的设备配置文件)。这是我们服务标准(例如,WSDL 或 SOAP)的一个子集,允许与在嵌入式设备上运行的 Web 服务进行最少的交互。通常,使用此类服务时交换的消息包含元数据,可以通知您:
要使用这些设备,您需要一个为这些设备提供某种抽象的控制层。该层称为中间件。我建议你看看 SOCRADES。这是一个欧盟项目,我相信他们的源代码应该可以在他们的专用网站上找到。
我提到 SOCRADES 是因为它具有可以强制网络安装的功能。可以使用它们的 DPWS 配置文件在这些设备上安装新服务,并假设它们具有一些通信和计算能力。
其他中间件的例子有:OpenIot、Choreos、Ubiware 等。所有这些中间件都是开源的。现在,您可以在这些中间件之上构建您的应用程序。这就是您想要对设备执行的操作。
uPnP 是当今相当普遍的协议,并在相当多的设备(即打印机)中实现。这也用于一些现代物联网项目。它还支持设备描述。看一个例子:
<?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>