更新记录
1.0.1(2024-07-12)
- 添加设备accessToken 获取,绑定设备,创建、授权子账户,S2V智能摄像机联网等操作功能
- 获取已绑定与未绑定设备列表,lot设备预警回调接口
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
lc_device_uniapp
介绍
Uniapp 调用 uniplugin_lcdevice-release.aar 插件,实现操作乐橙设备功能
软件架构
无
安装教程
- 直接引入项目即可
使用说明
-
插件目录结构
-
package.json配置
{ "name": "乐橙设备操作", "id": "lcdevice-module", "version": "v1.0.2024.06.16", "description": "乐橙设备插件,联系QQ:1426429456@qq.com", "_dp_type": "nativeplugin", "_dp_nativeplugin": { "android": { "plugins": [{ "type": "module", "name": "lcdevice-module", "class": "com.example.uniplugin_lcdevice.LCDeviceModule" } ], "dependencies": [ "androidx.appcompat:appcompat:1.0.0-alpha1" ], "integrateType": "aar", "minSdkVersion": "21", "abis": [ "armeabi-v7a" ], "useAndroidX": true, "permissions": [ "android.permission.REBOOT", "android.permission.SHUTDOWN", "android.permission.DEVICE_POWER", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAG", "android.permission.WRITE_SETTINGS", "android.permission.BLUETOOTH_CONNECT", "android.permission.BLUETOOTH_SCAN" ] } } }
-
运行效果
接口文档
1. 获取管理员token
-
说明 根据管理员账号appId和appSecret获取accessToken,appId和appSecret可以在控制台-我的应用-应用信息中找到
注意
1、获取到的管理员token有效期是3天,请在即将过期或者接口报错TK1002时重新获取,每个管理员token具备独立的3天生命周期,请勿频繁调用避免占用过多接口调用次数。
2、获取到的管理员token超过2天但未满3天,此时再请求accessToken接口时,会返回新的管理员token,老token和新token生命周期相互独立,且都可以正常使用。- 方法名
accessToken
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId |
- 返回示例
{"accessToken":"At_0000hz4f2902a9ec2f461c89fdb6f308","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
accessToken | string | 管理员token |
msg | string | 返回消息 |
账户对接
创建子账号
- 方法名
createSubAccount
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
token | 是 | string | 管理员accessToken | ||
account | 是 | string | 手机号或者邮箱 | ||
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId |
- 返回示例
{"token":"At_0000hz4f2902a9ec2f461c89fdb6f308","account":"1875*******54","openId":"","msg":"com.example.uniplugin_lcdevice.mobilecommon.AppConsume.BusinessException: SUB1010子账号创建失败,账号已存在。"}
* 返回参数说明
|参数名|类型|说明|
|:----- |:-----|-----
|accessToken |string| 管理员token |
|msg |string| 返回消息 |
###### 根据子账号获取openId
* 方法名
`getOpenIdByAccount`
* 参数
|参数名|必填|类型|默认值|合法直|说明|
|:----- |:-----|:----- |:-----|:----- |-----
|token|是 |string|| |管理员accessToken |
|account|是 |string ||| 手机号或者邮箱 |
|appSecret |是 |string|| |appSecret |
|appId |是 |string ||| appId |
* 返回示例
```json
{"openId":"18959d97d8bd45a68aecba4bb1e564ae07","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
openId | string | 子账号Id |
msg | string | 返回消息 |
获取子账号token
- 方法名
getOpenIdByAccount
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
token | 是 | string | 管理员accessToken | ||
openId | 是 | string | 子账户ID | ||
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId |
- 返回示例
{"accessToken":"St_0000hzc9c5fe669ef44e07ab596ef884","msg":"success"}
* 返回参数说明
|参数名|类型|说明|
|:----- |:-----|-----
|accessToken |string| 子账号accessToken |
|msg |string| 返回消息 |
###### 添加子账号权限
* 说明
> 此接口目前只给设备授权配置权限(更多权限,下版本更新)
* 方法名
`addPolicy`
* 参数
|参数名|必填|类型|默认值|合法直|说明|
|:----- |:-----|:----- |:-----|:----- |-----
|token|是 |string|| |管理员accessToken |
|openId|是 |string ||| 子账户ID |
|appSecret |是 |string|| |appSecret |
|appId |是 |string ||| appId |
|deviceId |是 |string ||| 设备S/N |
* 返回示例
无 data 返回
```json
{"code":"0","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
code | string | |
msg | string | 返回消息 |
设备管理
绑定设备
-
说明
将设备绑定在指定账号下
- 方法名
bindDevice
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
token | 是 | string | 管理员accessToken | ||
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId | ||
code | 是 | string | code统称为设备验证码,针对不同的场景传的code值也会不一样,如下:1、如果未修改过设备密码,则传设备底部标签中(或二维码中)8位数字的安全码;2、如果修改了设备密码,则传修改后的设备密码;3、如果未修改过设备密码,且该设备底部标签中(或二维码中)没有8位数字的安全码,则code值传空即可。 | 设备验证码 | |
deviceId | 是 | string | 设备S/N |
- 返回示例
{"data":"{\"msg\":\"操作成功。\",\"code\":\"0\"}","msg":"success"}
* 返回参数说明
|参数名|类型|说明|
|:----- |:-----|-----
|data |string| 返回数据 |
|msg |string| 返回消息 |
###### 解绑设备
* 说明
> 备注:1、设备解绑后,报警消息立即删除
<br>2、云录像不会马上删除,而是过期自动删除
<br>3、设备解绑时已开通的云存储套餐会自动返回开发者账号下,可以继承给该账号下其他设备
<br>4、传subDeviceId解绑子设备时,是解除子设备和上层网关设备deviceId的关联关系,网关设备不会解绑
* 方法名
`unBindDevice`
* 参数
|参数名|必填|类型|默认值|合法直|说明|
|:----- |:-----|:----- |:-----|:----- |-----
|token|是 |string|| |管理员accessToken |
|appSecret |是 |string|| |appSecret |
|appId |是 |string ||| appId |
|deviceId |是 |string ||| 设备S/N |
|productId |否 |string ||可通过listDeviceDetailsByIds、listDeviceDetailsByPage获取| 设备产品id,解绑 子设备 时必填 |
|subDeviceId |否 |string ||可通过listDeviceDetailsByIds、listDeviceDetailsByPage获取| 子设备序列号,解绑 子设备 时必填 |
* 返回示例
```json
{"data":"{\"msg\":\"操作成功。\",\"code\":\"0\"}","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | string | 返回数据 |
msg | string | 返回消息 |
设备配置
设备当前连接热点信息
- 方法名
currentDeviceWifi
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
token | 是 | string | 管理员accessToken | ||
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId | ||
deviceId | 是 | string | 设备S/N |
- 返回示例
{"data":"{\"intensity\":\"4\",\"ssid\":\"Redmi_B171\",\"linkEnable\":true}","msg":"success"}
* 返回参数说明
|参数名|类型|说明|
|:----- |:-----|-----
|data |string| 返回数据 |
|intensity |int| 强度,0最弱,5最强 |
|ssid |string| 当前连接的热点名称 |
|linkEnable |boolean| 是否连接了wifi,true:是,false:否 |
|msg |string| 返回消息 |
#### 设备查询
###### 分页查询设备详细信息
* 方法名
`listDeviceDetailsByPage`
* 参数
|参数名|必填|类型|默认值|合法直|说明|
|:----- |:-----|:----- |:-----|:----- |-----
|token|是 |string|| |管理员accessToken |
|appSecret |是 |string|| |appSecret |
|appId |是 |string ||| appId |
|page |是 |int ||| 查询页码,从1开始 |
|pageSize |是 |int ||| 每页条目数,范围:1~50 |
|source |是 |string |bindAndShare|bind:获取绑定的设备 share:获取分享的设备 bindAndShare:获取绑定及分享的设备| 关系类型,子账号传该参数不起作用 |
* 返回示例
```json
{
"data": "{\"count\":2,\"deviceList\":[{\"catalog\":\"\",\"source\":\"bind\",\"multiFlag\":false,\"deviceId\":\"8CF681FFFEF50FCF\",\"deviceName\":\"IOT-ZP1-CN-0FCF\",\"deviceStatus\":\"online\",\"accessType\":\"PaaS\",\"channelList\":[],\"p2pPort\":\"554\",\"encryptMode\":\"0\",\"tlsPrivatePort\":\"37778\",\"parentDeviceId\":\"59DAEACPSF00002\",\"brand\":\"lechange\",\"devicePassword\":\"lHo34HQePoBmv/KKnt6YHQ==\",\"playToken\":\"aFacsWGj36TPuTQnH9lSZlJ8fx2UOlKEjHVVWp2HYIZImeAWlPJQ5nXmRgjAeiZsahzQZSDm6IME4Wq2SsqLl63dQVxEupLYCUmYB7KCXzCPfPy2mnAuL2TeHavbUFjGJHRKr0z3JMGVkBW6g0/fPyR86Yl5BKx41HalyjzANYcxXwuvy9zO77UVc6wZsyYdJ44qr4bRORipS5M6kjgWc4c/G8i2h10mn9wqCIWwXYhCv5v7SDuD+fJfwRqvIzox0rNxmbtlvjbTjxZcKfLxtg==\",\"deviceUsername\":\"I9geFS1oQiWVr7MdrZOOoQ==\",\"expandChanNum\":\"\",\"parentProductId\":\"Z8vP1yHQ\",\"productId\":\"rQ1SMVkC\",\"trackFollowStatus\":\"\",\"httpPort\":\"80\",\"privatePort\":\"\",\"rtspPort\":\"554\",\"deviceVersion\":\"IR100_v1.2.0\",\"wifiConfigMode\":\"accessory\",\"deviceAbility\":\"\",\"port\":\"37777\",\"wifiConfigModeOptional\":false,\"defaultWifiConfigMode\":\"accessory\",\"lastOffLineTime\":\"\",\"tlsEnable\":false,\"deviceModel\":\"ZP1-CN\",\"hwId\":\"\",\"isSubDevice\":true,\"canBeUpgrade\":false},{\"subDeviceList\":[{\"subDeviceStatus\":\"online\",\"subDeviceProductId\":\"rQ1SMVkC\",\"subDeviceModel\":\"ZP1-CN\",\"subDeviceName\":\"IOT-ZP1-CN-0FCF\",\"subDeviceId\":\"8CF681FFFEF50FCF\"}],\"catalog\":\"\",\"source\":\"bind\",\"multiFlag\":false,\"deviceId\":\"59DAEACPSF00002\",\"deviceName\":\"ZG1-CN0002\",\"deviceStatus\":\"online\",\"accessType\":\"PaaS\",\"channelList\":[],\"p2pPort\":\"554\",\"encryptMode\":\"0\",\"tlsPrivatePort\":\"37778\",\"brand\":\"lechange\",\"devicePassword\":\"TEvUXDfdPAzoza3ypkBAKw==\",\"playToken\":\"CcexKkvMtRHs+OH4praQjLsIDtrAagNE41naRWFhOCyT+gA8qM4m4a2Y3D6Pen1F1jwuuU7m57Mdwk99TkaKbgnrAMxQZUeP0u+/MWVBphqkHis4xx+sc+OQIY5VJNqwA4JS2lfgszdnvWnfOQkglERL8Up1KBglqORLXJIQzWoVulMH9GW04/BtigkC6QqLFS+9gn9bNTot92KYnedFHNG2YJbAK9d7O/WJEDNpA2w=\",\"deviceUsername\":\"ZQrp2lsHu2fC1Ib9H+4i4g==\",\"expandChanNum\":\"\",\"productId\":\"Z8vP1yHQ\",\"trackFollowStatus\":\"\",\"httpPort\":\"80\",\"privatePort\":\"\",\"rtspPort\":\"554\",\"deviceVersion\":\"1.1.0\",\"wifiConfigMode\":\"lan,wifi\",\"deviceAbility\":\"\",\"port\":\"37777\",\"wifiConfigModeOptional\":false,\"defaultWifiConfigMode\":\"wifi\",\"lastOffLineTime\":\"20240604T181756Z\",\"tlsEnable\":false,\"deviceModel\":\"ZG1-CN\",\"hwId\":\"\",\"isSubDevice\":false,\"canBeUpgrade\":false}]}",
"msg": "success"
}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | string | 返回数据 |
msg | string | 返回消息 |
推送配置
设置报警回调地址
- 方法名
setMessageCallback
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
token | 是 | string | 管理员accessToken | ||
appSecret | 是 | string | appSecret | ||
appId | 是 | string | appId | ||
status | 是 | string | "on","off" | 是否订阅消息 | |
callbackUrl | 否 | int | "" | 消息回调URL status为on时,必填;status为off时,可为空; | 开发者接收设备消息的地址,需要可以被外网访问 |
callbackFlag | 否 | string | "" | alarm:设备告警消息推送;deviceStatus:设备上下线消息推送;iot:IoT物联网设备消息;numberstat:设备客流数据消息推送;faceAnalysis:设备人脸智能消息推送 | 回调类型标识,回调类型可选填以上的其中一个或者多个(中间用逗号分隔)。status为on时,必填;status为off时,可为空。 |
basePush | 否 | string | "2" | "1":推送;"2":不推送 | 标示开发者账号下关联的乐橙APP设备消息是否推送 |
- 返回示例
{"data":"{\"msg\":\"操作成功。\",\"code\":\"0\"}","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | string | 返回数据 |
msg | string | 返回消息 |
LCOpenSDK
开始蓝牙配网
- 说明
备注:
1、需要开启手机蓝牙
2、需要开启手机定位和存储
- 方法名
startBleConfig
- 参数
参数名 | 必填 | 类型 | 默认值 | 合法直 | 说明 |
---|---|---|---|---|---|
deviceId | 是 | string | 设备序列号(S/N) | ||
productId | 是 | string | 设备密码 (扫设备上二维码可获取) | ||
ssid | 是 | string | wifi名称 | ||
wifiPwd | 是 | string | wifi密码 |
- 返回示例
{"data":"","msg":"success"}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | string | 返回数据 |
msg | string | 返回消息 |