From ce062b3c62d283fa364f92853d1b53221b94a3bc Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 24 六月 2020 09:30:32 +0800
Subject: [PATCH] 2020-06-24 1.增加手动添加生成设备接口方法。 2.增加通用开关和安防模块支持。

---
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityArmingFeedBackEvent.java |   35 
 app/src/main/res/layout/activity_sensor.xml                                                                |   35 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java                       |  249 +++++
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AddDevicesActivity.java                                     |  413 ++++++++
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java                                      |   23 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Bean/SecurityStateBean.java                    |   90 +
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchCtrlBackEvent.java   |   26 
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlCommonSwitchActivity.java                               |  189 ++++
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlSecurityActivity.java                                   |  318 ++++++
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLCommonSwitch/CommonSwitchBackInfo.java        |   39 
 app/src/main/res/layout/activity_add_devices.xml                                                           |  274 +++++
 app/src/main/res/layout/activity_ctrl_common_switch.xml                                                    |   48 +
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchStateBackEvent.java  |   26 
 app/src/main/res/layout/activity_ctrl_security.xml                                                         |  254 +++++
 app/src/main/res/values/dimens.xml                                                                         |   23 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/Config/HDLApConfig.java                          |    9 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/Parser/SecurityParser.java           |  117 ++
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityBackInfo.java                |  132 ++
 app/src/main/AndroidManifest.xml                                                                           |    5 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityArmingStateBackInfo.java     |   24 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityAlarmFeedBackEvent.java  |   24 
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java                                     |   11 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java                           |    5 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java                     |  213 ++++
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/MainActivity.java                                           |    7 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java                           |  162 +++
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLSDK.java                               |   64 +
 27 files changed, 2,807 insertions(+), 8 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9de0ad7..4719abd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,8 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".activity.SettingActivity"></activity>
+        <activity android:name=".activity.AddDevicesActivity"></activity>
+        <activity android:name=".activity.SettingActivity" />
         <activity android:name=".activity.AddDevicesManuallyActivity" />
         <activity android:name=".activity.MainActivity">
             <intent-filter>
@@ -32,6 +33,8 @@
         <activity android:name=".activity.AudioActivity" />
         <activity android:name=".activity.FreshAirActivity" />
         <activity android:name=".activity.GeothermalActivity" />
