设备接入

设备接入主要是开发者要实现设备与云平台进行连接、数据交互(上报、透传)、命令控制等过程。目前平台提供多种接入协议类型供选择,分别是TCP、MQTT、TCP透传、HTTP等,通信网络可以是常见的3G/4G、WIFI、以太网口等;设备接入的方案可以是下图中的任何一种:再实现设备接入之前,需要完成以下设备创建的步骤:

之后根据所创建项目的协议类型选择相应硬件进行开发,记录下设备标识与传输密钥。下面分别针对TCP、MQTT、TCP透传、HTTP等协议进行说明:

鉴权机制优势:

token的组成:

token由以上5个参数值组成,每个参数值以"&"字符相连组合,如mtqqdevice1&50046&md5&1566276142807&B8ABEAE97F97C80C3CE7593F9ECDA63Dtoken中sign参数的生成算法为:需将clientId,projectId,method,timestamp四个参数值按固定排序依次拼接(参数间不需要任何拼接字符),再拼接上平台申请的SecretKey,使用method对应的签名算法加签。假设clientId=mydevice,projectId=50023,method=sha256,timestamp=1566276142807,SecretKey=a5528869647040b4a88bb61dcb566eee,那么使用生成的sign参数如下:sign=sha256("mydevice50023sha2561566276142807a5528869647040b4a88bb61dcb566eee)token="mydevice&50023&sha256&1566276142807&"+sign

/*根据协议定义连接请求的结构体*/con_req.msg_type=PACKET_TYPE_CONN_REQ;con_req.device_id="qiuzhb";con_req.key="677abb3a5ff3456fb831c96482f11536";//普通鉴权直接输入传输密钥con_req.ver="V1.0";/*利用SDK中cloud.h中packet_msg方法封包连接协议*/packet=packet_msg(&con_req);/*发送连接协议包数据*/ret=send_packet(sock,packet,strlen(packet),0);若握手连接成功,云端会发送响应成功信息,在设备管理中会看到一个在线标记:若握手连接失败,云端也会发送响应失败信息,告诉失败原因。

利用SDK中提供的接口函数,编写代码将数据上报到平台。以C语言SDK为例,上传一组温度为30℃,湿度为80%RH的数据。

//数据类型为1(JSON格式1字符串)post_req.msg_type=PACKET_TYPE_POST_DATA;post_req.msg_id++;post_req.data_type=1;post_req.data="{\\"nl_temperature\":\"23\",\\"nl_light\":2000\}";post_req.data_len=strlen(post_req.data);packet=packet_msg(&post_req);if(packet==NULL){ MAIN_ERR("packet_msgJSON1error\n");}else{ MAIN_DBG("POSTJSON1\n"); send_flag=1;}/*发送包数据,上报传感数据*/if(send_flag){ ret=send_packet(sock,packet,strlen(packet),0); if(ret<0){ MAIN_ERR("PACKET_TYPE_POST_DATAerror\n"); } free_packet_msg(packet); send_flag=0;}5.查看上报的数据1)设备管理->传感器管理->下发设备按钮右边下拉菜单点击“实时数据开”2)设备管理->传感器管理->历史数据按钮

MQTTS在MQTT协议的基础上加入了SSL/TLS(在SSL/TLS上的MQTT)来提供物联网设备与云平台直接的安全通信功能,设备携带云平台提供的根证书;在使用8883端口建立TLS连接时,设备客户端既对NLECloud进行单向验证,由此,便对中间人攻击带来了较高的要求。TLS单向验证大致流程如下:云平台和设备从CA证书中心取得CA证书(也称根证书),云平台申请生成自已的私钥和证书,客户端用CA证书对云平台的证书进行验证,验证通过说明服务端是合法的,如果验证不过则不与云平台通信。验证通过之后使用一对公钥和密钥进行加解密通信,中间的报文都是加密的。

设备创建时,平台为每个设备分配了唯一的传输密钥(SecretKey),设备接入时需要使用SecretKey计算出的访问token来进行访问安全认证,设备可通过MQTTconnnect报文进行连接,connect报文中三要素填写方法如下:参数是否必须参数说明clientId是设备序列号username是创建设备时平台分配的设备IDpassword是填写经过SecretKey计算的token

本例中,password=经过SecretKey计算的token=clientId&username&method×tamp&sign

若握手连接成功,云端会发送响应成功信息,在设备管理中会看到一个在线标记:若握手连接失败,云端也会发送响应失败信息,告诉失败原因。

组织相应的传感数据,通过MQTT“发送消息”协议进行数据上报。

1)设备管理->传感器管理->下发设备按钮右边下拉菜单点击“实时数据开”2)设备管理->传感器管理->历史数据按钮

在CoAP协议的基础上加入了DTLS来提供物联网设备与云平台直接的安全通信功能,设备携带云平台提供的根证书;在使用5684端口建立DTLS连接时,设备客户端既对NLECloud进行单向验证,由此,便对中间人攻击带来了较高的要求。

