此前一个项目中需要读取传感器数据,还需要向一些硬件设备下达控制指令。 传感器厂家和硬件设备都没提供HTTP接口,只能直接读写硬件。怎奈研发人员中没有熟悉C/C++的,没有开发Windows或Linux系统的App的经验,而且毕竟是项目,需要保证实时性、稳定性、安全性,不是随便找个人写个DEMO就能应付的,所以只能找现成的解决方案,能快速高效解决问题并稳定可靠。从网上搜索“物联网透传”,找到1个解决方案,值得一提的是能同时支持普通电脑和树莓派,因为项目中传感器和硬件设备在不同的区域,并不在同一个局域网内,如果放置多台电脑成本过高,用树莓派就便宜多了,每个不到1千元,多部署几个也无所谓。下面展示一下常用的API。
1、先获取token
https://domain/api/v1/auth?appId=xxxxx&appSecret=xxxxx
{
"code": 200,
"msg": "成功",
"data": {
"token": "66B35B049CEA45DEABFD808DDCF45A1B"
}
}
2、
查询终端是否在线
https://domain/api/v1/terminal-id?token=xxxxx&terminalId=xxxx
{
"code": 200,
"msg": "成功",
"data": {
"id": 50
"online": "false"
}
}
3、下达指令给传感器/硬件设备
https://domain/api/v1/cmd-via-network?token=xxxxx&terminalId=xxxx
{
"ip": "192.168.2.41",
"port": 8899,
"timeout": 500,
"cmdContent": [ 1,3,5,7,9], #实际指令
"upload": true
}
{
"code": 200,
"msg": "成功",
"data": {
"serialNumber": "1657177271193" #每条指令下达后有一个序列号,用于后期获取结果
}
}
4、获得查询结果
https://domain/api/v1/cmd-result?token=xxxxx&terminalId=xxxxx&serialNumber=xxxxxxxx
{
"code": 200,
"msg": "成功",
"data": {
"success": true,
"result": [1,2, 3, 4],
"terminalId": 1,
"serialNumber": "1657179754618"
}
}
就这几个API就能完成项目的基本需求了,其它的API在项目中也用到了,后续再写。