+        <activity android:name=".activity.CtrlCommonSwitchActivity" />
+        <activity android:name=".activity.CtrlSecurityActivity" />
 
         <receiver android:name=".activity.BootComplete">
             <intent-filter>
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AddDevicesActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AddDevicesActivity.java
new file mode 100644
index 0000000..f4ed1de
--- /dev/null
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AddDevicesActivity.java
@@ -0,0 +1,413 @@
+package com.hdl.sdk.hdl_sdk.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+
+import com.hdl.sdk.hdl_core.Config.Configuration;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.DevicesData;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Parser.DeviceParser;
+import com.hdl.sdk.hdl_sdk.R;
+
+import java.util.ArrayList;
+
+
+/** SDK鐩墠鏀寔鐨勫ぇ绫伙細灏忕被
+ * 鐏厜绫伙細璋冨厜鍥炶矾銆佸紑鍏冲洖璺�佹贩鍚堣皟鍏夌被銆佹贩鍚堝紑鍏崇被
+ * 绐楀笜绫伙細寮�鍚堝笜鐢垫満銆佸嵎甯樼數鏈恒�佺獥甯樻ā鍧�
+ * 绌鸿皟鍔熻兘锛欻VAC 妯″潡銆侀�氱敤绌鸿皟闈㈡澘
+ * 鑳屾櫙闊充箰鍔熻兘锛氳儗鏅煶涔愭ā鍧� 2018鏂拌儗鏅煶涔愭ā鍧楀皬绫�3
+ * 浼犳劅鍣細骞茬粨鐐�0 鍒� 鍔熺巼24
+ * 閫昏緫鍔熻兘锛氶�昏緫妯″潡
+ * 鍏ㄥ眬鍦烘櫙锛�
+ * 鍦扮儹鍔熻兘锛氬湴鐑ā鍧�
+ * 鏂伴锛氭柊椋庣郴缁�
+
+ * 鐏厜绫�1锛�0 锛�1锛�9锛�10
+ * 绐楀笜绫�2锛�0锛�1锛�2
+ * 浼犳劅鍣�5锛�0~24
+ * 绌鸿皟绫�7锛�0锛�3
+ * 鍦扮儹妯″潡8锛�0
+ * 鑳屾櫙闊充箰鍔熻兘9锛�0
+ * 閫昏緫鍔熻兘12锛�0
+ * 鍏ㄥ眬鍦烘櫙17锛�0
+ * 鏂伴妯″潡19锛�0
+ * 閫氱敤寮�鍏�100锛�0
+ *
+ * 璇ユ柟娉曞簲鐢ㄤ簬鎻愪緵椤圭洰浜や粯鍓嶇殑鎻愬彇鎵归噺鏁版嵁鐢熸垚濂芥暟鎹��
+ * 妯℃嫙鐢熸垚璁惧鍥炶矾鏁版嵁锛屽湪椤圭洰涓嶆敮鎸佺畝鏄撶紪绋嬫悳绱㈡儏鍐典笅锛屽彲浠ラ�氳繃璇ユ柟娉曪紝鍏堝揩鎹风敓鎴愮洰鏍囨暟鎹� 寰楀埌 List<DevicesData> 鏍煎紡鐨勮澶囧垪琛ㄦ暟鎹�
+ *
+ * 涓婂眰鍋氭湰鍦颁繚瀛樻垨鑰呬簯绔浠斤紝App鍚姩鏃惰鍙栨仮澶�
+ * 姣忔鍚姩鏃跺厛鍔犺浇鐢熸垚濂界殑璁惧鍒楄〃鏁版嵁锛岀劧鍚庡湪 SDK 鍒濆鍖栧悗锛岃祴鍊肩粰 HDLDeviceManager.devicesDataList
+ */
+public class AddDevicesActivity extends Activity {
+
+    private int bigType;
+    private int littleType;
+    private int mSubnetID;
+    private int mDeviceID;
+    private int mChannelNum;
+    private int port = 6000;
+    private String parentRemarks;
+    private ArrayList<String> parentRemarksList = new ArrayList();
+
+    private EditText et_subnetID, et_deviceID, et_bitType, et_littleType, et_remarks, et_remarks_mk, et_mChannelNum,et_scene,et_mPort;
+    private Button btn_add,btn_scene,btn_addAll;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_add_devices);
+
+        et_subnetID = findViewById(R.id.et_subnetID);
+        et_deviceID = findViewById(R.id.et_deviceID);
+        et_bitType = findViewById(R.id.et_bitType);
+        et_littleType = findViewById(R.id.et_littleType);
+        et_remarks = findViewById(R.id.et_remarks);
+//        et_port = findViewById(R.id.et_port);
+        et_remarks_mk = findViewById(R.id.et_remarks_mk);
+        et_mChannelNum = findViewById(R.id.et_mChannelNum);
+        et_mPort = findViewById(R.id.et_mPort);
+
+        et_scene = findViewById(R.id.et_scene);
+
+        btn_add = findViewById(R.id.btn_add);
+        btn_scene = findViewById(R.id.btn_scene);
+        btn_addAll= findViewById(R.id.btn_addAll);
+
+
+        btn_add.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                addDevicesManuallyWithoutSearchingAll();
+
+            }
+        });
+
+        btn_scene.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                addScene();
+
+            }
+        });
+
+        btn_addAll.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                addMultipleDevices();
+
+            }
+        });
+    }
+
+
+    private void addDevicesManuallyWithoutSearchingAll() {
+//        parentRemarksList.clear();
+
+
+        String subnetIDStr = et_subnetID.getText().toString();
+        if (TextUtils.isEmpty(subnetIDStr)) {
+            showToast("瀛愮綉鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+        String deviceIDStr = et_deviceID.getText().toString();
+        if (TextUtils.isEmpty(deviceIDStr)) {
+            showToast("璁惧鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+        String bitTypeStr = et_bitType.getText().toString();
+        if (TextUtils.isEmpty(bitTypeStr)) {
+            showToast("澶х被涓嶈兘涓虹┖");
+            return;
+        }
+
+        String littleTypeStr = et_littleType.getText().toString();
+        if (TextUtils.isEmpty(littleTypeStr)) {
+            showToast("灏忕被涓嶈兘涓虹┖");
+            return;
+        }
+        String mChannelNumStr = et_mChannelNum.getText().toString();
+        if (TextUtils.isEmpty(littleTypeStr)) {
+            showToast("鍥炶矾鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+        String mPortStr = et_mPort.getText().toString();
+        if (TextUtils.isEmpty(mPortStr)) {
+            showToast("绔彛鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+
+
+
+        String remarksMkString = et_remarks_mk.getText().toString();
+        if (TextUtils.isEmpty(remarksMkString)) {
+            showToast("妯″潡澶囨敞涓嶈兘涓虹┖");
+            return;
+        }
+
+
+        String remarksString = et_remarks.getText().toString();
+        if (TextUtils.isEmpty(remarksString)) {
+            showToast("澶囨敞涓嶈兘涓虹┖");
+            return;
+        }
+
+//        String et_portString = et_port.getText().toString();
+//        if (TextUtils.isEmpty(et_portString)) {
+//            showToast("绔彛涓嶈兘涓虹┖");
+//            return;
+//        }
+
+
+        mSubnetID = Integer.parseInt(subnetIDStr);
+        mDeviceID = Integer.parseInt(deviceIDStr);
+
+        bigType = Integer.parseInt(bitTypeStr);
+        littleType = Integer.parseInt(littleTypeStr);
+        mChannelNum = Integer.parseInt(mChannelNumStr);
+        parentRemarks = remarksMkString;
+        port =  Integer.parseInt(mPortStr);
+
+
+        /**
+         * 娣诲姞璁惧鍥炶矾
+         * 濡傛灉瀛樺湪鐩稿悓瀛愮綉鍙� 璁惧鍙凤紝鍒欏綋鎴愭贩鍚堟ā鍧楁坊鍔犲埌璇ュ洖璺笅锛屼笉瀛樺湪鍒欐柊娣诲姞妯″潡
+         * @param bigType 鍥炶矾澶х被
+         * @param littleType 鍥炶矾灏忕被
+         * @param mSubnetID  鍥炶矾瀛愮綉ID
+         * @param mDeviceID  鍥炶矾璁惧ID
+         * @param mChannelNum  鍥炶矾鍙�
+         * @param mChannelRemark 鍥炶矾澶囨敞 渚嬪锛氱獥甯樸�佸悐鐏�佸帟鎵�鐏�佺數瑙�
+         * @param parentRemarks  褰撳墠鍥炶矾妯″潡鐨勫娉� 渚嬪: 閰掑簵RCU妯″潡
+         * @return
+         */
+        //濡傛灉瀛樺湪鐩稿悓瀛愮綉鍙� 璁惧鍙凤紝鍒欏綋鎴愭贩鍚堟ā鍧楁坊鍔犲埌璇ュ洖璺笅锛屼笉瀛樺湪鍒欐柊娣诲姞妯″潡
+        DevicesData mDevicesData = DeviceParser.addDevicesListWithoutSearching(port, bigType, littleType, mSubnetID, mDeviceID, mChannelNum, remarksString, parentRemarks,true);
+        if (mDevicesData != null) {
+            showToast("娣诲姞鎴愬姛");
+        } else {
+            showToast("娣诲姞澶辫触");
+        }
+
+
+    }
+
+    /**
+     * 娣诲姞鍦烘櫙璁惧鍥炶矾 闇�鎸囧畾 鍦烘櫙鍖哄彿 鍜� 鍦烘櫙鍙�
+     * 濡傛灉瀛樺湪鐩稿悓瀛愮綉鍙� 璁惧鍙凤紝鍒欏綋鎴愭贩鍚堟ā鍧楁坊鍔犲埌璇ュ洖璺笅锛屼笉瀛樺湪鍒欐柊娣诲姞妯″潡
+     *
+     * @param mSubnetID
+     * @param mDeviceID
+     * @param mAreaNum       //鍦烘櫙 鍖哄煙鍙�
+     * @param mAreaSceneNum  //鍦烘櫙 褰撳墠鍖哄煙鍦烘櫙鍙�
+     * @param mChannelRemark 璇诲彇鍦烘櫙鐨勫娉ㄥ悕绉� 渚嬪: 鍏ヤ綇銆佽捣搴婃ā寮忋�侀槄璇绘ā寮�
+     * @param parentRemarks  褰撳墠鍥炶矾妯″潡鐨勫娉� 渚嬪: 閰掑簵RCU妯″潡
+     * @param bSaveAndCallBack 鏄惁椹笂淇濆瓨鏈湴骞朵笖鎺ㄩ�丏evicesInfoEvent 浜嬩欢
+     * @return
+     */
+    private void AddScenesDevices(int mSubnetID, int mDeviceID, int mAreaNum, int mAreaSceneNum, String mChannelRemark, String parentRemarks, boolean bSaveAndCallBack) {
+        //娣诲姞鍦烘櫙
+        DevicesData mScenesData = DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, mAreaNum, mAreaSceneNum, mChannelRemark, parentRemarks,true);
+    }
+
+
+    /**
+     * 娣诲姞鍦烘櫙鍥炶矾
+     */
+    private void addScene(){
+
+        String subnetIDStr = et_subnetID.getText().toString();
+        if (TextUtils.isEmpty(subnetIDStr)) {
+            showToast("瀛愮綉鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+        String deviceIDStr = et_deviceID.getText().toString();
+        if (TextUtils.isEmpty(deviceIDStr)) {
+            showToast("璁惧鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+
+        String mPortStr = et_mPort.getText().toString();
+        if (TextUtils.isEmpty(mPortStr)) {
+            showToast("绔彛鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+//        String bitTypeStr = et_bitType.getText().toString();
+//        if (TextUtils.isEmpty(bitTypeStr)) {
+//            showToast("澶х被涓嶈兘涓虹┖");
+//            return;
+//        }
+//
+//        String littleTypeStr = et_littleType.getText().toString();
+//        if (TextUtils.isEmpty(littleTypeStr)) {
+//            showToast("灏忕被涓嶈兘涓虹┖");
+//            return;
+//        }
+//        String mChannelNumStr = et_mChannelNum.getText().toString();
+//        if (TextUtils.isEmpty(littleTypeStr)) {
+//            showToast("鍥炶矾鍙蜂笉鑳戒负绌�");
+//            return;
+//        }
+
+
+        String remarksMkString = et_remarks_mk.getText().toString();
+        if (TextUtils.isEmpty(remarksMkString)) {
+            showToast("妯″潡澶囨敞涓嶈兘涓虹┖");
+            return;
+        }
+
+
+        String remarksString = et_remarks.getText().toString();
+        if (TextUtils.isEmpty(remarksString)) {
+            showToast("澶囨敞涓嶈兘涓虹┖");
+            return;
+        }
+
+        String et_sceneString = et_scene.getText().toString();
+        if (TextUtils.isEmpty(et_sceneString)) {
+            showToast("鍦烘櫙ID涓嶈兘涓虹┖");
+            return;
+        }
+
+
+        mSubnetID = Integer.parseInt(subnetIDStr);
+        mDeviceID = Integer.parseInt(deviceIDStr);
+        port =  Integer.parseInt(mPortStr);
+//        bigType = Integer.parseInt(bitTypeStr);
+//        littleType = Integer.parseInt(littleTypeStr);
+//        mChannelNum = Integer.parseInt(mChannelNumStr);
+        parentRemarks = remarksMkString;
+        int sceneID = Integer.parseInt(et_sceneString);
+
+        DevicesData mScenesData = DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, sceneID, sceneID, remarksString, parentRemarks,true);
+        if (mScenesData != null) {
+            showToast("娣诲姞鎴愬姛");
+        } else {
+            showToast("娣诲姞澶辫触");
+        }
+
+    }
+
+    /**
+     * 鎵归噺娣诲姞
+     * 浠呭仛婕旂ず鐢�
+     */
+    private void addMultipleDevices(){
+
+        String subnetIDStr = et_subnetID.getText().toString();
+        if (TextUtils.isEmpty(subnetIDStr)) {
+            showToast("瀛愮綉鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+        String deviceIDStr = et_deviceID.getText().toString();
+        if (TextUtils.isEmpty(deviceIDStr)) {
+            showToast("璁惧鍙蜂笉鑳戒负绌�");
+            return;
+        }
+
+
+
+        String remarksMkString = et_remarks_mk.getText().toString();
+        if (TextUtils.isEmpty(remarksMkString)) {
+            showToast("妯″潡澶囨敞涓嶈兘涓虹┖");
+            return;
+        }
+
+
+
+
+        mSubnetID = Integer.parseInt(subnetIDStr);
+        mDeviceID = Integer.parseInt(deviceIDStr);
+        parentRemarks = remarksMkString;
+
+//        //娣诲姞涓�涓伅
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, mSubnetID, mDeviceID, 1, "鍚у彴鐏�", parentRemarks,false);
+//        //娣诲姞涓�涓伅
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, mSubnetID, mDeviceID, 2, "浼戦棽鐏�", parentRemarks,false);
+//        //娣诲姞涓�涓伅
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, mSubnetID, mDeviceID, 3, "鐢佃鐏�", parentRemarks,false);
+//        //娣诲姞涓�涓伅
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, mSubnetID, mDeviceID, 6, "寤婄伅", parentRemarks,false);
+//
+//        //娣诲姞涓�涓獥甯�
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.CURTAIN_BIG_TYPE, 2, mSubnetID, mDeviceID, 1, "绐楀笜", parentRemarks,false);
+//        //娣诲姞涓�涓獥甯�
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.CURTAIN_BIG_TYPE, 2, mSubnetID, mDeviceID, 2, "绾辩獥", parentRemarks,false);
+//
+//        //娣诲姞涓�涓┖璋�
+//        DeviceParser.addDevicesListWithoutSearching(port, Configuration.AIR_BIG_TYPE, 0, mSubnetID, mDeviceID, 1, "鎴块棿绌鸿皟", parentRemarks,false);
+//
+////        //娣诲姞閫氱敤寮�鍏� 娓呯悊
+////        DeviceParser.addDevicesListWithoutSearching(port, Configuration.COMMON_SWITCH_BIG_TYPE, 0, mSubnetID, mDeviceID, 15, "娓呯悊", parentRemarks,false);
+////        //娣诲姞閫氱敤寮�鍏� 鍏ヤ綇
+////        DeviceParser.addDevicesListWithoutSearching(port, Configuration.COMMON_SWITCH_BIG_TYPE, 0, mSubnetID, mDeviceID, 16, "鍏ヤ綇", parentRemarks,false);
+////        //娣诲姞閫氱敤寮�鍏� 绋嶅悗
+////        DeviceParser.addDevicesListWithoutSearching(port, Configuration.COMMON_SWITCH_BIG_TYPE, 0, mSubnetID, mDeviceID, 13, "绋嶅悗", parentRemarks,false);
+////        //娣诲姞閫氱敤寮�鍏� 鍕挎壈
+////        DeviceParser.addDevicesListWithoutSearching(port, Configuration.COMMON_SWITCH_BIG_TYPE, 0, mSubnetID, mDeviceID, 14, "鍕挎壈", parentRemarks,false);
+////        //娣诲姞涓�涓畨闃叉ā鍧�
+////        DeviceParser.addDevicesListWithoutSearching(port, Configuration.SECURITY_BIG_TYPE, 0, 12, 1, 1, "瀹夐槻妯″潡", "瀹夐槻妯″潡",false);
+//
+//        //娣诲姞涓�涓満鏅� 杩欓噷鍦烘櫙鍙峰拰鍖哄彿 榛樿涓�鏍�
+//        DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, 2, 2, "绌虹疆鏃犲崱", parentRemarks,false);
+//        //娣诲姞涓�涓満鏅�
+//        DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, 3, 3, "鎻掑崱鍦烘櫙", parentRemarks,false);
+//        //娣诲姞涓�涓満鏅�
+//        DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, 4, 4, "鎴跨伅", parentRemarks,false);
+//        //娣诲姞涓�涓満鏅� 鏈�鍚庝竴涓猙SaveAndCallBack 璁剧疆涓簍rue
+//        DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, 5, 5, "浼氬妯″紡", parentRemarks,true);
+
+
+        //娣诲姞涓�涓�4璺户鐢靛櫒
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 1, "鍚у彴鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 2, "浼戦棽鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 3, "鐢佃鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 4, "寤婄伅", "4璺户鐢靛櫒",false);
+
+
+
+        //娣诲姞涓�涓�4璺户鐢靛櫒
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 1, "鍚у彴鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 2, "浼戦棽鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 3, "鐢佃鐏�", "4璺户鐢靛櫒",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.LIGTH_BIG_TYPE, 0, 111, 3, 4, "寤婄伅", "4璺户鐢靛櫒",false);
+
+
+        //娣诲姞涓�涓�2璺獥甯�
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.CURTAIN_BIG_TYPE, 2, 111, 8, 1, "绐楀笜", "2璺獥甯�",false);
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.CURTAIN_BIG_TYPE, 2, 111, 8, 2, "绾辩獥", "2璺獥甯�",false);
+        //娣诲姞涓�涓紑鍚堝笜
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.CURTAIN_BIG_TYPE, 1, 111, 92, 1, "寮�鍚堝笜", "寮�鍚堝笜",false);
+
+        //娣诲姞涓�涓┖璋�
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.AIR_BIG_TYPE, 0, 111, 9, 1, "鎴块棿绌鸿皟", "HVAC绌鸿皟妯″潡",false);
+        //娣诲姞涓�涓満鏅� 鏈�鍚庝竴涓猙SaveAndCallBack 璁剧疆涓簍rue
+        DeviceParser.addScenesDevicesListWithoutSearching(port, mSubnetID, mDeviceID, 5, 5, "浼氬妯″紡", parentRemarks,true);
+
+
+
+    }
+
+
+
+
+    private void showToast(String text) {
+        Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
+    }
+
+
+}
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java
index e745bbf..2ee969b 100644
--- a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java
@@ -57,7 +57,16 @@
                 }else  if (appliancesInfos.get(position).getBigType() == Configuration.GEOTHERMAL_BIG_TYPE) {
                     //澶х被鏄湴鐑ā鍧楀垯璺宠浆鍒癎eothermalActivity
                     intent.setClass(AppliancesActivity.this, GeothermalActivity.class);
-                }else {
+                }else  if (appliancesInfos.get(position).getBigType() == Configuration.COMMON_SWITCH_BIG_TYPE) {
+                    //澶х被鏄�氱敤寮�鍏冲垯璺宠浆鍒癈trlCommonSwitchActivity
+                    intent.setClass(AppliancesActivity.this, CtrlCommonSwitchActivity.class);
+                }else  if (appliancesInfos.get(position).getBigType() == Configuration.SECURITY_BIG_TYPE) {
+                    //澶х被鏄畨闃叉ā鍧楀垯璺宠浆鍒癈trlSecurityActivity
+                    intent.setClass(AppliancesActivity.this, CtrlSecurityActivity.class);
+                }
+
+
+                else {
                     intent.setClass(AppliancesActivity.this, CtrlActivity.class);
                 }
                 Bundle bundle = new Bundle();
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlCommonSwitchActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlCommonSwitchActivity.java
new file mode 100644
index 0000000..51f6f66
--- /dev/null
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlCommonSwitchActivity.java
@@ -0,0 +1,189 @@
+package com.hdl.sdk.hdl_sdk.activity;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+
+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.Core.HDLCommand;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchStateBackEvent;
+import com.hdl.sdk.hdl_sdk.R;
+import com.hdl.sdk.hdl_sdk.base.BaseActivity;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+/**
+ * 閫氱敤寮�鍏宠澶囨紨绀�
+ */
+public class CtrlCommonSwitchActivity extends BaseActivity {
+
+    /**Topbar*/
+    private RelativeLayout topBarBack;
+    private TextView topBarTitle;
+    private Button btnOpen,btnClose;
+    private TextView switchText;
+    private AppliancesInfo appliancesInfo;
+    private int switchState = 0;
+
+
+    /**
+     * 澶嶅啓isRegisterEventBus()  瑕佹敞鍐屼娇鐢‥ventBus锛岃繖閲岃璁剧疆杩斿洖true
+     *
+     * @return true
+     */
+    @Override
+    protected boolean isRegisterEventBus() {
+        return true;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_ctrl_common_switch);
+        initToolbar();
+        initcurState();
+        initView();
+        initOnClick();
+        displayStateView();
+
+        //浠庣綉缁滀笂鏌ヨ鍒锋柊涓�娆¤澶囩姸鎬侊紝寰呰皟璇�
+//        HDLCommand.getCommonSwitchStateFromNetwork(appliancesInfo);
+
+
+
+    }
+
+    /**
+     * 鍒濆鍖朤oolbar
+     */
+    private void initToolbar() {
+//        topBarBack = findViewById(R.id.ll_top_b_left);
+//        setViewVisible(topBarBack);
+//        topBarTitle = findViewById(R.id.tv_top_b_header_title);
+//        topBarBack.setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View view) {
+//                finish();
+//            }
+//        });
+    }
+
+    private void initcurState() {
+        appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl");
+//        String titleStr = appliancesInfo.getRemarks();
+//        topBarTitle.setText(titleStr);
+
+    }
+
+    private void initView() {
+        btnOpen = findViewById(R.id.btnOpen);
+
+        btnClose = findViewById(R.id.btnClose);
+        switchText = findViewById(R.id.switchText);
+
+
+
+
+
+    }
+
+    private void initOnClick() {
+
+        btnOpen.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                //0=鍏� 255=寮�
+                HDLCommand.commonSwitchCtrl(appliancesInfo, 255);
+            }
+        });
+
+        btnClose.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                HDLCommand.commonSwitchCtrl(appliancesInfo,0);
+            }
+        });
+    }
+
+    private void displayStateView(){
+
+        switch (appliancesInfo.getDeviceType()) {
+            case HDLApConfig.TYPE_COMMON_SWITCH:
+                break;
+            default:
+                finish();//璁惧绫诲瀷涓嶅缁撴潫椤甸潰
+                break;
+        }
+        /**鏍规嵁闇�姹傛槸鍚﹀彂閫佷竴娆¤幏鍙栧埛鏂扮姸鎬佽姹�*/
+
+    }
+
+
+    /**
+     * 閫氱敤寮�鍏虫帶鍒跺洖璋僂vent
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onCommonSwitchCtrlEventMain(CommonSwitchCtrlBackEvent event) {
+        if (event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+                && event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getCommonSwitchBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+        ) {
+            if (!event.isSuccess()) {
+                showToast("閫氱敤寮�鍏虫帶鍒惰秴鏃讹紝璇烽噸鏂板啀璇�");
+                return;
+            }
+
+            showToast("閫氱敤寮�鍏虫帶鍒舵垚鍔�");
+
+            switchState =  event.getCommonSwitchBackInfo().getSwitchState();
+            if(switchState>0){
+                 switchText.setText("褰撳墠鐘舵�侊細寮�");
+            }else{
+                switchText.setText("褰撳墠鐘舵�侊細鍏�");
+            }
+        }
+
+    }
+
+    /**
+     * 閫氱敤寮�鍏� 鍥炶皟Event
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onCommonSwitchStateEventMain(CommonSwitchStateBackEvent event) {
+        if (event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+                && event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getCommonSwitchBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+        ) {
+            if (!event.isSuccess()) {
+                showToast("閫氱敤寮�鍏宠鍙栫姸鎬佽秴鏃讹紝璇烽噸鏂板啀璇�");
+                return;
+            }
+
+//            showToast("閫氱敤寮�鍏虫帶鍒舵垚鍔�");
+
+            switchState =  event.getCommonSwitchBackInfo().getSwitchState();
+            if(switchState>0){
+                switchText.setText("褰撳墠鐘舵�侊細寮�");
+            }else{
+                switchText.setText("褰撳墠鐘舵�侊細鍏�");
+            }
+        }
+
+    }
+
+    // 璇诲彇鎸囧畾RCU鎴块棿闂ㄩ搩鐘舵��
+    // HDLCommand.getHotelRoomDoorbellStatus(100,100);
+
+
+
+}
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlSecurityActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlSecurityActivity.java
new file mode 100644
index 0000000..8f8e5b7
--- /dev/null
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/CtrlSecurityActivity.java
@@ -0,0 +1,318 @@
+package com.hdl.sdk.hdl_sdk.activity;
+
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+
+import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser.SecurityParser;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.SecurityArmingStateBackInfo;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.SecurityStateBean;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLCommand;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityAlarmFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent;
+import com.hdl.sdk.hdl_sdk.R;
+import com.hdl.sdk.hdl_sdk.base.BaseActivity;
+import com.hdl.sdk.hdl_sdk.utlis.HDLLog;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+/**
+ * 瀹夐槻妯″潡鎺у埗椤甸潰
+ */
+public class CtrlSecurityActivity extends BaseActivity {
+    /**
+     * Topbar
+     */
+//    private RelativeLayout topBarBack;
+//    private TextView topBarTitle;
+    private AppliancesInfo appliancesInfo;
+    private Button btn_read_config, btn_set_arming, btn_send_alarm;
+    private Spinner spinner_arming;
+    //    private TextView tv_alarmFire, tv_alarmGas, tv_alarmSudden, tv_alarmEmergency, tv_alarmCurrent, tv_alarmSilent, tv_alarmPower, tv_alarmTemperature;
+    private TextView tv_mes;
+    private static final String[] armingTypeItems = {"鍋囨湡甯冮槻", "绂诲紑甯冮槻", "澶滈棿甯冮槻", "鏅氫笂鏈夊甯冮槻", "鐧藉ぉ甯冮槻", "鎾ら槻"};
+    private int armingState;//甯冮槻鐘舵��  6 = 鎾ら槻 5 = 鐧藉ぉ甯冮槻 4 = 鏅氫笂鏈夊甯冮槻 3 = 澶滈棿甯冮槻 2 = 绂诲紑甯冮槻 1 = 鍋囨湡甯冮槻
+    private SecurityStateBean mSecurityStateBean;
+
+    private int alarmSendState;//鍙戦�佹祴璇曟姤璀�
+
+    /**
+     * 澶嶅啓isRegisterEventBus()  瑕佹敞鍐屼娇鐢‥ventBus锛岃繖閲岃璁剧疆杩斿洖true
+     *
+     * @return true
+     */
+    @Override
+    protected boolean isRegisterEventBus() {
+        return true;
+    }
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_ctrl_security);
+
+        initToolbar();
+        initView();
+        initOnClick();
+        initcurState();
+        //璇诲竷闃茬姸鎬�
+        HDLCommand.getSecurityStateFromNetwork(appliancesInfo);
+    }
+
+    /**
+     * 鍒濆鍖朤oolbar
+     */
+    private void initToolbar() {
+//        topBarBack = findViewById(R.id.ll_top_b_left);
+//        setViewVisible(topBarBack);
+//        topBarTitle = findViewById(R.id.tv_top_b_header_title);
+//        topBarBack.setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View view) {
+//                finish();
+//            }
+//        });
+//        topBarTitle.setText("瀹夐槻妯″潡婕旂ず");
+    }
+
+    /**
+     * initView
+     */
+    private void initView() {
+        btn_read_config = findViewById(R.id.btn_read_config);
+        btn_set_arming = findViewById(R.id.btn_set_arming);
+        btn_send_alarm = findViewById(R.id.btn_send_alarm);
+        spinner_arming = findViewById(R.id.spinner_arming);
+
+//        tv_alarmFire = findViewById(R.id.tv_alarmFire);
+//        tv_alarmGas = findViewById(R.id.tv_alarmGas);
+//        tv_alarmSudden = findViewById(R.id.tv_alarmSudden);
+//
+//        tv_alarmEmergency = findViewById(R.id.tv_alarmEmergency);
+//        tv_alarmCurrent = findViewById(R.id.tv_alarmCurrent);
+//        tv_alarmSilent = findViewById(R.id.tv_alarmSilent);
+//        tv_alarmPower = findViewById(R.id.tv_alarmPower);
+//        tv_alarmTemperature = findViewById(R.id.tv_alarmTemperature);
+        tv_mes = findViewById(R.id.tv_mes);
+
+    }
+
+    /**
+     * initOnClick
+     */
+    private void initOnClick() {
+        /**
+         * 璇诲竷闃茬姸鎬�
+         */
+        btn_read_config.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                HDLCommand.getSecurityStateFromNetwork(appliancesInfo);
+            }
+        });
+
+        /**
+         * 甯冮槻
+         */
+        btn_set_arming.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                /**
+                 * 瑕佸厛鎾ら槻鍚庡竷闃�
+                 */
+                HDLCommand.securityArmingCtrl(appliancesInfo, armingState);
+            }
+        });
+
+//        btn_send_alarm.setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View view) {
+//                alarmSendState++;
+//                if (alarmSendState > 7) {
+//                    alarmSendState = 0;
+//                }
+//                HDLCommand.securitySendAlarm(appliancesInfo, alarmSendState);
+//            }
+//        });
+
+        ArrayAdapter<String> sp_CheckBitAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, armingTypeItems);
+        sp_CheckBitAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner_arming.setAdapter(sp_CheckBitAdapter);
+        spinner_arming.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
+            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
+                armingState = arg2 + 1;
+            }
+
+            public void onNothingSelected(AdapterView<?> arg0) {
+
+            }
+        });
+    }
+
+    /**
+     * initcurState
+     */
+    private void initcurState() {
+        appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl");
+
+//        String titleStr = "";
+//        try {
+//            titleStr = appliancesInfo.getRemarks();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        if (titleStr != null) {
+//            topBarTitle.setText(titleStr);
+//        }
+
+        mSecurityStateBean = new SecurityStateBean();
+    }
+
+
+    /**
+     * 甯冮槻璁剧疆鍥炶皟Event
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onSecurityArmingFeedBackEventMain(SecurityArmingFeedBackEvent event) {
+        if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+                && event.getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+        ) {
+            //鍏堝垽鏂槸鍚﹁秴鏃�
+            if (!event.isSuccess()) {
+                tv_mesSetText("甯冮槻璁剧疆瓒呮椂锛岃閲嶆柊鍐嶈瘯");
+                return;
+            }
+
+            int armingStateGet = event.getArmingState();
+            if (armingStateGet >= 1 && armingStateGet <= 6) {
+                armingState = armingStateGet;
+                spinner_arming.setSelection(armingState - 1, true);
+                tv_mesSetText("甯冮槻鎴愬姛锛屽綋鍓嶇姸鎬侊細" + armingTypeItems[armingState - 1]);
+            } else if (armingState == SecurityParser.ARMING_FAIL) {
+                tv_mesSetText("甯冮槻澶辫触");
+            } else {
+                tv_mesSetText("鏈煡甯冮槻鐘舵��");
+            }
+        }
+    }
+
+    /**
+     * 鏌ヨ甯冮槻鐘舵�� 鍥炶皟Event
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onDeviceStateEventMain(DeviceStateEvent event) {
+
+        if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+        ) {
+            //杩欎釜杩斿洖鐨勪俊鎭槸褰撳墠鐘舵�佺殑
+            switch (event.getAppliancesInfo().getDeviceType()) {
+                case HDLApConfig.TYPE_SECURITY_MODULE:
+                    if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) {
+                        if (!event.isSuccess()) {
+                            tv_mesSetText("鑾峰彇甯冮槻鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+                            return;
+                        }
+
+                        SecurityArmingStateBackInfo mSecurityArmingStateBackInfo = new SecurityArmingStateBackInfo(event.getAppliancesInfo().getArrCurState());
+                        if (mSecurityArmingStateBackInfo == null) {
+                            tv_mesSetText("鑾峰彇甯冮槻鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+                            return;
+                        }
+
+                        int armingStateBack = mSecurityArmingStateBackInfo.getArmingState();
+                        if (armingStateBack == 0) {   //璇诲彇杩斿洖0涓烘挙闃�
+                            armingState = SecurityParser.ARMING_DISARMING;
+                            spinner_arming.setSelection(armingState - 1, true);
+                            tv_mesSetText("鑾峰彇鎴愬姛锛屽綋鍓嶇姸鎬侊細" + armingTypeItems[armingState - 1]);
+                        } else if (armingStateBack >= 1 && armingStateBack <= 6) {
+                            armingState = armingStateBack;//鏇存柊鐘舵�佸��
+                            spinner_arming.setSelection(armingState - 1, true);
+                            tv_mesSetText("鑾峰彇鎴愬姛锛屽綋鍓嶇姸鎬侊細" + armingTypeItems[armingState - 1]);
+                        } else {
+                            tv_mesSetText("鑾峰彇鎴愬姛锛屾湭鐭ュ竷闃茬姸鎬�");
+                        }
+
+                    }
+                    break;
+            }
+        }
+    }
+
+
+    /**
+     * 鎶ヨ鍥炶皟Event
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onSecurityAlarmFeedBackEventMain(SecurityAlarmFeedBackEvent event) {
+        if (event.getSecurityBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getSecurityBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+                && event.getSecurityBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+        ) {
+//            //鍏堝垽鏂槸鍚﹁秴鏃�
+//            if (!event.isSuccess()) {
+//                tv_mesSetText("鎶ヨ璁剧疆瓒呮椂锛岃閲嶆柊鍐嶈瘯");
+//                return;
+//            }
+
+            mSecurityStateBean = event.getSecurityBackInfo().getSecurityStateBean();
+            if (mSecurityStateBean != null) {
+                setAllAlarmStateTextView();
+            }
+
+        }
+    }
+
+
+    /**
+     * TextView 鏄剧ず淇℃伅骞朵笖showToast鎻愮ず
+     *
+     * @param mes
+     */
+    private void tv_mesSetText(String mes) {
+        tv_mes.setText(mes);
+        showToast(mes);
+    }
+
+    private String getAlarmStateString(int state, String alarmName) {
+        if (state == 0) {
+            return "姝e父";
+        } else {
+            HDLLog.I(alarmName + ", 鎶ヨ鐘舵�侊紒");
+            return "璀﹀憡锛屾姤璀︾姸鎬侊紒";
+        }
+    }
+
+
+    private void setAllAlarmStateTextView() {
+//        tv_alarmFire.setText(getAlarmStateString(mSecurityStateBean.getAlarmFire(), "鐏"));
+//        tv_alarmGas.setText(getAlarmStateString(mSecurityStateBean.getAlarmGas(), "鐓ゆ皵鎶ヨ"));
+//        tv_alarmSudden.setText(getAlarmStateString(mSecurityStateBean.getAlarmSudden(), "绐佸彂鎶ヨ"));
+//        tv_alarmEmergency.setText(getAlarmStateString(mSecurityStateBean.getAlarmEmergency(), "绱ф�ユ姤璀�"));
+//        tv_alarmCurrent.setText(getAlarmStateString(mSecurityStateBean.getAlarmCurrent(), "鐢垫祦鎶ヨ"));
+//        tv_alarmSilent.setText(getAlarmStateString(mSecurityStateBean.getAlarmSilent(), "鏃犲0鎶ヨ"));
+//        tv_alarmPower.setText(getAlarmStateString(mSecurityStateBean.getAlarmPower(), "鍔熺巼鎶ヨ"));
+//        tv_alarmTemperature.setText(getAlarmStateString(mSecurityStateBean.getAlarmTemperature(), "娓╁害鎶ヨ"));
+
+
+    }
+}
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/MainActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/MainActivity.java
index 0118cef..360738d 100644
--- a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/MainActivity.java
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/MainActivity.java
@@ -57,7 +57,12 @@
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         NetWorkUtil.setIsGetWifiBroadCast(true);
+//        HDLSDK.init(this);
+//        HDLSDK.startHomeMode(this);
+
         HDLCommand.init(this);
