From f9d01e2084e5b53840b09f557b4e2c700c790d80 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 24 六月 2020 10:51:23 +0800
Subject: [PATCH] 2020-06-24 1.增加干节点指令处理。                (干节点0 移动传感器1 煤气传感器10 烟雾传感器11 水浸25 门磁窗磁26 紧急按钮27)

---
 app/src/main/res/layout/activity_add_devices.xml                                                         |    4 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Parser/DeviceParser.java                     |   28 +
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AddDevicesActivity.java                                   |   52 +--
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/Config/Configuration.java                                    |    6 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLCommand.java                         |   53 ++++
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/SensorActivity.java                                       |  507 +++++++++++++++++++++++++++++++++++++++
 app/src/main/AndroidManifest.xml                                                                         |    1 
 app/src/main/java/com/hdl/sdk/hdl_sdk/activity/AppliancesActivity.java                                   |    3 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLUdpCore.java                         |    2 
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/DryContactSensorBackEvent.java |   22 +
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/Core/HDLDeviceManager.java                   |   44 +++
 11 files changed, 690 insertions(+), 32 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4719abd..6d37330 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,6 +35,7 @@
         <activity android:name=".activity.GeothermalActivity" />
         <activity android:name=".activity.CtrlCommonSwitchActivity" />
         <activity android:name=".activity.CtrlSecurityActivity" />
+        <activity android:name=".activity.SensorActivity" />
 
         <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
index f4ed1de..6f85fac 100644
--- 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
@@ -17,27 +17,30 @@
 import java.util.ArrayList;
 
 
