【问题标题】:AWS IoT: Shadow not updatingAWS IoT:影子未更新
【发布时间】:2019-01-20 12:52:38
【问题描述】:

我的 pubSub 代码示例正在运行,因此我可以发布到 MQTT 主题。而且我的理解是只要把话题改成"mything/shadow/update",影子就会更新,但不会。

我目前的影子状态如下:

{
  "desired":{
    "welcome": "aws-iot"
  },
  "reported":{
    "welcome": "aws-iot"
  }
}

【问题讨论】:

  • 您是否授予了适当的权限?

标签: python amazon-web-services raspberry-pi iot aws-iot


【解决方案1】:

您的影子没有更新可能有多种原因。这里可能有一些。

  1. 在 Cognito 中,对于经过身份验证和未经身份验证的池,都没有更新/获取影子的适当权限
  2. Cognito Pool id 和 IoT 的 ARN 不正确
  3. 为 Cognito 用户检查 IAM 策略和以下策略,此外,对于 Cognito 用户,您必须附加 AttachPrincipalPolicy 策略以授予他们获取/更新影子的适当权限。下面的策略应该是 Cognito Auth 和 UnAuth 角色。

政策:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iot:AttachPrincipalPolicy"
        ],
        "Resource": [
            "*"
        ]
    }
] }

订阅更改$aws/things/thing_name/shadow/update/accepted

并将数据发布到影子$aws/things/thing_name/shadow/update

还要检查你是否能够连接到影子。

【讨论】:

  • 感谢您的回复。 Cognito 和 IAM 的更改无效。我可以在 aws/things/thing_name/shadow/update 上看到消息,但在 update/accepted 上看不到。仍然不确定如何解决这个问题。
  • 要发布的 shadow/update 上的影子是否发生变化? update/accepted 是获取更改的数据(订阅),而不是发布
  • 是的。当我发布和订阅影子/更新时,我可以看到消息,但是当我订阅更新/接受时,什么都没有显示。所以我的问题是为什么它不被接受。此外,当我订阅更新/拒绝时,也没有任何显示。
  • 是的,更新/接受不会显示任何内容。我们只是订阅这个东西。这是正确的行为。
  • 你只会收到整个影子
【解决方案2】:
{
  "state":{
    "desired":{
      "welcome": "aws-iot"
    }
  }
}

尝试在影子/更新中像这样发送。为我工作。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多