+        HDLCommand.startHomeMode(this);
+
 //        /**閰嶇疆鏄惁寮�鍚疭DK鎵撳嵃鏃ュ織锛岄粯璁や负鎵撳紑*/
 //        HDLCommand.setHDLLogOpen(false);//
 
@@ -169,7 +174,7 @@
         btn_getlocal_add.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                startActivity(AddDevicesManuallyActivity.class);
+                startActivity(AddDevicesActivity.class);
 
             }
         });
diff --git a/app/src/main/res/layout/activity_add_devices.xml b/app/src/main/res/layout/activity_add_devices.xml
new file mode 100644
index 0000000..f853785
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_devices.xml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_main"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="10dp"
+            android:orientation="vertical">
+
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:gravity="center|left"
+                android:text="鎵嬪姩娣诲姞"
+                android:textColor="@android:color/black"
+                android:textSize="24sp" />
+
+
+            <TextView
+                android:layout_width="100dp"
+                android:layout_height="match_parent"
+                android:gravity="center|left"
+                android:text="璁惧鍙傛暟"
+                android:textColor="@android:color/black"
+                android:textSize="18sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="瀛愮綉鍙凤細"></TextView>
+
+                <EditText
+                    android:id="@+id/et_subnetID"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:hint="瀛愮綉鍙凤紙鑼冨洿0 - 254锛�"
+                    android:inputType="number"
+                    android:maxLength="3"
+                    android:gravity="center|left"
+                    android:text="100" />
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="璁惧鍙凤細"></TextView>
+
+
+                <EditText
+                    android:id="@+id/et_deviceID"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:hint="璁惧鍙凤紙鑼冨洿0 - 254锛�"
+                    android:gravity="center|left"
+                    android:inputType="number"
+                    android:maxLength="3"
+                    android:text="100" />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="澶х被锛�"></TextView>
+
+
+                <EditText
+                    android:id="@+id/et_bitType"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:hint="澶х被"
+                    android:inputType="number"
+                    android:maxLength="3"
+                    android:gravity="center|left"
+                    android:text="1" />
+
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="灏忕被锛�"></TextView>
+
+
+                <EditText
+                    android:id="@+id/et_littleType"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:hint="灏忕被"
+                    android:inputType="number"
+                    android:maxLength="3"
+                    android:text="0"
+
+                    />
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="鍥炶矾鍙凤細"></TextView>
+
+                <EditText
+                    android:id="@+id/et_mChannelNum"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:hint="鍥炶矾鍙�"
+                    android:inputType="number"
+                    android:maxLength="3"
+                    android:gravity="center|left"
+                    android:text="1"
+
+                    />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="绔彛鍙凤細"></TextView>
+
+                <EditText
+                    android:id="@+id/et_mPort"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:hint="璇疯緭鍏ョ鍙e彿"
+                    android:inputType="number"
+                    android:maxLength="4"
+                    android:gravity="center|left"
+                    android:text="6000"
+
+                    />
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="12sp"
+                    android:text="妯″潡澶囨敞锛�"></TextView>
+
+                <EditText
+                    android:id="@+id/et_remarks_mk"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:hint="璇疯緭鍏ユā鍧楀娉�"
+                    android:text="閰掑簵RCU" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="70dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="12sp"
+                    android:text="鍥炶矾澶囨敞锛�"></TextView>
+
+                <EditText
+                    android:id="@+id/et_remarks"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:hint="璇疯緭鍏ュ洖璺娉�" />
+            </LinearLayout>
+
+
+
+            <Button
+                android:id="@+id/btn_add"
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp"
+                android:text="娣诲姞" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp">
+
+                <TextView
+                    android:layout_width="80dp"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:textSize="16sp"
+                    android:text="鍦烘櫙鍙凤細"></TextView>
+
+                <EditText
+                    android:id="@+id/et_scene"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:gravity="center|left"
+                    android:hint="鍖哄彿鍜屽満鏅彿" />
+            </LinearLayout>
+
+            <Button
+                android:id="@+id/btn_scene"
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp"
+                android:text="娣诲姞鍦烘櫙" />
+
+            <Button
+                android:id="@+id/btn_addAll"
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp"
+                android:text="娣诲姞娴嬭瘯" />
+
+
+        </LinearLayout>
+
+    </ScrollView>
+</RelativeLayout>
diff --git a/app/src/main/res/layout/activity_ctrl_common_switch.xml b/app/src/main/res/layout/activity_ctrl_common_switch.xml
new file mode 100644
index 0000000..03bdbd9
--- /dev/null
+++ b/app/src/main/res/layout/activity_ctrl_common_switch.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_ctrl"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+<!--    <include-->
+<!--        android:id="@+id/hdl_top_bar_layout"-->
+<!--        layout="@layout/hdl_toolbar_top_view_b"/>-->
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginRight="20dp"
+        android:layout_marginLeft="20dp"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:text="閫氱敤寮�鍏宠澶�"
+            android:gravity="center|left"
+            android:textSize="@dimen/ts_24"
+
+            />
+
+        <TextView
+            android:id="@+id/switchText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:textSize="@dimen/ts_20"
+            android:text="杩欎釜鎸夐挳鍋氶�氱敤寮�鍏宠澶囩殑婕旂ず" />
+
+        <Button
+            android:id="@+id/btnOpen"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="寮�" />
+
+
+        <Button
+            android:id="@+id/btnClose"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="鍏�" />
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_ctrl_security.xml b/app/src/main/res/layout/activity_ctrl_security.xml
new file mode 100644
index 0000000..87799b4
--- /dev/null
+++ b/app/src/main/res/layout/activity_ctrl_security.xml
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_ctrl"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="20dp"
+            android:orientation="vertical">
+
+            <!--<TextView-->
+            <!--android:layout_width="match_parent"-->
+            <!--android:layout_height="40dp"-->
+            <!--android:gravity="center|left"-->
+            <!--android:text="MCU 鍗忚璋冭瘯"-->
+            <!--android:textColor="@color/black"-->
+            <!--android:textSize="@dimen/ts_24" />-->
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="40dp"
+                android:gravity="center|left"
+                android:text="瀹夐槻妯″潡"
+                android:textSize="@dimen/ts_20" />
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="30dp"
+                android:gravity="center|left"
+                android:text="甯冮槻鍓嶏紝瑕佸厛鎾ら槻鍚庡竷闃�"
+                android:textSize="@dimen/ts_18" />
+
+            <LinearLayout
+                android:id="@+id/air"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+
+
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="鐏鐘舵�侊細" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmFire"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="鐓ゆ皵鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmGas"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="绐佸彂鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmSudden"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="绱ф�ユ姤璀︼細" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmEmergency"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="鐢垫祦鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmCurrent"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="鏃犲0鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmSilent"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="鍔熺巼鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmPower"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+
+                <!--<LinearLayout-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="30dp">-->
+                    <!--<TextView-->
+                        <!--android:layout_width="100dp"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center"-->
+                        <!--android:textColor="@color/black"-->
+                        <!--android:textSize="@dimen/ts_18"-->
+                        <!--android:text="娓╁害鎶ヨ锛�" />-->
+                    <!--<TextView-->
+                        <!--android:id="@+id/tv_alarmTemperature"-->
+                        <!--android:layout_width="wrap_content"-->
+                        <!--android:layout_height="match_parent"-->
+                        <!--android:gravity="center|left"-->
+                        <!--android:text="姝e父" />-->
+                <!--</LinearLayout>-->
+
+
+
+
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="40dp">
+
+                    <TextView
+                        android:layout_width="100dp"
+                        android:layout_height="match_parent"
+                        android:gravity="center"
+                        android:textSize="@dimen/ts_18"
+                        android:text="甯冮槻鐘舵�侊細" />
+
+                    <Spinner
+                        android:id="@+id/spinner_arming"
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:minWidth="120dp"></Spinner>
+                </LinearLayout>
+
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="40dp">
+
+                    <Button
+                        android:id="@+id/btn_read_config"
+                        android:layout_width="wrap_content"
+                        android:layout_height="40dp"
+                        android:textSize="@dimen/ts_18"
+                        android:text="璇诲彇瀹夐槻璁剧疆 " />
+
+                    <Button
+                        android:id="@+id/btn_set_arming"
+                        android:layout_width="wrap_content"
+                        android:layout_height="40dp"
+                        android:textSize="@dimen/ts_18"
+                        android:text="淇敼甯冮槻鐘舵��" />
+
+
+
+                </LinearLayout>
+                <Button
+                    android:id="@+id/btn_send_alarm"
+                    android:layout_width="wrap_content"
+                    android:layout_height="40dp"
+                    android:textSize="@dimen/ts_18"
+                    android:visibility="gone"
+                    android:text="鍙戦�佹姤璀︽寚浠�" />
+
+                <TextView
+                    android:id="@+id/tv_mes"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="瀹夐槻妯″潡甯冮槻婕旂ず"
+                    android:textSize="@dimen/ts_20" />
+
+
+
+
+
+
+
+            </LinearLayout>
+        </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sensor.xml b/app/src/main/res/layout/activity_sensor.xml
new file mode 100644
index 0000000..251ffef
--- /dev/null
+++ b/app/src/main/res/layout/activity_sensor.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+xmlns:tools="http://schemas.android.com/tools"
+android:id="@+id/activity_ctrl"
+android:layout_width="match_parent"
+android:layout_height="match_parent">
+
+<!--<include-->
+<!--    android:id="@+id/hdl_top_bar_layout"-->
+<!--    layout="@layout/hdl_toolbar_top_view_b" />-->
+
+
+
+<LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginLeft="20dp"
+    android:layout_marginRight="20dp"
+    android:layout_marginTop="20dp"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/sensorText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="杩欎釜鎸夐挳鍋氫紶鎰熷櫒婕旂ず" />
+
+    <Button
+        android:id="@+id/sensorbtn"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="鑾峰彇浼犳劅鍣ㄧ姸鎬�" />
+</LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..662d34a
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+
+    <!-- 榛樿瀛椾綋澶у皬 -->
+    <dimen name="textSize_title">20sp</dimen>
+    <dimen name="ts_44">44sp</dimen>
+    <dimen name="ts_40">40sp</dimen>
+    <dimen name="ts_32">32sp</dimen>
+    <dimen name="ts_24">24sp</dimen>
+    <dimen name="ts_22">22sp</dimen>
+    <dimen name="ts_20">20sp</dimen>
+    <dimen name="ts_18">18sp</dimen>
+    <dimen name="ts_16">16sp</dimen>
+    <dimen name="ts_15">15sp</dimen>
+    <dimen name="ts_14">14sp</dimen>
+    <dimen name="ts_13">13sp</dimen>
+    <dimen name="ts_12">12sp</dimen>
+    <dimen name="ts_11">11sp</dimen>
+    <dimen name="ts_10">10sp</dimen>
+
+    <dimen name="toolbar_height">56dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java
index 6a84fd1..e4af1f5 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java
@@ -15,6 +15,8 @@
     public static final int GEOTHERMAL_BIG_TYPE = 8;
     public static final int AIR_BIG_TYPE = 7;
     public static final int AUDIO_BIG_TYPE = 9;