-/** SDK鐩墠鏀寔鐨勫ぇ绫伙細灏忕被
- * 鐏厜绫伙細璋冨厜鍥炶矾銆佸紑鍏冲洖璺�佹贩鍚堣皟鍏夌被銆佹贩鍚堝紑鍏崇被
- * 绐楀笜绫伙細寮�鍚堝笜鐢垫満銆佸嵎甯樼數鏈恒�佺獥甯樻ā鍧�
- * 绌鸿皟鍔熻兘锛欻VAC 妯″潡銆侀�氱敤绌鸿皟闈㈡澘
- * 鑳屾櫙闊充箰鍔熻兘锛氳儗鏅煶涔愭ā鍧� 2018鏂拌儗鏅煶涔愭ā鍧楀皬绫�3
- * 浼犳劅鍣細骞茬粨鐐�0 鍒� 鍔熺巼24
- * 閫昏緫鍔熻兘锛氶�昏緫妯″潡
- * 鍏ㄥ眬鍦烘櫙锛�
- * 鍦扮儹鍔熻兘锛氬湴鐑ā鍧�
- * 鏂伴锛氭柊椋庣郴缁�
+/** SDK鐩墠鏀寔鎵嬪姩娣诲姞鐨勫ぇ绫伙細灏忕被
+ * 鐏厜绫伙紙澶х被1锛夛細璋冨厜鍥炶矾锛�0锛夈�佸紑鍏冲洖璺紙1锛夈�佹贩鍚堣皟鍏夌被锛�9锛夈�佹贩鍚堝紑鍏崇被锛�10锛�
+ * 绐楀笜绫伙紙澶х被2锛夛細寮�鍚堝笜鐢垫満锛�0锛夈�佸嵎甯樼數鏈猴紙1锛夈�佺獥甯樻ā鍧楋紙2锛�
+ * 绌鸿皟鍔熻兘锛堝ぇ绫�7锛夛細HVAC 妯″潡锛�0锛夈�侀�氱敤绌鸿皟闈㈡澘锛�3锛�
+ * 鑳屾櫙闊充箰鍔熻兘锛堝ぇ绫�9锛夛細鑳屾櫙闊充箰妯″潡 2018鏂拌儗鏅煶涔愭ā鍧楀皬绫�3
+ * 浼犳劅鍣紙澶х被5锛夛細骞茬粨鐐�0 鍒� 鍔熺巼24
+ * 閫昏緫鍔熻兘锛堝ぇ绫�12锛夛細閫昏緫妯″潡锛�0锛�
+ * 鍏ㄥ眬鍦烘櫙锛堝ぇ绫�17锛夛細鍏ㄥ眬鍦烘櫙锛�0锛�
+ * 鍦扮儹鍔熻兘锛氬湴鐑ā鍧楋紙0锛�
+ * 鏂伴锛堝ぇ绫�19锛夛細鏂伴绯荤粺锛�0锛�
+ * 閫氱敤寮�鍏筹紙澶х被100锛夛細閫氱敤寮�鍏筹紙0锛�
 
- * 鐏厜绫�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
+ * 鏍煎紡 鏀寔鐨勬ā鍧楀悕瀛� 澶х被ID锛氬皬绫籌D
+ *
+ * 鐏厜绫� 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> 鏍煎紡鐨勮澶囧垪琛ㄦ暟鎹�
@@ -378,13 +381,8 @@
         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);
+        //娣诲姞涓�涓共鑺傜偣浼犳劅鍣�
+        DeviceParser.addDevicesListWithoutSearching(port, Configuration.SENSOR_BIG_TYPE, 0, 111, 99, 1, "骞茶妭鐐�", "骞茶妭鐐�",false);
 
 
         //娣诲姞涓�涓�2璺獥甯�
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 2ee969b..9484120 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
@@ -63,6 +63,9 @@
                 }else  if (appliancesInfos.get(position).getBigType() == Configuration.SECURITY_BIG_TYPE) {
                     //澶х被鏄畨闃叉ā鍧楀垯璺宠浆鍒癈trlSecurityActivity
                     intent.setClass(AppliancesActivity.this, CtrlSecurityActivity.class);
+                }else  if (appliancesInfos.get(position).getBigType() == Configuration.SENSOR_BIG_TYPE) {
+                    //澶х被鏄紶鎰熷櫒 鍒欒烦杞埌SensorActivity 骞茶妭鐐规寚浠ょ被鍨�
+                    intent.setClass(AppliancesActivity.this, SensorActivity.class);
                 }
 
 
diff --git a/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/SensorActivity.java b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/SensorActivity.java
new file mode 100644
index 0000000..74e06f3
--- /dev/null
+++ b/app/src/main/java/com/hdl/sdk/hdl_sdk/activity/SensorActivity.java
@@ -0,0 +1,507 @@
+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.DryContactSensorBackEvent;
+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;
+
+/**
+ * 浼犳劅鍣� 骞茶妭鐐规寚浠ょ被鍨嬬殑浼犳劅鍣ㄦā鍧�
+ * 骞茶妭鐐� 绉诲姩浼犳劅鍣� 姘存蹈 闂ㄧ绐楃 绱ф�ユ寜閽�
+ *
+ * 涓�鑸厤鍚�4鍚�1骞茶妭鐐规ā鍧椾娇鐢�
+ */
+public class SensorActivity extends BaseActivity {
+    /**
+     * Topbar
+     */
+//    private RelativeLayout topBarBack;
+//    private TextView topBarTitle;
+    private Button sensorbtn;
+    private TextView sensorText;
+    private AppliancesInfo appliancesInfo;
+
+
+    /**
+     * 澶嶅啓isRegisterEventBus()  瑕佹敞鍐屼娇鐢‥ventBus锛岃繖閲岃璁剧疆杩斿洖true
+     *
+     * @return true
+     */
+    @Override
+    protected boolean isRegisterEventBus() {
+        return true;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_sensor);
+        initToolbar();
+        initcurState();
+        initView();
+        initOnClick();
+        displayStateView();
+        //浠庣綉缁滀笂鏌ヨ鍒锋柊涓�娆¤澶囩姸鎬侊紝寰呰皟璇�
+        HDLCommand.getDryContactSensorStateFromNetwork(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() {
+        sensorbtn = findViewById(R.id.sensorbtn);
+        sensorText = findViewById(R.id.sensorText);
+
+
+    }
+
+    private void initOnClick() {
+
+        sensorbtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                //浠庣綉缁滀笂鏌ヨ鍒锋柊涓�娆¤澶囩姸鎬侊紝寰呰皟璇�
+                HDLCommand.getDryContactSensorStateFromNetwork(appliancesInfo);
+            }
+        });
+    }
+
+    private void displayStateView() {
+
+        switch (appliancesInfo.getDeviceType()) {
+//            case HDLApConfig.TYPE_SENSOR_TEMP:////2019-07-03 灞忚斀
+//            case HDLApConfig.TYPE_SENSOR_HUMIDITY:
+//            case HDLApConfig.TYPE_SENSOR_ILLUMINACE:
+//            case HDLApConfig.TYPE_SENSOR_VOC:
+//            case HDLApConfig.TYPE_SENSOR_PM_2_POINT_5:
+//            case HDLApConfig.TYPE_SENSOR_C02:
+//            case HDLApConfig.TYPE_SENSOR_LPG:
+//            case HDLApConfig.TYPE_SENSOR_CO_H2:
+//            case HDLApConfig.TYPE_SENSOR_CH4:
+//            case HDLApConfig.TYPE_SENSOR_SMOG:
+//            case HDLApConfig.TYPE_SENSOR_WIND_SPEED:
+//            case HDLApConfig.TYPE_SENSOR_WIND_PRESSURE:
+//            case HDLApConfig.TYPE_SENSOR_LIQUID_FLOW:
+//            case HDLApConfig.TYPE_SENSOR_LIQUID_PRESSURE:
+//            case HDLApConfig.TYPE_SENSOR_LIQUID_DEPTH:
+//            case HDLApConfig.TYPE_SENSOR_RAIN_FALL:
+//            case HDLApConfig.TYPE_SENSOR_WEIGHT:
+//            case HDLApConfig.TYPE_SENSOR_HEIGHT_LENGTH:
+//            case HDLApConfig.TYPE_SENSOR_OBJECT_SPEED:
+//            case HDLApConfig.TYPE_SENSOR_SHAKE:
+//            case HDLApConfig.TYPE_SENSOR_VOLTAGE:
+//            case HDLApConfig.TYPE_SENSOR_ELECTRICITY:
+//            case HDLApConfig.TYPE_SENSOR_POWER:
+//            case HDLApConfig.TYPE_SENSOR_FLOODING:
+//            case HDLApConfig.TYPE_SENSOR_DOOR_MAGNET:
+//            case HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON:
+
+            case HDLApConfig.TYPE_SENSOR_DRY_CONTACT: //骞茶妭鐐�
+            case HDLApConfig.TYPE_SENSOR_MOVEMENT_DETECTOR: //绾㈠鎰熷簲浼犳劅鍣�
+            case HDLApConfig.TYPE_SENSOR_CO_H2:         //鐓ゆ皵浼犳劅鍣�
+            case HDLApConfig.TYPE_SENSOR_SMOG:          //鐑熼浘浼犳劅鍣�
+            case HDLApConfig.TYPE_SENSOR_FLOODING:       //姘存蹈浼犳劅鍣�
+            case HDLApConfig.TYPE_SENSOR_DOOR_MAGNET:   //闂ㄧ浼犳劅鍣�
+            case HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON://绱ф�ユ寜閽�
+                break;
+            default:
+                finish();//璁惧绫诲瀷涓嶅缁撴潫椤甸潰
+                break;
+        }
+        /**鏍规嵁闇�姹傛槸鍚﹀彂閫佷竴娆¤幏鍙栧埛鏂扮姸鎬佽姹�*/
+    }
+
+
+    /**
+     * 浼犳劅鍣ㄧ姸鎬佸洖璋� Event
+     * 骞茶妭鐐圭姸鎬佷富鍔ㄥ箍鎾� 鍜� 琚姩鏌ヨ鐘舵�佸弽棣�
+     *
+     * @param event
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onDryContactSensorBackEventMain(DryContactSensorBackEvent event) {
+        if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+                && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+                && event.getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+        ) {
+
+            //浼犳劅鍣� 骞叉帴鐐� 銆傚彧鏈夊紑鍏崇姸鎬�
+            if (!event.isSuccess()) {
+                showToast("鑾峰彇浼犳劅鍣ㄧ姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+                return;
+            }
+            String mData = "";
+            if (appliancesInfo.getDeviceType() == HDLApConfig.TYPE_SENSOR_MOVEMENT_DETECTOR) {
+                mData = event.getState() == 0 ? "鏃犲姩闈�" : "鏈夊姩闈�";
+            } else {
+                mData = event.getState() == 0 ? "闂悎" : "鏂紑";
+            }
+
+            sensorText.setText("浼犳劅鍣�---骞叉帴鐐圭姸鎬侊細" + mData);
+//            showToast("浼犳劅鍣�---骞叉帴鐐圭姸鎬侊細" + mData);
+            HDLLog.I("浼犳劅鍣�---骞叉帴鐐圭姸鎬侊細" + mData);
+        }
+    }
+
+
+//    /**
+//     * 浼犳劅鍣ㄧ姸鎬佸洖璋� Event
+//     *
+//     * @param event
+//     */
+//    @Subscribe(threadMode = ThreadMode.MAIN)
+//    public void onSensorStateBackInfoMain(SensorStateBackInfo event) {
+//        if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
+//                && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
+//                && event.getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
+//        ) {
+//            //杩欎釜杩斿洖鐨勪俊鎭槸褰撳墠鐘舵�佺殑
+//            switch (event.getAppliancesInfo().getDeviceType()) {
+//                case HDLApConfig.TYPE_SENSOR_DRY_CONTACT://2019-07-03 灞忚斀
+//                    //浼犳劅鍣� 骞叉帴鐐� 銆傚彧鏈夊紑鍏崇姸鎬�
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---骞叉帴鐐圭姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float dryContactValue = (float) event.getAppliancesInfo().getCurState();
+//                    String dryContactUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---骞叉帴鐐圭姸鎬侊細" + dryContactValue + dryContactUnit);
+//                    HDLLog.Log("浼犳劅鍣�---骞叉帴鐐圭姸鎬侊細" + dryContactValue + dryContactUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_MOVEMENT_DETECTOR:
+//                    //浼犳劅鍣� 绉诲姩鎺㈡祴 銆傜伒鏁忓害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---绉诲姩鎺㈡祴鐏垫晱搴︾姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float mdValue = (float) event.getAppliancesInfo().getCurState();
+//                    String mdValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---绉诲姩鎺㈡祴鐏垫晱搴︼細" + mdValue + mdValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---绉诲姩鎺㈡祴鐏垫晱搴︼細" + mdValue + mdValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_TEMP:
+//                    //浼犳劅鍣� 娓╁害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---娓╁害鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float tempValue = (float) event.getAppliancesInfo().getCurState();
+//                    String tempValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---娓╁害锛�" + tempValue + tempValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---娓╁害锛�" + tempValue + tempValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_HUMIDITY:
+//                    //浼犳劅鍣� 婀垮害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---婀垮害鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float humidityValue = (float) event.getAppliancesInfo().getCurState();
+//                    String humidityValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---婀垮害锛�" + humidityValue + humidityValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---婀垮害锛�" + humidityValue + humidityValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_ILLUMINACE:
+//                    //浼犳劅鍣� 鐓у害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鐓у害鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float illuminaceValue = (float) event.getAppliancesInfo().getCurState();
+//                    String illuminaceValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---鐓у害锛�" + illuminaceValue + illuminaceValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---鐓у害锛�" + illuminaceValue + illuminaceValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_VOC:
+//                    //浼犳劅鍣� 褰撳墠绌烘皵璐ㄩ噺绛夌骇
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---褰撳墠绌烘皵璐ㄩ噺绛夌骇鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float vocValue = (float) event.getAppliancesInfo().getCurState();
+//                    String vocValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---褰撳墠绌烘皵璐ㄩ噺绛夌骇锛�" + vocValue + vocValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---褰撳墠绌烘皵璐ㄩ噺绛夌骇锛�" + vocValue + vocValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_PM_2_POINT_5:
+//                    //浼犳劅鍣� pm2.5
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---pm2.5鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float pm2_5Value = (float) event.getAppliancesInfo().getCurState();
+//                    String pm2_5ValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---pm2.5锛�" + pm2_5Value + pm2_5ValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---pm2.5锛�" + pm2_5Value + pm2_5ValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_C02:
+//                    //浼犳劅鍣� 浜屾哀鍖栫⒊
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---浜屾哀鍖栫⒊鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float co2Value = (float) event.getAppliancesInfo().getCurState();
+//                    String co2ValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---浜屾哀鍖栫⒊锛�" + co2Value + co2ValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---浜屾哀鍖栫⒊锛�" + co2Value + co2ValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_LPG:
+//                    //浼犳劅鍣� 娑插寲鐭虫补姘�
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---娑插寲鐭虫补姘旂姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float lpgValue = (float) event.getAppliancesInfo().getCurState();
+//                    String lpgValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---娑插寲鐭虫补姘旓細" + lpgValue + lpgValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---娑插寲鐭虫补姘旓細" + lpgValue + lpgValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_CO_H2:
+//                    //浼犳劅鍣� 浜哄伐鐓ゆ皵
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---浜哄伐鐓ゆ皵鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float coh2Value = (float) event.getAppliancesInfo().getCurState();
+//                    String coh2ValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---浜哄伐鐓ゆ皵锛�" + coh2Value + coh2ValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---浜哄伐鐓ゆ皵锛�" + coh2Value + coh2ValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_CH4:
+//                    //浼犳劅鍣� 澶╃劧姘�
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---澶╃劧姘旂姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float ch4Value = (float) event.getAppliancesInfo().getCurState();
+//                    String ch4ValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---澶╃劧姘旓細" + ch4Value + ch4ValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---澶╃劧姘旓細" + ch4Value + ch4ValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_SMOG:
+//                    //浼犳劅鍣� 鐑熼浘
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鐑熼浘鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float smogValue = (float) event.getAppliancesInfo().getCurState();
+//                    String smogValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---鐑熼浘锛�" + smogValue + smogValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---鐑熼浘锛�" + smogValue + smogValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_WIND_SPEED:
+//                    //浼犳劅鍣� 椋庨��
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---椋庨�熺姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float windSpeedValue = (float) event.getAppliancesInfo().getCurState();
+//                    String windSpeedValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---椋庨�燂細" + windSpeedValue + windSpeedValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---椋庨�燂細" + windSpeedValue + windSpeedValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_WIND_PRESSURE:
+//                    //浼犳劅鍣� 椋庡帇
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---椋庡帇鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float windPressureValue = (float) event.getAppliancesInfo().getCurState();
+//                    String windPressureValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---椋庡帇锛�" + windPressureValue + windPressureValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---椋庡帇锛�" + windPressureValue + windPressureValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_LIQUID_FLOW:
+//                    //浼犳劅鍣� 娑蹭綋娴侀噺
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---娑蹭綋娴侀噺鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float liquidFlowValue = (float) event.getAppliancesInfo().getCurState();
+//                    String liquidFlowValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---娑蹭綋娴侀噺锛�" + liquidFlowValue + liquidFlowValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---娑蹭綋娴侀噺锛�" + liquidFlowValue + liquidFlowValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_LIQUID_PRESSURE:
+//                    //浼犳劅鍣� 娑蹭綋鍘嬪姏
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---娑蹭綋鍘嬪姏鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float liquidPressureValue = (float) event.getAppliancesInfo().getCurState();
+//                    String liquidPressureValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---娑蹭綋鍘嬪姏锛�" + liquidPressureValue + liquidPressureValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---娑蹭綋鍘嬪姏锛�" + liquidPressureValue + liquidPressureValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_LIQUID_DEPTH:
+//                    //浼犳劅鍣� 娑蹭綋娣卞害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---娑蹭綋娣卞害鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float liquidDepthValue = (float) event.getAppliancesInfo().getCurState();
+//                    String liquidDepthValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---娑蹭綋娣卞害锛�" + liquidDepthValue + liquidDepthValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---娑蹭綋娣卞害锛�" + liquidDepthValue + liquidDepthValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_RAIN_FALL:
+//                    //浼犳劅鍣� 闆ㄩ噺
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---闆ㄩ噺鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float rainFallValue = (float) event.getAppliancesInfo().getCurState();
+//                    String rainFallValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---闆ㄩ噺锛�" + rainFallValue + rainFallValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---闆ㄩ噺锛�" + rainFallValue + rainFallValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_WEIGHT:
+//                    //浼犳劅鍣� 閲嶉噺
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---閲嶉噺鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float weightValue = (float) event.getAppliancesInfo().getCurState();
+//                    String weightValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---閲嶉噺锛�" + weightValue + weightValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---閲嶉噺锛�" + weightValue + weightValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_HEIGHT_LENGTH:
+//                    //浼犳劅鍣� 閲嶉噺
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---閲嶉噺鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float height_lengthValue = (float) event.getAppliancesInfo().getCurState();
+//                    String height_lengthValueUnit = ((SensorStateBackInfo) event).getUnite();
+//                    showToast("浼犳劅鍣�---閲嶉噺锛�" + height_lengthValue + height_lengthValueUnit);
+//                    HDLLog.Log("浼犳劅鍣�---閲嶉噺锛�" + height_lengthValue + height_lengthValueUnit);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_OBJECT_SPEED:
+//                    //浼犳劅鍣� 鐗╀綋閫熷害
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鐗╀綋閫熷害鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float objectSpeedValue = (float) event.getAppliancesInfo().getCurState();
+//                    String objectSpeedUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---鐗╀綋閫熷害锛�" + objectSpeedValue + objectSpeedUnite);
+//                    HDLLog.Log("浼犳劅鍣�---鐗╀綋閫熷害锛�" + objectSpeedValue + objectSpeedUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_SHAKE:
+//                    //浼犳劅鍣� 闇囧姩
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---闇囧姩鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float shakeValue = (float) event.getAppliancesInfo().getCurState();
+//                    String shakeValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---闇囧姩锛�" + shakeValue + shakeValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---闇囧姩锛�" + shakeValue + shakeValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_VOLTAGE:
+//                    //浼犳劅鍣� 鐢靛帇
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鐢靛帇鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float voltageValue = (float) event.getAppliancesInfo().getCurState();
+//                    String voltageValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---鐢靛帇锛�" + voltageValue + voltageValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---鐢靛帇锛�" + voltageValue + voltageValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_ELECTRICITY:
+//                    //浼犳劅鍣� 鐢垫祦
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鐢垫祦鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float electricityValue = (float) event.getAppliancesInfo().getCurState();
+//                    String electricityValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---鐢垫祦锛�" + electricityValue + electricityValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---鐢垫祦锛�" + electricityValue + electricityValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_POWER:
+//                    //浼犳劅鍣� 鍔熺巼
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---鍔熺巼鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float powerValue = (float) event.getAppliancesInfo().getCurState();
+//                    String powerValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---鍔熺巼锛�" + powerValue + powerValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---鍔熺巼锛�" + powerValue + powerValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_FLOODING:
+//                    //浼犳劅鍣� 姘存蹈
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---姘存蹈鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float floodingValue = (float) event.getAppliancesInfo().getCurState();
+//                    String floodingValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---姘存蹈锛�" + floodingValue + floodingValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---姘存蹈锛�" + floodingValue + floodingValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_DOOR_MAGNET:
+//                    //浼犳劅鍣� 闂ㄧ绐楃
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---闂ㄧ绐楃鐘舵�佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float doorMagnetValue = (float) event.getAppliancesInfo().getCurState();
+//                    String doorMagnetValueUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---闂ㄧ绐楃锛�" + doorMagnetValue + doorMagnetValueUnite);
+//                    HDLLog.Log("浼犳劅鍣�---闂ㄧ绐楃锛�" + doorMagnetValue + doorMagnetValueUnite);
+//                    break;
+//                case HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON:
+//                    //浼犳劅鍣� 绱ф�ユ寜閽�
+//                    if (!event.isSuccess()) {
+//                        showToast("鑾峰彇浼犳劅鍣�---绱ф�ユ寜閽姸鎬佸け璐ワ紝璇烽噸鏂板啀璇�");
+//                        return;
+//                    }
+//                    float emergencyButtonValue = (float) event.getAppliancesInfo().getCurState();
+//                    String emergencyButtonUnite = ((SensorStateBackInfo) event).getUnite();//鏁板�煎崟浣�
+//                    showToast("浼犳劅鍣�---绱ф�ユ寜閽細" + emergencyButtonValue + emergencyButtonUnite);
+//                    HDLLog.Log("浼犳劅鍣�---绱ф�ユ寜閽細" + emergencyButtonValue + emergencyButtonUnite);
+//                    break;
+//
+//
+//            }
+//        }
+//    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_devices.xml b/app/src/main/res/layout/activity_add_devices.xml
index f853785..6f46a7d 100644
--- a/app/src/main/res/layout/activity_add_devices.xml
+++ b/app/src/main/res/layout/activity_add_devices.xml
@@ -10,7 +10,7 @@
         android:layout_height="match_parent">
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="match_parent"
             android:layout_marginLeft="10dp"
             android:layout_marginTop="20dp"
             android:layout_marginRight="10dp"
