不要乱得一团糟——IoT Hub怎么这么多接口


Click here to read English version

如果你刚刚接触Azure IoT Hub,可能会对IoT Hub的接口感到困惑。

在我们开始之前,你需要搞清楚IoT Hub是一个通道,是通道就要有两个端口,设备端和云端。而两端连接IoT Hub的方式不尽相同。

在设备端,你也许会使用IoT Hub的Device SDK通过设备的Connection String连接IoT Hub,这个Connection String的格式是HostName=xxx.azure-devices.net;DeviceId=xxx;SharedAccessKey=xxx。之后SDK会使用HTTP、AMQP或者MQTT协议连接到IoT Hub。对于设备端你可以很容易地使用同一个接口发送D2C消息、接收C2D消息、监听Direct Method以及获取和更新Device Twin。

可是,对于云端就不是这么回事儿了。云端只支持AMQP协议连接点IoT Hub。也许你会有这样的疑问,为什么在官方IoT Hub Service SDK的 GitHub repo里没有接收D2C消息的例子呢?因为你无法通过与发送C2D消息的同一个接口接收D2C的消息,发送C2D消息和接收D2C消息是两个独立的接口。

如果你想要发送C2D消息,你只需使用IoT Hub Service SDK通过IoT Hub的Connection String连接即可(你可以通过Shared access policies找到这个Connection String),可是如果你想要接收D2C的消息,你就不得部使用Event Hub SDK,通过 IoT Hub Event Hub-compatible name和Event Hub-compatible endpoint进行连接(你可以通过Endpoints - Built-in endpoints - Events找到Event Hub-compatible name和Event Hub-compatible endpoint)。

对于云端这不是全部接口,如果你想调用Direct Method或想获取及更新Device Twin,你需要使用RESTful API。除了RESTful API,在云端你无法使用任何其他的方法来进行这些操作。在Azure的控制台里还没有任何有关云端操作Direct Method和Device Twin的信息,你需要到https://docs.microsoft.com/en-us/rest/api/iothub/devicetwinapi了解更多内容。

Comments (0)

Skip to main content