+    /**瀹夐槻鍔熻兘*/
+    public static final int SECURITY_BIG_TYPE = 10;
     public static final int LOGIC_BIG_TYPE = 12;
     public static final int GLOBAL_LOGIC_BIG_TYPE = 17;
     /**
@@ -25,6 +27,9 @@
     //鏀寔鐨勫皬绫�
     public static final int FRESH_AIR_LITTLE_TYPE_0 = 0;
     public static final int GEOTHERMAL_LITTLE_TYPE_0 = 0;
+
+    /**閫氱敤寮�鍏�*/
+    public static final int COMMON_SWITCH_BIG_TYPE = 100;
 
 
     //灏忕被 鍏堜笉鍋氬垎绫�
@@ -148,6 +153,24 @@
     public static final int FRESH_AIR_STATE_COMMAND = 0x144C;
     public static final int FRESH_AIR_STATE_BACK_COMMAND = 0x144D;
 
+    /**
+     * 2020-06-23 瀹夐槻鍔熻兘妯″潡鎿嶄綔鐮併�佺姸鎬佽鍙栫爜  ARMING甯冮槻 ALARM鎶ヨ
+     */
+    public static final int SECURITY_ARMING_CTRL_COMMAND = 0x0104;//甯冮槻璁剧疆
+    public static final int SECURITY_ARMING_CTRL_BACK_COMMAND = 0x0105;//甯冮槻璁剧疆鍙嶉
+    public static final int SECURITY_STATE_COMMAND = 0x011E;//璇诲彇瀹夐槻璁剧疆
+    public static final int SECURITY_STATE_BACK_COMMAND = 0x011F;//璇诲彇瀹夐槻璁剧疆鍙嶉
+    public static final int SECURITY_ALARM_CTRL_COMMAND = 0x010C;//鎶ヨ璁剧疆
+    public static final int SECURITY_ALARM_CTRL_BACK_COMMAND = 0x010D;//鎶ヨ璁剧疆鍙嶉
+
+    /**
+     * 2020-06-23 閫氱敤寮�鍏�
+     */
+    public static final int COMMON_SWITCH_CTRL_COMMAND = 0xE01C;//閫氱敤寮�鍏虫帶鍒�
+    public static final int COMMON_SWITCH_CTRL_BACK_COMMAND = 0xE01D;//閫氱敤寮�鍏虫帶鍒跺弽棣�
+    public static final int COMMON_SWITCH_STATE_COMMAND = 0xE018;//璇婚�氱敤寮�鍏崇姸鎬�
+    public static final int COMMON_SWITCH_STATE_BACK_COMMAND = 0xE019;//璇婚�氱敤寮�鍏崇姸鎬佸弽棣�
+
 
     /**
      * RCU 閰嶇疆鏁版嵁
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/Config/HDLApConfig.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/Config/HDLApConfig.java
index 97580f2..32963d5 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/Config/HDLApConfig.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/Config/HDLApConfig.java
@@ -54,16 +54,21 @@
     public static final int TYPE_SENSOR_ELECTRICITY = 624;
     public static final int TYPE_SENSOR_POWER = 625;
 
-
+    public static final int TYPE_SENSOR_FLOODING = 626;   //姘存蹈//2019-11-4 鏂板
+    public static final int TYPE_SENSOR_DOOR_MAGNET= 627;   //闂ㄧ銆佺獥纾�
+    public static final int TYPE_SENSOR_EMERGENCY_BUTTON = 628;    //绱ф�ユ寜閽�
 
     //2019-07
     public static final int TYPE_GEOTHERMAL_MODULE = 801;       //鍦扮儹妯″潡锛�0锛�	鍥炶矾鍙凤紝澶囨敞锛屽湴鐑姸鎬�
 //    public static final int TYPE_GEOTHERMAL_MODULE_PANEL = 802; //甯歌鍦扮儹闈㈡澘锛�1锛�	闈㈡澘鍙凤紝澶囨敞锛屾湇鍔″櫒妯″紡锛屽湴鐑姸鎬�
 //    public static final int TYPE_GEOTHERMAL_MODULE_PI = 803;    //甯I杩愮畻鐨勫湴鐑潰鏉匡紙2锛�	闈㈡澘鍙凤紝澶囨敞锛屽湴鐑姸鎬�
 
+    //瀹夐槻鍔熻兘妯″潡
+    public static final int TYPE_SECURITY_MODULE = 1001;
+
     public static final int TYPE_FRESH_AIR = 1901;              //鏂伴绯荤粺
 
-
+    public static final int TYPE_COMMON_SWITCH = 10001;//閫氱敤寮�鍏�
 
 
 
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLCommonSwitch/CommonSwitchBackInfo.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLCommonSwitch/CommonSwitchBackInfo.java
new file mode 100644
index 0000000..5a614fc
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLCommonSwitch/CommonSwitchBackInfo.java
@@ -0,0 +1,39 @@
+package com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch;
+
+
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+
+/**
+ * Created by jlchen on 2020-04-01.
+ */
+public class CommonSwitchBackInfo {
+
+    private AppliancesInfo appliancesInfo;
+    private int switchNum;  //鍥炶矾鍙�
+    private int switchState;  //寮�鍏崇姸鎬�
+
+    public AppliancesInfo getAppliancesInfo() {
+        return appliancesInfo;
+    }
+
+    public void setAppliancesInfo(AppliancesInfo appliancesInfo) {
+        this.appliancesInfo = appliancesInfo;
+    }
+
+
+    public int getSwitchNum() {
+        return switchNum;
+    }
+
+    public void setSwitchNum(int switchNum) {
+        this.switchNum = switchNum;
+    }
+
+    public int getSwitchState() {
+        return switchState;
+    }
+
+    public void setSwitchState(int switchState) {
+        this.switchState = switchState;
+    }
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/Parser/SecurityParser.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/Parser/SecurityParser.java
new file mode 100644
index 0000000..37e3f3c
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/Parser/SecurityParser.java
@@ -0,0 +1,117 @@
+package com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser;
+
+
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+
+/**
+ * Created by JLChen on 2019/7/29
+ */
+public class SecurityParser {
+
+    public static final int fail = 0;
+    /**
+     * 甯冮槻璁剧疆
+     */
+    //甯冮槻绫诲瀷   6 =鎾ら槻 5 = 鐧藉ぉ甯冮槻 4 = 鏅氫笂鏈夊甯冮槻 3 = 澶滈棿甯冮槻 2 = 绂诲紑甯冮槻 1 = 鍋囨湡甯冮槻
+    public static final int ARMING_HOLIDAY = 1;
+    public static final int ARMING_LEAVE = 2;
+    public static final int ARMING_AT_NIGHT = 3;
+    public static final int ARMING_AT_NIGHT_WITH_GUEST = 4;
+    public static final int ARMING_DURING_THE_DAY = 5;
+    public static final int ARMING_DISARMING = 6;
+
+    public static final int ARMING_FAIL = 7;//甯冮槻澶辫触
+//    public static final int ARMING_UNKNOWM = -1;//鏈煡鐘舵��
+
+    //鑾峰彇甯冮槻 bytes鏁版嵁
+    public static byte[] getArmingByte(AppliancesInfo appliancesInfo, int state) {
+        try {
+            if (state < 0 || state > 6) {//鍙傛暟閿欒榛樿鎾ら槻
+                state = 6;
+            }
+            byte[] addBytes = new byte[2];
+            addBytes[0] = (byte) appliancesInfo.getChannelNum();
+            addBytes[1] = (byte) state;
+            return addBytes;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new byte[]{fail};
+        }
+
+    }
+
+
+//        Bit 4 0 = 姝e父鐘舵�� , 1 = 鐢垫祦鎶ヨ
+//        Bit 3 0 =姝e父鐘舵��, 1 = 绱ф�ユ姤璀�
+//        Bit 2 0 =姝e父鐘舵��, 1 = 绐佸彂鎶ヨ
+//        Bit 1 0 =姝e父鐘舵��, 1 =鐓ゆ皵鎶ヨ
+//        Bit 0 0 =姝e父鐘舵��, 1 = 鐏 3
+//
+// Encode Bit Value
+//        Bit 7 0 =姝e父鐘舵��, 1 = 娓╁害鎶ヨ
+//        Bit 6 0 =姝e父鐘舵��, 1 = 鍔熺巼鎶ヨ
+//        Bit 5 0 =姝e父鐘舵��, 1 = 鏃犲0鎶ヨ
+//private int CurrentAlarm;   //鐢垫祦鎶ヨ
+//    private int EmergencyAlarm; //绱ф�ユ姤璀�
+//    private int SuddenAlarm;    //绐佸彂鎶ヨ
+//    private int FireAlarm;      //鐏 3
+//
+//    private int TemperatureAlarm;//娓╁害鎶ヨ
+//    private int PowerAlarm;     //鍔熺巼鎶ヨ
+//    private int SilentAlarm;    //鏃犲0鎶ヨ
+    /**
+     * 鎶ヨ璁剧疆 ALARM
+     */
+    public static final int ALARM_CURRENT = 4;      //鐢垫祦鎶ヨ
+    public static final int ALARM_EMERGENCY = 3;    //绱ф�ユ姤璀�
+    public static final int ALARM_SUDDEN = 2;       //绐佸彂鎶ヨ
+    public static final int ALARM_GAS = 1;          //鐓ゆ皵鎶ヨ
+    public static final int ALARM_FIRE = 0;         //鐏 3
+    public static final int ALARM_TEMPERATURE = 7;  //娓╁害鎶ヨ
+    public static final int ALARM_POWER = 6;        //鍔熺巼鎶ヨ
+    public static final int ALARM_SILENT = 5;       //鏃犲0鎶ヨ
+
+    //鑾峰彇鎶ヨ璁剧疆 bytes鏁版嵁 鍙姤璀︿竴绉嶆儏鍐�
+    public static byte[] getAlarmByte(AppliancesInfo appliancesInfo, int state) {
+        try {
+            byte[] addBytes = new byte[3];
+            addBytes[0] = (byte) appliancesInfo.getChannelNum();
+            switch (state) {
+                case ALARM_FIRE:
+                    addBytes[1] = 0x01;
+                    break;
+                case ALARM_GAS:
+                    addBytes[1] = (byte) (1 << 1);
+                    break;
+                case ALARM_SUDDEN:
+                    addBytes[1] = (byte) (1 << 2);
+                    break;
+                case ALARM_EMERGENCY:
+                    addBytes[1] = (byte) (1 << 3);
+                    break;
+                case ALARM_CURRENT:
+                    addBytes[1] = (byte) (1 << 4);
+                    break;
+
+                case ALARM_SILENT:
+                    addBytes[2] = (byte) (1 << 5);
+                    break;
+                case ALARM_POWER:
+                    addBytes[2] = (byte) (1 << 6);
+                    break;
+                case ALARM_TEMPERATURE:
+                    addBytes[2] = (byte) (1 << 7);
+                    break;
+                default:
+                    break;
+            }
+
+            return addBytes;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new byte[]{fail};
+        }
+
+    }
+
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityArmingStateBackInfo.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityArmingStateBackInfo.java
new file mode 100644
index 0000000..27183ed
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityArmingStateBackInfo.java
@@ -0,0 +1,24 @@
+package com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity;
+
+/**
+ * Created by JLChen on 2019/8/9
+ */
+public class SecurityArmingStateBackInfo {
+    private int armingState;    //甯冮槻鐘舵��  6 = 鎾ら槻 5 = 鐧藉ぉ甯冮槻 4 = 鏅氫笂鏈夊甯冮槻 3 = 澶滈棿甯冮槻 2 = 绂诲紑甯冮槻 1 = 鍋囨湡甯冮槻
+
+    public SecurityArmingStateBackInfo(byte[] curState) {
+        armingState = -1;
+        if (curState == null) return;
+        if (curState.length >= 2) {
+            armingState = curState[1] & 0xFF;
+        }
+    }
+
+    public int getArmingState() {
+        return armingState;
+    }
+
+    public void setArmingState(int armingState) {
+        this.armingState = armingState;
+    }
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityBackInfo.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityBackInfo.java
new file mode 100644
index 0000000..4f2f45b
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLAppliances/HDLSecurity/SecurityBackInfo.java
@@ -0,0 +1,132 @@
+package com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity;
+
+
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser.SecurityParser;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.SecurityStateBean;
+
+/**
+ * Created by JLChen on 2019/7/29
+ * 瀹夐槻妯″潡
+ */
+public class SecurityBackInfo {
+
+    private AppliancesInfo appliancesInfo;
+    private String remarks;
+    private int channelNum;  //鍥炶矾鍙�
+    private SecurityStateBean mSecurityStateBean;
+
+    private byte[] curState;    //杩斿洖淇℃伅
+
+    public SecurityBackInfo() {
+
+    }
+
+    public SecurityBackInfo(AppliancesInfo mAppliancesInfo) {
+        this.appliancesInfo = mAppliancesInfo;
+        this.remarks = mAppliancesInfo.getRemarks();
+        this.curState = mAppliancesInfo.getArrCurState();
+        this.mSecurityStateBean = new SecurityStateBean();
+
+        if (this.curState == null) return;
+
+        if (this.curState.length >= 3) {
+            this.channelNum = this.curState[0] & 0xFF;
+            this.mSecurityStateBean.alarmCurrent = this.curState[1] & 0x10;
+            this.mSecurityStateBean.alarmEmergency = this.curState[1] & 0x08;
+            this.mSecurityStateBean.alarmSudden = this.curState[1] & 0x04;
+            this.mSecurityStateBean.alarmGas = this.curState[1] & 0x02;
+            this.mSecurityStateBean.alarmFire = this.curState[1] & 0x01;
+            this.mSecurityStateBean.alarmTemperature = this.curState[2] & 0x80;
+            this.mSecurityStateBean.alarmPower = this.curState[2] & 0x40;
+            this.mSecurityStateBean.alarmSilent = this.curState[2] & 0x20;
+            int mCurState = this.curState[2] & 0x1F;
+
+            switch (mCurState) {
+                case 0:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_DISARMING;//鎾ら槻鐘舵��
+                    break;
+                case 1:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_HOLIDAY;//鍋囨湡甯冮槻
+                    break;
+                case 2:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_LEAVE;//绂诲紑甯冮槻
+                    break;
+                case 4:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_AT_NIGHT;//澶滈棿甯冮槻
+                    break;
+                case 8:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_AT_NIGHT_WITH_GUEST;//鏅氫笂鏈夊甯冮槻
+                    break;
+                case 10:
+                    this.mSecurityStateBean.armingState = SecurityParser.ARMING_DURING_THE_DAY;//鐧藉ぉ甯冮槻
+                    break;
+                default:
+//                    this.armingState = SecurityParser.ARMING_DISARMING;//鎾ら槻鐘舵��
+                    this.mSecurityStateBean.armingState = -1;  //鏈煡鐘舵��
+                    break;
+            }
+
+
+        }
+
+    }
+
+
+    public AppliancesInfo getAppliancesInfo() {
+        return appliancesInfo;
+    }
+
+    public void setAppliancesInfo(AppliancesInfo appliancesInfo) {
+        this.appliancesInfo = appliancesInfo;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public int getChannelNum() {
+        return channelNum;
+    }
+
+    public void setChannelNum(int channelNum) {
+        this.channelNum = channelNum;
+    }
+
+    public SecurityStateBean getSecurityStateBean() {
+        return mSecurityStateBean;
+    }
+
+    public void setSecurityStateBean(SecurityStateBean securityStateBean) {
+        mSecurityStateBean = securityStateBean;
+    }
+
+    public byte[] getCurState() {
+        return curState;
+    }
+
+    public void setCurState(byte[] curState) {
+        this.curState = curState;
+    }
+}
+
+
+//        Bit 4 0 = 姝e父鐘舵�� , 1 = 鐢垫祦鎶ヨ
+//        Bit 3 0 =姝e父鐘舵��, 1 = 绱ф�ユ姤璀�
+//        Bit 2 0 =姝e父鐘舵��, 1 = 绐佸彂鎶ヨ
+//        Bit 1 0 =姝e父鐘舵��, 1 = 鐓ゆ皵鎶ヨ
+//        Bit 0 0 =姝e父鐘舵��, 1 = 鐏 3
+//
+// Encode Bit Value
+//        Bit 7 0 =姝e父鐘舵��, 1 = 娓╁害鎶ヨ
+//        Bit 6 0 =姝e父鐘舵��, 1 = 鍔熺巼鎶ヨ
+//        Bit 5 0 =姝e父鐘舵��, 1 = 鏃犲0鎶ヨ
+//        Bit 4 0 =姝e父鐘舵��, 1 = 鐧藉ぉ甯冮槻鐘舵��
+//        Bit 3 0 =姝e父鐘舵��, 1 = 鏅氫笂鏈夊甯冮槻
+//        Bit 2 0 =姝e父鐘舵��, 1 = 澶滈棿甯冮槻
+//        Bit 1 0 =姝e父鐘舵��, 1 = 绂诲紑甯冮槻
+//        Bit 0 0 =姝e父鐘舵��, 1 = 鍋囨湡甯冮槻
\ No newline at end of file
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Bean/SecurityStateBean.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Bean/SecurityStateBean.java
new file mode 100644
index 0000000..617031c
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Bean/SecurityStateBean.java
@@ -0,0 +1,90 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.Bean;
+
+/**
+ * Created by JLChen on 2019/7/29
+ */
+public class SecurityStateBean {
+    public int alarmCurrent;   //鐢垫祦鎶ヨ
+    public int alarmEmergency; //绱ф�ユ姤璀�
+    public int alarmSudden;    //绐佸彂鎶ヨ
+    public int alarmGas;       //鐓ゆ皵鎶ヨ
+    public int alarmFire;      //鐏 3
+
+    public int alarmTemperature;//娓╁害鎶ヨ
+    public int alarmPower;     //鍔熺巼鎶ヨ
+    public int alarmSilent;    //鏃犲0鎶ヨ
+
+    public int armingState;    //甯冮槻鐘舵��  6 = 鎾ら槻 5 = 鐧藉ぉ甯冮槻 4 = 鏅氫笂鏈夊甯冮槻 3 = 澶滈棿甯冮槻 2 = 绂诲紑甯冮槻 1 = 鍋囨湡甯冮槻
+
+    public int getAlarmCurrent() {
+        return alarmCurrent;
+    }
+
+    public void setAlarmCurrent(int alarmCurrent) {
+        this.alarmCurrent = alarmCurrent;
+    }
+
+    public int getAlarmEmergency() {
+        return alarmEmergency;
+    }
+
+    public void setAlarmEmergency(int alarmEmergency) {
+        this.alarmEmergency = alarmEmergency;
+    }
+
+    public int getAlarmSudden() {
+        return alarmSudden;
+    }
+
+    public void setAlarmSudden(int alarmSudden) {
+        this.alarmSudden = alarmSudden;
+    }
+
+    public int getAlarmGas() {
+        return alarmGas;
+    }
+
+    public void setAlarmGas(int alarmGas) {
+        this.alarmGas = alarmGas;
+    }
+
+    public int getAlarmFire() {
+        return alarmFire;
+    }
+
+    public void setAlarmFire(int alarmFire) {
+        this.alarmFire = alarmFire;
+    }
+
+    public int getAlarmTemperature() {
+        return alarmTemperature;
+    }
+
+    public void setAlarmTemperature(int alarmTemperature) {
+        this.alarmTemperature = alarmTemperature;
+    }
+
+    public int getAlarmPower() {
+        return alarmPower;
+    }
+
+    public void setAlarmPower(int alarmPower) {
+        this.alarmPower = alarmPower;
+    }
+
+    public int getAlarmSilent() {
+        return alarmSilent;
+    }
+
+    public void setAlarmSilent(int alarmSilent) {
+        this.alarmSilent = alarmSilent;
+    }
+
+    public int getArmingState() {
+        return armingState;
+    }
+
+    public void setArmingState(int armingState) {
+        this.armingState = armingState;
+    }
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
index d64cb57..c0593f8 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java
@@ -8,6 +8,7 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.AirCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.Parser.AirCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAudio.HDLAudio;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.CurtainCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.Parser.CurtainCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLFreshAir.FreshAirBackInfo;
@@ -16,9 +17,11 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLGeothermal.Parser.GeothermalParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLight.LightCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLogic.LogicCtrlBackInfo;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser.SecurityParser;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.DeviceStateBean;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.AirFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CurtainFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.EventCode;
@@ -26,6 +29,7 @@
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.GeothermalFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LightFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LogicFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent;
 import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog;
 import com.hdl.sdk.hdl_core.Util.NetUtil.NetWorkUtil;
 import com.hdl.sdk.hdl_core.Util.SPUtil.SPUtils;
@@ -44,7 +48,7 @@
  */
 
 public class HDLCommand {
-
+    public static int mRequestTimeout = 5000;//榛樿璇锋眰瓒呮椂鏃堕棿
     private static Timer getStateFailTimer = null;//鑾峰彇璁惧鐘舵�佸け璐imer
 
     private static Timer lightCtrlFailTimer = null;//鎺у埗鐏厜澶辫触Timer
@@ -54,6 +58,8 @@
     private static Timer freshAirCtrlFailTimer = null;//鎺у埗鏂伴澶辫触Timer 2019-07-09
     private static Timer geothermalCtrlFailTimer = null;//鎺у埗鍦扮儹澶辫触Timer 2019-07-10
 
+    private static Timer securityCtrlFailTimer = null;//瀹夐槻妯″潡鎿嶄綔澶辫触Timer
+    private static Timer commonSwitchCtrlFailTimer = null;//閫氱敤寮�鍏冲け璐imer
 
     /**
      * 鍒濆鍖�
@@ -64,7 +70,32 @@
         HDLDeviceManager.init(context);
     }
 
+    /**
+     * 寮�鍚痓us妯″紡
+     * 鍚敤6000绔彛
+     * @param context
+     */
+    public static void startHomeMode(Context context) {
+        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, "");
+        HandleSearch.curSearchMode = HandleSearch.GET_BUS_DEVICES;
+        HandleSearch.rcuIp = "";
+        HDLUdpCore.closeSocket6008();
+        HDLUdpCore.init6000();
+    }
 
+    /**
+     * 寮�鍚疪CU妯″紡
+     * 鍚敤6008绔彛
+     * @param context
+     * @param newRcuIp RCU鐨処P鍦板潃
+     */
+    public static void startRcuMode(Context context, String newRcuIp) {
+        HandleSearch.curSearchMode = HandleSearch.GET_RCU_DEVICES;
+        HandleSearch.rcuIp = newRcuIp;
+        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, newRcuIp);
+        HDLUdpCore.closeSocket6000();
+        HDLUdpCore.init6008();
+    }
 
 //    /**
 //     * 鑾峰彇鏈湴骞挎挱IP
@@ -1066,6 +1097,135 @@
     }
 
 
+    /**************************************2020-06-23鏂板***************************************/
+    /**
+     * 鎺у埗閫氱敤寮�鍏�
+     *
+     * @param info
+     */
+    public static void commonSwitchCtrl(final AppliancesInfo info, int state) {
 
+        HDLDeviceManager.setDeviceCtrlSuccessStateWithInfo(info, false);
+        if (info.getBigType() == Configuration.COMMON_SWITCH_BIG_TYPE) {
+
+            if (commonSwitchCtrlFailTimer != null) {
+                commonSwitchCtrlFailTimer.cancel();
+                commonSwitchCtrlFailTimer = null;
+            }
+
+            byte[] bytes = new byte[]{(byte) info.getChannelNum(), (byte) state};
+
+            addSendData(info, bytes, Configuration.CONTROL);
+
+            commonSwitchCtrlFailTimer = new Timer();
+            commonSwitchCtrlFailTimer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    if (!HDLDeviceManager.getDeviceCtrlSuccessStateWithInfo(info)) {
+                        HDLLog.info("閫氱敤寮�鍏虫帶鍒跺け璐�");
+                        CommonSwitchBackInfo mCommonSwitchBackInfo = new CommonSwitchBackInfo();
+                        mCommonSwitchBackInfo.setAppliancesInfo(info);
+                        EventBus.getDefault().post(new CommonSwitchCtrlBackEvent(mCommonSwitchBackInfo, false));
+                    }
+                }
+            }, mRequestTimeout);
+        } else {
+            HDLLog.info("djlCtrl: 閫氱敤寮�鍏宠澶囨帶鍒朵笉鍦ㄨ寖鍥村唴"
+                    + " LittleType = " + info.getLittleType()
+                    + " BigType = " + info.getBigType()
+            );
+        }
+    }
+
+    /**
+     * 鑾峰彇閫氱敤寮�鍏崇姸鎬�
+     * @param info
+     */
+    public static void getCommonSwitchStateFromNetwork(final AppliancesInfo info) {
+        if (info == null) {
+            return;
+        }
+        HDLDeviceManager.isGetDeviceStateSuccess = false;
+        switch (info.getDeviceType()) {
+            case HDLApConfig.TYPE_COMMON_SWITCH:
+                addSendData(info, new byte[0], Configuration.STATE);
+                break;
+            default:
+                HDLLog.info("涓嶆槸閫氱敤寮�鍏宠澶�");
+                break;
+        }
+    }
+
+
+    /**
+     * 鑾峰彇瀹夐槻妯″潡鐘舵��
+     * @param info
+     */
+    public static void getSecurityStateFromNetwork(final AppliancesInfo info) {
+        if (info == null) {
+            return;
+        }
+        HDLDeviceManager.isGetDeviceStateSuccess = false;
+        switch (info.getDeviceType()) {
+            case HDLApConfig.TYPE_SECURITY_MODULE:
+                //鍙戦�佽幏瀹夐槻妯″潡鐘舵�佹暟鎹�
+                addSendData(info, new byte[]{(byte) info.getChannelNum()}, Configuration.STATE);
+                break;
+            default:
+                HDLLog.info("涓嶆槸瀹夐槻妯″潡");
+                break;
+        }
+    }
+
+    /**
+     * 瀹夐槻妯″潡 甯冮槻璁剧疆
+     * 2020-06-23
+     * @param info
+     */
+    public static void securityArmingCtrl(final AppliancesInfo info, int state) {
+//        HDLDeviceManager.isSecurityCtrlSuccess = false;
+        HDLDeviceManager.setDeviceCtrlSuccessStateWithInfo(info, false);
+        if (securityCtrlFailTimer != null) {
+            securityCtrlFailTimer.cancel();
+            securityCtrlFailTimer = null;
+        }
+        if (info.getBigType() == Configuration.SECURITY_BIG_TYPE) {
+            byte[] sendbytes = SecurityParser.getArmingByte(info, state);
+            addSendData(info, sendbytes, Configuration.CONTROL);
+            securityCtrlFailTimer = new Timer();
+            securityCtrlFailTimer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    if (!HDLDeviceManager.getDeviceCtrlSuccessStateWithInfo(info)) {
+                        EventBus.getDefault().post(new SecurityArmingFeedBackEvent(info,0, false));
+                    }
+                }
+            }, 5000);
+
+        } else {
+            HDLLog.info("瀹夐槻妯″潡涓嶅湪鑼冨洿鍐�"
+                    + " LittleType = " + info.getLittleType()
+                    + " BigType = " + info.getBigType()
+            );
+        }
+    }
+
+//    /**
+//     * 瀹夐槻妯″潡 鎶ヨ璁剧疆
+//     * 2019-7-29
+//     * @param info
+//     * @param state 鍙戦�佺殑鎶ヨ鍐呭锛屽彧鎶ヨ涓�绉�
+//     */
+//    public static void securitySendAlarm(final AppliancesInfo info, int state) {
+//        if (info.getBigType() == Configuration.SECURITY_BIG_TYPE) {
+//            byte[] sendbytes = SecurityParser.getAlarmByte(info, state);
+//            cusSendCommand(Configuration.SECURITY_ALARM_CTRL_COMMAND, info.getDeviceSubnetID(), info.getDeviceDeviceID(), sendbytes);
+//        } else {
+//            HDLLog.info("涓嶆槸瀹夐槻妯″潡"
+//                    + " LittleType = " + info.getLittleType()
+//                    + " BigType = " + info.getBigType()
+//            );
+//        }
+//    }
 
 }
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
index 5d5b0fc..db59326 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java
@@ -12,6 +12,7 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.AirCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAirCondition.Parser.AirCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLAudio.HDLAudio;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.CurtainCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLCurtain.Parser.CurtainCtrlParser;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLFreshAir.FreshAirBackInfo;
@@ -19,6 +20,7 @@
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLight.LightCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLogic.LogicCtrlBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLLogic.LogicMode;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.SecurityBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLSensor.SensorStateBackInfo;
 import com.hdl.sdk.hdl_core.HDLAppliances.HDLWarning.WarningType;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
