![](/img/trans.png)
[英]Google Cloud IOT- Device Configuration via Firebase/cloud functions?
[英]Google IOT: Identify the device is back online after sendCommandtoDevice failure
按照本指南向设备发送命令。
// const cloudRegion = 'us-central1';
// const deviceId = 'my-device';
// const commandMessage = 'message for device';
// const projectId = 'adjective-noun-123';
// const registryId = 'my-registry';
const iot = require('@google-cloud/iot');
const iotClient = new iot.v1.DeviceManagerClient({
// optional auth parameters.
});
const formattedName = iotClient.devicePath(
projectId,
cloudRegion,
registryId,
deviceId
);
const binaryData = Buffer.from(commandMessage);
const request = {
name: formattedName,
binaryData: binaryData,
};
try {
const responses = await iotClient.sendCommandToDevice(request);
console.log('Sent command: ', responses[0]);
} catch (err) {
console.error('Could not send command:', err);
}
我在 Google Cloud Function 上运行此功能(感谢 Firebase,我爱你),将命令发送到由Mongoose OS + Google IoT Core框架创建的 Google IoT 设备。
它大部分时间都按预期工作。 现在我希望在设备没有响应时改进系统。
由于许多原因,设备可能会暂时失去连接并因此丢失命令(见下图):
在这种情况下,设备暂时无法访问(例如,移动互联网信号不佳或互联网路由问题,无论如何)。
当设备重新联机并且可用时,我是否可以以某种方式触发功能?
我的目的是,如果用户在设备没有响应时向设备发送命令,我想自动再次发送命令。 猜猜如果用户需要关闭电机并且设备失去命令会发生什么?
但请记住,设备并未与 Google IOT MQTT 服务器“断开连接”。 连接仍然有效,它已启动并运行,通过良好的 wifi 信号连接到光纤互联网。 设备无法意识到服务器端发生了错误。
我还“猜测”设备需要在服务器根据 MQTT 保持活动间隔了解它不活动之前发送 ping,但我不知道如何检查。
检测设备上线和下线并做出反应:
resource.type="cloudiot_device" AND jsonPayload.eventType=("CONNECT" OR "DISCONNECT")
然后您可以在函数中处理日志消息并采取相应措施:
ID
位于labels.device_id
event type
在jsonPayload.eventType
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.