@@ -264,7 +264,7 @@
                 android:id="@+id/btn_addAll"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
-                android:layout_marginTop="10dp"
+                android:layout_marginBottom="20dp"
                 android:text="娣诲姞娴嬭瘯" />
 
 
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 e4af1f5..0e08292 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
@@ -170,7 +170,13 @@
     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;//璇婚�氱敤寮�鍏崇姸鎬佸弽棣�
+    /**
+     * 2020-06-23 骞叉帴鐐� 姘存蹈銆侀棬纾併�佺叅姘斻�佺儫闆�
+     */
+    public static final int DRY_CONTACT_STATE_COMMAND = 0x15CE;//璇诲彇骞茶妭鐐圭姸鎬�
+    public static final int DRY_CONTACT_STATE_BACK_COMMAND = 0x15CF;// 骞茶妭鐐圭姸鎬佸洖澶�
 
+    public static final int DRY_CONTACT_BROADCAST_STATE_COMMAND = 0x15D0;//骞茶妭鐐圭姸鎬佷富鍔ㄥ箍鎾弽棣�
 
     /**
      * RCU 閰嶇疆鏁版嵁
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 c0593f8..1c572c8 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
@@ -1228,4 +1228,57 @@
 //        }
 //    }
 
+
+    /**
+     * 鑾峰彇骞叉帴鐐逛紶鎰熷櫒妯″潡鐘舵��
+     * @param info
+     */
+    public static void getDryContactSensorStateFromNetwork(final AppliancesInfo info) {
+        if (info == null) {
+            return;
+        }
+        HDLDeviceManager.isGetDeviceStateSuccess = false;
+        switch (info.getDeviceType()) {
+            case HDLApConfig.TYPE_SENSOR_DRY_CONTACT:
+            case HDLApConfig.TYPE_SENSOR_MOVEMENT_DETECTOR:
+            case HDLApConfig.TYPE_SENSOR_TEMP:
+            case HDLApConfig.TYPE_SENSOR_HUMIDITY:
+            case HDLApConfig.TYPE_SENSOR_ILLUMINACE:
+            case HDLApConfig.TYPE_SENSOR_VOC:
+            case HDLApConfig.TYPE_SENSOR_PM_2_POINT_5:
+            case HDLApConfig.TYPE_SENSOR_C02:
+            case HDLApConfig.TYPE_SENSOR_LPG:
+            case HDLApConfig.TYPE_SENSOR_CO_H2:
+            case HDLApConfig.TYPE_SENSOR_CH4:
+            case HDLApConfig.TYPE_SENSOR_SMOG:
+            case HDLApConfig.TYPE_SENSOR_WIND_SPEED:
+            case HDLApConfig.TYPE_SENSOR_WIND_PRESSURE:
+            case HDLApConfig.TYPE_SENSOR_LIQUID_FLOW:
+            case HDLApConfig.TYPE_SENSOR_LIQUID_PRESSURE:
+            case HDLApConfig.TYPE_SENSOR_LIQUID_DEPTH:
+            case HDLApConfig.TYPE_SENSOR_RAIN_FALL:
+            case HDLApConfig.TYPE_SENSOR_WEIGHT:
+            case HDLApConfig.TYPE_SENSOR_HEIGHT_LENGTH:
+            case HDLApConfig.TYPE_SENSOR_OBJECT_SPEED:
+            case HDLApConfig.TYPE_SENSOR_SHAKE:
+            case HDLApConfig.TYPE_SENSOR_VOLTAGE:
+            case HDLApConfig.TYPE_SENSOR_ELECTRICITY:
+            case HDLApConfig.TYPE_SENSOR_POWER:
+            case HDLApConfig.TYPE_SENSOR_FLOODING:
+            case HDLApConfig.TYPE_SENSOR_DOOR_MAGNET:
+            case HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON:
+                //鍙戦�佽幏浼犳劅鍣ㄦā鍧楃姸鎬佹暟鎹�
+                byte[] sendDatabyte = new byte[]{
+                        (byte) 1,
+                        (byte) info.getChannelNum()
+                };
+
+                addSendData(info, sendDatabyte, Configuration.STATE);
+                break;
+            default:
+                HDLLog.info("涓嶆槸浼犳劅鍣ㄦā鍧�");
+                break;
+        }
+    }
+
 }
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 db59326..34d027c 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
@@ -34,6 +34,7 @@
 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.DryContactSensorBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.EventCode;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.FreshAirFeedBackEvent;
 import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.GeothermalFeedBackEvent;