@@ -28,6 +30,8 @@
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.RcuLight;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.UdpDataBean;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.AirFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchStateBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CurtainFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.EventCode;
@@ -35,6 +39,8 @@
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.GeothermalFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LightFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.LogicFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityAlarmFeedBackEvent;
+import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.WarningInfoEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.Parser.DeviceParser;
 import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog;
@@ -177,7 +183,20 @@
             case Configuration.GEOTHERMAL_MODULE_CTRL_BACK_COMMAND://20190709鏂板
                 handleGeothermalCtrlData(getDatas);
                 break;
-
+            /***2020-06-23 鏂板閫氱敤寮�鍏�**/
+            case Configuration.COMMON_SWITCH_CTRL_BACK_COMMAND:
+                handleCommonSwitchCtrlData(getDatas);
+                break;
+            case Configuration.COMMON_SWITCH_STATE_BACK_COMMAND:
+                handleCommonSwitchStateData(getDatas);
+                break;
+            case Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND://20190729鏂板
+            case Configuration.SECURITY_ALARM_CTRL_BACK_COMMAND://鎶ヨ璁剧疆鍙嶉
+                handleSecurityCtrlData(getDatas);
+                break;
+            case Configuration.SECURITY_STATE_BACK_COMMAND:
+                handleSecurityStateData(getDatas);
+                break;
 //          鑾峰彇璁惧澶囨敞
             case Configuration.DEVICES_READ_BACK_COMMAND:
 
