阿里云物联网的通信方式

阿里云物联网通信的两种方式,一个是物模型(分为服务,事件,属性),一个是自定义topic(要另外设置数据流转)

1.使用产品内的功能定义,(其实也就是Topic中定义好的物模型主题),功能定义中有事件,属性,服务三种类型

进入产品的功能定义中,选择编辑草稿

添加自定义功能,

功能类型可以按照需求选择服务(调用比如开关灯,亮度调节等),属性(显示数据等),事件,其中标识符是代码识别此功能的重要标识,另外参数一定要与代码中调用的参数数据类型一致

一定要发布上线才有效

服务colorset和属性color调用的代码不同

首先小程序控制端,如果是通过按钮调用服务,使用aliSDK中的Action: "InvokeThingService",完整函数代码如下

//发送信息给阿里云,页面设置了一个亮度调节器(进度条),绑定以下函数,data里面x初始值x:{'light':12},

c 复制代码
changeDeviceLight: function (e) {
  var DeviceName = this.options.deviceName
  var that = this
  console.log(`携带值为`, e.detail.value)
  console.log("x",typeof that.data.x) //x为对象格式object
  that.data.x.light=e.detail.value    //将x里的数值替换成当前调节器的值
  var str = JSON.stringify(that.data.x);    //将对象转换成字符串,
 //var Obj = JSON.parse(str);    如果需要字符串转换成对象
  console.log("str",typeof str)        //此处可以校验是否已是字符串
  console.log("str",str)
  console.log("lightvalue",that.data.x)
  //防止重复点击
  that.setData({
    buttonDisabled: true
  })
 
  aliSdk.request({
      Action: "InvokeThingService",
     //IotInstanceId:"iot-",//实例ID
      ProductKey: app.globalData.productKey,
      DeviceName: DeviceName,
      Identifier: "light",
      //Args: "{'light':51}" 
      //传送参数时,格式为{'Identifier':数值},传入格式必须有引号,也就是对象转换成字符串格式,数值也必须符合当时阿里云内设置的数据类型,无参数的时候传空 Args:"{}"
      Args: str   //此处获取的亮度值会被传给阿里云
    }, {
      method: "POST"
    },
    (res) => {
      console.log("success")
      console.log(res) //查看返回response数据
      that.setData({
        openedDevice: !that.data.openedDevice
      })
    },
    (res) => {
      console.log("fail")
      wx.showToast({
        title: '网络连接失败',
        icon: 'none',
        duration: 1000,
        complete: () => {}
      })
    },
    (res) => {
      console.log("complete")
      that.setData({
        buttonDisabled: false
      })
    })
},

阿里云收到消息转给esp8266,arduino串口监视器显示{"method":"thing.service.light","id":"173255894","params":{"light":114},"version":"1.0.0"}

arduino端的代码将params里的light取出来

c 复制代码
String method =jsonBuffer["method"];
   int key1 = jsonBuffer["params"]["light"];
    Serial.println("method");
   Serial.println(method);
   Serial.println(key1);

如果是调用属性,则使用Action: "SetDeviceProperty"

c 复制代码
radioChangeColor: function (e) {
  var DeviceName = this.options.deviceName
  var that = this
  console.log(e.detail.value)
  //防止重复点击
  that.setData({
    buttonDisabled: true
  })
  var str1 = "{\"color\":"
    str1 += "\""+e.detail.value+"\""
    //"\""+变量+"\""可以在双引号里调用变量,而不被识别成字符串
    str1 += "}"
    console.log('str1')  
    console.log(str1)  //str1此时为字符串{"color":"yellow"}
    console.log("str1",typeof str1) 
   
  aliSdk.request({
      Action: "SetDeviceProperty",
     //IotInstanceId:"iot-",//实例ID
      ProductKey: app.globalData.productKey,
      DeviceName: DeviceName,
      Identifier: "color",
     Items: '{"color":"red"}'//属性调用也可使用Items:str1,将str1传给阿里云
    }, {
      method: "POST"
    },
    (res) => {
      console.log("success")
      console.log(res) //查看返回response数据
      that.setData({
        openedDevice: !that.data.openedDevice
      })
    },
    (res) => {
      console.log("fail")
      wx.showToast({
        title: '网络连接失败',
        icon: 'none',
        duration: 1000,
        complete: () => {}
      })
    },
    (res) => {
      console.log("complete")
      that.setData({
        buttonDisabled: false
      })
    })
},

阿里云收到消息后转给esp8266,串口监视器显示{"method":"thing.service.colorset","id":"921010594","params":{"colorset":"green"},"version":"1.0.0"}

arduino端的代码将params里的colorset取出来

c 复制代码
String method =jsonBuffer["method"];
   String key1 = jsonBuffer["params"]["colorset"];
    Serial.println("method");
   Serial.println(method);
   Serial.println(key1);
相关推荐
MonolithIoT3 小时前
实战方案|智能称重货架:制造业线边仓主动预警式数字化库存管理落地指南
物联网·制造业·线边仓·智能线边仓
发量惊人的中年网工3 小时前
工业视觉云边 AI 推理总是卡顿?SD-WAN 打通边缘算力互联
网络·人工智能·网络安全·云计算
星恒讯工业路由器3 小时前
5G工业路由器在智慧工厂中的应用解析:从数据采集到云端管理
物联网·信息与通信·智慧工厂·5g工业路由器·产线数据采集
Loveucafe3 小时前
日咖夜酒咖啡厅在哪里
阿里云
hongmai6668884 小时前
ESP32-C5-WROOM-1-N16R8:双频Wi-Fi 6与多协议融合,重新定义物联网连接新标准
笔记·嵌入式硬件·物联网·智能路由器·risc-v
Loveucafe6 小时前
口碑好的民谣清吧
阿里云
数智化管理手记8 小时前
手工统计指标误差大、效率低?指标管理系统如何告别人工算数痛点?
大数据·运维·数据库·人工智能·云计算
梦想的颜色14 小时前
2026 国产大模型硬核横评|阿里云百炼(通义 Qwen3.7 Max)VS DeepSeek V4-Pro:平台、定价、吞吐、能力、工程落地全方位对比
阿里云·通义千问·阿里云百炼·deepseek v4-pro·qwen3.7·llm 吞吐量实测·#企业 maas 平台横评
栈溢出的浪漫16 小时前
2026 WAIC 直击丨阿里云全栈AI落地:从芯片算力到智能体原生云
阿里云·全栈ai·2026waic·智能体原生云·大模型产业化