赞
踩
是对设备在云端的功能描述,包括设备的属性、服务和事件。物联网平台通过定义一种物的描述语言来描述物模型,称之为TSL(即 Thing Specification Language),采用JSON格式,您可以根据TSL组装上报设备的数据。
设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。属性支持GET和SET请求方式。应用系统可发起对属性的读取和设置请求。
通过期望属性值功能,设置您希望的设备属性值。若设备在线,将实时更新属性值;若设备离线,期望属性值将缓存在云端。设备上线后,获取期望属性值,并更新属性值。
设备的功能模型之一,设备可被外部调用的能力或方法,可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务。
设备的功能模型之一,设备运行时的事件。事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。例如,某项任务完成的信息,或者设备发生故障或告警时的温度等,事件可以被订阅和推送。
针对采用透传格式/自定义数据格式的设备,需要在云端编写数据解析脚本,将设备上报的二进制数据或自定义的JSON数据,转换为物联网平台支持的Alink JSON数据格式;将平台下发的Alink JSON格式数据,转换为设备支持的格式。
是一个JSON文档,用于存储设备或者应用的当前状态信息。每个设备都会在云端有唯一的设备影子。无论该设备是否连接到Internet,您都可以使用设备影子通过MQTT协议或HTTP协议获取和设置设备的状态。
Topic是UTF-8字符串,是发布(Pub)/订阅(Sub)消息的传输中介。可以向Topic发布或者订阅消息。
同一产品下不同设备的Topic集合,用 p r o d u c t k e y 和 {productkey}和 productkey和{deviceName}通配一个唯一的设备,一个Topic类对一个ProductKey下所有设备通用。
操作Topic的权限类型,对应的英文名称为Pub。可以往此类Topic中发布消息。
操作Topic的权限类型,对应的英文名称为Sub。可以从此类Topic中订阅消息。
# 测试模块是否能正常接收AT指令 AT # 测试模块当前的工作模式,是AP \ 还是STATION站点 AT + CWMODE ? # 设置为站点模式,准备接入家里的路由器AP AT + CWMODE = 1 # 输入路由器的ssid、password AT+CWJAP="chamberlain","mypassword" # ESP8266 可以定期从指定的 NTP 服务器获取准确的时间信息 AT+CIPSNTPCFG=1,8,“ntp1.aliyun.com” # 查看本地IP地址和MAC地址 - 如果能正常响应,说明模块已经正常接入路由器 AT + CIFSR # mqtt 客户端和阿里云通信配置 ( 通过阿里云配置工具生成,需要在物联网平台设备页面,查看productKey、 DeviceName、DeviceName 三个参数,然后用工具生成clientId、userName,password ... ) # 这里需要格外注意,clientId中的逗号要进行转义: , 转义成 \, AT+MQTTUSERCFG=0,1,"12345|securemode=3\,signmethod=hmacsha1|","myled1&k0r3du8umbF","***",0,0,"" # mqtt 客户端和阿里云通信配置 ( 通过这个AT指令,物联网平台的设备正式连通、处于online状态 ) AT+MQTTCONN=0,"k0r3du8umbF.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
可参考csdn博客:ESP-01S使用AT指令连接阿里云
该博客做法是:
在平台的产品上自定义一个topic,然后设备esp8266-01 通过AT指令:AT+MQTTSUB=0,"/k0r3du8umbF/myled1/user/get",1
,订阅该主题
进入物联网平台,找到实际的设备,在设备下找到topic列表,显示该设备定于的主题,然后进入该主题,点击发布消息,这实际订阅该主题的设备就会收到信息。
AT OK
, 其实我们在处理的时候,需要转换成十六进制的形式处理:41 54 0D 0A 0D 0A 4F 4B 0D 0A
这里面包含了0D ( \r :回车控制符 ) \ 0A (\n : 换行控制符)在单片机处理的时候,需要注意处理这些\r\n 转义字符,而不仅仅是处理asicc 对应的字母或者数字、符号等等。
参考esp8266通过MQTT-AT指令连接阿里云互联网平台并收发数据
目的: 测试设备订阅某个主题,当某个主题发布消息的时候,设备是否能收到通知,具体操作步骤如下:
在阿里云物联网平台上,在产品下面的Topic例表中 -> 自定义Topic 中
# 通过串口助手,将设备通过AT指令订阅产品的某一个Topic主题
AT+MQTTSUB=0,"/k0r3du8umbF/${deviceName}/user/get",1
在设备已订阅Topic中点击发布消息:
设备端接收到,主题发布的信息:
步骤:
在产品下方新建:2个物模型数据 CurrentTemperature , Humidity
通过AT指令,将设备通过串口助手,发布到属性上报的主题上,JSON数据格式要严格依照阿里云平台的规定进行,特殊字符需要进行转义,发布mqtt命令指令说明参考:AT+MQTTPUB:发布 MQTT 消息(字符串)
# 串口调试助手发布mqtt消息给平台的:属性上报主题
# 这里的json数据格式可以,在平台的设备模拟中,进行测试,然后copy输出日志中的json即可(注意“,’都需要进行转义)
AT+MQTTPUB=0,"/sys/k0r3du8umbF/doorLight/thing/event/property/post","{\"id\":1705385300790\,\"params\":{\"Humidity\":85\,\"CurrentTemperature\":26}\,\"version\":\"1.0\"\,\"method\":\"thing.event.property.post\"}",0,0
串口发送AT指令到云平台(前提:需要建立mqtt与阿里云的连接):
设备数据上报(发布到属性上报topic后),平台设备物模型数据中,立马更新当前最新的设备数据。
腾讯云物联网平台使用手册
这里举例腾讯云平台的操作:
{
"method": "control",
"clientToken": "123",
"params": {
"power_switch": 1,
"color": 1,
"brightness": 66
}
}
AT + MQTTCLEAN = 0
物模型 属性
数据到特定主题:/sys/k0r3dSfdkXp/${deviceName}/thing/event/property/post
的时候,平台就帮你管理了这个设备的属性集合AT + WIFI 指令集
WiFi指令集通常用于管理和配置WiFi模块的网络连接。这些指令包括连接到WiFi网络、获取IP地址、设置网络参数等。它们操作于网络层和数据链路层,确保设备能够在物理层和数据链路层上与WiFi网络进行通信,从而建立网络连接。
AT + MQTT 指令集
MQTT指令集则用于控制设备与MQTT服务器之间的通信。MQTT是一种应用层协议,通常运行在TCP 传输协议栈之上。MQTT指令集中的指令涉及到建立与MQTT服务器的连接、发布消息、订阅主题等操作,属于应用层协议的控制
这两者有何关系呢?
+---------------------+ +-----------------------+ | 单片机 (客户端) | | 服务器 (服务器端) | +---------------------+ +-----------------------+ | | | | | | | | | +-------------+ | 互联网 | +-----------------+ | | | wifi | | <--------> | | 网络接口 | | | +-------------+ | | +-----------------+ | | | | | | +-------------+ | | | | | 处理逻辑 | | | | | +-------------+ | | | | | | | +---------------------+ +-----------------------+ 这里AT + WIFI 指令集,只能建立网络层、数据链路层的网络连接
AT + MQTT 指令集,能建立设备于服务端的mqtt服务器的通信通道、进行实现数据交换
设备和服务器的mqtt服务的通讯是建立在TCP 传输层
协议层的基础上的
没有网络层、数据链路层作为载体,设备就无法与云端通讯。
设备要和云端建立通讯的步骤:
使用ESP8266的AT指令,通过指定路由器的SSID和密码,连接到WiFi网络。这一步骤涉及到物理层、数据链路层和网络层的建立。
成功连接到WiFi网络后,ESP8266会从路由器获取分配的IP地址,这使得设备可以在网络中被识别和访问。
使用AT指令,通过TCP协议与云平台的服务器建立连接。这涉及到传输层的建立,确保数据的可靠传输。
一旦建立了与云平台的TCP连接,ESP8266可以通过AT指令将采集到的数据封装成消息,然后通过TCP连接发送给云平台服务器。
云平台服务器接收到ESP8266发送的数据后,会进行相应的处理和存储。这包括数据解析、存储到数据库、触发事件等操作。
云平台服务器可能会对ESP8266发送的数据做出响应,例如发送确认消息、执行特定的命令等。ESP8266可以通过TCP连接接收并处理来- 自服务器的响应。
为了确保通信的稳定性和持续性,ESP8266可能会定时发送心跳消息,以保持与云平台服务器的TCP连接活跃。同时,设备也可以根据实际需求定时上传数据到云平台。
可以参考:
计算机网络知识点全面总结
+-------------------------------------------------------+ | 应用层 (Application Layer) Mqtt 协议 | +-------------------------------------------------------+ +-------------------------------------------------------+ | 传输层 (Transport Layer) | +-------------------------------------------------------+ | TCP/UDP 协议 (TCP/UDP Protocol) | +-------------------------------------------------------+ | 网络层 (Network Layer) | +-------------------------------------------------------+ | IP 协议 (IP Protocol) | +-------------------------------------------------------+ | 数据链路层 (Data Link Layer) | +-------------------------------------------------------+ | WiFi/Ethernet 接口 (WiFi/Ethernet Interface) | +-------------------------------------------------------+
为什么设备发布数据到某个主题上,物联网平台就能更新温度、湿度这两个数据呢,原理是什么?
答:
上报数据到云平台,不需要先订阅某个主题吗?直接通过publish指令,上报就行了么?为什么啊?
答:
阿里云物联网平台,提供设备端SDK,这里的设备端SDK,和我平时使用ESP8266 +STM32 开发,有何区别?
阿里云物联网平台提供的设备端SDK与您平时使用ESP8266+STM32开发的主要区别在于它们的目的、功能范围和集成程度。下面分别从几个方面对比说明:
目的与集成程度:
ESP8266+STM32开发
:这种组合通常是指将ESP8266作为Wi-Fi模块,用于实现设备的无线网络连接;STM32作为主控MCU,负责设备的传感器数据采集、控制逻辑执行、与ESP8266的通信等任务。这种方式下,您需要分别对ESP8266和STM32进行独立开发,然后通过串口、SPI、I²C等方式将两者连接起来协同工作。整个系统的设计、集成、调试等工作需要您自行完成。
阿里云物联网平台设备端SDK
:该SDK专为接入阿里云物联网平台而设计,目的是简化设备端与云端的交互流程,让设备能快速、安全地连接至阿里云,实现远程监控、控制、数据上报等功能。SDK已高度集成,通常包含网络连接、身份认证、消息收发、OTA升级等模块,只需将其集成到您的设备端代码中,按照文档指引进行配置和调用即可。
功能范围:
ESP8266+STM32开发
:这种组合涵盖了设备的全部功能,包括硬件驱动、传感器接口、控制逻辑、Wi-Fi连接、数据传输等。您需要全面考虑设备的软硬件设计、电源管理、故障处理、安全性等多个方面。
阿里云物联网平台设备端SDK
:专注于设备与云端的通信部分,主要提供以下功能:
开发难度与资源投入:
ESP8266+STM32开发
:由于需要自行设计和实现大部分功能,开发周期可能较长,技术门槛相对较高,需要投入更多时间和精力在软硬件设计、调试、测试等方面。但这种方式灵活性高,可根据项目需求定制化开发。
阿里云物联网平台设备端SDK
:使用SDK可以大幅降低设备接入云端的复杂性,缩短开发周期,减少技术门槛。SDK通常附带详细的文档、示例代码和开发者社区支持,便于快速上手。不过,您需要遵循阿里云物联网平台的规则和接口规范,牺牲一定的定制化自由度。
总结来说,使用阿里云物联网平台设备端SDK相较于直接使用ESP8266+STM32开发,前者更侧重于设备与云端的无缝对接,提供了一站式的解决方案,简化了网络连接、身份认证、消息收发等核心功能的实现。而后者则需要自行设计和整合所有功能,虽有更高的定制自由度,但开发工作量和复杂性也相应增加。选择哪种方式应根据项目的具体需求、团队技术能力、时间成本等因素综合考虑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。