嵌入式C SDK:获取不到SHADOW_ACKs,只有SHADOW_TIMEOUTs -- aws_iot_shadow函数无法触发回调函数。

0

【以下的问题经过翻译处理】 由于我的问题似乎是由AWS嵌入式C SDK引起的,所以我是通过IT支持来到这里的。我正在使用CC3235S编程板。

我已经成功地发布、订阅和更新了Shadows/Topics,但是从发布的topic接收JSON负载一直是一个挑战。我在我的回调函数中设置了断点,但是除非我将超时秒数设置为0,否则它们永远不会被命中,这会导致立即超时。在超时、拒绝或接受状态下应该会调用回调函数。

我的thing/shadow/get/accepted主题正在发布。问题在于我无法将其捕获到我的微控制器中。

我还可以告诉您,我的AWS Iot Core/Thing策略不是问题。我已经为测试尽可能宽松地设置了权限。

我已经确认客户端订阅了/shadow/get/rejected+ /accepted主题,并确认Shadow可以正常在我的设备中更新。

我已经尝试过:

  • 在我的GET和UPDATE函数之后添加aws_iot_shadow_yield()/aws_iot_mqtt_yield()
  • 不同的超时时间
  • 将持久性订阅参数设置为true和false
  • 调整权限,然后将它们恢复到已知的好的值

返回代码始终对此例程中的所有aws函数返回SUCCESS,并且在GET函数期间,我已经确认客户端正在连接到AWS。

我的GET函数:

IoT_Error_t rcGS;
rcGS = aws_iot_shadow_get(&client, AWS_IOT_MY_THING_NAME, getShadowCallback, NULL, 5, true);

我的GET函数回调:

static void getShadowCallback(const char *pThingName, ShadowActions_t action, Shadow_Ack_Status_t status,
        const char *pReceivedJsonDocument, void *pContextData){
    IOT_UNUSED(action);
    IOT_UNUSED(pContextData);
    IOT_UNUSED(pReceivedJsonDocument
profile picture
专家
已提问 5 个月前2 查看次数
1 回答
0

【以下的回答经过翻译处理】 谢谢你,Greg。

我不知道怎么错过了这个,即使我花了几天的时间搜索了 AWS 策略声明,我完全忽略了“接收”操作。我成功连接、发布、订阅、GET 和 UPDATE,但是我完全忽略了接收。

这就是当一个嵌入式/硬件工程师进入 AWS 时会发生的事情。

我感觉有点愚蠢,但那是我的问题。在我启用了接收之后一切正常。谢谢你的回复。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则