@@ -189,6 +190,11 @@
                 break;
             case Configuration.COMMON_SWITCH_STATE_BACK_COMMAND:
                 handleCommonSwitchStateData(getDatas);
+                break;
+            /***2020-06-23 鏂板骞茶妭鐐规寚浠�**/
+            case Configuration.DRY_CONTACT_STATE_BACK_COMMAND:
+            case Configuration.DRY_CONTACT_BROADCAST_STATE_COMMAND:
+                handleDryContactBroadcastStateData(getDatas);
                 break;
             case Configuration.SECURITY_ARMING_CTRL_BACK_COMMAND://20190729鏂板
             case Configuration.SECURITY_ALARM_CTRL_BACK_COMMAND://鎶ヨ璁剧疆鍙嶉
@@ -2833,4 +2839,42 @@
     }
 
 
+    /**
+     * 骞叉帴鐐瑰箍鎾姸鎬佸弽棣堝弽棣�
+     * 2020-06-24 鏂板
+     *
+     * @param getDatas
+     */
+    private static void handleDryContactBroadcastStateData(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.SENSOR_BIG_TYPE
+                            && infos.get(j).getChannelNum() == (getDatas.addBytes[1] & 0xFF)) {//2019-07-29
+                        if (getDatas.addBytes.length >= 3) {
+                            isGetDeviceStateSuccess = true;
+                            int state = getDatas.addBytes[2] & 0xFF;
+                            devicesDataList.get(i).getAppliancesInfoList().get(j).setIntCurState(state);
+//                            devicesDataList.get(i).getAppliancesInfoList().get(j).setArrCurState(getDatas.addBytes);
+                            EventBus.getDefault().post(new DryContactSensorBackEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), true, state));
+                        } else {
+                            isGetDeviceStateSuccess = true;
+                            EventBus.getDefault().post(new DryContactSensorBackEvent(devicesDataList.get(i).getAppliancesInfoList().get(j), false));
+                            HDLLog.info("DryContac 杩斿洖addBytes鏁版嵁寮傚父");
+                        }
+                        break outter;
+                    } else {
+//                        HDLLog.I("DryContac 娌℃湁鎵惧埌鍖归厤绫诲瀷");
+                    }
+                }
+                break outter;
+            }
+        }
+    }
+
+
 }
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 713c936..42479d3 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
@@ -438,6 +438,8 @@
             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.DRY_CONTACT_STATE_BACK_COMMAND:
