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

一、开发环境准备

  1. 工具安装

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

    • 新建uni-app项目(选择默认模板)

    • 安装依赖:

      bash 复制代码
      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连接与认证
javascript 复制代码
// 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)
vue 复制代码
// pages/index/index.vue
<script>
import mqttClient from '@/utils/mqtt.js';

export default {
  data() {
    return {
      temperature: 0,
      humidity: 0
    };
  },
  mounted() {
    // 订阅设备属性上报Topic
    mqttClient.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)
vue 复制代码
// 发送控制指令(如打开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. 实时数据展示
vue 复制代码
<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)
javascript 复制代码
// 调用阿里云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)
    javascript 复制代码
    const client = mqtt.connect(`mqtts://${endpoint}:8883`, options);
  3. 本地存储加密

    javascript 复制代码
    // 使用uni-app加密存储
    uni.setStorageSync('deviceInfo', encryptedData);

六、调试与发布

  1. 真机调试

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

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

七、扩展功能建议

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

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


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

相关推荐
25March1 小时前
如何测试 esp-webrtc-solution_solutions_doorbell_demo 例程?
物联网·webrtc·iot
西门吹雪@1324 小时前
阿里云服务器-centos部署定时同步数据库数据-dbswitch
服务器·数据库·阿里云
CircuitWizard7 小时前
阿里云平台与STM32的物联网设计
stm32·物联网·阿里云
TUTO_TUTO8 小时前
【AWS+Wordpress-准备阶段】AWS注册+创建EC2实例
学习·云计算·aws
AWS官方合作商8 小时前
基于AWS Marketplace的快速解决方案:从选型到部署实战
云计算·sass·aws
伊织code8 小时前
AWS MCP Servers
服务器·python·ai·云计算·aws·mcp
袁随9 小时前
aws平台windows虚拟机扩容
云计算·aws
springfancy201310 小时前
物业设备管理的“多系统协同”模式:ERP、IoT与工单系统如何联动?
物联网·物业设备管理系统·智慧设备管理系统·设备保养系统
云心雨禅10 小时前
WordPress个人博客搭建(三):WordPress网站优化
服务器·网络·云计算