阿里云物联网的通信方式

阿里云物联网通信的两种方式,一个是物模型(分为服务,事件,属性),一个是自定义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);
相关推荐
YongCheng_Liang4 小时前
从零开始学虚拟化:桌面虚拟化(VDI)入门指南(架构 + 产品 + 部署)
运维·云计算
lpfasd1234 小时前
物联网后端岗位java面试题
java·物联网·php
科技块儿4 小时前
物联网设备分布分析需要精准地理信息?支持IPv4IPv6双栈批量解析的IP离线库
物联网·网络协议·tcp/ip
万物得其道者成5 小时前
阿里云 H5 一键登录接入实战:前后端完整实现
阿里云·云计算·状态模式
coderzxy13 小时前
mbpoll 交叉编译
物联网
中议视控14 小时前
可编程网络中央控制系统主机通过红外发射棒控制空调电视等红外设备
网络·物联网·5g
星马梦缘15 小时前
EDA彩灯电路绘制
单片机·嵌入式硬件·物联网·pcb·eda·嘉立创
翼龙云_cloud18 小时前
国际云代理商:2026年国际云注册风控升级实战指南 8 大平台无卡解决方案对比
服务器·阿里云·云计算
G***技21 小时前
杰和IB3-272:以低功耗高性能打造新一代工业智能交互核心
单片机·嵌入式硬件·物联网
阿里云大数据AI技术1 天前
全模态、多引擎、一体化,阿里云DLF3.0构建Data+AI驱动的智能湖仓平台
人工智能·阿里云·云计算