+            case Configuration.DRY_CONTACT_BROADCAST_STATE_COMMAND://2020-06-23 澧炲姞骞叉帴鐐圭姸鎬佸洖澶�
             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/DryContactSensorBackEvent.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/DryContactSensorBackEvent.java
new file mode 100644
index 0000000..489227f
--- /dev/null
+++ b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/HDLDeviceManger/EventBusEvent/DryContactSensorBackEvent.java
@@ -0,0 +1,22 @@
+package com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent;
+
+
+import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
+
+public class DryContactSensorBackEvent extends DeviceStateEvent {
+
+    private int mState;
+
+    public DryContactSensorBackEvent(AppliancesInfo appliancesInfo, boolean isSuccess) {
+        super(appliancesInfo, isSuccess);
+
+    }
+    public DryContactSensorBackEvent(AppliancesInfo appliancesInfo, boolean isSuccess, int mState) {
+        super(appliancesInfo, isSuccess);
+        this.mState = mState;
+    }
+
+    public int getState() {
+        return mState;
+    }
+}
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 0508d49..acbcf35 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
@@ -599,7 +599,18 @@
                 appliancesInfo.setDeviceName("浼犳劅鍣� 鍔熺巼");
                 appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_POWER);
                 break;
-
+            case 25:
+                appliancesInfo.setDeviceName("浼犳劅鍣� 姘存蹈");
+                appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_FLOODING);
+                break;
+            case 26:
+                appliancesInfo.setDeviceName("浼犳劅鍣� 闂ㄧ绐楃");
+                appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_DOOR_MAGNET);
+                break;
+            case 27:
+                appliancesInfo.setDeviceName("浼犳劅鍣� 绱ф�ユ寜閽�");
+                appliancesInfo.setDeviceType(HDLApConfig.TYPE_SENSOR_EMERGENCY_BUTTON);
+                break;
 
             default:
                 appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
