|
@@ -2359,9 +2359,9 @@ public class KNX_Controller extends DeviceManager {
|
|
if (ByteOnOff == 1) LightControl.OnOff = 0x01;
|
|
if (ByteOnOff == 1) LightControl.OnOff = 0x01;
|
|
else LightControl.OnOff = 0x02;
|
|
else LightControl.OnOff = 0x02;
|
|
|
|
|
|
- // 3. Send
|
|
|
|
- EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterBadLight(EmIndex, LightIndex, LightControl, TYPE_ONOFF);
|
|
|
|
- if (Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
+ // 3. Send
|
|
|
|
+ EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterBadLight(EmIndex, LightIndex, LightControl, TYPE_ONOFF);
|
|
|
|
+ if (Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
// 4. Update
|
|
// 4. Update
|
|
UpdateVariables_BadData(EmIndex, Data);
|
|
UpdateVariables_BadData(EmIndex, Data);
|
|
@@ -2417,61 +2417,88 @@ public class KNX_Controller extends DeviceManager {
|
|
// 4. Update
|
|
// 4. Update
|
|
UpdateVariables_LivingData(EM_FIX_INDEX_LIVING, Data);
|
|
UpdateVariables_LivingData(EM_FIX_INDEX_LIVING, Data);
|
|
|
|
|
|
- return SHMem.retVal = "SUCCESS";
|
|
|
|
- }
|
|
|
|
- //////////////////////////////////////////////////////////
|
|
|
|
- // SetEMLightDimming : 에너지미터 조명을 밝기를 제어한다.
|
|
|
|
- // [0] 제어할 에너지미터 인덱스
|
|
|
|
- // [1] 제어할 조명 인덱스
|
|
|
|
- // [2] 제어할 조명 밝기 단계 (1, 2, 3 ... 10 : 10단계)
|
|
|
|
- //////////////////////////////////////////////////////////
|
|
|
|
- else if (ctrDevFormat.CmdStr.equals("SetEMLightDimming")) {
|
|
|
|
- // 1. Param Get
|
|
|
|
- byte EmIndex = ctrDevFormat.param[0];
|
|
|
|
- byte LightIndex = ctrDevFormat.param[1];
|
|
|
|
- byte Dimming = ctrDevFormat.param[2];
|
|
|
|
- DeviceLog("[do_ctrEmm] : SetEMLightDimming(LightIndex:" + LightIndex + ", Dimming:" + Dimming + ")");
|
|
|
|
|
|
+ return SHMem.retVal = "SUCCESS";
|
|
|
|
+ }
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ // SetEntireLivlight : 거실EM 모든 조명의 전원/디밍/색온도를 제어한다.
|
|
|
|
+ // [1] 제어할 조명 인덱스
|
|
|
|
+ // [2] 제어할 조명 밝기 단계 (1, 2, 3 ... 10 : 10단계)
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ else if (ctrDevFormat.CmdStr.equals("SetEntireLivlight")) {
|
|
|
|
+ // 1. Param Get
|
|
|
|
+ // 2. Make Control Data
|
|
|
|
+ byte[] ahCtrlData = ctrDevFormat.param;
|
|
|
|
+ int nIndex = 0;
|
|
|
|
+ byte hLightCnt = ahCtrlData[nIndex];
|
|
|
|
|
|
- // 2. Make Control Data
|
|
|
|
- LightControlClass LightControl = new LightControlClass();
|
|
|
|
- LightControl.Dimming = Dimming;
|
|
|
|
|
|
+ int nExpectedLength = (hLightCnt * 3) + 1;
|
|
|
|
+ if (hLightCnt != nExpectedLength) {
|
|
|
|
+ Log.w(TAG, "[do_ctrEmm] SetEntireLivlight -> wrong param: nExpectedLength [" + nExpectedLength + "], hLightCnt [" + hLightCnt + "]");
|
|
|
|
+ return SHMem.retVal = "FAIL;" + APIErrorCode.INVALIDPARAMETER;
|
|
|
|
+ }
|
|
|
|
|
|
- // 3. Send
|
|
|
|
- EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterBadLight(EmIndex, LightIndex, LightControl, TYPE_DIMMING);
|
|
|
|
- if (Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
+ // 3. Send
|
|
|
|
+ EnergyMeterClass.DataClass Data = sendEntireLivLight(ahCtrlData);
|
|
|
|
+ if (Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
- // 4. Update
|
|
|
|
- UpdateVariables_BadData(EmIndex, Data);
|
|
|
|
|
|
+ // 4. Update
|
|
|
|
+ UpdateVariables_LivingData(EM_FIX_INDEX_LIVING, Data);
|
|
|
|
|
|
- return SHMem.retVal = "SUCCESS";
|
|
|
|
- }
|
|
|
|
- //////////////////////////////////////////////////////////
|
|
|
|
- // SetLightColor : 조명을 색상을 제어한다.
|
|
|
|
- // [0] 제어할 에너지미터 인덱스
|
|
|
|
- // [1] 제어할 조명 인덱스
|
|
|
|
- // [2] 제어할 조명 색상 단계 (1, 2, 3 ... 10 : 10단계)
|
|
|
|
- //////////////////////////////////////////////////////////
|
|
|
|
- /*else if(ctrDevFormat.CmdStr.equals("SetLightColor"))
|
|
|
|
- {
|
|
|
|
- // 1. Param Get
|
|
|
|
- byte EmIndex = ctrDevFormat.param[0];
|
|
|
|
- byte LightIndex = ctrDevFormat.param[1];
|
|
|
|
- byte Color = ctrDevFormat.param[2];
|
|
|
|
- DeviceLog("[do_ctrEmm] : SetLightColor(EmIndex:" + EmIndex + ", LightIndex:" + LightIndex + ", Color:" + Color + ")");
|
|
|
|
|
|
+ return SHMem.retVal = "SUCCESS";
|
|
|
|
+ }
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ // SetEMLightDimming : 에너지미터 조명을 밝기를 제어한다.
|
|
|
|
+ // [0] 제어할 에너지미터 인덱스
|
|
|
|
+ // [1] 제어할 조명 인덱스
|
|
|
|
+ // [2] 제어할 조명 밝기 단계 (1, 2, 3 ... 10 : 10단계)
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ else if (ctrDevFormat.CmdStr.equals("SetEMLightDimming")) {
|
|
|
|
+ // 1. Param Get
|
|
|
|
+ byte EmIndex = ctrDevFormat.param[0];
|
|
|
|
+ byte LightIndex = ctrDevFormat.param[1];
|
|
|
|
+ byte Dimming = ctrDevFormat.param[2];
|
|
|
|
+ DeviceLog("[do_ctrEmm] : SetEMLightDimming(LightIndex:" + LightIndex + ", Dimming:" + Dimming + ")");
|
|
|
|
|
|
- // 2. Make Control Data
|
|
|
|
- LedLightControlClass LedLightControl = new LedLightControlClass();
|
|
|
|
- LedLightControl.Color = (byte)(Color * 10);
|
|
|
|
|
|
+ // 2. Make Control Data
|
|
|
|
+ LightControlClass LightControl = new LightControlClass();
|
|
|
|
+ LightControl.Dimming = Dimming;
|
|
|
|
|
|
- // 3. Send
|
|
|
|
- EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterLight(EmIndex, LightIndex, LedLightControl, false);
|
|
|
|
- if(Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
+ // 3. Send
|
|
|
|
+ EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterBadLight(EmIndex, LightIndex, LightControl, TYPE_DIMMING);
|
|
|
|
+ if (Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
|
|
- // 4. Update
|
|
|
|
- UpdateVariables(EmIndex, Data);
|
|
|
|
|
|
+ // 4. Update
|
|
|
|
+ UpdateVariables_BadData(EmIndex, Data);
|
|
|
|
|
|
- return SHMem.retVal = "SUCCESS";
|
|
|
|
- }*/
|
|
|
|
|
|
+ return SHMem.retVal = "SUCCESS";
|
|
|
|
+ }
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ // SetLightColor : 조명을 색상을 제어한다.
|
|
|
|
+ // [0] 제어할 에너지미터 인덱스
|
|
|
|
+ // [1] 제어할 조명 인덱스
|
|
|
|
+ // [2] 제어할 조명 색상 단계 (1, 2, 3 ... 10 : 10단계)
|
|
|
|
+ //////////////////////////////////////////////////////////
|
|
|
|
+ /*else if(ctrDevFormat.CmdStr.equals("SetLightColor"))
|
|
|
|
+ {
|
|
|
|
+ // 1. Param Get
|
|
|
|
+ byte EmIndex = ctrDevFormat.param[0];
|
|
|
|
+ byte LightIndex = ctrDevFormat.param[1];
|
|
|
|
+ byte Color = ctrDevFormat.param[2];
|
|
|
|
+ DeviceLog("[do_ctrEmm] : SetLightColor(EmIndex:" + EmIndex + ", LightIndex:" + LightIndex + ", Color:" + Color + ")");
|
|
|
|
+
|
|
|
|
+ // 2. Make Control Data
|
|
|
|
+ LedLightControlClass LedLightControl = new LedLightControlClass();
|
|
|
|
+ LedLightControl.Color = (byte)(Color * 10);
|
|
|
|
+
|
|
|
|
+ // 3. Send
|
|
|
|
+ EnergyMeterClass.DataClass Data = Send_Set_EnergyMeterLight(EmIndex, LightIndex, LedLightControl, false);
|
|
|
|
+ if(Data == null) return SHMem.retVal = "FAIL;" + APIErrorCode.DEVICEISNORESPONSE;
|
|
|
|
+
|
|
|
|
+ // 4. Update
|
|
|
|
+ UpdateVariables(EmIndex, Data);
|
|
|
|
+
|
|
|
|
+ return SHMem.retVal = "SUCCESS";
|
|
|
|
+ }*/
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
// SetConcentOnOff : 거실콘센트 ON/OFF 제어한다.
|
|
// SetConcentOnOff : 거실콘센트 ON/OFF 제어한다.
|
|
// [0] 제어할 에너지미터 인덱스
|
|
// [0] 제어할 에너지미터 인덱스
|
|
@@ -4413,7 +4440,7 @@ public class KNX_Controller extends DeviceManager {
|
|
private EnergyMeterClass.DataClass Send_Set_EnergyMeterLivingLight(byte LightIndex, LightControlClass LightControl, int controlType) {
|
|
private EnergyMeterClass.DataClass Send_Set_EnergyMeterLivingLight(byte LightIndex, LightControlClass LightControl, int controlType) {
|
|
if (mDriver.GetReset()) return null;
|
|
if (mDriver.GetReset()) return null;
|
|
|
|
|
|
- String FUNC_NAME = "[Send_Set_EnergyMeterLivingLightAll]";
|
|
|
|
|
|
+ String FUNC_NAME = "[Send_Set_EnergyMeterLivingLight]";
|
|
DeviceLog(FUNC_NAME + " Start");
|
|
DeviceLog(FUNC_NAME + " Start");
|
|
|
|
|
|
// 1. In 파라미터 확인
|
|
// 1. In 파라미터 확인
|
|
@@ -4528,6 +4555,57 @@ public class KNX_Controller extends DeviceManager {
|
|
return Data;
|
|
return Data;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * [거실 에너지미터] 전체 거실조명에 대한 모든 항목 제어 (전원/디밍/색온도)
|
|
|
|
+ *
|
|
|
|
+ * @param ahCtrlData - (byte) 조명개수 + 조명제어 상태 (전원/디밍/색온도)
|
|
|
|
+ * @return (EnergyMeterClass.DataClass) 데이터 null - Error , Not null - OK
|
|
|
|
+ */
|
|
|
|
+ private EnergyMeterClass.DataClass sendEntireLivLight(byte[] ahCtrlData) {
|
|
|
|
+ try {
|
|
|
|
+ if (mDriver.GetReset()) return null;
|
|
|
|
+
|
|
|
|
+ String FUNC_NAME = "[sendEntireLivLight]";
|
|
|
|
+ DeviceLog(FUNC_NAME + " Start");
|
|
|
|
+
|
|
|
|
+ if (ahCtrlData == null) {
|
|
|
|
+ Log.w(TAG, FUNC_NAME + " ahCtrlData is null!!!");
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int nLightCnt = ahCtrlData[0];
|
|
|
|
+ int nReqDataLength = 4 + (nLightCnt * 3);
|
|
|
|
+ byte[] ReqData = new byte[nReqDataLength];
|
|
|
|
+
|
|
|
|
+ ReqData[0] = EM_FIX_INDEX_LIVING; // 거실EM ID
|
|
|
|
+ ReqData[1] = (byte) 0x00; // 미사용 필드
|
|
|
|
+ System.arraycopy(ahCtrlData, 0, ReqData, 2, ahCtrlData.length); // 조명 상태값 배열 복사
|
|
|
|
+ ReqData[ReqData.length - 1] = (byte) 0x00; // 콘센트 개수
|
|
|
|
+
|
|
|
|
+ // 3. 데이터 전송 및 응답
|
|
|
|
+ byte Command = CMDList.Req.Set_LivEM;
|
|
|
|
+ byte[] Reply = SendNRead_Variable(DEVICE_ADDRESS, Command, ReqData);
|
|
|
|
+
|
|
|
|
+ // 4. 수신데이터 파싱
|
|
|
|
+ EnergyMeterClass.DataClass Data = LivingEnergyMeter_ReplyParsing(Command, EM_FIX_INDEX_LIVING, Reply);
|
|
|
|
+ if (Data == null) {
|
|
|
|
+ DeviceLog(FUNC_NAME + " Reply is null");
|
|
|
|
+ AddDoCount(false);
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ AddDoCount(true);
|
|
|
|
+
|
|
|
|
+ return Data;
|
|
|
|
+ } catch (RuntimeException re) {
|
|
|
|
+ Log.e(TAG, "[RuntimeException] sendEntireLivLight(byte[] ahCtrlData)");
|
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ Log.e(TAG, "[Exception] sendEntireLivLight(byte[] ahCtrlData)");
|
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* [침실 에너지미터] 조명 제어(on/off)
|
|
* [침실 에너지미터] 조명 제어(on/off)
|
|
*
|
|
*
|