package com.sandu.ximon.admin.manager.iot.frame.inner.request;
|
|
import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5LightDataEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
|
import com.sandu.ximon.admin.manager.iot.rrpc.util.SupplementUtils;
|
|
/**
|
* @author chenjiantian
|
* @date 2021/12/6 14:46
|
* A5->01->01
|
* "开/关灯(即亮度值)
|
* 0x00:关灯
|
* 其它:开灯&亮度值"
|
*/
|
public class A5LightBrightnessReqInnerFrame implements IRequestInnerFrame {
|
|
private final String payload;
|
|
/**
|
* @param lightLevel 亮度等级 [0,100]
|
*/
|
public A5LightBrightnessReqInnerFrame(Integer lightLevel, String lightAddress) {
|
String destinationAddress;
|
if (lightAddress == null || (!lightAddress.equals("0001") && !lightAddress.equals("0002"))) {
|
destinationAddress = "FFFF";
|
} else {
|
destinationAddress = lightAddress;
|
}
|
// 将整型亮度转换为Hex
|
if (lightLevel < 0) {
|
lightLevel = 0;
|
} else if (lightLevel > 100) {
|
lightLevel = 100;
|
}
|
payload = destinationAddress + SupplementUtils.suppleZero(Integer.toHexString(lightLevel), 2);
|
}
|
|
@Override
|
public String getEncodeFrame() {
|
String functionCode = A5LightDataEnum.LightControl.getCode();
|
String payloadLength = "0003";
|
String frame = functionCode + payloadLength + payload;
|
return MQTTConnectTypeEnum.SYNCHRONIZATION.getCode() + frame.toUpperCase() + CRC32Utils.getCRC32(frame.toUpperCase());
|
}
|
|
}
|