@@ -611,8 +622,9 @@
             appliancesInfo.setLittleType(littleType);
 //            appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
 //            appliancesInfo.setCtrlBackCommand(Configuration.LOGIC_CTRL_BACK_COMMAND);
-            appliancesInfo.setStateCommand(Configuration.SENSOR_STATE_COMMAND);
-            appliancesInfo.setStateBackCommand(Configuration.SENSOR_STATE_BACK_COMMAND);
+
+//            appliancesInfo.setStateCommand(Configuration.SENSOR_STATE_COMMAND);
+//            appliancesInfo.setStateBackCommand(Configuration.SENSOR_STATE_BACK_COMMAND);
             appliancesInfo.setDeviceSubnetID(devicesData.getSourceSubnetID());
             appliancesInfo.setDeviceDeviceID(devicesData.getSourceDeviceID());
             appliancesInfo.setParentRemarks(parentRemarks);
@@ -620,6 +632,16 @@
             appliancesInfo.setIpAddress(ipAddress);
 
 
+            if (littleType == 0 || littleType == 1 || littleType == 10 ||  littleType == 11 || littleType == 25 || littleType == 26 || littleType == 27) {
+                //骞茶妭鐐�0 绉诲姩浼犳劅鍣�1 鐓ゆ皵浼犳劅鍣�10 鐑熼浘浼犳劅鍣�11 姘存蹈25 闂ㄧ绐楃26 绱ф�ユ寜閽�27
+                appliancesInfo.setStateCommand(Configuration.DRY_CONTACT_STATE_COMMAND);
+                appliancesInfo.setStateBackCommand(Configuration.DRY_CONTACT_STATE_BACK_COMMAND);
+            } else {
+                appliancesInfo.setStateCommand(Configuration.SENSOR_STATE_COMMAND);
+                appliancesInfo.setStateBackCommand(Configuration.SENSOR_STATE_BACK_COMMAND);
+
+            }
+
         }
 
 

--
Gitblit v1.8.0