当前位置: 首页 > news >正文

开发搭载阿里云平台的物联网APP(支持数据接收与发送)

一、开发环境准备

  1. 工具安装

    • HBuilderX:下载并安装最新版(支持Vue.js和uni-app框架)
    • 阿里云IoT SDK:使用JavaScript版SDK(如aliyun-iot-mqttmqtt.js
    • 插件安装:HBuilderX插件市场搜索安装mqtt相关插件(如mqtt-js
  2. 项目创建

    • 新建uni-app项目(选择默认模板)
    • 安装依赖:
      npm install aliyun-iot-device-sdk --save  # 阿里云IoT SDK
      npm install mqtt --save                    # MQTT协议库
      

二、阿里云平台配置

  1. 创建产品与设备

    • 登录阿里云IoT控制台,创建产品(如“SmartSensor”)
    • 添加设备,获取设备三元组(ProductKeyDeviceNameDeviceSecret
  2. 定义物模型

    • 添加属性(如温度、湿度)和服务(如LED控制)
    • 生成Alink JSON模板(用于数据格式验证)
  3. 获取连接信息

    • MQTT接入地址:iot-${YourRegionId}.mqtt.aliyuncs.com
    • 端口:1883(非加密)或8883(TLS加密)

三、APP核心功能实现

1. MQTT连接与认证
// utils/mqtt.js
import mqtt from 'mqtt/dist/mqtt';// 设备三元组
const productKey = 'a1**********';
const deviceName = 'device001';
const deviceSecret = '****************';// 计算MQTT连接参数
const clientId = `${deviceName}|securemode=3,signmethod=hmacsha1|`;
const username = `${deviceName}&${productKey}`;
const password = CryptoJS.HmacSHA1(clientId, deviceSecret).toString(CryptoJS.enc.Hex);// 连接阿里云
const client = mqtt.connect(`mqtt://${productKey}.iot-as-mqtt.${region}.aliyuncs.com:1883`, {clientId: clientId,username: username,password: password,keepalive: 60
});export default client;
2. 数据接收(订阅Topic)
// pages/index/index.vue
<script>
import mqttClient from '@/utils/mqtt.js';export default {data() {return {temperature: 0,humidity: 0};},mounted() {// 订阅设备属性上报TopicmqttClient.subscribe(`/${this.productKey}/${this.deviceName}/user/update`);mqttClient.on('message', (topic, message) => {const data = JSON.parse(message.toString());if (data.params) {this.temperature = data.params.temperature;this.humidity = data.params.humidity;}});}
}
</script>
3. 指令发送(发布到Topic)
// 发送控制指令(如打开LED)
methods: {sendCommand() {const payload = {id: Date.now().toString(),version: "1.0",params: {switch: 1  // 1表示开启,0表示关闭},method: "thing.service.property.set"};mqttClient.publish(`/${this.productKey}/${this.deviceName}/user/service/property/set`,JSON.stringify(payload)}
}

四、APP界面设计

1. 实时数据展示
<template><view class="container"><view class="card"><text class="title">环境监测</text><view class="data-row"><text>温度: {{ temperature }}℃</text><text>湿度: {{ humidity }}%</text></view></view><button @click="sendCommand">打开LED</button></view>
</template><style>
.card {padding: 20rpx;margin: 20rpx;border-radius: 10rpx;background-color: #f5f5f5;
}
.data-row {flex-direction: row;justify-content: space-between;
}
</style>
2. 历史数据查询(需配合阿里云TSDB)
// 调用阿里云API查询历史数据
async queryHistory() {const res = await uni.request({url: 'https://iot.cn-shanghai.aliyuncs.com',method: 'POST',header: {'Authorization': `Bearer ${accessToken}`},data: {Action: 'QueryDevicePropertyData',ProductKey: this.productKey,DeviceName: this.deviceName,StartTime: 1625097600000,EndTime: 1625184000000}});console.log(res.data);
}

五、安全优化

  1. 设备认证

    • 使用临时Token(STS Token)替代直接存储设备密钥
    • 通过后端服务器动态获取连接凭证
  2. 数据加密

    • 启用MQTT over TLS(端口8883)
    const client = mqtt.connect(`mqtts://${endpoint}:8883`, options);
    
  3. 本地存储加密

    // 使用uni-app加密存储
    uni.setStorageSync('deviceInfo', encryptedData);
    

六、调试与发布

  1. 真机调试

    • 使用HBuilderX「运行」菜单→「运行到手机或模拟器」
    • 开启调试模式查看MQTT连接日志
  2. 打包发布

    • 选择「发行」→「原生App-云打包」生成APK/IPA
    • 配置阿里云域名白名单(防止请求被拦截)

七、扩展功能建议

  • 消息推送:集成uniPush实现报警消息推送
  • 多设备管理:通过设备列表动态切换连接
  • 离线缓存:使用SQLite存储本地数据
  • 可视化图表:引入ucharts展示历史趋势

通过此方案,可快速构建支持阿里云物联网平台双向通信的跨平台APP(兼容Android/iOS/小程序),实现设备监控与远程控制的核心功能。关键点在于正确配置MQTT连接参数和遵循阿里云Alink数据格式规范。


备注:本人可有偿提供;支持定做。感谢支持

相关文章:

  • 日常开发中,iOS 性能调优我们怎么做?
  • SQL Server To Paimon Demo by Flink standalone cluster mode
  • 多线服务器具有什么优势
  • 【Science Advances】普林斯顿大学利用非相干光打造可重构纳米光子神经网络
  • Easy云盘总结篇-文件分享
  • vue3的新特性
  • Frida使用java.lang.reflect.Array类打印Java反射数组
  • Mkdocs页面如何嵌入PDF
  • 【Prometheus】业务指标与基础指标的标签来源差异及设计解析(扩展版)
  • 【Prometheus】深入解析 Prometheus 特殊标签 `__param_<name>`:动态抓取参数的艺术
  • var、let、const的区别
  • WPF MVVM入门系列教程(六、ViewModel案例演示)
  • 华为设备链路聚合实验:网络工程实战指南
  • Notepad++中XML格式化插件介绍
  • GPT与LLaMA:两大语言模型架构的深度解析与对比
  • console-chat-gpt开源程序是用于 AI Chat API 的 Python CLI
  • Android学习总结之Binder篇
  • Linux 下MySql主从数据库的环境搭建
  • RDK X5 交叉编译OSS\QT\opencv\openssl
  • 【Rust模块管理】Rust包、crate与模块管理
  • 高龄老人骨折后,生死可能就在家属一念之间
  • 印度32座机场暂停民用航班运营,印称在边境多处发现无人机
  • 巴基斯坦首都及邻近城市听到巨大爆炸声
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 上海发布大风黄警:预计未来24小时内将出现8-10级大风
  • 中方对原产印度进口氯氰菊酯实施反倾销措施,商务部回应