阿里云物联网的通信方式

news2024/10/28 4:43:20

阿里云物联网通信的两种方式,一个是物模型(分为服务,事件,属性),一个是自定义topic(要另外设置数据流转)
1.使用产品内的功能定义,(其实也就是Topic中定义好的物模型主题),功能定义中有事件,属性,服务三种类型
在这里插入图片描述
进入产品的功能定义中,选择编辑草稿
在这里插入图片描述
添加自定义功能,
在这里插入图片描述
功能类型可以按照需求选择服务(调用比如开关灯,亮度调节等),属性(显示数据等),事件,其中标识符是代码识别此功能的重要标识,另外参数一定要与代码中调用的参数数据类型一致
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
一定要发布上线才有效
在这里插入图片描述
服务colorset和属性color调用的代码不同
首先小程序控制端,如果是通过按钮调用服务,使用aliSDK中的Action: “InvokeThingService”,完整函数代码如下
//发送信息给阿里云,页面设置了一个亮度调节器(进度条),绑定以下函数,data里面x初始值x:{‘light’:12},

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取出来

String method =jsonBuffer["method"];
   int key1 = jsonBuffer["params"]["light"];
    Serial.println("method");
   Serial.println(method);
   Serial.println(key1);

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

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取出来

String method =jsonBuffer["method"];
   String key1 = jsonBuffer["params"]["colorset"];
    Serial.println("method");
   Serial.println(method);
   Serial.println(key1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prompt Engineering (Prompt工程)

2 prompt工程2大原则 2.1 给出清晰&#xff0c;详细的指令 策略1&#xff1a;使用分割符清晰的指示输出的不同部分&#xff0c;比如"",<>,<\tag>等分隔符 策略2&#xff1a;指定一个结构化的输出&#xff0c;比如json,html等格式 策略3&#xff1a;要…

重学SpringBoot3-Spring WebFlux之SSE服务器发送事件

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE&#xff1f;2. Spring Boot 3 响应式编程与 SSE为什么选择响应式编程实现 SSE&#xff1f; 3. 实现 SSE 的基本步骤3.…

【JavaEE】【多线程】volatile,wait/notify

目录 一、volatile关键字1.1 内存可见性1.2 volatile解决内存可见性问题 二、wait和notify2.1 wait2.2 notify2.3 使用例子2.3.1 例子12.3.2 例子二 一、volatile关键字 volatile可以保证内存可见性&#xff0c;只能修饰变量。 1.1 内存可见性 在前面介绍线程不安全原因时介…

AI编译器与TVM

由于AI芯片的特殊性和高度定制化&#xff0c;为了兼容硬件的多样性&#xff0c;AI模型必须能被高效地映射到各种AI芯片上。AI编译器将深度学习框架描述的AI模型作为输入&#xff0c;将为各种AI芯片生成的优化代码作为输出。AI编译器的目标是通过编译优化的方法将深度学习框架产…

Git的原理和使用(六)

本文主要讲解企业级开发模型 1. 引入 交付软件的流程&#xff1a;开发->测试->发布上线 上面三个过程可以详细划分为一下过程&#xff1a;规划、编码、构建、测试、发 布、部署和维护 最初&#xff0c;程序⽐较简单&#xff0c;⼯作量不⼤&#xff0c;程序员⼀个⼈可以完…

2025 - AI人工智能药物设计 - 中药网络药理学和毒理学的研究

中药网络药理学和毒理学的研究 TCMSP&#xff1a;https://old.tcmsp-e.com/tcmsp.php 然后去pubchem选择&#xff1a;输入Molecule Name 然后进行匹配&#xff1a;得到了smiles 再次通过smiles&#xff1a;COC1C(CC(C2C1OC(CC2O)C3CCCCC3)O)O 然后再次输入&#xff1a;http…

单体架构VS微服务架构

单体架构&#xff1a;一个包含有所有功能的应用程序 优点&#xff1a;架构简单、开发部署简单缺点&#xff1a;复杂性高、业务功能多、部署慢、扩展差、技术升级困难 如上示意图&#xff0c;应用前端页面&#xff0c;后台所有模块功能都放在一个应用程序中&#xff0c;并部署在…

「C/C++」C++标准库之#include<fstream>文件流

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

shodan2---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 实验一&#xff1a;search 存在CVE-2019-0708的网络设备 CVE - 2019 - 0708**漏洞&#xff1a;** 该漏洞存在于远程桌面…

MedSAM微调版,自动生成 Prompt 嵌入实现图像分割!

最近提出的Segment Anything Model (SAM)等基础模型在图像分割任务上取得了显著的成果。 然而&#xff0c;这些模型通常需要通过人工设计的 Prompt &#xff08;如边界框&#xff09;进行用户交互&#xff0c;这限制了它们的部署到下游任务。 将这些模型适应到具有完全 Token 数…

Arduino Uno 同时控制多路舵机

Arduino Uno同时控制4个舵机 舵机可以在0~180度内指定角度的控制。常用于航模、机器人、遥控玩具等物品,然而,很多时候要一次性控制多个舵机,今天以控制4个舵机为例进行说明 接线方式如下图: 舵机的信号线分别接A0,A1,A2,A3。控制舵机从0旋转到180度,再由180度旋转到0度,…

从0开始深度学习(18)——层和块

1 层和块 1.1层 层是神经网络的基本组成单位。每一层由多个神经元&#xff08;或单元&#xff09;组成&#xff0c;这些神经元在前一层的输出上执行某种计算&#xff0c;并将结果传递给下一层。根据功能&#xff0c;层可以分为以下几种类型&#xff1a; 输入层&#xff08;I…

《决策思维:人人必备的决策口袋书》

本书干货很多&#xff0c;十分值得一读。但受众不是一线员工与一线管理者&#xff0c;更多的倾向于管理者的管理者。一线员工读完的最大收获是可以理解老板的决策逻辑与思维方式&#xff0c;便于更好的去做执行。同时&#xff0c;还能帮助判断老板的决策是否正确&#xff0c;是…

【Android】view的基础知识

文章目录 View与ViewGroupView位置参数View的滑动1. scrollTo与scrollBy2. 属性动画ObjectAnimatorViewPropertyAnimator 3. LayoutParams&#xff08;布局参数&#xff09;layout方法offsetLeftAndRight View的弹性滑动1. Scroller 类2. 动画&#xff08;ObjectAnimator&#…

SYN590RL 300MHz至450MHz ASK接收机芯片IC

一般描述 SYN590RL是赛诺克全新开发设计的一款宽电压范围,低功耗,高性能,无需外置AGC电容&#xff0c;灵敏度达到典型-110dBm&#xff0c;300MHz”450MHz 频率范围应用的单芯片ASK或OOK射频接收器。 SYN59ORL是一款典型的即插即用型单片高集成度无线接收器&…

Spring Boot实现的动态化酒店住宿管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…

pytorch的标签平滑介绍

什么是标签平滑(Label Smoothing)? 标签平滑(Label Smoothing)是一种正则化技术,旨在防止模型过度自信(即输出的概率分布过于“尖锐”)。在分类任务中,标准的目标标签是one-hot编码,也就是正确类别的概率为 1,其他类别的概率为 0。而标签平滑通过将正确类别的概率从…

绝了,这款播放器让发烧友疯狂种草,堪称音乐神器

作为音乐爱好者的不二之选&#xff0c;foobar2000凭借其卓越的音频处理能力&#xff0c;在Windows系统用户中树立了极高的声誉。这款轻量级播放器的设计理念是将极致的性能与个性化完美结合。用户可以根据自己的使用习惯&#xff0c;打造出独具特色的播放界面和操作流程。在音频…

【redis】初识非关系型数据库——redis

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 初识 Redis Redis是⼀种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由string&#xff08;字符串&#xff09;、hash&#xff0…

html 登入界面,用户注册界面相关的标签及案例

案例效果图 以上界面的完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…