Network programming 在网络上发现物联网设备

Network programming 在网络上发现物联网设备,network-programming,iot,zeroconf,alljoyn,iotivity,Network Programming,Iot,Zeroconf,Alljoyn,Iotivity,我希望在网络上尽可能多地发现有关物联网设备的信息。我已经看到了枚举设备、查找IP地址和MAC地址的代码,但是我还能找到什么?特别是,我想知道什么东西是灯,更重要的是,制造商是什么 我一直在浏览IoTivity和AllJoyn以及各种零配置协议的文档。据我所知,这些问题更多地涉及到公开的服务,而不是设备的具体情况 我误解了吗?是否有办法规划出本地网络并准确了解每个设备是什么?AllJoyn提供服务,您可以通过该服务获得您想要的: 应用程序和设备友好名称 品牌、型号、版本、说明 支持的语言 应用程

我希望在网络上尽可能多地发现有关物联网设备的信息。我已经看到了枚举设备、查找IP地址和MAC地址的代码,但是我还能找到什么?特别是,我想知道什么东西是灯,更重要的是,制造商是什么

我一直在浏览IoTivity和AllJoyn以及各种零配置协议的文档。据我所知,这些问题更多地涉及到公开的服务,而不是设备的具体情况

我误解了吗?是否有办法规划出本地网络并准确了解每个设备是什么?

AllJoyn提供服务,您可以通过该服务获得您想要的:

  • 应用程序和设备友好名称
  • 品牌、型号、版本、说明
  • 支持的语言
  • 应用程序图标
  • 支持的对象和接口

首先查看DPWS(Web服务的设备配置文件)。这是we服务标准(例如WSDL或SOAP)的一个子集,允许与嵌入式设备上运行的web服务进行最小的交互。通常,在使用此类服务时交换的消息包含元数据,这些元数据可以通知您:

  • 范围-用于根据组进行组织的属性(例如,位置)
  • 型号和设备-关于设备的信息(例如,制造商)
  • 类型-设备可以发送的消息(例如,关闭)
  • 要使用这些设备,您需要一个控制层,为这些设备提供某种抽象。这一层称为中间件。我建议你调查一下足球比赛。这是一个欧盟项目,我相信他们的源代码应该可以在他们专门的网站上找到

    我之所以提到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>
    
    
    1.
    0
    媒体设备
    urn:schemas microsoft com:device:MediaCenterExtender MFD:1
    Xbox 360媒体中心扩展器
    微软公司
    http://www.xbox.com/
    Xbox 360媒体中心扩展器
    Xbox 360
    http://go.microsoft.com/fwlink/?LinkID=53081
    uuid:10000000-0000-0000-0200-00125A702E78
    ...
    ...
    
    这与常规网络扫描没有任何区别,其目的是列出本地网络上或任意IP范围内的所有IP可寻址设备。这可能被ISP或网络管理员禁止。我说的是家庭网络,所以不应该有任何东西阻止你这么做。是的,这是一个定期的网络扫描,很容易获得像IP地址这样的信息。我的兴趣是如何获得关于这些设备的更详细的信息。本文讨论了发现物联网设备的不同扫描技术:好的,这就是我要寻找的。所以在我看来,我在网络上找到的每一台设备都可以查询这些信息。如果设备支持AllJoyn,那么我就可以自由回家了。是这样吗?我还可以检查其他协议吗?我也知道HNAP,但这似乎是一个主要用于路由器的古老协议。我不知道HNAP。所以,在这方面我对你没用。关于AllJoyn,是的,你是对的。正如我在上面提到的链接中所述,所有提供服务的Joyn设备都可以使用
    关于公告服务
    自行发布服务。AllJoyn客户端设备可以通过收听有关公告服务的
    来发现AllJoyn服务器设备。一旦他们发现了合适的服务,他们就可以连接到它。值得注意的是,AllJoyn提供了便利的近距离设备集成。HNAP是大约15年前由Linksys收购的一家公司开发的协议。它使识别网络上的设备变得非常容易,并提供了我想要的东西,但实际上已不再经常使用。DPWS提供发现服务吗?例如,假设我正在建造一个智能家居,我想用智能手机控制我的电视。有没有一种安全的方法可以让我的智能手机识别电视(在离我10米远的地方)可以打开和关闭?DPWS通过提供元数据帮助服务发现,这样用户或其他设备就可以发现设备及其功能。一般来说,中间件提供执行服务发现的组件。如果我现在或五年后查看家庭中的典型网络,是否会有任何设备使用此服务?很可能会有类似的情况,因为目前的工作是找出如何虚拟化基础设施以及如何组合这些设备提供的服务。但是,标记和向这些设备添加元数据将是强制性的。不知何故,这些数据需要提供给用户或中间件。此外,现在和五年后提供了许多这样的中间件(例如,Xively、Carriots),用于发现设备并从设备读取数据。