@@ -2619,7 +2638,199 @@
         }
     }
 
+    /**
+     * 閫氱敤寮�鍏虫帶鍒跺弽棣�
+     *
+     * @param getDatas
+     */
+    private static void handleCommonSwitchCtrlData(UdpDataBean getDatas) {
+        outter:
+        for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+            if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                    && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID) {
 
+                List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                    if (infos.get(j).getBigType() == Configuration.COMMON_SWITCH_BIG_TYPE
+                            && infos.get(j).getDeviceType() == HDLApConfig.TYPE_COMMON_SWITCH) {
+
+                        if (infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+                            //澶х被銆佸皬绫汇�佸洖璺彿閮藉尮閰�
+                            devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[1] & 0xFF);
+                            devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[1] & 0xFF);
+                            AppliancesInfo mSwitchInfo = infos.get(j);
+                            CommonSwitchBackInfo info = new CommonSwitchBackInfo();
+                            info.setAppliancesInfo(mSwitchInfo);
+                            info.setSwitchNum(getDatas.addBytes[0] & 0xFF);
+                            info.setSwitchState(getDatas.addBytes[1] & 0xFF);
+                            setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
+                            EventBus.getDefault().post(new CommonSwitchCtrlBackEvent(info, true));
+                            break outter;//璺冲嚭寰幆
+                        }
+                    }
+                }
+
+                break outter;//璺冲嚭寰幆
+            }
+        }
+    }
+
+
+    /**************************************2020-06-23鏂板***************************************/
+    /**
+     * 閫氱敤寮�鍏宠鐘舵�佸弽棣堝弽棣�
+     *
+     * @param getDatas
+     */
+    private static void handleCommonSwitchStateData(UdpDataBean getDatas) {
+        outter:
+        for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+            if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                    && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID) {
+
+                List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                    if (infos.get(j).getBigType() == Configuration.COMMON_SWITCH_BIG_TYPE
+                            && infos.get(j).getDeviceType() == HDLApConfig.TYPE_COMMON_SWITCH) {
+
+                        if (infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+                            //澶х被銆佸皬绫汇�佸洖璺彿閮藉尮閰�
+                            if (getDatas.addBytes.length >= 2) {
+                                isGetDeviceStateSuccess = true;
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setCurState(getDatas.addBytes[1] & 0xFF);
+                                devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(getDatas.addBytes[1] & 0xFF);
+                                AppliancesInfo mSwitchInfo = infos.get(j);
+                                CommonSwitchBackInfo info = new CommonSwitchBackInfo();
+                                info.setAppliancesInfo(mSwitchInfo);
+                                info.setSwitchNum(getDatas.addBytes[0] & 0xFF);
+                                info.setSwitchState(getDatas.addBytes[1] & 0xFF);
+                                EventBus.getDefault().post(new CommonSwitchStateBackEvent(info, true));
+                            }
+                            break outter;//璺冲嚭寰幆
+                        }
+                    }
+                }
+
+                break outter;//璺冲嚭寰幆
+            }
+        }
+    }
+
+
+    /**
+     * 璇诲彇瀹夐槻璁剧疆鍙嶉
+     * 2020-06-23
+     *
+     * @param getDatas
+     */
+    private static void handleSecurityStateData(UdpDataBean getDatas) {
+        outter:
+        for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+            if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                    && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
+            ) {
+                List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                    if (infos.get(j).getBigType() == Configuration.SECURITY_BIG_TYPE
+                            && infos.get(j).getDeviceType() == HDLApConfig.TYPE_SECURITY_MODULE
+                            && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {//2019-07-29
+                        if (getDatas.addBytes.length >= 2) {
+                            isGetDeviceStateSuccess = true;
+                            devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
+                            EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true));
+                        } else {
+                            isGetDeviceStateSuccess = true;
+                            EventBus.getDefault().post(new DeviceStateEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), false));
+                            HDLLog.info("handleSecurityStateData 杩斿洖addBytes鏁版嵁寮傚父");
+                        }
+                        break outter;
+                    } else {
+                        HDLLog.info("handleSecurityStateData 娌℃湁鎵惧埌鍖归厤绫诲瀷");
+                    }
+                }
+                break outter;
+            }
+        }
+    }
+
+    /**
+     * 澶勭悊瀹夐槻璁惧
+     * 2020-06-23
+     *
+     * @param getDatas
+     */
+    private static void handleSecurityCtrlData(UdpDataBean getDatas) {
+        switch (getDatas.command) {
+            //Arming 甯冮槻璁剧疆鍙嶉
+            case Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND:
+                outter:
+                for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+                    if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                            && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
+                    ) {
+                        List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                        for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                            if (getDatas.addBytes.length > 0) {
+                                if (infos.get(j).getBigType() == Configuration.SECURITY_BIG_TYPE
+                                        && infos.get(j).getDeviceType() == HDLApConfig.TYPE_SECURITY_MODULE
+                                        && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+                                    if (getDatas.addBytes.length >= 2) {
+                                        AppliancesInfo mInfo = devicesDataList.get(i).getAppliancesInfoList().get(j);
+//                                        isSecurityCtrlSuccess = true;
+                                        setDeviceCtrlSuccessStateWithInfo(mInfo, true);
+                                        EventBus.getDefault().post(new SecurityArmingFeedBackEvent(mInfo, getDatas.addBytes[1] & 0xFF, true));
+                                    } else {
+                                        HDLLog.E("甯冮槻璁剧疆 鍙嶉鏁版嵁寮傚父");
+                                    }
+                                    break outter;
+                                }
+                            }
+                        }
+                        break outter;
+                    }
+                }
+
+                break;
+
+            //ALARM 鎶ヨ璁剧疆鍙嶉
+            case Configuration.SECURITY_ALARM_CTRL_BACK_COMMAND:
+                outter:
+                for (int i = 0, len = devicesDataList.size(); i < len; i++) {
+                    if (devicesDataList.get(i).getSourceSubnetID() == getDatas.sourceSubnetID
+                            && devicesDataList.get(i).getSourceDeviceID() == getDatas.sourceDeviceID
+                    ) {
+
+                        List<AppliancesInfo> infos = devicesDataList.get(i).getAppliancesInfoList();
+                        for (int j = 0, len2 = infos.size(); j < len2; j++) {
+                            if (getDatas.addBytes.length > 0) {
+                                if (infos.get(j).getBigType() == Configuration.SECURITY_BIG_TYPE
+                                        && infos.get(j).getDeviceType() == HDLApConfig.TYPE_SECURITY_MODULE
+                                        && infos.get(j).getChannelNum() == (getDatas.addBytes[0] & 0xFF)) {
+                                    if (getDatas.addBytes.length >= 3) {
+                                        //byte[] getBytes = devicesDataList.get(i).getAppliancesInfoList().get(j).getArrCurState();
+
+                                        devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
+                                        AppliancesInfo mInfo = devicesDataList.get(i).getAppliancesInfoList().get(j);
+
+                                        SecurityBackInfo info = new SecurityBackInfo(mInfo);
+//                                        isSecurityCtrlSuccess = true;
+                                        setDeviceCtrlSuccessStateWithInfo(infos.get(j), true);
+                                        EventBus.getDefault().post(new SecurityAlarmFeedBackEvent(info, true));
+                                    } else {
+                                        HDLLog.E("鎶ヨ璁剧疆鍙嶉 鍙嶉鏁版嵁寮傚父");
+                                    }
+
+                                    break outter;
+                                }
+                            }
+                        }
+                        break outter;
+                    }
+                }
+
+                break;
+        }
+    }
 
 
 }
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLSDK.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLSDK.java
new file mode 100644
index 0000000..e2e0b0b
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLSDK.java
@@ -0,0 +1,64 @@
+//package com.hdl.sdk.hdl_core.HDLDeviceManger.Core;
+//
+//import android.content.Context;
+//
+//import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog;
+//import com.hdl.sdk.hdl_core.Util.SPUtil.SPUtils;
+//
+///**
+// * Created by jlchen on 2020-06-23.
+// */
+//public class HDLSDK {
+//
+//    /**
+//     * 鍒濆鍖� SDK
+//     *
+//     * @param context
+//     */
+//    public static void init(Context context) {
+//        HDLDeviceManager.init(context);
+//    }
+//
+//    /**
+//     * 寮�鍚痓us妯″紡
+//     * 鍚敤6000绔彛
+//     * @param context
+//     */
+//    public static void startHomeMode(Context context) {
+//        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, "");
+//        HandleSearch.curSearchMode = HandleSearch.GET_BUS_DEVICES;
+//        HandleSearch.rcuIp = "";
+//        HDLUdpCore.closeSocket6008();
+//        HDLUdpCore.init6000();
+//    }
+//
+//    /**
+//     * 寮�鍚疪CU妯″紡
+//     * 鍚敤6008绔彛
+//     * @param context
+//     * @param newRcuIp RCU鐨処P鍦板潃
+//     */
+//    public static void startRcuMode(Context context, String newRcuIp) {
+//        HandleSearch.curSearchMode = HandleSearch.GET_RCU_DEVICES;
+//        HandleSearch.rcuIp = newRcuIp;
+//        SPUtils.setParam(context, SPUtils.KEY_RCU_IP_, newRcuIp);
+//        HDLUdpCore.closeSocket6000();
+//        HDLUdpCore.init6008();
+//    }
+//
+//    /**
+//     * 鏄惁寮�鍚疭DK鏃ュ織鎵撳嵃
+//     *
+//     * @param bOpen
+//     */
+//    public static void setHDLLogOpen(boolean bOpen) {
+//        HDLLog.setHDLLogOpen(bOpen);
+//    }
+//
+//    /**
+//     * 閲婃斁璧勬簮 鍏抽棴涓插彛
+//     */
+//    public static void release() {
+//        HDLDeviceManager.release();
+//    }
+//}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java
index dc4bf08..713c936 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java
@@ -433,6 +433,11 @@
             case Configuration.FRESH_AIR_STATE_BACK_COMMAND://20190709鏂板
             case Configuration.GEOTHERMAL_MODULE_CTRL_BACK_COMMAND://20190709鏂板 鍦扮儹妯″潡
             case Configuration.GEOTHERMAL_MODULE_STATE_BACK_COMMAND://20190709鏂板
