Ibm cloud 如何从Bluemix IoT服务获取设备/网关IP地址?
需要什么? 我需要获取设备/网关当前IP地址以确定其位置 如何实现这一点? 我找到了两个选择:Ibm cloud 如何从Bluemix IoT服务获取设备/网关IP地址?,ibm-cloud,watson-iot,Ibm Cloud,Watson Iot,需要什么? 我需要获取设备/网关当前IP地址以确定其位置 如何实现这一点? 我找到了两个选择: 通过bluemixapi获取网关IP地址,因为我在管理面板中看到它,所以决定它通过API可用(但可以不可用)。但找不到合适的API调用。如果已经实施,请建议一个 在设备详细信息的API响应中,我看到了附加的位置参数,但找不到如何使用它的完整描述。此参数发送回日志和错误代码的链接。但在任何API请求中,location参数都返回一个空字符串 有人能帮我做任何选择或提出另一个解决方案吗 另外,当前的解决方
另外,当前的解决方法是直接从网关发送IP地址,但这似乎不是最好的选择。调用连接日志api。。。您将在IIRC中找到设备/网关上次连接的IP地址
或者,通过Mqtt订阅监视器主题,您可以从该主题上可用的消息中获取IP,对于当前连接的设备,它将是当前IP,对于先前连接的设备,它将是最后一个已知的IP地址,对于从未连接过的设备,将没有可用信息。如果您连接的设备尚未发布其位置,您将无法接收任何信息。更新其位置取决于应用程序或设备的代码。没有基于IP的位置自动查找 要检索连接的IP,您有2个选项:
- 连接日志
- 周一话题 订阅设备状态消息
type=“testDeviceType”
和id=“testDeviceId”
和org=“123456”
的设备
GET
/api/v0002/日志/连接?类型ID=testDeviceType&deviceId=testDeviceId
答复:
[
{
“时间戳”:“2016-10-22T05:07:36.064Z”,
“消息”:“已从127.0.0.1关闭连接。该连接已由客户端关闭。错误=连接超时(110)”
},
{
“时间戳”:“2016-10-22T03:59:36.182Z”,
“消息”:“令牌身份验证成功:ClientID='d:123456:testDeviceType:testDeviceId',ClientIP=127.0.0.1”
}
]
topic=iot-2/type/+/id/+/mon
消息有效负载:
RCV[iot-2/type/testDeviceType/id/testDeviceId/mon][reserved]{“操作”:“连接”,“时间”:“2016-11-01T14:18:36.550Z”,“客户端地址”:“127.0.0.1”,“客户端id”:“d:123456:testDeviceType:testDeviceId”,“端口”:8883,“安全”:true,“协议”:“mqtt4”,“持久”:false}
描述性位置
字段,该字段只是一个字符串,技术上可以设置为设备的IP地址。。。不过,这可能有点牵强另一件需要记住的事情是,由于提到了网关,(1)和(2)中提到的连接日志和监控主题仅与直接连接到平台的设备相关。API中的位置参数是纬度和经度,而不是IP地址。是的,这也是一个解决方案。但对于这里的任何请求,我都得到了一个空响应,正如我在问题中提到的。我怀疑location参数是否会在所有客户端/网关代码实现中填充。也许这只适用于网关的一个子集。因此,手动将IP地址包含到来自网关的消息中似乎是可行的solution@RomeoKienzler不需要直接包含IP。到目前为止,Bluemix关于网关的信息(网关联机时的IP地址)对我们来说已经足够了。非常好,感谢您的更新我也尝试了
/diag/logs
API调用,但它始终发送一个空的回复。但另一个订阅监控主题的解决方案对我来说似乎更简单、更方便。非常感谢。当然,我明白了。非常感谢。也许你也有一个例子,如何设置设备以适当的格式向Bluemix IoT发送位置信息?
{
"d": {
"longitude": number,
"latitude": number,
"elevation": number,
"measuredDateTime": "string in ISO8601 format",
"updatedDateTime": "string in ISO8601 format",
"accuracy": number
},
"reqId": "string"
}