设备鉴权成功后,返回结果状态码,同时返回token,该token为后面每次上传数据都需带上,示例:{"ReturnCode":0,"token":"37hp01w1ssqomz8mdfzo001050****ad2b"}

设备与服务器鉴权后,便可以进行传感数据的上报上传:POST/topic/{clientId}/dataHost:nbiot.nlecloud.comPort:5683Accept:application/jsonContent-Format:application/jsonpayload:{your_data}CustomOptions:token

payload说明

"datas":{"apitag1":"value1","apitag2":value2,…}数据类型为2(JSON格式2字符串):apitag1与value数据格式同上,datetime1须是yyyy-mm-ddhh:mm:ss格式"datas":{"apitag1":{"datetime1":"value1"},"apitag2":{"datetime2":"value2"},…}数据类型为3(JSON格式3字符串)示例:value数据格式同上,dt须是yyyy-mm-ddhh:mm:ss格式"datas":[{"apitag":"temperature","datapoints":[{"dt":"2018-01-2222:22:22",//可选"value":36.5//数字浮点字符串}]},{"apitag":"location","datapoints":[…]},{…}]消息上行成功后,返回成功状态码。

大致原理如下,利用CoAP扩展的订阅/发布协议,客户端通过GET请求(设置Option的Oberser值为0)向服务端订阅一个是否有新命令的主题,当服务端检测到有新命令时,通知客户端,客户端在该请求的Respond中编写接收命令和业务逻辑,订阅请求如下:POST/topic/{clientId}/cmdHost:nbiot.nlecloud.comPort:5683Accept:application/jsonCustomOptions:tokenOberser:0

客户端命令订阅成功后,服务端下发命令(如控制某个传感器的开关),客户端会在上次订阅请求的Response中接收到命令,命令报文格式如下:{"t":5,"cmdid":“123456789”,"apitag":"rgb_open","data":{见下表说明}}

客户端处理好命令后,会上传处理结果给服务端,通用消息类型NONPOST请求上传数据资源:

POST/topic/{clientId}/dataHost:nbiot.nlecloud.comPort:5683Accept:application/jsonContent-Format:application/jsonpayload:{your_data}CustomOptions:token

HTTP协议接入主要是采用RESTful风格的"添加传感数据"API接口实现上报数据,不需要建立“连接请求”等过程;在云端添加好传感器后即可直接以JSON格式进行数据的上报。以下为具体的步骤:

THE END
1.IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列2)另一种称为延迟消息:即消息从某端发出后,首先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端。 在上述“消息传递方式2)”中所指的这个容器的一种具体实现就是MQ消息队列服务。 MQ消息队列中间件是中大型分布式系统中重要的组件,它主要用来解决:应用解耦、异步消息、流量削锋等问题,用以https://cloud.tencent.com/developer/article/1346912
2.QQ里发送文件和发送离线文件有什么不同?发离线文件,文件可以保留7天,好友不在线或关闭窗口,好友下次登陆,还能收到的。操作方法如下: 1、首先打开电脑上的QQ软件登陆,点击要发送文件的好友,发现好友是不在线的。 2、打开好友聊天窗口后点击发送文件。 3、弹出的界面点发送离线文件。 4、然后选择电脑上要发送的文件,这样文件就离线发送给了好友。 5、当https://wenda.so.com/q/1455960290721244
3.聊天在线与离线传输文件qq转离线发送和转在线发送有区别吗微信只支持一种文件发送方式,就是发送方把文件发到文件存储服务,然后接收方从文件服务器进行下载。然而,在古老的QQ软件,是支持在线传输和离线传输(微信模式)。 1.离线传输 称之为离线传输,其实是相对与在线传输而言。在qq的概念里,离线传输就是及时对方不在线,仍然可以向其发送文件。 https://blog.csdn.net/littleschemer/article/details/144161451
4.邮件基本概念及发送方式蚂蚁小哥邮件基本概念及发送方式 回到目录 ↑↑↑ 一:邮件发送的基本介绍 在工作中我相信大家会经常和邮件打交道,用邮件来进行信息的交流和汇报工作情况;但是在我们程序员眼里,邮件的用处还是挺广泛的,比如我们在注册账号完成时平台会发送一封邮件给我们,让我们点击邮件里的链接来激活当前注册的账号;其实邮件还可以实现验证码https://www.cnblogs.com/antLaddie/p/15546365.html
5.在线传送和离线传送有什么区别在线传送和离线传送有..但对于大型软件或大量的多媒体文件来说选择哪种方式就要根据具体情况而定:是否需要在两台机器间建立即时连接以及是否能接受较长的传送延迟都可能影响最终的选择https://tieba.baidu.com/p/8808758805
6.交易公告3.11、冷却方式:ONAN(油浸空气循环自冷式) 3.12、有载调压分接开关:变压器生产厂家配套提供,要求选择国内名牌产品,满足国家及行业相关标准,同时必须满足当地海拔 3300m 及其他相关环境参数的要求。 3.13、其他诸如轨距、变压器套管外绝缘泄漏比距、绕组绝缘耐热等级、绕组绝缘水平、温升限值、电压升高时的运行持续时间等https://www.qhggzyjy.gov.cn/ggzy/jyxx/001001/001001003/20211224/4629299d-f91b-4656-be33-3d3213b51cd3.html
7.奥鹏作业答案优学网A、收/发双方可以使用各自独立的接收器/发送器时钟 B、收发双方不必同步 C、省去了同步字符所以传送效率高 D、校验方法多 三、判断题(共5题,20分) 1.传输距离较远时,常采用并行传送方式,传输距离较近时,常采用串行传送方式。 A、错误 B、正确 http://www.youxue100f.com/jldx/2023-04-24-11965.html
8.前端和框架(144)少部分浏览器不支持,浏览器支持的程度与方式有区别。 http://www.cnblogs.com/best/p/5695570.html#_label1 3、什么是magic string 4、如何创建响应式布局 @media (min-width: 768px){ .pg-header{ background-color: green; } } @media (min-width: 992px){ https://www.jianshu.com/p/057e028aa44f
9.qq离线文件如何接收怎样发送qq离线文件3、选择要发送的文件,点击确定,文件开始传送。 4、传送完成之后,聊天窗口提示离线文件上传成功,此时作为接收方也会收到提示。 QQ离线文件和在线文件有什么区别 1、文件处理方式不同 在线传送:文件是点对点的,就是文件的发收双方。 离线传送:发送方先将文件上传至服务器,待接收方上线后会收到文件接收通知,直接从服https://www.tianqi.com/toutiao/read/103521.html
10.即时通信教学设计9篇(全文)(1) 图七所示的就是封锁UDP方式之后的抓包图, 由于Binding Response包被拦截, 客户端发送Binding Request之后长时间没有收到来自服务器发送回来的Binding Response包, 客户端就会自动转向使用TCP (9000) 端口和HTTP (80) 端口来传输数据。 (2) 图八黑色的包就是MSN在视频传输时通过TCP直接传输时被截住的包。 https://www.99xueshu.com/w/file7y9jjdrh.html
11.思科网络技术学院教程(第6版):网络简介第8章“对IP网络划分子网”:探讨如何根据网络需求以最佳的方式划分IP地址空间,以改善网络性能。探讨如何确定有效的主机地址以及子网地址和广播地址。这一章探讨子网划分时,涉及IPv4和IPv6。 第9章“传输层”:介绍了传输控制协议(TCP)和用户数据报协议(UDP)以及它们如何通过网络传输信息。探讨TCP如何使用分段、三次握手https://www.epubit.com/bookDetails?id=N15003
12.我们给区块链提了这100个问题来全面扫盲科技频道区块链是一个集合了密码学、分布式储存、智能合约、共识算法等多种新兴技术的数据传输方式,本质上是一种集成技术,而非一个特定技术的发明。 区块链本质上是一个应用了密码学技术的,多方参与、共同维护、持续增长且不可篡改的分布式数据库系统,也称为分布式共享账本。在数据上传的过程中,数据会被打包到一起形成一个https://tech.hexun.com/2019-11-13/199255086.html
13.网红面试题:从输入Url到看到页面发生了什么主要是为了确认双方的接收能力和发送能力是否正常、制定自己的初始化序列号为后面的可靠性传送做准备。 可以理解为一对男女要分手。 女方提出分手,说你对我不好,我要分手。 男方觉得需求合理,同意分手,但分手之前要把联系方式、合照、各种乱七八糟的的事情算清楚再分手。 https://www.51cto.com/article/707647.html
14.揭秘QQ文件传输,是否全经服务器转发及传输速度解析2、在局域网内,QQ传输文件通常不会经过腾讯的服务器,而是通过点对点的方式进行传输,这样可以提高传输速度。 QQ在线发送和离线发送的区别 1、在线发送文件需要双方同时在线,而离线发送文件则不需要接收方在线,离线发送时,发送方只需将文件上传至服务器,接收方上线后会收到文件接收通知,然后从服务器下载文件。 http://www.cloud12.cn/53B2f5776b6a.html
15.面试:可以写到简历上的分布式IM即时通讯系统冰河技术分布式IM即时通讯系统本质上就是对线上聊天和用户的管理,针对聊天本身来说,最核心的需求就是:发送文字、图片、文件、语音、视频、消息缓存、消息存储、消息未读、已读、撤回,离线消息、历史消息、单聊、群聊,多端同步,以及其他一些需求。 对用户管理来说,存在的需求包含:添加好友、查看还有列表、删除好友、查看好友https://binghe.gitcode.host/md/project/im/start/2023-12-08-interview.html
16.一种LORA集中器及其数据传输方法系统专利专利查询LORA节点处于离线状态,则LORA集中器返回给服务器错误代码,LORA节点处于在线状态,LORA集中器将服务器发送的参数配置命令进行存储,并向服务器发送等待指令,当LORA节点上传数据完成后,LORA集中器再将服务器发送的参数配置命令发送至LORA节点,如果节点类型为实时传输类型,则服务器发送的参数配置命令立即通过LORA集中器发送至https://www.tianyancha.com/patent/6f9b691ec582185f824a2543929706f8