用于从设备孪生获取所需属性的 Azure Iot 中心设备与服务 SDK?
Azure Iot hub Device vs. Service SDK for getting desired properties from Device twin?
这给出了 service 与 device sdk 的段落摘要:
https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks
嗨,我有两个正在处理的存储库或项目,一个正在使用 Azure Iot Hub Service SDK([=49= 的文档 API ] 这里:https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.sdk.iot.service?view=azure-java-stable),这使得获取 DeviceTwin 所需的属性变得非常容易。我只需要一个 DeviceTwinDevice
对象,然后在其上调用 getDesiredProperties()
。这一切都来自依赖:
compile group: 'com.microsoft.azure.sdk.iot', name: 'iot-service-client', version: '1.16.0'
现在,我正在处理另一个存储库,我必须从设备孪生中读取特定的 属性 ,但该项目使用的是 Azure Iot Hub Device SDK(此处 Java 的文档 API:https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.sdk.iot.device?view=azure-java-stable),它的工作方式略有不同.看起来他们使用 DeviceClient
对象来连接 Iot 集线器等。除了 getDeviceTwin()
方法之外,我没有看到任何用于检索 DeviceTwin 所需属性的方法,但它是一个无效方法并且 returns 什么都没有?这个的依赖是
compile(group: 'com.microsoft.azure.sdk.iot', name: 'iot-device-client', version: '1.19.1')
对于那些以前没有见过这些“属性”的人来说,它只是 JSON 位于 Azure 门户网站上:
有没有一种简单的方法可以使用 device sdk 获取这些属性,或者我必须将 Gradle 中的依赖项拖到 service sdk 并那样做?这似乎是多余的。请帮忙!
Java 中 Device SDK 中的 getDeviceTwin()
方法与其他语言略有不同。有一个非常好的样本 here。魔术发生在关于调用 getDeviceTwin()
的几行代码中,您首先定义要为其注册回调的属性。下面的样本全部来自上面link:
System.out.println("Subscribe to Desired properties on device Twin...");
Map<Property, Pair<TwinPropertyCallBack, Object>> desiredProperties = new HashMap<Property, Pair<TwinPropertyCallBack, Object>>()
{
{
put(new Property("HomeTemp(F)", null), new Pair<TwinPropertyCallBack, Object>(new onHomeTempChange(), null));
put(new Property("LivingRoomLights", null), new Pair<TwinPropertyCallBack, Object>(new onProperty(), null));
put(new Property("BedroomRoomLights", null), new Pair<TwinPropertyCallBack, Object>(new onProperty(), null));
put(new Property("HomeSecurityCamera", null), new Pair<TwinPropertyCallBack, Object>(new onCameraActivity(), null));
}
};
client.subscribeToTwinDesiredProperties(desiredProperties);
System.out.println("Get device Twin...");
client.getDeviceTwin(); // Will trigger the callbacks.
然后在回调中处理收到的 属性,例如:
protected static class onProperty implements TwinPropertyCallBack
{
@Override
public void TwinPropertyCallBack(Property property, Object context)
{
System.out.println(
"onProperty callback for " + (property.getIsReported()?"reported": "desired") +
" property " + property.getKey() +
" to " + property.getValue() +
", Properties version:" + property.getVersion());
}
}
这给出了 service 与 device sdk 的段落摘要:
https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks
嗨,我有两个正在处理的存储库或项目,一个正在使用 Azure Iot Hub Service SDK([=49= 的文档 API ] 这里:https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.sdk.iot.service?view=azure-java-stable),这使得获取 DeviceTwin 所需的属性变得非常容易。我只需要一个 DeviceTwinDevice
对象,然后在其上调用 getDesiredProperties()
。这一切都来自依赖:
compile group: 'com.microsoft.azure.sdk.iot', name: 'iot-service-client', version: '1.16.0'
现在,我正在处理另一个存储库,我必须从设备孪生中读取特定的 属性 ,但该项目使用的是 Azure Iot Hub Device SDK(此处 Java 的文档 API:https://docs.microsoft.com/en-us/java/api/com.microsoft.azure.sdk.iot.device?view=azure-java-stable),它的工作方式略有不同.看起来他们使用 DeviceClient
对象来连接 Iot 集线器等。除了 getDeviceTwin()
方法之外,我没有看到任何用于检索 DeviceTwin 所需属性的方法,但它是一个无效方法并且 returns 什么都没有?这个的依赖是
compile(group: 'com.microsoft.azure.sdk.iot', name: 'iot-device-client', version: '1.19.1')
对于那些以前没有见过这些“属性”的人来说,它只是 JSON 位于 Azure 门户网站上:
有没有一种简单的方法可以使用 device sdk 获取这些属性,或者我必须将 Gradle 中的依赖项拖到 service sdk 并那样做?这似乎是多余的。请帮忙!
Java 中 Device SDK 中的 getDeviceTwin()
方法与其他语言略有不同。有一个非常好的样本 here。魔术发生在关于调用 getDeviceTwin()
的几行代码中,您首先定义要为其注册回调的属性。下面的样本全部来自上面link:
System.out.println("Subscribe to Desired properties on device Twin...");
Map<Property, Pair<TwinPropertyCallBack, Object>> desiredProperties = new HashMap<Property, Pair<TwinPropertyCallBack, Object>>()
{
{
put(new Property("HomeTemp(F)", null), new Pair<TwinPropertyCallBack, Object>(new onHomeTempChange(), null));
put(new Property("LivingRoomLights", null), new Pair<TwinPropertyCallBack, Object>(new onProperty(), null));
put(new Property("BedroomRoomLights", null), new Pair<TwinPropertyCallBack, Object>(new onProperty(), null));
put(new Property("HomeSecurityCamera", null), new Pair<TwinPropertyCallBack, Object>(new onCameraActivity(), null));
}
};
client.subscribeToTwinDesiredProperties(desiredProperties);
System.out.println("Get device Twin...");
client.getDeviceTwin(); // Will trigger the callbacks.
然后在回调中处理收到的 属性,例如:
protected static class onProperty implements TwinPropertyCallBack
{
@Override
public void TwinPropertyCallBack(Property property, Object context)
{
System.out.println(
"onProperty callback for " + (property.getIsReported()?"reported": "desired") +
" property " + property.getKey() +
" to " + property.getValue() +
", Properties version:" + property.getVersion());
}
}