Google Cloud IoT-sendCommandToDevice-服务不可用

时间:2018-10-27 17:49:00

标签: google-cloud-platform google-cloud-iot

sendCommandToDevice端点似乎不可用。我尝试直接从设备页面上的云控制台发送命令。左下角的通知是Command sent to device,但Chrome的检查器显示了 503 错误。错误时间: 17:46:02 UTC 2018年10月27日,星期六

请求:

Request URL: https://cloudiot.clients6.google.com/v1/projects/<project-id>/locations/<location-name>/registries/<registry-name>/devices/<device-name>/:sendCommandToDevice?key=<removed> Request Method: POST Status Code: 503 Remote Address: 216.58.196.74:443 Referrer Policy: no-referrer-when-downgrade Payload: {binaryData: "eyJ0ZXN0IjoxfQ==", subfolder: ""}

响应:

{ "error": { "code": 503, "message": "The service is currently unavailable.", "status": "UNAVAILABLE" } }

此外,nodejs客户端库(34.0.0)中没有附加说明sendCommandToDevice。我必须进行API发现才能使用该方法。

2 个答案:

答案 0 :(得分:0)

您仍然收到503吗?我刚刚对此进行了测试,并能够成功接收消息。

此外,由于客户端库中缺少Commands功能的可用性,Commands仍处于Beta中,一旦完全发布,这些方法将在客户端库中可用。

答案 1 :(得分:0)

这可能是由于

  1. 节点库中的错误
  2. 在Google的RPC端点中发生错误
  3. 缺乏对Google的测试

问题是必须指定subfolder 必须,并且必须不能为空字符串。

就像我在Firebase函数中使用它一样,我只对所有没有特定子文件夹的命令使用firebase子文件夹

const request = {
    name: `${registryName}/devices/${deviceId}`,
    binaryData: Buffer.from(JSON.stringify(commandMessage)).toString("base64"),
    subfolder: 'firebase'
}

这里的功能取决于:

  "dependencies": {
    "firebase-admin": "^6.4.0",
    "firebase-functions": "^2.1.0",
    "fs-extra": "^7.0.0",
    "googleapis": "^36.0.0",
  },