【问题标题】:Google Cloud IoT - sendCommandToDevice - Service Unavailable谷歌云物联网 - sendCommandToDevice - 服务不可用
【发布时间】:2018-10-27 17:49:00
【问题描述】:

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

请求:

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" } }

另外,还有一个注意事项,sendCommandToDevice 在 nodejs 客户端库 (34.0.0) 中不可用。我必须进行 API 发现才能使该方法可用。

【问题讨论】:

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


    【解决方案1】:

    您还在收到 503 吗?我刚才测试了一下,可以成功接收消息。

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

    【讨论】:

    • 快速更新,(抱歉我无法更新问题)。将subfolder 设置为任何非空字符串解决了问题(2018 年10 月28 日测试)。我很快会再次测试它,并会更新。
    • @ShantanuThatte 你能确认使用空字符串子文件夹,API 调用返回 UNAVAILABLE 吗?我无法重现此行为。子文件夹似乎对我有用,无论它是完全取消设置还是设置为空字符串。
    【解决方案2】:

    这可能是由于

    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'
    }
    

    这里是函数deps:

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

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多