You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS Android SDK对接AWS IoT Core实现设备连接状态检测

LWT配置不生效排查方案
  • 检查LWT设置时机:AWSIotMqttLastWillAndTestament的配置必须在调用mqttManager.connect()之前执行,若你将设置代码放在连接发起之后,配置不会同步到AWS IoT Core broker,自然无法触发LWT消息。
  • 检查LWT消息格式:你当前使用的LWT主题是设备影子更新主题$aws/things/LogoTest1/shadow/update,该主题要求消息必须为符合设备影子规范的JSON格式,你设置的纯文本消息Android client lost connection会被IoT Core直接拒收,建议修改LWT payload为影子状态更新格式:
String lwtPayload = "{\"state\": {\"reported\": {\"connected\": false}}}";
AWSIotMqttLastWillAndTestament lwt = new AWSIotMqttLastWillAndTestament(topic,
        lwtPayload, AWSIotMqttQos.QOS0);
// 必须在connect之前调用
mqttManager.setMqttLastWillAndTestament(lwt);

同时建议设备成功连接到IoT Core后,主动向同一主题上报connected: true的状态,保证影子内状态一致性。

  • 检查设备IoT权限:确认你的设备关联的IoT策略中,已经开放了对应LWT主题的发布权限,示例权限语句如下:
{
  "Effect": "Allow",
  "Action": "iot:Publish",
  "Resource": "arn:aws:iot:<区域>:<账号ID>:topic/$aws/things/LogoTest1/shadow/update"
}
  • 检查断开触发条件:LWT只会在设备异常断开(未发送DISCONNECT包直接断网/断电)时触发,如果是你主动调用mqttManager.disconnect()正常断开连接,不会触发LWT消息。
IoT规则配置说明

不存在专门的「重新发布LWT消息」动作,官方文档提及的重发布逻辑直接使用通用的「将消息重新发布到AWS IoT主题」动作即可:LWT本质是由broker触发发送的普通MQTT消息,你只需在规则的SQL语句中筛选你LWT消息对应的主题,即可捕获LWT消息并执行重发布等后续动作。
如果你的需求是通知用户侧设备状态变化,也可以直接让用户端订阅设备影子的$aws/things/LogoTest1/shadow/update/accepted主题,即可直接收到设备上下线的状态变动通知,无需额外配置规则转发。

内容的提问来源于stack exchange,提问作者Arasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:24:04