阿里云物联网的通信方式

news/2024/10/31 17:00:07/

阿里云物联网通信的两种方式,一个是物模型(分为服务,事件,属性此篇文章只讲解物模型中的服务和属性用法),一个是自定义topic(要另外设置数据流转)
1.使用产品内的功能定义,(其实也就是Topic中定义好的物模型主题),功能定义中有事件,属性,服务三种类型,首先进入产品
在这里插入图片描述
进入产品的功能定义中,选择编辑草稿
在这里插入图片描述
添加自定义功能,
在这里插入图片描述
功能类型可以按照需求选择服务(调用比如开关灯,亮度调节等),属性(显示数据等),事件,其中标识符是代码识别此功能的重要标识,另外参数一定要与代码中调用的参数数据类型一致,
第一步添加服务,以及参数,用于发指令给设备,比如开关,调用,可以带参数
在这里插入图片描述
在这里插入图片描述
第二部添加属性以及数据类型,属性用于反馈设备上的状态,比如是否在线,什么颜色,温度,湿度

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

changeDeviceLight: function (e) {var DeviceName = this.options.deviceNamevar that = thisconsole.log(`携带值为`, e.detail.value)console.log("x",typeof that.data.x) //x为对象格式objectthat.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-",//实例IDProductKey: 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.deviceNamevar that = thisconsole.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-",//实例IDProductKey: 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.ppmy.cn/news/1543390.html

相关文章

hivesql学习大纲

引言 - 简述Hive的用途和特点 - 为什么学习HiveSQL 第一部分:Hive基础 1.1 Hive简介 - 定义和架构 - Hive与传统数据库的区别 - Hive的应用场景 1.2 Hive环境搭建 - 所需环境和依赖 - 安装和配置Hive - 启动和停止Hive服务 1.3 Hive数据模型 - 数据库&#xff0…

关于synchronized死锁问题

大家先猜一下下面这个代码是否可以成功运行? Thread t new Thread(() - >{ synchronized(locker){ synchronized(locker){ //..随便写点啥都行 System.out.println("hello");}} }); t.start(); 从直观上感觉,这个加锁应该是不能成功呀!…

Django-中间件

定义: 编写中间件: 注册中间件: 添加中间件: 1.在项目目录下添加一个文件夹(名字随意),然后文件夹下创建.py文件 2.将中间件添加到setting文件中 MIDDLEWARE [django.middleware.security.Se…

2024年【北京市安全员-A证】考试题及北京市安全员-A证复审考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-A证考试题是安全生产模拟考试一点通总题库中生成的一套北京市安全员-A证复审考试,安全生产模拟考试一点通上北京市安全员-A证作业手机同步练习。2024年【北京市安全员-A证】考试题及北京市安…

Word试题快速转换制作excel题库

一、问题描述 一些考证培训类的APP经常需要excel表格类型的题库,其结构如下图所示。从左往右分别是“题干”,“选项A”,“选项B”,“选项C”,“选项D”,“正确答案”,“解析”。 往往&#xff…

C语言:水仙花树,要求三位以上的N位整数每位的N次方等于数本身,全部输出出来

#include <stdio.h> int main() { int n; scanf("%d",&n);//这里是说明多少n位整数 int first1; int i1; while(i<n){//此while循环可以得到n位数的最小位,例如3位的100. first*10; i; } ifirst; whil…

禾川SV-X2E A伺服驱动器参数设置——脉冲型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

python之爬虫遇到返回内容乱码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言解决思路 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 问题复现&#xff1a; import requestsheaders {"Accept": &quo…