+            case Configuration.COMMON_SWITCH_CTRL_BACK_COMMAND:  //2020-06-23 閫氱敤寮�鍏�
+            case Configuration.COMMON_SWITCH_STATE_BACK_COMMAND: //2020-06-23 閫氱敤寮�鍏�
+            case Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND://20190729瀹夐槻妯″潡 甯冮槻璁剧疆鍙嶉
+            case Configuration.SECURITY_STATE_BACK_COMMAND://20190729 璇诲彇瀹夐槻璁剧疆鍙嶉
+            case Configuration.SECURITY_ALARM_CTRL_BACK_COMMAND://20190729 鎶ヨ璁剧疆鍙嶉
             case Configuration.CURTAIN_STATE_BACK_COMMAND:
             case Configuration.AIR_STATE_BACK_COMMAND:
 
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchCtrlBackEvent.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchCtrlBackEvent.java
new file mode 100644
index 0000000..77836ea
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchCtrlBackEvent.java
@@ -0,0 +1,26 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent;
+
+
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo;
+
+/**
+ * Created by jlchen on 2020-04-01.
+ */
+public class CommonSwitchCtrlBackEvent {
+    CommonSwitchBackInfo mCommonSwitchBackInfo;
+    boolean isSuccess;
+
+    public CommonSwitchCtrlBackEvent(CommonSwitchBackInfo commonSwitchBackInfo, boolean isSuccess){
+        this.isSuccess = isSuccess;
+        this.mCommonSwitchBackInfo = commonSwitchBackInfo;
+    }
+
+    public CommonSwitchBackInfo getCommonSwitchBackInfo() {
+        return mCommonSwitchBackInfo;
+    }
+
+    public boolean isSuccess() {
+        return isSuccess;
+    }
+
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchStateBackEvent.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchStateBackEvent.java
new file mode 100644
index 0000000..03e6941
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/CommonSwitchStateBackEvent.java
@@ -0,0 +1,26 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent;
+
+
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLCommonSwitch.CommonSwitchBackInfo;
+
+/**
+ * Created by jlchen on 2020-04-01.
+ */
+public class CommonSwitchStateBackEvent {
+    CommonSwitchBackInfo mCommonSwitchBackInfo;
+    boolean isSuccess;
+
+    public CommonSwitchStateBackEvent(CommonSwitchBackInfo commonSwitchBackInfo, boolean isSuccess){
+        this.isSuccess = isSuccess;
+        this.mCommonSwitchBackInfo = commonSwitchBackInfo;
+    }
+
+    public CommonSwitchBackInfo getCommonSwitchBackInfo() {
+        return mCommonSwitchBackInfo;
+    }
+
+    public boolean isSuccess() {
+        return isSuccess;
+    }
+
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityAlarmFeedBackEvent.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityAlarmFeedBackEvent.java
new file mode 100644
index 0000000..4fffcd0
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityAlarmFeedBackEvent.java
@@ -0,0 +1,24 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent;
+
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.SecurityBackInfo;
+
+/**
+ * Created by JLChen on 2019/7/29
+ */
+public class SecurityAlarmFeedBackEvent {
+    SecurityBackInfo mSecurityBackInfo;
+    boolean isSuccess;
+
+    public SecurityAlarmFeedBackEvent(SecurityBackInfo securityBackInfo, boolean isSuccess){
+        this.mSecurityBackInfo = securityBackInfo;
+        this.isSuccess = isSuccess;
+    }
+
+    public SecurityBackInfo getSecurityBackInfo() {
+        return mSecurityBackInfo;
+    }
+
+    public boolean isSuccess() {
+        return isSuccess;
+    }
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityArmingFeedBackEvent.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityArmingFeedBackEvent.java
new file mode 100644
index 0000000..7285eef
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/SecurityArmingFeedBackEvent.java
@@ -0,0 +1,35 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent;
+
+
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+
+/**
+ * Created by JLChen on 2019/7/29
+ */
+public class SecurityArmingFeedBackEvent {
+    AppliancesInfo appliancesInfo;
+    int armingState;
+    boolean isSuccess;
+
+    public SecurityArmingFeedBackEvent(boolean isSuccess){
+        this.isSuccess = isSuccess;
+    }
+
+    public SecurityArmingFeedBackEvent(AppliancesInfo mAppliancesInfo, int armingState, boolean isSuccess){
+        this.appliancesInfo = mAppliancesInfo;
+        this.armingState = armingState;
+        this.isSuccess = isSuccess;
+    }
+
+    public int getArmingState() {
+        return armingState;
+    }
+
+    public boolean isSuccess() {
+        return isSuccess;
+    }
+
+    public AppliancesInfo getAppliancesInfo() {
+        return appliancesInfo;
+    }
+}
diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java
index 0278e0d..0508d49 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java
@@ -2,6 +2,7 @@
 
 import com.hdl.sdk.hdl_core.Config.Configuration;
 import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig;
+import com.hdl.sdk.hdl_core.HDLAppliances.HDLLogic.LogicMode;
 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;
@@ -10,6 +11,8 @@
 
 import java.util.ArrayList;
 import java.util.List;
+
+import static com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLDeviceManager.devicesDataList;
 
 /**
  * Created by djl on 2017/3/29.
@@ -223,6 +226,29 @@
                     case Configuration.FRESH_AIR_LITTLE_TYPE_0:
                         isWant = true;
                         break;
+                    default:
+                        isWant = false;
+                        break;
+                }
+                break;
+            case Configuration.COMMON_SWITCH_BIG_TYPE://2020-06-23 閫氱敤寮�鍏宠澶�
+                switch (littleType) {
+                    case 0:
+                        isWant = true;
+                        break;
+                    default:
+                        isWant = false;
+                        break;
+                }
+                break;
+            case Configuration.SECURITY_BIG_TYPE:
+                switch (littleType) {
+                    case 0:
+                        isWant = true;
+                        break;
+//                    case 2:
+//                        isWant = true;
+//                        break;
                     default:
                         isWant = false;
                         break;
@@ -723,7 +749,7 @@
 
         if (bWantData) {
             devicesData.setAppliancesInfoList(appliancesInfoList);
-            HDLDeviceManager.devicesDataList.add(devicesData);
+            devicesDataList.add(devicesData);
 
             HandleSearch.OnDeviceListGetSuccessCallBack();
         }else {
@@ -765,6 +791,12 @@
             case Configuration.FRESH_AIR_BIG_TYPE:
                 parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, port, "");
                 break;
+            case Configuration.COMMON_SWITCH_BIG_TYPE://2020-06-23 閫氱敤寮�鍏�
+                parseCommonSwitchData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
+                break;
+            case Configuration.SECURITY_BIG_TYPE://2020-06-23  鏂板
+                parseSecurityData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
+                break;
             default:
 //                            appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
                 break;
@@ -782,4 +814,219 @@
 
     }
 
+
+    /**
+     * 2020-06-23
+     * 鏂板閫氱敤寮�鍏�
+     * @param littleType
+     * @param appliancesInfo
+     * @param devicesData
+     * @param parentRemarks
+     * @param channelNum
+     * @param port
+     * @param ipAddress
+     */
+    private static void parseCommonSwitchData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
+        switch (littleType) {
+            case 0:
+                appliancesInfo.setDeviceName("閫氱敤寮�鍏�");
+                appliancesInfo.setDeviceType(HDLApConfig.TYPE_COMMON_SWITCH);
+                break;
+            default:
+                appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
+                break;
+
+        }
+        if (devicesData != null) {
+            appliancesInfo.setChannelNum(channelNum);
+            appliancesInfo.setBigType(Configuration.COMMON_SWITCH_BIG_TYPE);
+            appliancesInfo.setLittleType(littleType);
+            appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
+            appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
+            appliancesInfo.setParentRemarks(parentRemarks);
+
+            appliancesInfo.setCtrlCommand(Configuration.COMMON_SWITCH_CTRL_COMMAND);//
+            appliancesInfo.setCtrlBackCommand(Configuration.COMMON_SWITCH_CTRL_BACK_COMMAND);//
+            appliancesInfo.setStateCommand(Configuration.COMMON_SWITCH_STATE_COMMAND);//
+            appliancesInfo.setStateBackCommand(Configuration.COMMON_SWITCH_STATE_BACK_COMMAND);//
+
+        }
+    }
+
+    /**
+     * 2020-06-23 鏂板
+     *
+     * @param littleType
+     * @param appliancesInfo
+     * @param devicesData
+     * @param parentRemarks
+     * @param channelNum
+     * @param port
+     * @param ipAddress
+     */
+    private static void parseSecurityData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
+        switch (littleType) {
+            case 0:
+                appliancesInfo.setDeviceName("瀹夐槻妯″潡");
+                appliancesInfo.setDeviceType(HDLApConfig.TYPE_SECURITY_MODULE);
+                break;
+//            case 2:
+//                appliancesInfo.setDeviceName("瀹夐槻鎺у埗闈㈡澘");
+//                appliancesInfo.setDeviceType(HDLApConfig.SECURITY_CONTROL_PANEL);
+//                break;
+            default:
+                appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
+                break;
+
+        }
+        if (devicesData != null) {
+            appliancesInfo.setChannelNum(channelNum);
+            appliancesInfo.setBigType(Configuration.SECURITY_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.SECURITY_ARMING_CTRL_COMMAND);//甯冮槻
+            appliancesInfo.setCtrlBackCommand(Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND);//甯冮槻璁剧疆鍙嶉
+            appliancesInfo.setStateCommand(Configuration.SECURITY_STATE_COMMAND);//璇诲彇瀹夐槻璁剧疆
+            appliancesInfo.setStateBackCommand(Configuration.SECURITY_STATE_BACK_COMMAND);//璇诲彇瀹夐槻璁剧疆鍙嶉
+
+
+
+        }
+    }
+
+    /**
+     * 娣诲姞璁惧鍥炶矾
+     * 濡傛灉瀛樺湪鐩稿悓瀛愮綉鍙� 璁惧鍙凤紝鍒欏綋鎴愭贩鍚堟ā鍧楁坊鍔犲埌璇ュ洖璺笅锛屼笉瀛樺湪鍒欐柊娣诲姞妯″潡
+     * @param port 鍙戦�乁DP鍖� 绔彛鍙�
+     * @param bigType
+     * @param littleType
+     * @param mSubnetID
+     * @param mDeviceID
+     * @param mChannelNum
+     * @param mChannelRemark
+     * @param parentRemarks
+     * @param bSaveAndCallBack 鏄惁椹笂淇濆瓨鏈湴骞朵笖鎺ㄩ�丏evicesInfoEvent 浜嬩欢
+     * @return
+     */
+    public static DevicesData addDevicesListWithoutSearching(int port, int bigType, int littleType, int mSubnetID, int mDeviceID, int mChannelNum, String mChannelRemark, String parentRemarks, boolean bSaveAndCallBack) {
+//        boolean bWantData = false;
+        if (isWantData(bigType, littleType)) {
+            DevicesData devicesData = new DevicesData();
+            devicesData.setSourceSubnetID(mSubnetID);
+            devicesData.setSourceDeviceID(mDeviceID);
+            devicesData.setRemark(parentRemarks);
+
+            Boolean isFindDevicesData = false;
+            int index = 0;
+            for (int i = 0; i < devicesDataList.size(); i++) {
+                if (devicesDataList.get(i).getSourceSubnetID() == mSubnetID && devicesDataList.get(i).getSourceDeviceID() == mDeviceID) {
+                    index = i;
+                    isFindDevicesData = true;
+                    break;
+                }
+            }
+
+
+            if (isFindDevicesData) {
+                AppliancesInfo mAppliancesInfo = getDevicesInfo(devicesData, bigType, littleType, mChannelNum, port, parentRemarks, mChannelRemark);
+                devicesDataList.get(index).getAppliancesInfoList().add(mAppliancesInfo);
+                devicesData = devicesDataList.get(index);
+                if(bSaveAndCallBack){
+                    HandleSearch.OnDeviceListGetSuccessCallBack();}
+            } else {
+                List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
+                appliancesInfoList.add(getDevicesInfo(devicesData, bigType, littleType, mChannelNum, port, parentRemarks, mChannelRemark));
+                devicesData.setAppliancesInfoList(appliancesInfoList);
+                devicesDataList.add(devicesData);
+                if(bSaveAndCallBack){
+                    HandleSearch.OnDeviceListGetSuccessCallBack();}
+
+            }
+
+
+            return devicesData;
+
+        } else {
+            return null;
+
+        }
+
+
+    }
+
+
+    /**
+     * 娣诲姞鍦烘櫙璁惧鍥炶矾
+     * 濡傛灉瀛樺湪鐩稿悓瀛愮綉鍙� 璁惧鍙凤紝鍒欏綋鎴愭贩鍚堟ā鍧楁坊鍔犲埌璇ュ洖璺笅锛屼笉瀛樺湪鍒欐柊娣诲姞妯″潡
+     * @param mSubnetID
+     * @param mDeviceID
+     * @param mAreaNum //鍦烘櫙 鍖哄煙鍙�
+     * @param mAreaSceneNum //鍦烘櫙 褰撳墠鍖哄煙鍦烘櫙鍙�
+     * @param mChannelRemark
+     * @param parentRemarks
+     * @param bSaveAndCallBack 鏄惁椹笂淇濆瓨鏈湴骞朵笖鎺ㄩ�丏evicesInfoEvent 浜嬩欢
+     * @return
+     */
+    public static DevicesData addScenesDevicesListWithoutSearching(int port, int mSubnetID, int mDeviceID, int mAreaNum, int mAreaSceneNum, String mChannelRemark, String parentRemarks, boolean bSaveAndCallBack) {
+//        boolean bWantData = false;
+
+        int bigType = Configuration.GLOBAL_LOGIC_BIG_TYPE;
+        int littleType = 0;
+        if (isWantData(bigType, littleType)) {
+            DevicesData devicesData = new DevicesData();
+            devicesData.setSourceSubnetID(mSubnetID);
+            devicesData.setSourceDeviceID(mDeviceID);
+            devicesData.setRemark(parentRemarks);
+
+            Boolean isFindDevicesData = false;
+            int index = 0;
+            for (int i = 0; i < devicesDataList.size(); i++) {
+                if (devicesDataList.get(i).getSourceSubnetID() == mSubnetID && devicesDataList.get(i).getSourceDeviceID() == mDeviceID) {
+                    index = i;
+                    isFindDevicesData = true;
+                    break;
+                }
+            }
+
+
+            if (isFindDevicesData) {
+                AppliancesInfo mAppliancesInfo = getDevicesInfo(devicesData, bigType, littleType, mAreaNum, port, parentRemarks, mChannelRemark);
+                LogicMode mLogicMode = new LogicMode();
+                mLogicMode.setAreaNum(mAreaNum);
+                mLogicMode.setAreaSceneNum(mAreaSceneNum);
+                mAppliancesInfo.setLogicMode(mLogicMode);
+                devicesDataList.get(index).getAppliancesInfoList().add(mAppliancesInfo);
+                devicesData = devicesDataList.get(index);
+                if(bSaveAndCallBack){
+                    HandleSearch.OnDeviceListGetSuccessCallBack();}
+            } else {
+                List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
+                AppliancesInfo mAppliancesInfo = getDevicesInfo(devicesData, bigType, littleType, mAreaNum, port, parentRemarks, mChannelRemark);
+                LogicMode mLogicMode = new LogicMode();
+                mLogicMode.setAreaNum(mAreaNum);
+                mLogicMode.setAreaSceneNum(mAreaSceneNum);
+                mAppliancesInfo.setLogicMode(mLogicMode);
+                appliancesInfoList.add(mAppliancesInfo);
+                devicesData.setAppliancesInfoList(appliancesInfoList);
+                devicesDataList.add(devicesData);
+                if(bSaveAndCallBack){
+                    HandleSearch.OnDeviceListGetSuccessCallBack();}
+            }
+
+
+            return devicesData;
+
+        } else {
+            return null;
+
+        }
+
+
+    }
+
+
 }

--
Gitblit v1.8.0