目录
一、介绍二、创建产品1、新建产品2、查看属性3、查看上报主题三、添加设备1、添加设备2、设备信息四、用MQTT.fx模拟设备1、创建一个温度模拟器2、发送信息查看产品属性查看属性上报topic模拟上报界面查看上报信息查看上报日志配置服务端订阅创建订阅使用AMQP消费JavaSDK接入下载demo申请AccessKey获取消费组ID获取iotInstanceId获取clientId获取host下线消息上线消息一、介绍
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。
MQTT.fx是一款基于Eclipse Paho使用Java语言编写的MQTT客户端,支持Windows、Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic订阅和发布消息。本文以Windows系统下MQTT.fx为例,介绍设备使用MQTT协议模拟接入物联网平台。
下载并安装MQTT.fx软件。MQTT.fx软件安装和使用说明,请参见MQTT.fx。
二、创建产品
1、新建产品
2、查看属性
3、查看上报主题
三、添加设备
1、添加设备
2、设备信息
四、用MQTT.fx模拟设备
1、创建一个温度模拟器
参考:如何计算MQTT签名参数 获取mqtt的连接签名参数
在左侧导航栏,选择设备管理 > 设备,进入设备页面。在设备列表中,单击目标设备对应的查看按钮,进入设备详情页面。在设备信息页签下,单击MQTT连接参数右侧的查看,获取MQTT签名参数信息。
注意 其中clientId是mqttClientId值,请勿与设备的clientId混淆。MQTT连接参数的详细说明,请参见MQTT-TCP连接通信。
添加到MQTT.fx
2、发送信息
参考文档
/document_detail/89301.htm?spm=a2c4g.11186623.0.0.3d1b3d99SDJACT#section-g4j-5zg-12b
查看产品属性
查看属性上报topic
模拟上报
topic:/sys/a1kRPyuOfpd/temp_02/thing/event/property/post
{"id": "1235","version": "1.0","sys":{"ack":0},"params": {"CurrentHumidity": {"value": 12.2,"time": 1524448722000},"CurrentTemperature": {"value": 31.6,"time": 1524448722000}},"method": "thing.event.property.post"}
界面查看上报信息
查看上报日志
https://iot./lk/monitor/log?pk=a1kRPyuOfpd&pn=%E6%B8%A9%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A82&dn=temp_02
配置服务端订阅
创建订阅
使用AMQP消费JavaSDK接入
/document_detail/143601.htm?spm=a2c4g.11186623.0.0.5d12fbc7vt2SZ5#concept-2340718
下载demo
下载Demo代码包
配置指南:
申请AccessKey
登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。
https://ram./manage/ak?spm=5176.11485173.top-nav.dak.379559afZJzv8X
获取消费组ID
登录物联网平台控制台,在对应实例的规则引擎 > 服务端订阅 > 消费组列表查看您的消费组ID。
获取iotInstanceId
实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。
若有ID值,必须传入该ID值。
若无实例概览页面或ID值,传入空值,即iotInstanceId = “”。
获取clientId
表示客户端ID,需您自定义,长度不可超过64个字符。建议使用您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。
AMQP客户端接入并启动成功后,登录物联网平台控制台,在对应实例的规则引擎 > 服务端订阅 > 消费组列表页签,单击消费组对应的查看,消费组详情页面将显示该参数,方便您识别区分不同的客户端。
获取host
参考:/document_detail/147356.htm?spm=a2c4g.11186623.0.0.6c767929IeDjdm#section-kiw-dh9-de0
${uid}.iot-amqp.${YourRegionId}.:${port}### 最终配置```javaprivate final static Logger logger = LoggerFactory.getLogger(AmqpClient.class);private static String accessKey = "LTAI5tMHxxxxxxx13Z8D3nY";private static String accessSecret = "AdAd746FxxxxxxA5Ydd";private static String consumerGroupId = "DEFAULT_GROUP";//iotInstanceId:实例ID。若是07月30日之前(不含当日)开通的公共实例,请填空字符串。private static String iotInstanceId = "";//控制台服务端订阅中消费组状态页客户端ID一栏将显示clientId参数。//建议使用机器UUID、MAC地址、IP等唯一标识等作为clientId。便于您区分识别不同的客户端。private static String clientId = "123456789987654321";//${YourHost}为接入域名,请参见AMQP客户端接入说明文档。private static String host = "13246xxx0940.iot--";
## 用MQTT.fx模拟上报温湿度可以看到日志### 属性上报消息```bash15:44:57.163 [pool-1-thread-1] INFO com.aliyun.iotx.demo.AmqpClient - receive message,topic = /a1kRPyuOfpd/temp_02/thing/event/property/post,messageId = 1585538019430364673,content = {"deviceType":"CurrentTemperature","iotId":"sLomjhEuCDrTX2KQTU5x000000","requestId":"1235","checkFailedData":{},"productKey":"a1kRPyuOfpd","gmtCreate":1666856696337,"deviceName":"temp_02","items":{"CurrentHumidity":{"value":12.2,"time":1524448722000},"CurrentTemperature":{"value":31.6,"time":1524448722000}}}
下线消息
16:04:58.253 [pool-1-thread-2] INFO com.aliyun.iotx.demo.AmqpClient - receive message,topic = /as/mqtt/status/a1kRPyuOfpd/temp_02,messageId = 1585543057267769344,content = {"lastTime":"-10-27 16:04:57.473","iotId":"sLomjhEuCDrTX2KQTU5x000000","utcLastTime":"-10-27T08:04:57.473Z","clientIp":"121.31.14.28","utcTime":"-10-27T08:04:57.473Z","offlineReasonCode":200,"time":"-10-27 16:04:57.473","productKey":"a1kRPyuOfpd","deviceName":"temp_02","status":"offline"}
上线消息
16:05:30.841 [pool-1-thread-3] INFO com.aliyun.iotx.demo.AmqpClient - receive message,topic = /as/mqtt/status/a1kRPyuOfpd/temp_02,messageId = 1585543193989292544,content = {"lastTime":"-10-27 16:05:30.065","iotId":"sLomjhEuCDrTX2KQTU5x000000","utcLastTime":"-10-27T08:05:30.065Z","clientIp":"121.31.14.28","utcTime":"-10-27T08:05:30.065Z","time":"-10-27 16:05:30.065","productKey":"a1kRPyuOfpd","deviceName":"temp_02","status":"online"}