设备私有化代理配置 - 私有化热点

通过在设备现场开放“私有化热点”,设备在连接热点后,向服务器发送私有化配置如接口请求,并保存接口返回的配置信息。

私有化热点方式不仅可以配置私有化设置,还可以同时为设备进行网络配置。
私有化热点配置方式需要编程实现一个接口,以供设备请求配置信息。

开放私有化热点

请在设备现场 开放2.4G无线热点:
热点名称:
pvt-ip地址-端口号
热点密码:
unisoft.cn [固定]
1. 热点开放后,请重启设备,设备将扫描附近网络中的“私有化配置热点”
2. 发现热点后,将使用上面的名称和密码连接这个热点
3. 成功连接热点后,设备将向 http://ip地址:端口号/private 发起请求
4. 请求成功后,设备将保存接口返回的私有化配置信息
如:在现场开放(名称为:pvt-192.168.1.5-888|密码为:unisoft.cn)的无线热点, 设备将在成功连接此热点后,立即请求 http://192.168.1.5:888/private 配置接口来获取设备的私有化配置信息

设备发起配置请求

当设备成功连接私有化配置热点 “pvt-ip地址-端口” 时,会立即请求私有化配置接口:
http://ip地址:端口/private
请求协议:HTTP;请求方式:GET。
设备未发现私有化配置热点,或无法连接此热点,则不会向此接口发起请求。
请求失败后,设备会断开热点,重新连接(只要此热点存在),并继续请求此接口。

设备发起请求时携带的参数,请根据参数有可针对性的返回配置信息。

参数 / 名称 / 类型 说明
产品代号
product
字符串
产品代号(Key)为常量,在同一产品的不同设备上,这个值相同,且永不变化
产品Key可在控制台对应的产品详情页查看。
设备ID
device
整型
设备ID平台唯一,在同一设备上,这个值永不变化
设备ID即为贴在设备外壳上的设备标签上的数字ID,在控制台对应的设备详情页也可查看。
时间戳
ts
11位整型
设备发起请求时的时间,此参数的值依赖设备的标准时间, 而标准时间通过设备NTP接口获取。 当NTP接口获取失败时,这个值为0
签名
sign
32位字符串
为判断请求是否有效,可通过签名来判断。 具体算法:
md5(接口IP地址 + "." + 端口号 + "." + 产品代号 + "." + 设备ID + "." + 设备密码 + "." + 时间戳)

在局域网等场景,也可以不验签

配置接口实现方法

可在任何设备能访问的网络服务器上,通过web服务来实现此接口。

可以是iis、apache、nginx等任意web容器
可以跟broker在同一台服务器
可在接口中添加日志记录,以供调试使用

由于设备是通过热点连接网络,并发起接口请求, 因此必须保证开放热点的设备(可以是手机、笔记本电脑等),与接口服务器网络互通。

请一定确定设备可以正常访问此接口!

配置接口返回格式

设备在连接热点后,会立即发起请求,请根据设备选择输出私有化配置参数。

参数 / 名称 说明
状态码
code
必须为200
数据
data
返回数据格式如下: (无顺序要求)
时间接口
ntp
不超过100位的字符串
如设备对标准时间无要求,可不填(生产环境不推荐)
设备上线时,会发出一个HTTP请求到指定的URL,用来同步Broker和自身的时间,这个非常重要。
具体的时间服务实现方法,在“NTP接口”一节有详细描述。
需要注意的是:这里的NTP服务为HTTP请求,是一个Url,而不是系统的NTP服务,请勿在NTP地址中输出NTP服务器的域名。
注册接口
reg
不超过100位的字符串
如不需注册验证,可不填(生产环境不推荐)
设备上线时,会发出一个HTTP请求到指定的URL,用来获取用来连接Broker的 Username(用户名)和Password(密码),如未指定此接口,将会使用设备默认的用户名和密码。
具体的实现方法与返回格式,在“注册接口”一节有详细描述
如果输出了注册接口,并且在接口中输出了以下信息,那么以下信息均可选填。
主机
host
不超过64位的字符串
输出Broker服务开放出的IP地址(一般就是Broker服务所在服务器的IP地址或域名)和端口。 一定要跟设备之后连接的无线网络互通,可以是局域网IP地址。
(尽量使用IP地址而不是域名,在很多公网线路上,DNS解析会有故障)
如不填:需要在注册接口输出地址信息;
如输出:如果注册接口输出地址信息,则优先使用注册接口输出的地址信息;如果注册接口未输出地址信息,则使用输出信息。
端口
port
不超过65535的整型
输出Broker服务开放出的IP地址(一般就是Broker服务所在服务器的IP地址或域名)和端口。 一定要跟设备之后连接的无线网络互通,可以是局域网IP地址。
(尽量使用IP地址而不是域名,在很多公网线路上,DNS解析会有故障)
如不填:需要在注册接口输出地址信息;
如输出:如果注册接口输出地址信息,则优先使用注册接口输出的地址信息;如果注册接口未输出地址信息,则使用输出信息。
设备主题
topic
不超过255位的字符串
设备订阅和发布消息的主题。 不输出,或输出 key / client / 其他。
设备订阅的完整的主题为:{pre}/{type}/{side},其中
{pre}为主题前缀:
输出key(或空)时,主题为:thing/产品代号/设备代号/{type}/{side};
输出client时,主题为:thing/产品代号/设备client/{type}/{side};
输出其他非空字符串时,主题为:输出值/{type}/{side}

{type}为消息类型
{side}为客户端还是服务端:server / client
用户信息
user
JSON对象
输出设备登录Broker所需的用户信息:ClientID、用户名、密码。
如留空:需要在注册接口输出用户信息;
如输出:如果注册接口输出用户信息,则优先使用注册接口输出的用户信息;如果注册接口未输出用户信息,则使用输出信息。
网络信息
wifi
最大为5的数组
请输入设备即将连接的wifi网络信息

返回示例: