package com.hdl.sdk.hdl_core.HDLDeviceManger.Parser;
|
|
import com.hdl.sdk.hdl_core.Config.Configuration;
|
import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig;
|
import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
|
import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.DevicesData;
|
import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLDeviceManager;
|
import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HandleSearch;
|
import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by djl on 2017/3/29.
|
*/
|
|
public class DeviceParser {
|
|
/**
|
* 处理解析、设置某一回路的所有信息
|
*
|
* @param addBytes
|
* @param port
|
* @param ipAddress
|
* @param devicesData
|
* @param parentRemarks
|
* @return 172.168.52.51 固件版本号2018/08/29
|
*/
|
public static boolean parse(byte[] addBytes, int port, String ipAddress, DevicesData devicesData, String parentRemarks) {
|
boolean isExitData = false;
|
int residue = addBytes.length - 22;
|
int sumCount = residue / 3;//记录总共有多少种设备
|
List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
|
if (sumCount == 0) {
|
AppliancesInfo appliancesInfo = new AppliancesInfo();
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
appliancesInfoList.add(appliancesInfo);
|
}
|
int curCount = 0;//循环遍历所有设备次数
|
while (curCount < sumCount) {
|
int bigType = addBytes[21 + (2 * curCount) + (curCount + 1)] & 0xFF;
|
int littleType = addBytes[21 + (2 * curCount) + (curCount + 2)] & 0xFF;
|
int channelNum = addBytes[21 + (2 * curCount) + (curCount + 3)] & 0xFF;
|
curCount++;
|
int curChannelNum = 0;
|
while (curChannelNum < channelNum) {
|
curChannelNum++;
|
if (isWantData(bigType, littleType)) {
|
AppliancesInfo appliancesInfo = new AppliancesInfo();
|
|
switch (bigType) {
|
case Configuration.LIGTH_BIG_TYPE:
|
parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.CURTAIN_BIG_TYPE:
|
parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.AIR_BIG_TYPE:
|
parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.AUDIO_BIG_TYPE:
|
parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.LOGIC_BIG_TYPE:
|
parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.GLOBAL_LOGIC_BIG_TYPE:
|
parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.SENSOR_BIG_TYPE:
|
parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
//2019-07-08 新增地热和新风类
|
case Configuration.GEOTHERMAL_BIG_TYPE://地热
|
parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
case Configuration.FRESH_AIR_BIG_TYPE:
|
parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, ipAddress);
|
break;
|
default:
|
// appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
|
isExitData = true;
|
|
String key = "K" + appliancesInfo.getBigType()
|
+ "-" + appliancesInfo.getLittleType()
|
+ "-" + appliancesInfo.getDeviceSubnetID()
|
+ "-" + appliancesInfo.getDeviceDeviceID()
|
+ "-" + appliancesInfo.getChannelNum();
|
|
appliancesInfo.setDeviceKey(key);//2019-8-2 添加唯一标识key
|
appliancesInfoList.add(appliancesInfo);
|
|
} else {
|
HDLLog.info( "不是要添加的设备:大类:" + bigType + " 小类:" + littleType);
|
}
|
}
|
}
|
if (isExitData && devicesData != null) {
|
devicesData.setAppliancesInfoList(appliancesInfoList);
|
}
|
return isExitData;
|
}
|
|
|
/**
|
* 判断是否支持的设备,若不是支持设备则过滤掉。
|
*
|
* @param bigType
|
* @param littleType
|
* @return
|
*/
|
private static boolean isWantData(int bigType, int littleType) {
|
// HDLLog.info("isWantData:bigType:" + bigType + "littleType:" + littleType);
|
boolean isWant;
|
switch (bigType) {
|
case Configuration.LIGTH_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
case 1:
|
isWant = true;
|
break;
|
case 9:
|
isWant = true;
|
break;
|
case 10:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.CURTAIN_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
case 1:
|
isWant = true;
|
break;
|
case 2:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.AIR_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
case 3:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.AUDIO_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
// case 1:
|
// isWant = true;
|
// break;
|
case 3:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.SENSOR_BIG_TYPE:
|
if (littleType >= 0 && littleType <= 24) {
|
isWant = true;
|
} else {
|
isWant = false;
|
}
|
break;
|
case Configuration.LOGIC_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.GLOBAL_LOGIC_BIG_TYPE:
|
switch (littleType) {
|
case 0:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.GEOTHERMAL_BIG_TYPE://20190711 新增
|
switch (littleType) {
|
case Configuration.GEOTHERMAL_LITTLE_TYPE_0:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
case Configuration.FRESH_AIR_BIG_TYPE:
|
switch (littleType) {
|
case Configuration.FRESH_AIR_LITTLE_TYPE_0:
|
isWant = true;
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
break;
|
default:
|
isWant = false;
|
break;
|
}
|
return isWant;
|
}
|
|
private static void parseLightData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("调光回路");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_LIGHT_DIMMER);
|
break;
|
case 1:
|
appliancesInfo.setDeviceName("开关回路");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_LIGHT_RELAY);
|
break;
|
case 2:
|
appliancesInfo.setDeviceName("逻辑灯控制");
|
break;
|
case 3:
|
appliancesInfo.setDeviceName("逻辑灯RGB");
|
break;
|
case 4:
|
appliancesInfo.setDeviceName("逻辑灯RGBW");
|
break;
|
case 5:
|
appliancesInfo.setDeviceName("逻辑灯RGB+CCT");
|
break;
|
case 6:
|
appliancesInfo.setDeviceName("混合类 Dimmer+Relay");
|
break;
|
case 7:
|
appliancesInfo.setDeviceName("DALI");
|
break;
|
case 8:
|
appliancesInfo.setDeviceName("自定义逻辑灯");
|
break;
|
case 9:
|
appliancesInfo.setDeviceName("混合调光类");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_LIGHT_MIX_DIMMER);
|
break;
|
case 10:
|
appliancesInfo.setDeviceName("混合开关类");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_LIGHT_MIX_RELAY);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.LIGTH_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.LIGHT_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.LIGHT_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.LIGHT_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.LIGHT_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
}
|
}
|
|
private static void parseCurtainData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("开合帘电机");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_CURTAIN_GLYSTRO);
|
break;
|
case 1:
|
appliancesInfo.setDeviceName("卷帘电机");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_CURTAIN_ROLLER);
|
break;
|
case 2:
|
appliancesInfo.setDeviceName("窗帘模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_CURTAIN_MODULE);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
|
}
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.CURTAIN_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.CURTAIN_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.CURTAIN_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.CURTAIN_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.CURTAIN_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
}
|
}
|
|
private static void parseAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("HVAC 模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_HVAC);
|
break;
|
case 1:
|
appliancesInfo.setDeviceName("Coolmaster 控制模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_COOLMASTER);
|
break;
|
case 2:
|
appliancesInfo.setDeviceName("红外空调模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_INFRARED);
|
break;
|
case 3:
|
appliancesInfo.setDeviceName("通用空调面板");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_AC_PANEL);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
|
}
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.AIR_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
if (littleType == 0) {
|
appliancesInfo.setCtrlCommand(Configuration.AIR_HVAC_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.AIR_HVAC_CTRL_BACK_COMMAND);
|
// appliancesInfo.setStateCommand(Configuration.AIR_HVAC_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.AIR_HVAC_STATE_BACK_COMMAND);
|
} else {
|
appliancesInfo.setCtrlCommand(Configuration.AIR_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.AIR_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.AIR_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.AIR_STATE_BACK_COMMAND);
|
|
}
|
|
|
}
|
}
|
|
private static void parseAudioData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("背景音乐模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_MUSIC_MODULE);
|
break;
|
case 1:
|
appliancesInfo.setDeviceName("第三方背景音乐模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_MUSIC_THIRD_PARTY_MODULE);
|
break;
|
case 3:
|
appliancesInfo.setDeviceName("2018新背景音乐模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_MUSIC_NEW_MODULE);
|
break;
|
default:
|
break;
|
}
|
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.AUDIO_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.AUDIO_CTRL_READ_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.AUDIO_CTRL_READ_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.AUDIO_MenuPlay_INSTRUCTION_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.AUDIO_MenuPlay_INSTRUCTION_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
}
|
}
|
|
private static void parseLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("逻辑模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_LOGIC_MODULE);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.LOGIC_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.LOGIC_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.LOGIC_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
|
|
}
|
}
|
|
private static void parseGlobalLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("全局逻辑模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_GLOBAL_LOGIC_MODULE);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.GLOBAL_LOGIC_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.LOGIC_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.LOGIC_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
|
|
}
|
}
|
|
|
private static void parseSensorData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int curChannelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("传感器 干结点");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_DRY_CONTACT);
|
break;
|
case 1:
|
appliancesInfo.setDeviceName("传感器 移动探测");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_MOVEMENT_DETECTOR);
|
break;
|
case 2:
|
appliancesInfo.setDeviceName("传感器 温度");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_TEMP);
|
break;
|
case 3:
|
appliancesInfo.setDeviceName("传感器 湿度");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_HUMIDITY);
|
break;
|
case 4:
|
appliancesInfo.setDeviceName("传感器 照度");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_ILLUMINACE);
|
break;
|
case 5:
|
appliancesInfo.setDeviceName("传感器 VOC");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_VOC);
|
break;
|
case 6:
|
appliancesInfo.setDeviceName("传感器 PM2.5");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_PM_2_POINT_5);
|
break;
|
case 7:
|
appliancesInfo.setDeviceName("传感器 CO2");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_C02);
|
break;
|
case 8:
|
appliancesInfo.setDeviceName("传感器 液化石油气");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_LPG);
|
break;
|
case 9:
|
appliancesInfo.setDeviceName("传感器 人工煤气(CO,H2");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_CO_H2);
|
break;
|
case 10:
|
appliancesInfo.setDeviceName("传感器 天然气(CH4)");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_CH4);
|
break;
|
case 11:
|
appliancesInfo.setDeviceName("传感器 烟雾");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_SMOG);
|
break;
|
case 12:
|
appliancesInfo.setDeviceName("传感器 风速");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_WIND_SPEED);
|
break;
|
case 13:
|
appliancesInfo.setDeviceName("传感器 风压");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_WIND_PRESSURE);
|
break;
|
case 14:
|
appliancesInfo.setDeviceName("传感器 液体流量");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_LIQUID_FLOW);
|
break;
|
case 15:
|
appliancesInfo.setDeviceName("传感器 液体压力");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_LIQUID_PRESSURE);
|
break;
|
case 16:
|
appliancesInfo.setDeviceName("传感器 液体深度 ");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_LIQUID_DEPTH);
|
break;
|
case 17:
|
appliancesInfo.setDeviceName("传感器 雨量");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_RAIN_FALL);
|
break;
|
case 18:
|
appliancesInfo.setDeviceName("传感器 重量");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_WEIGHT);
|
break;
|
case 19:
|
appliancesInfo.setDeviceName("传感器 高度/长度");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_HEIGHT_LENGTH);
|
break;
|
case 20:
|
appliancesInfo.setDeviceName("传感器 物体速度");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_OBJECT_SPEED);
|
break;
|
case 21:
|
appliancesInfo.setDeviceName("传感器 震动");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_SHAKE);
|
break;
|
case 22:
|
appliancesInfo.setDeviceName("传感器 电压");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_VOLTAGE);
|
break;
|
case 23:
|
appliancesInfo.setDeviceName("传感器 电流");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_ELECTRICITY);
|
break;
|
case 24:
|
appliancesInfo.setDeviceName("传感器 功率");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_POWER);
|
break;
|
|
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(curChannelNum);
|
appliancesInfo.setBigType(Configuration.SENSOR_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
// appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
|
// appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.SENSOR_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.SENSOR_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
|
|
}
|
|
|
}
|
|
|
/**
|
*地热
|
*/
|
private static void parseGeothermalData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case Configuration.GEOTHERMAL_LITTLE_TYPE_0:
|
appliancesInfo.setDeviceName("地热模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_GEOTHERMAL_MODULE);
|
break;
|
// case 1:
|
// appliancesInfo.setDeviceName("常规地热面板");
|
// appliancesInfo.setDeviceType(HDLApConfig.TYPE_GEOTHERMAL_MODULE_PANEL);
|
// break;
|
// case 2:
|
// appliancesInfo.setDeviceName("带PI运算的地热面板");
|
// appliancesInfo.setDeviceType(HDLApConfig.TYPE_GEOTHERMAL_MODULE_PI);
|
// break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
|
}
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.GEOTHERMAL_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
|
appliancesInfo.setCtrlCommand(Configuration.GEOTHERMAL_MODULE_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.GEOTHERMAL_MODULE_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.GEOTHERMAL_MODULE_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.GEOTHERMAL_MODULE_STATE_BACK_COMMAND);
|
|
// if (littleType == 1) {
|
// appliancesInfo.setCtrlCommand(Configuration.GEOTHERMAL_MODULE_PANEL_CTRL_COMMAND);
|
// appliancesInfo.setCtrlBackCommand(Configuration.GEOTHERMAL_MODULE_PANEL_CTRL_BACK_COMMAND);
|
// appliancesInfo.setStateCommand(Configuration.GEOTHERMAL_MODULE_PANEL_STATE_COMMAND);
|
// appliancesInfo.setStateBackCommand(Configuration.GEOTHERMAL_MODULE_PANEL_STATE_BACK_COMMAND);
|
// } else if(littleType == 2) {
|
// appliancesInfo.setCtrlCommand(Configuration.GEOTHERMAL_MODULE_PI_CTRL_COMMAND);
|
// appliancesInfo.setCtrlBackCommand(Configuration.GEOTHERMAL_MODULE_PI_CTRL_BACK_COMMAND);
|
// appliancesInfo.setStateCommand(Configuration.GEOTHERMAL_MODULE_PI_STATE_COMMAND);
|
// appliancesInfo.setStateBackCommand(Configuration.GEOTHERMAL_MODULE_PI_STATE_BACK_COMMAND);
|
//
|
// } else {
|
// appliancesInfo.setCtrlCommand(Configuration.GEOTHERMAL_MODULE_CTRL_COMMAND);
|
// appliancesInfo.setCtrlBackCommand(Configuration.GEOTHERMAL_MODULE_CTRL_BACK_COMMAND);
|
// appliancesInfo.setStateCommand(Configuration.GEOTHERMAL_MODULE_STATE_COMMAND);
|
// appliancesInfo.setStateBackCommand(Configuration.GEOTHERMAL_MODULE_STATE_BACK_COMMAND);
|
//
|
// }
|
|
|
}
|
}
|
|
/**
|
* 新风系统
|
*/
|
private static void parseFreshAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
|
switch (littleType) {
|
case 0:
|
appliancesInfo.setDeviceName("新风系统模块");
|
appliancesInfo.setDeviceType(HDLApConfig.TYPE_FRESH_AIR);
|
break;
|
default:
|
appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
|
if (devicesData != null) {
|
appliancesInfo.setChannelNum(channelNum);
|
appliancesInfo.setBigType(Configuration.FRESH_AIR_BIG_TYPE);
|
appliancesInfo.setLittleType(littleType);
|
appliancesInfo.setCtrlCommand(Configuration.FRESH_AIR_CTRL_COMMAND);
|
appliancesInfo.setCtrlBackCommand(Configuration.FRESH_AIR_CTRL_BACK_COMMAND);
|
appliancesInfo.setStateCommand(Configuration.FRESH_AIR_STATE_COMMAND);
|
appliancesInfo.setStateBackCommand(Configuration.FRESH_AIR_STATE_BACK_COMMAND);
|
appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
|
appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
|
appliancesInfo.setParentRemarks(parentRemarks);
|
appliancesInfo.setPort(port);
|
appliancesInfo.setIpAddress(ipAddress);
|
|
|
}
|
}
|
|
|
/**
|
*
|
* @param bigType
|
* @param littleType
|
* @param mSubnetID
|
* @param mDeviceID
|
* @param parentRemarks
|
* @return
|
*/
|
public static DevicesData addDevicesManuallyWithoutSearchingAll(int bigType, int littleType, int mSubnetID, int mDeviceID, int port, String parentRemarks, ArrayList<String> parentRemarksList) {
|
boolean bWantData = false;
|
DevicesData devicesData = new DevicesData();
|
devicesData.setSourceSubnetID(mSubnetID);
|
devicesData.setSourceDeviceID(mDeviceID);
|
devicesData.setRemark(parentRemarks);
|
|
List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
|
if (isWantData(bigType, littleType)) {
|
for(int i = 0; i<parentRemarksList.size();i++){
|
appliancesInfoList.add( getDevicesInfo(devicesData, bigType, littleType,i+1, port, parentRemarks, parentRemarksList.get(i)));
|
}
|
bWantData = true;
|
|
// HDLLog.I( "向模块添加回路:"+"大类:" + mBigType + " 小类:" + mLittleType +" 模块备注" + mRemarks );
|
} else {
|
// HDLLog.I( "不是要添加的设备:大类:" + mBigType + " 小类:" + mLittleType +" 模块备注" + mRemarks );
|
}
|
|
if (bWantData) {
|
devicesData.setAppliancesInfoList(appliancesInfoList);
|
HDLDeviceManager.devicesDataList.add(devicesData);
|
|
HandleSearch.OnDeviceListGetSuccessCallBack();
|
}else {
|
devicesData = null;
|
}
|
|
return devicesData;
|
}
|
|
private static AppliancesInfo getDevicesInfo(DevicesData devicesData, int bigType, int littleType, int curChannelNum, int port, String parentRemarks, String mRemarks){
|
AppliancesInfo appliancesInfo = new AppliancesInfo();
|
/**根据类别,赋值操作码等一些重要信息*/
|
switch (bigType) {
|
case Configuration.LIGTH_BIG_TYPE:
|
parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.CURTAIN_BIG_TYPE:
|
parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.AIR_BIG_TYPE:
|
parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.AUDIO_BIG_TYPE:
|
parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.LOGIC_BIG_TYPE:
|
parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.GLOBAL_LOGIC_BIG_TYPE:
|
parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.SENSOR_BIG_TYPE:
|
parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
//2019-07-08 新增地热和新风类
|
case Configuration.GEOTHERMAL_BIG_TYPE://地热
|
parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
case Configuration.FRESH_AIR_BIG_TYPE:
|
parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
|
break;
|
default:
|
// appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
|
break;
|
}
|
|
|
String key = "K" + appliancesInfo.getBigType()
|
+ "-" + appliancesInfo.getLittleType()
|
+ "-" + appliancesInfo.getDeviceSubnetID()
|
+ "-" + appliancesInfo.getDeviceDeviceID()
|
+ "-" + appliancesInfo.getChannelNum();
|
appliancesInfo.setRemarks(mRemarks);
|
appliancesInfo.setDeviceKey(key);//2019-8-2 添加唯一标识key
|
return appliancesInfo;
|
|
}
|
|
}
|