如何从Bluemix IoT服务获取设备/网关IP地址?

时间:2016-11-03 16:14:38

标签: ibm-cloud watson-iot

需要什么?

我需要获取设备/网关当前IP地址以确定其位置。

如何实现这一目标?

我找到了2个选项:

  1. 通过Bluemix API获取网关IP地址,因为我在管理面板中看到它,因此决定通过API提供它(但可能不是)。但找不到合适的API调用。如果已经实施,请提出建议。
  2. 在设备详细信息的API响应中,我看到了其他位置参数,但找不到如何使用它的完整说明。此参数返回带有日志和错误代码的链接。但是在任何API请求中,location参数都返回一个空字符串。
  3. 任何人都可以帮助我解决这些问题或提出另一种解决方案吗?

    P.S。目前的解决方法是直接从网关发送IP地址,但它看起来不是最好的选择。

3 个答案:

答案 0 :(得分:2)

没有直接的"给我这个设备的IP地址" API,但这些信息有几个不同的来源:

对于以下情况,假设设备存在$ git clone git@github.com:discoproject/disco.git ... $ cd disco $ make ... $ PATH=$PWD/bin:$PATH ./bin/disco start Master bignosk:8989 started type = "testDeviceType"以及id = "testDeviceId"

  1. 连接记录API

    org = "123456"

    响应:

    GET /api/v0002/logs/connection?typeId=testDeviceType&deviceId=testDeviceId

  2. 使用api密钥订阅监控主题:

    [ { "timestamp": "2016-10-22T05:07:36.064Z", "message": "Closed connection from 127.0.0.1. The connection was closed by the client. Error=Connection timed out(110)" }, { "timestamp": "2016-10-22T03:59:36.182Z", "message": "Token auth succeeded: ClientID='d:123456:testDeviceType:testDeviceId', ClientIP=127.0.0.1" } ]

    消息有效负载:

    topic = iot-2/type/+/id/+/mon

  3. 正如问题所述,它总是可以在消息有效负载中指定,但也许有些理由不相信设备发布此信息?

  4. 设备上的DeviceInfo字段包含一个RCV [iot-2/type/testDeviceType/id/testDeviceId/mon][retained] {"Action":"Connect","Time":"2016-11-01T14:18:36.550Z","ClientAddr":"127.0.0.1","ClientID":"d:123456:testDeviceType:testDeviceId","Port":8883,"Secure":true,"Protocol":"mqtt4","Durable":false }字段,该字段只是一个字符串,技术上可以设置为设备的IP地址......但这可能有点牵强。 / p>

  5. 还可以通过HTTP或使用设备管理MQTT主题设置设备地理位置。

  6. https://console.ng.bluemix.net/docs/services/IoT/devices/device_mgmt/index.html#update-location

    descriptive location

    另外要记住的是,自提到网关以来,(1)和(2)中提到的连接日志和监控主题仅与直接连接到平台的设备相关。

答案 1 :(得分:1)

调用连接日志api ...你会在那里找到设备/网关最后连接的IP地址... II / ...

或者,通过Mqtt订阅监视器主题,您可以从该主题上可用的消息中获取IP,对于当前连接的设备,它将是当前的IP,对于先前连接它的设备将是最后一个已知的IP地址,对于从未连接的IP地址,将没有可用的信息。

答案 2 :(得分:0)

如果您的已连接设备尚未发布其位置,您将无法接收任何内容。您的应用程序或设备的代码可以更新其位置。没有基于IP的位置自动查找。

要检索连接的IP,您有两个选项:

  • 连接日志

https://docs.internetofthings.ibmcloud.com/swagger/v0002.html#!/Problem_Determination/get_logs_connection

请注意/ mon / topics中的消息可能无法无限期保留。