# 华普云SDK-JAVA应用示例
**Repository Path**: hpiot/SDK-JAVA-Example
## Basic Information
- **Project Name**: 华普云SDK-JAVA应用示例
- **Description**: 华普云JAVA SDK类库,Spring boot使用示例项目
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2022-07-19
- **Last Updated**: 2023-06-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 华普云SDK-JAVA应用示例
#### 介绍
华普云JAVA SDK类库,Spring boot使用示例项目
1. 封装华普云API接口统一调用功能
2. 封装华普云设备消息接收及发送功能
#### SDK项目引用
Spring boot项目配置文件pom.xml中,添加如下配置
```
com.gitee.hpiot
message-spring-boot-starter
1.2.1
```
#### SDK配置说明
在项目配置文件yml 增加华普云平台创建应用参数
```
hpiot:
sdk:
app:
app-id: 华普云AppID
app-key: 华普云AppKey
app-secret: 华普云AppSecret
```
#### SDK API接口 调用示例
> API调用示例
```
/**
* API服务对象声明
*/
@Autowired
private IApiService apiService;
/**
* 获取App项目列表
*
* @return
*/
@GetMapping("getAppProjectList")
public ApiResp> getAppProjectList() {
return apiService.getAppProjectList();
}
/**
* 获取分组列表
*
* @param projectId 项目id
* @param groupName 查询分组名称(模糊匹配)
* @return
*/
@GetMapping("getGroupList")
public ApiResp> getGroupList(int projectId, String groupName) {
return apiService.getGroupList(projectId, groupName);
}
/**
* 获取设备详情
*
* @param equiSno 设备SN号
* @return
*/
@GetMapping("getEquiInfoBySno")
public ApiResp getEquiInfoBySno(String equiSno) {
return apiService.getEquiInfoBySno(equiSno);
}
/**
* 获取设备列表
*
* @param projectId 项目id
* @param groupId 项目分组id
* @param equiWorkStatus 设备状态 1 在线 2 离线 3 升级中 4 配置中
*/
@GetMapping("getEquiList")
public ApiResp> getEquiList(int projectId, int groupId, int equiWorkStatus, String dataHandleType) {
return apiService.getEquiList(projectId, groupId, equiWorkStatus,dataHandleType);
}
```
#### SDK 设备接收及发送 调用示例
> 设备消息接收示例
```
// 自定义ISdkReceMsgService接口类
import com.hp.message.enums.LogoutType;
import com.hp.message.interfaces.ISdkReceMsgService;
import com.hp.message.utils.CharConvertUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class SdkReceMsgService implements ISdkReceMsgService {
/**
* 处理设备上线消息
*
* @param equiSno 设备SN号
* @return
*/
@Override
public boolean receEquiLoginMsg(String equiSno) {
log.info("rece equi {} online msg", equiSno);
return true;
}
/**
* 处理设备离线消息
*
* @param equiSno 设备SN号
* @param logoutType 离线类型
* (LOGOUT_1 设备请求退出; LOGOUT_2 重复登录,被迫退出; LOGOUT_3 心跳超时退出; LOGOUT_4 异常断开退出)
* @return
*/
@Override
public boolean receEquiLogoutMsg(String equiSno, LogoutType logoutType) {
log.info("rece equi {} offline msg, reason {}", equiSno, logoutType.getCodeDesc());
return true;
}
/**
* 处理设备上报数据消息
*
* @param equiSno 设备SN号
* @param uploadData 上报数据byte数组
* @return
*/
@Override
public boolean receEquiUploadDataMsg(String equiSno, byte[] uploadData) {
log.info("rece equi {} upload msg, data {}", equiSno, uploadData);
return true;
}
}
```
> 向设备发送消息示例
```
/**
* 向设备发送消息服务对象声明
*/
@Autowired
private ISdkSendMsgService sdkSendMsgService;
// 声明待发送byte数组
byte[] pushDataByteArray;
// 同步发送消息
boolean sendResult = sdkSendMsgService.sendMsgToEqui(equiSno, pushDataByteArray);
if (sendResult) {
return "发送成功";
} else {
return "发送失败";
}
// 异步发送消息
sdkSendMsgService.sendMsgToEqui(equiSno, pushDataByteArray,
new IFuncCallBack() {
@Override
public void success(String equiSno) {
log.info("向设备{} 发送消息成功", equiSno);
}
@Override
public void fail(MqMsgResultType resultType, String equiSno) {
log.info("向设备{} 发送失消息败 {}", equiSno, resultType.getResultDesc());
}
});
```
#### 示例项目地址
1. 华普云 SDK-JAVA示例项目地址[SDK-JAVA-Example](https://gitee.com/hpiot/SDK-JAVA-Example.git)
2. 华普云 官网地址 [cloud.hpiot.cn](https://cloud.hpiot.cn)