控制台-左上方-全部产品服务-协议适配。
不支持modbus tcp,支持modbus和modbus rtu,modbus TCP也可以用tcp透传的方式,或者可以自行在tcp协议里自己写个解析脚本。
不支持。
两个都行,有个后端的nodejs的sdk,也有适用ajax的c#。
用户根据应用场景选择一种协议,一个设备只能按照一种协议与平台交互。
不可以修改的,如果能修改了,那么产品下面的设备鉴权信息和方式会发生变化,会造成混乱。
一个产品下可以创建多个设备,根据实名认证的不同类型,有不同的限制。普通用户产品3个,设备100个;完成个人认证用户产品10个,设备1000个;完成企业认证用户产品、设备暂无限制。
产品key可以针对该产品下所有设备进行操作,设备key只针对关联的设备。
设备添加通过产品的Api-key进行新增,设备注册通过产品的正式环境注册码Register-code进行新增。两者取得的效果都是新增设备。
新增设备是通过masterkey作为验证;而masterkey的权限很高。如果不想把masterkey给出去,就用注册的方式,只给注册码即可验证,注册码只能用于注册,权限较低。该功能针对于一个产品下有多个设备供应商的情况,给设备供应商注册码即可,不用给masterkey。
公开协议的产品,只要sn或者mac相同,要么得到的devid和apikey就是相同的,也就是可以重复注册。
目前仅有Studio提供有批量添加设备的api。其他如NB-IoT物联网套件、MQTT物联网套件以及多协议接入均没有提供批量添加/删除设备的API,均需要循环调用添加设备/删除设备api来实现批量,或者直接页面批量导入。
NB的设备可以批量模组导入imei。EDP或者MQTT可以设备侧调用注册设备的API来完成。
支持批量,有两种办法。在页面批量创建设备;硬件设备调用api自动创建设备。
key设备端可以不要,你用鉴权信息作为psw登录就可以了。
都可以,按照接入套件规范发送正确报文即可。
纯8266就用sdk改,单片机加8266就根据平台协议接入,AT也可以。
用c语言libcurl或者用python。先选定构架,mcu型号,在根据设备使用性质决定用什么协议,长连接用MQTT,EDP传感器低功率用LwM2M。
原则上只要能连广域网,都可以连OneNET平台,比如网关可以通过MQTT协议连OneNET。OneNET和局域网通信方式无关,你用LoRa、蓝牙都没关系,但是你的LoRa节点要能通过TCP ip连广域网,或者你的LoRa节点组局域网和你的网关通信,网关在和OneNET通信。
鉴权信息,创建设备时自定义的。现在一般不填,模组还没有适配这个字段。
client id,设备ID是设备名称,不是设备ID。
设备ID都是由平台自动生成的。
产品ID目前没有相关API可以使用,其他API详见开发文档应用开发。
在调用注册设备的api会使用到注册码进行设备注册。
是一个权限分发。如果你只想某个客户访问特定设备的数据或者进行控制的时候,就给他设备级别的apikey防止对你其他设备进行越权控制。
MQTT、EDP、LwM2M、TCP。
设备在发送注册包登录后,就会在线。设备超时时间内未发送心跳或者上传数据就会离线,发送信息格式等错误时也会强制离线。
情况一:发送非法数据会断;
情况二:心跳保活时间内未上传心跳包会断;
情况三:设备主动发送断开连接的指令。
平台显示在线只跟你设置的生命周期有关,就是open后面的那个参数。除非你主动注销登录或者生命周期到了,才会显示离线。没有设置就是默认86400秒,一天。
产品页面设备名称前指示灯显示绿色为设备在线,当显示灰色时为设备离线。
没有发现资源,重新走一下订阅和发现俩步骤。
可能是数据封装格式不对。你可以试试只登陆,然后不发任何东西,秒踢多半是登录成功之后发了错误的数据导致的。任何不符合格式的数据都是错误数据。
创建了实际从未登录过就是未激活,实际设备连接一次之后就激活了。
请排查以下4个方面:创建设备的时候订阅打开;设备列表自动发现资源打开;设备回复平台下发的订阅发现不成功;设备模组侧添加资源对象不成功。
非加密端口没有全面开放。
lifetime是页面显示在线的时间,在线就可以notify,离线了要登录后才能notify。
不用发心跳也不会断开连接的一个时间。
平台最大支持2的31次方减1秒。这个参数一般可以通过AT+MIPLOPEN或者AT+MIPLUPDATE改变他的值。
设备会从OneNET平台离线。
会等到保活时间lifetime到期后,OneNET才发现设备掉线。
在设备登录的时候有一个keepalive字段,就是保活时间,在设备无任何数据交互的时候开始,在这个时间之后平台会认为设备断线。
网络侧最多保活2分钟。为了稳当,你要一分钟上报一次数据。或者去找运营商,开通GRE专用APN。通用APN会存在2分钟左右端口老化的问题,所以达不到实时控制。故引入了GRE专用APN,以延迟端口老化的时间。
第一步,通过各省公司客户经理申请开卡,OneNET专用APN为CMNBIOTOneNET;
第二步,完成开卡后终端侧连接模式为接入机模式(模组-b参数为0),地址为192.168.24.100:5683,门户地址为重庆主平台:https://open.iot.10086.cn ;
第三步,关闭PSM,eDRX即可。
设备离线后,重新登录和初次登录步骤相同。如果为保证设备不出现掉线,及时发送心跳包。LWM2M协议的设备及时发送AT+MIPLUPDAT指令。
是的,等它离线再删除。
不支持批量删除设备。
平台产品或设备删除后,不能恢复。
——————————————————————
一个设备下可以创建多个数据流,目前平台不限制数量。
不可以,建议创建两个不同的数据流。
上传到平台的数据都是以数据点的形式上传,平台不支持图片展示功能。
可以随便填。
一个数据流里面包含经纬度两个信息,value是数据流名称后面的是值。
可以,但得自己写解析函数。
如下图所示:
OneNET平台数据保存时间为一年,容量不限。
二进制文件上传最大800K。
只要存储的都有加密。
没有要求,用模组AT指令设置。例如AT+MIPLADDOBJ=0,3200,1,"1",0,1;AT+MIPLDISCOVERRSP=0,3200,1,4,"5750"。
在addobject的时候,设置对应的参数就行。
目前平台提供API供用户进行数据/设备管理,详情请见:开发文档>选择接入协议>开发指南>API。
数据流现在可以删除,控制台>在顶部全部产品服务中选择接入协议>选择产品>数据流模板>操作>删除按钮。
数据点已经上传了,就在OneNET的数据库里面,是不能随意删除的。
——————————————————————
每个协议接入的IP加端口不一样,详情参考:开发文档-选择协议-设备开发指南-开发指南。
MQTT、EDP。
平台subscribe订阅之后,模组publish消息的时候平台就能收到publish的消息。
这个是因为没有发现资源,有可能设备侧没订阅资源,也可能因为网络原因没订阅成功。需要排查下设备侧,最好把设备侧log打出来,看为什么没发送成功。
设置url参数,关于时间的,默认是返回最新的一个。
信号不好的时候,设备自己要有补发机制,本地先保存数据,网络恢复时补发之前网络异常时的数据。
ping,是不应答的。你可以上报数据代替心跳。就有应答了。
可以。
设备id,登录鉴权肯定有设备id的。
暂时没有这个api接口。
重新发起。一般在生命周期过期之前去updata更新下。
关闭自动发现资源,就没有discover这步。
你需要看资源列表就要重来一次,不看只资源列表的话,可以进行数据上报,命令下发。区别仅仅是有没有资源列表,不影响其他功能。
写和执行均可对设备进行命令操作,执行只支持字符串下发,写的类型支持更多。
读:OneNET发起读取之后,NBIOT设备会受到读取的命令,然后NBIOT设备回复读取命令,回复读取的命令会包含要读取的信息。
写:向NBIOT设备执行写操作,NBIOT设备会获取到相关写命令,然后取执行对应的操作。
执行:和写差不多,执行只能发string格式。
下发即时命令需要设备在线且下行端口没有老化的时候才能抵达设备,缓存命令可以在设备离线的时候下发,等待有上行数据的时候抵达设备。
即时命令:三方平台下发命令到OneNET,OneNET立即将命令下发给设备。
缓存命令:三方平台下发命令到OneNET,设置好触发下行的条件,OneNET先把命令保存起来,等满足了条件再下发给设备。两种命令设备都需要回复到平台,平台拿到结果会立即转发给三方平台。
平台向设备发送数据使用不同协议有不同的发送方式,详细方式见使用协议接入文档。
上报数据的AT指令NOTIFY有可选参数ackid,带这个参数上报,平台会回复。
EDP、MQTT、NB-IoT。
直接发十六进制。
直接去ntp服务器拉时间,开发板例程有,参考下。
可以看看6312上电时的串口打印,如果是v28版本的就需要更新固件。
读都是有上行比如登录的时候读取版本号,不会定时不定时去读的。
是的。
最常2K,然后会分包,每包512字节。
指的是下发了,但设备没正常响应。
可能调用太快,等一下再试。
分块传输。API下发命令最大2kb,然后分块最大是512字节。
没有。
NB的设备目前最多缓存10条,其他设备没有限制。
这个错误一般是资源类型和参数中的类型不一致导致的,这个只能在执行中才会判断。
和qos有关,0:最多发送一次,不关心设备是否响应 1:至少发送一次,如果设备收到命令后没有应答,则会在下一次设备登录时若命令在有效期内(有效期定义参见timeout参数)则会重发该命令。
没有下发文件的接口,只有文件上传,命令下发。
设置timeout参数,命令有效时间,默认0。0:在线命令,若设备在线,下发给设备,若设备离线,直接丢弃。>0: 离线命令,若设备在线,下发给设备;若设备离线,在当前时间加timeout时间内为有效期,有效期内,若设备上线,则下发给设备。单位:秒。有效范围:0~2678400。
如果在应用调用的API指令成功后,OneNET平台会返回执行结果。
如果下发10条notify触发类型的缓存命令,登录上线第一次notify上报数据,进而收到第一条命令,模组RSP回复;马上收到第二条,模组RSP回复;马上收到第三条,模组RSP回复;收到第四条以此类推。
会提示你发不下去的,队列里面最多就10条。
如果长时间没有上行数据,核心网会踢掉之前缓存的连接信息,路由是找不到设备的,所以会导致超时。此时就必须等待设备再次(如0.5h设备上传一次数据)给平台上传数据,即等待通信链路的恢复。参考:https://blog.csdn.net/qq_43359106/article/details/84334494。
上报数据什么类型,就是什么类型。
上报数据2分钟内下发,且需要设备响应。
单个设备间隔时间1s,没有次数限制。
设备上报完数据就下发。
显示在线就能发。
可以的,就是保存时间有限制,如果要长时间存的话建议存到自己的服务器里。
立即。
有的,不过是设备主动校正。平台提供了这个服务,设备调用平台的服务就可以了,按照标准NTP协议就行。
——————————————————————
是的,设置填完后会验证,验证过了会推送。
接下来你需要将在平台上注册的信息跟你现有的设备相对应:根据你注册的相关信息,参考开发文档不同协议对于的服务器端口地址、相关上传规则、产品ID等信息与设备绑定,然后在上传OneNET就可以在平台上看见你上传的信息了。
可以,OneNET有API接口。
调用API,发起GET或者Request请求,带上所需要的参数,把返回的Json解析好,获取到想要的数据。
只能通过API。
API或者推送。
可以用数据推送。
Studio:https://open.iot.10086.cn/doc/iot_platform/book/application-develop/push/http_push.html;
其他接入协议:https://open.iot.10086.cn/doc/multiprotocol/book/manual/httppush/introduce.html
安卓app可以用MQTT协议连。SDK下载推荐使用第三方SDK,请访问:https://github.com/mqtt/mqtt.github.io/wiki/libraries。
支持数据推送的。
秒。
HTTP推送免费,没有数量限制。
是数据到到平台的时间。
配置第三方应用时配置的url,服务器向该url推送数据。
没有接口,只能在平台手动打开。
支持HTTP或者HTTPS。
不可以。
不支持,必须公网。
目前只能在平台全局推送处手动打开。
实时推送。但是昨天推的如果没应答,后面还会再推。
抓包,看返回多余的BOM没有。
全局推送每个产品只能创建一个,可以使用群组推送。同一产品可以设置多个群组推送,单个设备可以关联多个群组。
数据推送,OneNET相当于客户端,HTTPS推送,是你的服务器支持别人https访问你的接口即可。
如果"推送时间间隔"和"推送数量累计"大于1,有时候就会推送数组,否则每次推送是都是单一的数据。
这种情况可能是应用与OneNET平台已断开连接,OneNET在没有收到应用确认的情况下,会一直推送数据,直到2000条才停止推送。推送2000次,或者连续24小时都出现推送失败就会停用。只要OneNET把数据post你的服务器接口地址,你没有在5秒返回200成功码即为失败。假设A消息推送失败100次,即产生100次错误,在101次成功,会清除掉自己A累计的100次。建议收到数据先缓存,可利于redis或者 MQ等缓存技术,实现异步处理。
官网开发文档里有详细说明,第三方服务端要返回msg。 用户在配置页面完成配置并点击“提交”时,OneNET平台会向填写URL地址发送HTTP GET请求进行URL验证,请求形式示例如下:http://url?msg=xxx&nonce=xxx&signature=xxx 。其中,url为用户在页面配置时填写的URL,nonce、msg、signature用于URL及token的验证。
token验证过程如下:将配置页面中配置的token与nonce、msg的值计算MD5,并且编码为Base64字符串值,将上一步中Base64字符串值通过URL Decode计算后的值与请求参数signature的值进行对比,如果相等则表示token验证成功;如果token验证成功,返回msg参数值,表示URL验证通过;如果用户不想验证token,可以选择跳过MD5计算过程,直接返回msg参数值。
你第一次配置推动地址的时候验证一次就行了,后续不用再验证URL可用性。具体可以参考官网HTTP推送的文档:https://open.iot.10086.cn/doc/book/application-develop/httppush/introduce.html。
只有关闭csrf的token验证。
第三方服务器推送停用主要有两种原因:一是24小时之内出现连续推送失败的记录,二是某一条消息因为推送不过去导致连续失败2000次。只要OneNET把数据post你的服务器接口地址,你没有在5秒返回200成功码即为失败。假设A消息推送失败100次,即产生100次错误,在101次成功,会清除掉自己A累计的100次。建议收到数据先缓存,可利于redis或者 MQ等缓存技术,实现异步处理。
需要在5秒内给OneNET响应HTTP请求的成功状态码。
首先会重复推送,但是累积重复条数达到2000次或者连续24小时会停掉推送功能。
请参考:https://open.iot.10086.cn/doc/multiprotocol/book/manual/httppush/develop-manual.html。
不是,目前仅能关联在“数据流模板”中创建的“模板”类型数据流。
在提交验证时采用get方法传三个参数nonce、msg、signature,返回结果没有正确返回msg的值,比如在msg值中多返回其他符号,都会验证失败。
图片是二进制的文件格式,api拉取文件后,做格式转换。
量小HTTP接口自己取,量大服务器推送。
可以查看详情,所有的正确的数据都显示,大于一秒一次我们保证数据不丢失,一秒传多次我们不保证数据不丢失。
用okhttp。
——————————————————————
设备管理-日志查询,可以看日志。
在论坛下载对应版本的固件和固件下载工具。固件升级用串口,不是用stlink。
目前文档中心没有相关介绍,但是控制台里可以进行相应操作,请先在“群组管理”添加群组,再在“数据推送”进行操作,把设备添加到同一个群组里面,让平台向第三方URL地址,推送这个群组里的设备数据流的数据即可。
都没有。
每秒一次可以。但NB通讯协议不支持那么高频率,一般要求5秒以上间隔。
强制转换成utf-8。
要设置limit参数,指定数据条数,默认100,limit最大设置为6000,需要指定一下limit参数。
触发器邮箱只能是注册时绑定的邮箱,如若想更换邮箱可点击安全设置>邮箱换绑。
在创建触发器时触发条件选择为inout方式时,数据流首次进出区间触发器响应一次,保持在区间不会持续响应,不同触发方式的不同点可参考应用接入文档中触发器api章节。
是的。
type为inout时,threshold设置为{"lolmt":40, "uplmt":52},表示数据流的值首次进入或离开闭区间[40,52]时触发。
每次达到符合值,都会触发,上报一次触发一次。
不支持解析json。
不能设置,触发器的功能点比较简单。
有,20次。
不能。
用postman post你url测试下看是不是服务器解析有问题。
暂不支持多点。
——————————————————————
在创建时对body中auth_info中前面这个imei参数进行了校验,imei必须是未使用且真实合法的imei才能通过。
右击,属性,解除锁定。
设备收到数据了需要应答:一看设备收到没;二看设备应答没;如果设备没收到,需要设备上报数据了一定时间内才能收到下行。
没有发现资源,重新走一下订阅和发现俩步骤。
在HardFault_Handler加入while(1);并打个断点,看是从哪进去的。
生命周期到期前,更新生命周期UPDATE。缓存命令下发,时间条件要满足,触发条件满足,设备在线,平台才会下发。
建议使用postman,可能是在线调试工具的问题。
这种情况是需要你们服务器给返回,校验是一个动作。当你点提交的时候,其实是产生了一个get请求,你的url会收到三个参数,你需要原封不动的返回msg的值,不要带任何符号,很多请求返回的信息带了引号。可以参考下图:
在页面配置推送后,点击确定,平台会去你的服务器get数据,返回规定的数据,才会添加成功。参考:https://open.iot.10086.cn/doc/multiprotocol/book/manual/httppush/develop-manual.html。
卡可能出问题了,可以用AT指令试试注册网络正不正常:
发送的心跳没有被检测到。
你打开了map文件,每次编译map文件都有更新的。
没有附着上,试试AT+CGATT=1。
字符串,用于验证签名用的。
LWM2M协议的imei和apikey不对应,其他协议是devid和apikey不对应造成的。
自动发现资源按钮要打开。
要带ackid,平台才会返回。
可以不使用+CMRD这样的方式去读取数据,服务器数据下来之后,通过串口主动返回。
——————————————————————
bootstarp是一种常用的技术手段,是一个接入引导机制,就是给你分服务器资源的。重庆主平台分为引导机和接入机模式两种。引导机分配一个接入机地址,两种方式效果是一样的。
edrx就是介于psm和active之间的一种模式,设备相当于间歇性工作,省电模式较完全睡眠的psm会功耗高一点,在睡眠的这段时间设备无法收到下行数据,但是到了设备寻呼时间窗又可以收到数据,只是会延迟,延迟的时间就是edrx模式下睡眠的这段时间,这个应该是可以自己设置的时间,寻呼窗时间一过,设备又进入睡眠,如此循环下去。
execute只能发字符串,write可以发多种格式数据。
接入机是你的数据实际上传到的服务器地址,引导机可以根据你的所在区域等因素给你一个接入机地址,让你获得更好的网络体验。
总次数没限制,但每秒调用频次限制在300次/秒。
改字体,UTF-8最好。
透传有通用的lua脚本,不需要改。如果透传不满足你要求,需要你学习这种lua然后更改。如果只是透传,是不需要改的。
开发文档里面,多协议接入-开发指南-对应协议-设备开发-文档与工具,例如EDP协议的:https://open.iot.10086.cn/doc/multiprotocol/book/develop/edp/device/doc-tool.html 。
请参考:https://open.iot.10086.cn/bbs/thread-36825-1-1.html。
后面总长度字节。
没有Golang的SDK。
WIFI_info。
应该是不能直接串口写入的,请参考8266AT指令集。
是的。
内存分配失败。
默认是不透明类型,你notify或者read时把type参数改成字符串类型,下发就是字符串形式了。
不是,几种APN都可以。
对,这个旋钮是你设置成某个值下发下去,设备执行后上报当前值。
有的。在下发命令那个api,关注一下timeout那个字段的用法。
登录的时候带上脚本名字。
你可以在原本的程序里面增加一个发送的数据流。比如到预警点之后,发送一个error的字符串。然后在应用里面用文字形式展示出来。
可以。