package com.sandu.ximon.admin.utils;
|
|
import com.alibaba.fastjson.JSON;
|
import com.sandu.ximon.admin.entity.RRPCParams;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.MqttPDK;
|
import com.sandu.ximon.admin.vo.FrameDataVO;
|
|
import java.util.Date;
|
import java.util.Map;
|
|
public class MainBoardRRPCUtils {
|
|
/**
|
* 发送base64编码指令
|
* @param codeNumber
|
* @param frame
|
* @return
|
*/
|
public static String sendBase64RRPC(String codeNumber, String frame) {
|
return sendRRPC(codeNumber,Base64Util.toBase64Frame(frame));
|
}
|
|
/**
|
* BASE64结果转为16进制字符串
|
* @param base64
|
* @return
|
*/
|
public static String base64ToHexStr(String base64){
|
return HexStrConvertUtil.bytesToHexString(Base64Util.decode(base64));
|
}
|
|
|
/**
|
* 发送RRPC指令
|
* @param codeNumber 物理地址(阿里云识别码)
|
* @param mainFrame BASE64编码字符串
|
* @return
|
*/
|
public static String sendRRPC (String codeNumber, String mainFrame) {
|
RRPCParams rrpcParams = new RRPCParams();
|
rrpcParams.setOperate("1001").setFrame(mainFrame);
|
String result = RRPCUtils.sendRRPCwithReturn(MqttPDK.MAINBOARD_PDK, codeNumber, rrpcParams);
|
if(null == result){
|
return null;
|
}
|
result = result.replace("\\", "");
|
Map map = JSON.parseObject(result, Map.class);
|
result = (String) map.get("msg");
|
writeRedis(codeNumber,mainFrame,result);
|
return result;
|
}
|
|
private static void writeRedis(String mac, String startFrame, String returnFrame){
|
try {
|
String flag = "main_board:";
|
|
FrameDataVO frameDataVO = new FrameDataVO();
|
frameDataVO.setMac(mac);
|
frameDataVO.setSendFrame(HexStrConvertUtil.bytesToHexString(Base64Util.decode(startFrame)));
|
frameDataVO.setReturnFrame(HexStrConvertUtil.bytesToHexString(Base64Util.decode(returnFrame)));
|
frameDataVO.setDate(new Date());
|
Long expire = 60L;
|
|
RedisUtils.getBean().set(flag + mac, JSON.toJSONString(frameDataVO), expire);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
|
}
|