From 490696fba6c1f1318e088c439ee81d536126581b Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 18 五月 2020 10:35:26 +0800
Subject: [PATCH] 优化门锁远程问题

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs           |   54 ++
 ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs          |    4 
 ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs          |    9 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs           |  100 +++--
 ZigbeeApp/Home.Ios/Resources/Language.ini                                               |  184 +++++----
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs |   33 +
 ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs             |   48 +
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs            |  113 ++++-
 ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs                                            |   12 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs                          |   30 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs               |   51 ++
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs                        |   12 
 ZigbeeApp/Shared/R.cs                                                                   |  193 +++++----
 ZigbeeApp/Shared/Shared.projitems                                                       |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs                           |    1 
 ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs                                    |    2 
 ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs                                       |   49 +-
 ZigbeeApp/Shared/Common/Device.cs                                                       |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs       |  211 +++++++++--
 ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs                                    |    2 
 20 files changed, 770 insertions(+), 342 deletions(-)

diff --git a/ZigbeeApp/Home.Ios/Resources/Language.ini b/ZigbeeApp/Home.Ios/Resources/Language.ini
index 77667b9..beb2feb 100755
--- a/ZigbeeApp/Home.Ios/Resources/Language.ini
+++ b/ZigbeeApp/Home.Ios/Resources/Language.ini
@@ -317,6 +317,12 @@
 314=鑷姩妯″紡涓嶆敮鎸佹搷浣�
 315=绌烘皵璐ㄩ噺
 316=绌烘皵璐ㄩ噺浼犳劅鍣�
+317=浼�
+318=鑹�
+319=杞诲害姹℃煋
+320=涓害姹℃煋
+321=閲嶅害姹℃煋
+322=涓ラ噸姹℃煋 
 
 5097=鍙栨秷
 5098=纭畾
@@ -1847,95 +1853,95 @@
 16115=甯稿紑鑷姩鍖栨墜鍔ㄥ彇娑�
 16116=娓稿浣撻獙
 
-;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄帴鍙g殑杩斿洖淇℃伅缈昏瘧,浠�18000寮�濮嬧槄鈽呪槄鈽�
-18004=鎸囧畾缃戝叧宸茬粡琚粦瀹�
-18005=鐢ㄦ埛涓嶅瓨鍦ㄤ簬姝や綇瀹�
-18006=璐﹀彿宸茬粡瀛樺湪浜庢浣忓畢
-18009=鎿嶄綔鏉冮檺涓嶈冻
-18010=琚粦瀹氱殑瀛愯处鍙蜂笉瀛樺湪锛岃娉ㄥ唽鍚庡啀璇�
-18011=鎿嶄綔鐨勫瓙璐﹀彿涓嶅瓨鍦�
-18012=瑙i櫎缁戝畾鐨勫瓙璐﹀彿涓嶅瓨鍦�
-18013=楠岃瘉鐮佸彂閫佸け璐�
-18015=璐﹀彿宸茬粡瀛樺湪
-18016=楠岃瘉鐮侀敊璇�
-18017=楠岃瘉鐮佸凡澶辨晥
-18018=缁戝畾鐨勮处鍙蜂笉瀛樺湪
-18019=鎸囧畾璐﹀彿宸插瓨鍦�
-18022=楠岃瘉鐮佸彂閫佸け璐�
-18024=鎸囧畾璐﹀彿涓嶅瓨鍦�
-18025=鍘熷瘑鐮佸拰鏂板瘑鐮佺浉鍚�
-18026=鍘熷瘑鐮侀敊璇�
-18034=璐﹀彿鏈敞鍐�
-18035=璇锋眰鍙傛暟閿欒
-18036=鏃犳晥鐨勭櫥褰曞瘑鍖�
-18039=褰撳墠缂栬緫鐨勪綇瀹呭悕绉板凡缁忓瓨鍦�
-18040=褰撳墠娣诲姞鐨勪綇瀹呭悕绉板凡缁忓瓨鍦�
-18041=鎸囧畾鐨勪綇瀹呬笉瀛樺湪
-18042=褰撳墠澶囦唤涓嶅睘浜庢偍褰撳墠鐨勪綇瀹�
-18043=澶囨敞鍚嶇О宸茬粡瀛樺湪,璇锋洿鎹㈠悗閲嶈瘯锛�
-18044=鎸囧畾鐨勭綉鍏矷D骞朵笉瀛樺湪
-18045=褰撳墠浣忓畢涓嬪苟娌℃湁缁戝畾鎸囧畾鐨勭綉鍏�
-18046=褰撳墠浣忓畢杩樺瓨鍦ㄧ潃鏈В闄ょ粦瀹氱殑缃戝叧
-18047=鍏变韩鏁版嵁涓嶅瓨鍦�
-18048=鍒嗕韩鐨勭洰鏍囪处鍙蜂笉瀛樺湪
-18049=鍒嗕韩鏁版嵁鎿嶄綔澶辫触
-18050=涓嶈兘鎶婅嚜宸辨坊鍔犱负鎴愬憳
-18051=涓嶈兘鎶婁富璐﹀彿娣诲姞涓烘垚鍛�
-
-
-;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄澶囩殑鍏ョ綉姝ラ,浠�21000寮�濮嬧槄鈽呪槄鈽�
-;鏅鸿兘闂ㄩ攣鍏ョ綉鎿嶄綔鎸囩ず
-21000=鍞ら啋闂ㄩ攣锛岃緭鍏モ��*鈥濄�佲��#鈥濄�佲�滅鐞嗗憳瀵嗙爜鈥漿0}鎸夎闊虫彁绀猴紝杈撳叆鈥�4鈥濋�夋嫨鍔熻兘鑿滃崟{0}杈撳叆鈥�1鈥濓紝纭璁惧鍏ョ綉
-;3璺户鐢靛櫒鍏ョ綉鎿嶄綔鎸囩ず
-21001=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
-;1璺皟鍏夊櫒灏忔ā鍧楀叆缃戞搷浣滄寚绀�
-21002=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
-;浜屾寜閿潰鏉垮叆缃戞搷浣滄寚绀�
-21003=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
-;涓夋寜閿潰鏉垮叆缃戞搷浣滄寚绀�
-21004=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
-;鍥涙寜閿潰鏉垮叆缃戞搷浣滄寚绀�
-21005=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
-;Zigbee鏅鸿兘寮�鍚堝笜鐢垫満鍏ョ綉鎿嶄綔鎸囩ず
-21006=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊锛屽垯杩涘叆閰嶇綉鐘舵�亄0}缁跨伅鐔勭伃鍒欓厤缃戞垚鍔�
-;Zigbee鏅鸿兘绠$姸鐢垫満鍏ョ綉鎿嶄綔鎸囩ず
-21007=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊锛屽垯杩涘叆閰嶇綉鐘舵�亄0}缁跨伅鐔勭伃鍒欓厤缃戞垚鍔�
-;绾㈠浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21008=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-;闂ㄧ獥浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21009=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-;鐕冩皵浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21010=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-;鐑熼浘浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21011=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-;姘存蹈浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21012=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-;绌烘皵寮�鍏冲叆缃戞搷浣滄寚绀�
-21013=鎸夐敭浠庡伐浣滄ā寮忔嫧鍒伴厤瀵规ā寮�,5绉掑悗绾㈢伅{0}鎱㈤棯鐑佹椂鎷ㄥ洖宸ヤ綔妯″紡,{0}杩涘叆閰嶇綉妯″紡,绾㈢伅甯镐寒鍒欓厤缃戞垚鍔�
-;涓户鍣ㄥ叆缃戞搷浣滄寚绀�
-21014=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁块棯鐑亄0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅鐔勭伃鍒欏叆缃戞垚鍔�
-;绌鸿皟鍏ョ綉鎿嶄綔鎸囩ず
-21015=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊,杩涘叆閰嶇綉鐘舵�亄0}缁跨伅姣�5绉掗棯鐑佷竴娆″垯鍏ョ綉鎴愬姛
-;pir浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
-21016=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�亄0}闂儊杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
-;娓╂箍搴︿紶鎰熷櫒鍏ョ綉鎿嶄綔鎸囩ず
-21017=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝淇″彿鍥炬爣{0}蹇棯锛� 杩涘叆閰嶇綉鐘舵�併�傚浘鏍囧父浜垯閰嶇綉鎴愬姛
-;鏂规偊2鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
-21018=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
-;鏂规偊4鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
-21019=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
-;鏂规偊8鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
-21020=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
-;鏂规偊鐜闈㈡澘鍏ョ綉鎿嶄綔鎸囩ず
-21021=鎸変綇闈㈡澘鍔熻兘(function)鎸夐敭锛屾墍鏈夋寜閿畕0}鎸囩ず鐏寒璧凤紝鍒欓厤缃戞垚鍔�
-;绐楀笜闈㈡澘鐨勫叆缃戞搷浣滄寚绀�
-21022=闀挎寜闈㈡澘宸︿笂瑙掓寜閿紝鎵�鏈夋寜閿畕0}鎸囩ず鐏寒璧凤紝鍒欓厤缃戞垚鍔�
-;鍚搁《鐕冩皵浼犳劅鍣ㄧ殑鍏ョ綉鎿嶄綔鎸囩ず
-21023=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
-
-;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄ā鍧桰D鐨勫畼鏂瑰悕瀛�,浠�30000寮�濮嬧槄鈽呪槄鈽�
-30000=绱ф�ユ寜閽�
-30001=鐕冩皵浼犳劅鍣�
+;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄帴鍙g殑杩斿洖淇℃伅缈昏瘧,浠�18000寮�濮嬧槄鈽呪槄鈽�
+18004=鎸囧畾缃戝叧宸茬粡琚粦瀹�
+18005=鐢ㄦ埛涓嶅瓨鍦ㄤ簬姝や綇瀹�
+18006=璐﹀彿宸茬粡瀛樺湪浜庢浣忓畢
+18009=鎿嶄綔鏉冮檺涓嶈冻
+18010=琚粦瀹氱殑瀛愯处鍙蜂笉瀛樺湪锛岃娉ㄥ唽鍚庡啀璇�
+18011=鎿嶄綔鐨勫瓙璐﹀彿涓嶅瓨鍦�
+18012=瑙i櫎缁戝畾鐨勫瓙璐﹀彿涓嶅瓨鍦�
+18013=楠岃瘉鐮佸彂閫佸け璐�
+18015=璐﹀彿宸茬粡瀛樺湪
+18016=楠岃瘉鐮侀敊璇�
+18017=楠岃瘉鐮佸凡澶辨晥
+18018=缁戝畾鐨勮处鍙蜂笉瀛樺湪
+18019=鎸囧畾璐﹀彿宸插瓨鍦�
+18022=楠岃瘉鐮佸彂閫佸け璐�
+18024=鎸囧畾璐﹀彿涓嶅瓨鍦�
+18025=鍘熷瘑鐮佸拰鏂板瘑鐮佺浉鍚�
+18026=鍘熷瘑鐮侀敊璇�
+18034=璐﹀彿鏈敞鍐�
+18035=璇锋眰鍙傛暟閿欒
+18036=鏃犳晥鐨勭櫥褰曞瘑鍖�
+18039=褰撳墠缂栬緫鐨勪綇瀹呭悕绉板凡缁忓瓨鍦�
+18040=褰撳墠娣诲姞鐨勪綇瀹呭悕绉板凡缁忓瓨鍦�
+18041=鎸囧畾鐨勪綇瀹呬笉瀛樺湪
+18042=褰撳墠澶囦唤涓嶅睘浜庢偍褰撳墠鐨勪綇瀹�
+18043=澶囨敞鍚嶇О宸茬粡瀛樺湪,璇锋洿鎹㈠悗閲嶈瘯锛�
+18044=鎸囧畾鐨勭綉鍏矷D骞朵笉瀛樺湪
+18045=褰撳墠浣忓畢涓嬪苟娌℃湁缁戝畾鎸囧畾鐨勭綉鍏�
+18046=褰撳墠浣忓畢杩樺瓨鍦ㄧ潃鏈В闄ょ粦瀹氱殑缃戝叧
+18047=鍏变韩鏁版嵁涓嶅瓨鍦�
+18048=鍒嗕韩鐨勭洰鏍囪处鍙蜂笉瀛樺湪
+18049=鍒嗕韩鏁版嵁鎿嶄綔澶辫触
+18050=涓嶈兘鎶婅嚜宸辨坊鍔犱负鎴愬憳
+18051=涓嶈兘鎶婁富璐﹀彿娣诲姞涓烘垚鍛�
+
+
+;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄澶囩殑鍏ョ綉姝ラ,浠�21000寮�濮嬧槄鈽呪槄鈽�
+;鏅鸿兘闂ㄩ攣鍏ョ綉鎿嶄綔鎸囩ず
+21000=鍞ら啋闂ㄩ攣锛岃緭鍏モ��*鈥濄�佲��#鈥濄�佲�滅鐞嗗憳瀵嗙爜鈥漿0}鎸夎闊虫彁绀猴紝杈撳叆鈥�4鈥濋�夋嫨鍔熻兘鑿滃崟{0}杈撳叆鈥�1鈥濓紝纭璁惧鍏ョ綉
+;3璺户鐢靛櫒鍏ョ綉鎿嶄綔鎸囩ず
+21001=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
+;1璺皟鍏夊櫒灏忔ā鍧楀叆缃戞搷浣滄寚绀�
+21002=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
+;浜屾寜閿潰鏉垮叆缃戞搷浣滄寚绀�
+21003=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
+;涓夋寜閿潰鏉垮叆缃戞搷浣滄寚绀�
+21004=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
+;鍥涙寜閿潰鏉垮叆缃戞搷浣滄寚绀�
+21005=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�侀棯鐑亄0}杩涘叆閰嶇綉鐘舵�併�傜豢鐏揩闂�3绉掑垯閰嶇綉鎴愬姛
+;Zigbee鏅鸿兘寮�鍚堝笜鐢垫満鍏ョ綉鎿嶄綔鎸囩ず
+21006=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊锛屽垯杩涘叆閰嶇綉鐘舵�亄0}缁跨伅鐔勭伃鍒欓厤缃戞垚鍔�
+;Zigbee鏅鸿兘绠$姸鐢垫満鍏ョ綉鎿嶄綔鎸囩ず
+21007=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊锛屽垯杩涘叆閰嶇綉鐘舵�亄0}缁跨伅鐔勭伃鍒欓厤缃戞垚鍔�
+;绾㈠浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21008=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+;闂ㄧ獥浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21009=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+;鐕冩皵浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21010=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+;鐑熼浘浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21011=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+;姘存蹈浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21012=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+;绌烘皵寮�鍏冲叆缃戞搷浣滄寚绀�
+21013=鎸夐敭浠庡伐浣滄ā寮忔嫧鍒伴厤瀵规ā寮�,5绉掑悗绾㈢伅{0}鎱㈤棯鐑佹椂鎷ㄥ洖宸ヤ綔妯″紡,{0}杩涘叆閰嶇綉妯″紡,绾㈢伅甯镐寒鍒欓厤缃戞垚鍔�
+;涓户鍣ㄥ叆缃戞搷浣滄寚绀�
+21014=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁块棯鐑亄0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅鐔勭伃鍒欏叆缃戞垚鍔�
+;绌鸿皟鍏ョ綉鎿嶄綔鎸囩ず
+21015=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏瘂0}鍙樼豢闂儊,杩涘叆閰嶇綉鐘舵�亄0}缁跨伅姣�5绉掗棯鐑佷竴娆″垯鍏ョ綉鎴愬姛
+;pir浼犳劅鍣ㄥ叆缃戞搷浣滄寚绀�
+21016=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝鎸囩ず鐏彉缁裤�亄0}闂儊杩涘叆閰嶇綉鐘舵�併�傜豢鐏唲鐏垯閰嶇綉鎴愬姛
+;娓╂箍搴︿紶鎰熷櫒鍏ョ綉鎿嶄綔鎸囩ず
+21017=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝淇″彿鍥炬爣{0}蹇棯锛� 杩涘叆閰嶇綉鐘舵�併�傚浘鏍囧父浜垯閰嶇綉鎴愬姛
+;鏂规偊2鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
+21018=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
+;鏂规偊4鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
+21019=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
+;鏂规偊8鎸夐敭杞昏Е寮忛潰鏉垮叆缃戞搷浣滄寚绀�
+21020=闀挎寜BUTTON1鎸夐敭5绉掞紝鎵�鏈夋寚绀虹伅{0}鍙樹负缁胯壊骞堕棯鐑侊紝杩涘叆閰嶇綉鐘舵��
+;鏂规偊鐜闈㈡澘鍏ョ綉鎿嶄綔鎸囩ず
+21021=鎸変綇闈㈡澘鍔熻兘(function)鎸夐敭锛屾墍鏈夋寜閿畕0}鎸囩ず鐏寒璧凤紝鍒欓厤缃戞垚鍔�
+;绐楀笜闈㈡澘鐨勫叆缃戞搷浣滄寚绀�
+21022=闀挎寜闈㈡澘宸︿笂瑙掓寜閿紝鎵�鏈夋寜閿畕0}鎸囩ず鐏寒璧凤紝鍒欓厤缃戞垚鍔�
+;鍚搁《鐕冩皵浼犳劅鍣ㄧ殑鍏ョ綉鎿嶄綔鎸囩ず
+21023=闀挎寜鍥剧ず鎸夐敭5绉掍互涓婏紝缁胯壊蹇棯{0}杩涘叆閰嶇綉鐘舵�侊紝缁跨伅甯镐寒鍒欏叆缃戞垚鍔�
+
+;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄ā鍧桰D鐨勫畼鏂瑰悕瀛�,浠�30000寮�濮嬧槄鈽呪槄鈽�
+30000=绱ф�ユ寜閽�
+30001=鐕冩皵浼犳劅鍣�
 30002=鐑熼浘浼犳劅鍣�
 30003=姘翠镜浼犳劅鍣�
 30004=閽ュ寵鎵�
diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index 85962cc..0be27e0 100644
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -732,7 +732,7 @@
         /// <returns></returns>
         public bool DeviceIsCanFixedPosition(CommonDevice device)
         {
-            if (device.Type == DeviceType.DoorLock)
+            if (device.Type == DeviceType.DoorLock || device.Type == DeviceType.PMSensor)
             {
                 //闂ㄩ攣娌℃湁瀹氫綅鍔熻兘
                 return false;
diff --git a/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DevicePmSensorRowControl.cs b/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs
similarity index 94%
rename from ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DevicePmSensorRowControl.cs
rename to ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs
index 0adb49e..b6a2612 100644
--- a/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DevicePmSensorRowControl.cs
+++ b/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DevicePmSensorRowControl.cs
@@ -48,8 +48,8 @@
         {
             //妫�娴嬭兘鍚﹀彂閫佽幏鍙栫姸鎬佸懡浠�
             //if (this.CheckCanSendStatuComand() == true)
-            //{
-            HdlDeviceAttributeLogic.Current.SendFreshAirStatuComand(this.device);
+            //{  
+            HdlDeviceAttributeLogic.Current.SendPmSensorComand(this.device);
             //}
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs b/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs
index 14320a5..17e5641 100644
--- a/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs
@@ -49,8 +49,6 @@
                 {
                     action(Send.CurrentDoorLock.IsDoorLockNormallyMode);
                 }
-                //杩斿洖鎸夐敭娓呯┖ 
-                UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
             };
 
             var middle = new FrameLayout
diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs
index acb4ba7..a118bf0 100644
--- a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs
@@ -385,6 +385,15 @@
         }
 
         /// <summary>
+        /// 璁剧疆PM2.5浼犳劅鍣ㄧ姸鎬佹枃鏈�(涓嶉渶瑕佹寚瀹氥�愬綋鍓嶄袱涓瓧銆�)
+        /// </summary>
+        /// <param name="text"></param>
+        public void SetPmTwoPointFiveStatuText(string text)
+        {
+            this.btnStatu.Text = text;
+        }
+
+        /// <summary>
         /// 閲嶆柊璁剧疆璁惧鍚嶅瓧鎺т欢鍜岀姸鎬佹帶浠剁殑Y杞�
         /// </summary>
         /// <param name="i_NameY">璁惧鍚嶅瓧鎺т欢鐨刌杞�(鐪熷疄鍊�)</param>
diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
index fa8c8d1..7e3146e 100644
--- a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
@@ -44,7 +44,7 @@
             this.pMSensor = (PMSensor)this.device;
             //鍏堟竻绌�
             this.listControl = new List<ButtonBase>();
-            InitFreshAirControl(frameWhiteBack);
+            InitPmControl(frameWhiteBack);
             UpdateStatus();
         }
 
@@ -52,7 +52,7 @@
         /// 鍒濆鍖朠M2.5浼犳劅鍣ㄦ帶浠�
         /// </summary>
         /// <param name="frameWhiteBack"></param>
-        private void InitFreshAirControl(FrameLayout frameWhiteBack)
+        private void InitPmControl(FrameLayout frameWhiteBack)
         {
             //婀垮害瀹瑰櫒
             var frameHumidityPic = new FrameLayout();
@@ -85,7 +85,7 @@
             //婀垮害鍗曚綅
             var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
             btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
-            btnHumidityUnit.X = Application.GetRealWidth(190);
+            btnHumidityUnit.X = Application.GetRealWidth(180);
             btnHumidityUnit.Text = "%";
             btnHumidityUnit.TextSize = 14;
             btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
@@ -122,7 +122,7 @@
             //娓╁害鍗曚綅
             var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
             btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
-            btnTemperatureUnit.X = Application.GetRealWidth(188);
+            btnTemperatureUnit.X = Application.GetRealWidth(180);
             btnTemperatureUnit.Text = "鈩�";
             btnTemperatureUnit.TextSize = 14;
             btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
@@ -147,7 +147,7 @@
             framePmPic.AddChidren(btnPmText);
 
             //PM2.5鏁版嵁锛堢3涓紝listControl銆�2銆戯級
-            var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
+            var btnPmStatus = new NormalViewControl(162, 92, true);
             btnPmStatus.Y = Application.GetRealHeight(181);
             btnPmStatus.Text = "155";
             btnPmStatus.TextSize = 30;
@@ -157,9 +157,9 @@
             this.listControl.Add(btnPmStatus);
 
             //PM2.5鍗曚綅
-            var btnPmUnit = new NormalViewControl(124 + 15, 43, true);
+            var btnPmUnit = new NormalViewControl(120 + 26, 43, true);
             btnPmUnit.Y = Application.GetRealHeight(181 + 46);
-            btnPmUnit.X = Application.GetRealWidth(150);
+            btnPmUnit.X = Application.GetRealWidth(153);
             btnPmUnit.Text = "渭g/m鲁";
             btnPmUnit.TextSize = 14;
             btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
@@ -247,7 +247,8 @@
             this.listControl[1].Text = pMSensor.currentHumidity.ToString();
             this.listControl[2].Text = pMSensor.currentPmData.ToString();
             //璁剧疆鐘舵�佹枃瀛�
-            this.btnStatu.Text = Language.StringByID(R.MyInternationalizationString.AirQuality) + "";
+            var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType();
+            this.SetStatuText(curText);
         }
 
         /// <summary>
@@ -259,13 +260,38 @@
 
             if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
             {
-
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
             }
-            this.listControl[2].Text = pMSensor.currentPmData.ToString();
-
+            else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else if (pMSensor.currentPmData > 250)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else
+            {
+                curQuality = "";
+            }
             //璁剧疆鐘舵�佹枃瀛�
             return curQuality;
         }
         #endregion
+
+
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
old mode 100755
new mode 100644
index 2083d28..6e3c9d1
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -278,6 +278,60 @@
                {
                  { "AttriButeId", (int)AttriButeId.FanMode}
                }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� PM2.5_______________________________
+        /// <summary>
+        /// SendPmSensorComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        public void SendPmSensorComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            new System.Threading.Thread(() =>
+            {
+                SendPmSensorStatuComand(device);
+                //璇诲彇Pm2.5浼犳劅鍣ㄧ殑娓╁害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(device);
+                //璇诲彇Pm2.5浼犳劅鍣ㄧ殑婀垮害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(device);
+                System.Threading.Thread.Sleep(300);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SendFanStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendPmSensorStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.PmTwoPointFiveMeasurement  },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
             };
             var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
             jObject.Add("Data", data);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs
old mode 100755
new mode 100644
index 6fbdb9e..9ac7b9a
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs
@@ -183,6 +183,57 @@
                 }
                 return $"{wind}";
             }
+            else if (device.Type == DeviceType.PMSensor)
+            {
+                //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+                if (device.HadReadDeviceStatu == false)
+                {
+                    return Language.StringByID(R.MyInternationalizationString.uOffLine);
+                }
+                //绌烘皵璐ㄩ噺
+                string curQuality = "";
+                //娓╁害
+                string temperature = string.Empty;
+                //婀垮害
+                string humidity = string.Empty;
+                //PM2.5
+                string pm = string.Empty;
+                var pMSensor = device as PMSensor;
+                if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else if (pMSensor.currentPmData > 250)
+                {
+                    curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+                }
+                else
+                {
+                    curQuality = "--";
+                }
+
+                humidity = $"{pMSensor.currentHumidity}%";
+                temperature = $"{pMSensor.currentTemperature}鈩�";
+                pm = $"{pMSensor.currentPmData}渭g/m鲁";
+                return $"{curQuality},{pm},{temperature},{humidity}";
+
+            }
             else if (device.Type == DeviceType.Thermostat)
             {
                 //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
old mode 100755
new mode 100644
index 0e0fbce..3f81650
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -425,24 +425,51 @@
                         //娓╁害
                         if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
                         {
-                            if (attData.AttriButeData == 0)
+                            decimal temperatrue = 0;
+                            string receiptData = string.Empty;
+                            //涓や釜涓や釜浣嶇疆鏇挎崲
+                            for (int i = attData.AttriButeDataHex.Length - 1; i >= 0; i = i - 2)
                             {
-                                ((TemperatureSensor)locadevice).Temperatrue = 0;
+                                receiptData += attData.AttriButeDataHex[i - 1].ToString() + attData.AttriButeDataHex[i].ToString();
                             }
-                            else if (attData.AttriButeData > 32767)
-                            {
-                                //璐熸暟(鐗规畩澶勭悊)
-                                string strValue = (attData.AttriButeData - 65536).ToString();
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                ((TemperatureSensor)locadevice).Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
-                            }
-                            else
+                            //鏈夌鍙�(浼氬嚭鐜拌礋鏁�)
+                            if (attData.AttriButeDataType == 40 || attData.AttriButeDataType == 41)
                             {
                                 //灏忔暟鐐归渶瑕佷竴浣�
-                                string strValue = attData.AttriButeData.ToString();
+                                string strValue = Convert.ToInt16(receiptData, 16).ToString();
                                 strValue = strValue.Substring(0, strValue.Length - 1);
-                                ((TemperatureSensor)locadevice).Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                            }
+                            //鏃犵鍙�(涓嶄細鍑虹幇璐熸暟)
+                            else if (attData.AttriButeDataType == 32 || attData.AttriButeDataType == 33)
+                            {
+                                ushort shortData = Convert.ToUInt16(receiptData, 16);
+                                if (shortData > 32767)
+                                {
+                                    //璐熸暟(鐗规畩澶勭悊)
+                                    string strValue = (shortData - 65536).ToString();
+                                    //灏忔暟鐐归渶瑕佷竴浣�
+                                    strValue = strValue.Substring(0, strValue.Length - 1);
+                                    temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                }
+                                else
+                                {
+                                    //灏忔暟鐐归渶瑕佷竴浣�
+                                    string strValue = shortData.ToString();
+                                    strValue = strValue.Substring(0, strValue.Length - 1);
+                                    temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                }
+                            }
+
+                            //娓╁害浼犳劅鍣�
+                            if (locadevice is TemperatureSensor)
+                            {
+                                ((TemperatureSensor)locadevice).Temperatrue = temperatrue;
+                            }
+                            //PM2.5浼犳劅鍣�
+                            else if (locadevice is PMSensor)
+                            {
+                                ((PMSensor)locadevice).currentTemperature = (int)temperatrue;
                             }
                             //宸茬粡鎺ユ敹鍒扮姸鎬�
                             locadevice.HadReadDeviceStatu = true;
@@ -460,22 +487,66 @@
                         //婀垮害
                         if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
                         {
-                            if (attData.AttriButeData == 0)
+                            decimal humidity = 0;
+                            string receiptData = string.Empty;
+                            //涓や釜涓や釜浣嶇疆鏇挎崲
+                            for (int i = attData.AttriButeDataHex.Length - 1; i >= 0; i = i - 2)
                             {
-                                ((TemperatureSensor)locadevice).Humidity = 0;
+                                receiptData += attData.AttriButeDataHex[i - 1].ToString() + attData.AttriButeDataHex[i].ToString();
                             }
-                            else
+                            //鏈夌鍙�(浼氬嚭鐜拌礋鏁�)
+                            if (attData.AttriButeDataType == 40 || attData.AttriButeDataType == 41)
                             {
-                                //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                                string strValue = attData.AttriButeData.ToString();
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                string strValue = Convert.ToInt16(receiptData, 16).ToString();
                                 strValue = strValue.Substring(0, strValue.Length - 1);
-                                ((TemperatureSensor)locadevice).Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                            }
+                            //鏃犵鍙�(涓嶄細鍑虹幇璐熸暟)
+                            else if (attData.AttriButeDataType == 32 || attData.AttriButeDataType == 33)
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣� 婀垮害涓嶄細鍑虹幇璐熸暟
+                                string strValue = Convert.ToUInt16(receiptData, 16).ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                            }
+                            //娓╁害浼犳劅鍣�
+                            if (locadevice is TemperatureSensor)
+                            {
+                                ((TemperatureSensor)locadevice).Humidity = humidity;
+                            }
+                            //PM2.5浼犳劅鍣�
+                            else if (locadevice is PMSensor)
+                            {
+                                ((PMSensor)locadevice).currentHumidity = (int)humidity;
                             }
                         }
                         //宸茬粡鎺ユ敹鍒扮姸鎬�
                         locadevice.HadReadDeviceStatu = true;
                     }
-                }
+                }
+                #endregion
+
+                #region 鈻� PM2.5鏁版嵁
+                //PM2.5鏁版嵁
+                else if (report.DeviceStatusReport.CluterID == 1066)
+                {
+                    foreach (var attData in report.DeviceStatusReport.AttriBute)
+                    {
+                        //PM2.5
+                        if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
+                        {
+
+                            if (attData.AttriButeDataType == 57)
+                            {
+                                ((PMSensor)locadevice).currentPmData = attData.AttriButeData;
+                            }
+                        }
+                        //宸茬粡鎺ユ敹鍒扮姸鎬�
+                        locadevice.HadReadDeviceStatu = true;
+                    }
+                }
+
                 #endregion
             }
 
@@ -571,7 +642,7 @@
         /// 璁惧鍦ㄧ嚎鐘舵�佹洿鏂板弽棣�
         /// </summary>
         /// <param name="receiveData"></param>
-        private void DeviceOnlineChangePush (JObject receiveData)
+        private void DeviceOnlineChangePush(JObject receiveData)
         {
             if (this.dicDeviceEvent.Count == 0)
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
old mode 100755
new mode 100644
index e5976fd..5414e02
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
@@ -151,6 +151,7 @@
             btnHorizontalScrolViewLayout = new HorizontalScrolViewLayout
             {
                 X = Application.GetRealWidth(58),
+                BackgroundColor = 0xff00ff00,
             };
             btnMidTopLayout.AddChidren(btnHorizontalScrolViewLayout);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
old mode 100755
new mode 100644
index 4f40b43..e4d680a
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -739,21 +739,27 @@
             if (typeModeList == null)
             {
                 //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑澶х被
-                CommonPage.Loading.Start();
+                Application.RunOnMainThread(() =>
+                {
+                    CommonPage.Loading.Start();
+                });
                 typeModeList = await GetTypeMode();
                 if (typeModeList == null)
                 {
                     Application.RunOnMainThread(() =>
                     {
                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        CommonPage.Loading.Hide();
                     });
-                    CommonPage.Loading.Hide();
                     dialog.Close();
                     return;
                 }
                 else
                 {
-                    CommonPage.Loading.Hide();
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                    });
                 }
             }
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs
old mode 100755
new mode 100644
index 6181276..12b1007
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs
@@ -349,24 +349,48 @@
             btnRight.Y += this.GetPictrueRealSize(8);
 
             frameColor.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColorView.ButtonClickEvent += (sender, e) =>
             {
-                var form = new PanelColorSelectForm();
-                form.AddForm(R1, G1, B1);
-                form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
-                {
-                    R1 = Rcolor;
-                    G1 = Gcolor;
-                    B1 = Bcolor;
-
-                    this.keyColorData.CloseColorR = Convert.ToString(Rcolor, 16);
-                    this.keyColorData.CloseColorG = Convert.ToString(Gcolor, 16);
-                    this.keyColorData.CloseColorB = Convert.ToString(Bcolor, 16);
-
-                    btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
-                    //鍙樻洿婊戝姩鏉$殑棰滆壊
-                    seekBar1.ProgressBarColor = btnColor.BackgroundColor;
-                };
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColor.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColorLine.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnRight.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
             };
+        }
+
+        /// <summary>
+        /// PanelColorBefore
+        /// </summary>
+        private void PanelColor(NormalViewControl btnColor, SeekBarControl seekBar1, int R1, int G1, int B1)
+        {
+            var form = new PanelColorSelectForm();
+            form.AddForm(R1, G1, B1);
+            form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
+            {
+                R1 = Rcolor;
+                G1 = Gcolor;
+                B1 = Bcolor;
+
+                this.keyColorData.CloseColorR = Convert.ToString(Rcolor, 16);
+                this.keyColorData.CloseColorG = Convert.ToString(Gcolor, 16);
+                this.keyColorData.CloseColorB = Convert.ToString(Bcolor, 16);
+
+                btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
+                //鍙樻洿婊戝姩鏉$殑棰滆壊
+                seekBar1.ProgressBarColor = btnColor.BackgroundColor;
+            };
         }
 
         #endregion
@@ -484,33 +508,33 @@
             btnRight.Y = Application.GetRealHeight(5);
             btnRight.X = frameColor.Width - this.GetPictrueRealSize(58);
             frameColor.AddChidren(btnRight, ChidrenBindMode.BindEventOnly);
-            btnRight.Y += this.GetPictrueRealSize(8);
-
+            btnRight.Y += this.GetPictrueRealSize(8);
+
             frameColor.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColorView.ButtonClickEvent += (sender, e) =>
             {
-                var form = new PanelColorSelectForm();
-                form.AddForm(R1, G1, B1);
-                form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
-                {
-                    R1 = Rcolor;
-                    G1 = Gcolor;
-                    B1 = Bcolor;
-
-                    this.keyColorData.OpenColorR = Convert.ToString(Rcolor, 16);
-                    this.keyColorData.OpenColorG = Convert.ToString(Gcolor, 16);
-                    this.keyColorData.OpenColorB = Convert.ToString(Bcolor, 16);
-
-                    btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
-                    //鍙樻洿婊戝姩鏉$殑棰滆壊
-                    seekBar1.ProgressBarColor = btnColor.BackgroundColor;
-                };
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColor.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnColorLine.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
+            };
+            btnRight.ButtonClickEvent += (sender, e) =>
+            {
+                PanelColor(btnColor, seekBar1, R1, G1, B1);
             };
-        }
-
+        }
         #endregion
-
+
         #region 鈻� 鑾峰彇鍒濆鏁版嵁_______________________
-
+
         /// <summary>
         /// 鑾峰彇璁惧鍒濆鏁版嵁
         /// </summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
old mode 100755
new mode 100644
index 49ce8de..7182c20
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
@@ -53,6 +53,10 @@
         /// 琚粦鐩爣鏄疨M2.5
         /// </summary>
         private CommonDevice bindPMDev;
+        // <summary>
+        /// 鎸夐敭涓缁戝畾鐨勭洰鏍囧垪琛�
+        /// </summary>
+        public List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
 
         #endregion
 
@@ -204,7 +208,7 @@
 
             rowNewWind.ButtonClickEvent += (sender, e) =>
             {
-                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindFreshAirDev, 1);
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindFreshAirDev, bindList, 1);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 addDevicePage.Show();
@@ -241,9 +245,9 @@
             var panelBindListRes = await curControlDev.GetDeviceBindAsync();
             if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
             {
-                foreach (var bDev in panelBindListRes.getAllBindResponseData.BindList)
+                bindList = panelBindListRes.getAllBindResponseData.BindList;
+                foreach (var bDev in bindList)
                 {
-                    curControlDev.bindList.Add(bDev);
                     var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
 
                     if (device.Type == DeviceType.FreshAir)
@@ -279,8 +283,21 @@
                     }
                     if (device.Type == DeviceType.PMSensor)
                     {
-                        bindPmName = device.DeviceEpointName;
-                        bindPMDev = device;
+                        if (bDev.BindCluster == 1026)
+                        {
+                            bindTemperatureName = device.DeviceEpointName;
+                            bindTemperatureDev = device;
+                        }
+                        if (bDev.BindCluster == 1029)
+                        {
+                            bindHumidityName = device.DeviceEpointName;
+                            bindHumidityDev = device;
+                        }
+                        if (bDev.BindCluster == 1066)
+                        {
+                            bindPmName = device.DeviceEpointName;
+                            bindPMDev = device;
+                        }
                     }
                 }
                 result = true;
@@ -310,7 +327,7 @@
             var btnPMStatu = rowPM.AddMostRightView(msg, 700);
             rowPM.ButtonClickEvent += (sender, e) =>
             {
-                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindPMDev, 4);
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindPMDev, bindList, 4);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 addDevicePage.Show();
@@ -355,7 +372,7 @@
             var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
             rowTemPerature.ButtonClickEvent += (sender, e) =>
             {
-                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindTemperatureDev, 2);
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindTemperatureDev, bindList, 2);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 addDevicePage.Show();
@@ -400,7 +417,7 @@
             var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
             rowHumidity.ButtonClickEvent += (sender, e) =>
             {
-                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindHumidityDev, 3);
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindHumidityDev, bindList, 3);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 addDevicePage.Show();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
index b05bee2..9a571e4 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -18,11 +18,16 @@
         /// <param name="device"></param>
         /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�;4:PM2.5浼犳劅鍣�</param>
         /// <param name="bindDev">缁戝畾鐩爣 </param>
-        public PanelFangyueFreshAirTargetsForm(CommonDevice device, CommonDevice bindDev, int deviceBindType)
+        public PanelFangyueFreshAirTargetsForm(CommonDevice device, CommonDevice bindDev, List<BindListResponseObj> bindList, int deviceBindType)
         {
             this.curControlDev = device as FreshAir;
             this.curBindDevice = bindDev;
             this.curDeviceBindType = deviceBindType;
+            curControlDev.bindList = bindList;
+            if (bindList.Count == 0)
+            {
+                canReadBindList = true;
+            }
         }
         #endregion
 
@@ -106,7 +111,7 @@
         /// <summary>
         /// 鏄惁鑳界偣鍑讳繚瀛樻寜閽�
         /// </summary>
-        private bool canSave = true;
+        private bool canReadBindList = false;
         #endregion
 
         #region UI璁捐 
@@ -475,12 +480,20 @@
                         break;
                     case 2:
                         devicePic.UnSelectedImagePath = "Device/SensorTemperature.png";
+                        if (device.Type == DeviceType.PMSensor)
+                        {
+                            btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
+                        }
                         break;
                     case 3:
                         devicePic.UnSelectedImagePath = "Device/SensorHumidity.png";
+                        if (device.Type == DeviceType.PMSensor)
+                        {
+                            btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
+                        }
                         break;
                     case 4:
-                        devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
+                        devicePic.UnSelectedImagePath = "Device/AirQualitySensorEpoint.png";
                         break;
                 }
                 #endregion
@@ -710,35 +723,39 @@
                     currentPanelSupportBindDeviceList = GetAllRoomSupportDeviceList();
 
                     //鑾峰彇闈㈡澘涓瓨鍦ㄧ殑缁戝畾鐩爣
-                    var panelBindListRes = await this.curControlDev.GetDeviceBindAsync();
-                    if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
+                    if (canReadBindList)
                     {
-                        curControlDev.bindList.Clear();
-                        foreach (var bDev in panelBindListRes.getAllBindResponseData.BindList)
+                        var panelBindListRes = await this.curControlDev.GetDeviceBindAsync();
+                        if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
                         {
-                            curControlDev.bindList.Add(bDev);
+                            curControlDev.bindList.Clear();
+                            foreach (var bDev in panelBindListRes.getAllBindResponseData.BindList)
+                            {
+                                curControlDev.bindList.Add(bDev);
+                            }
+                        }
+                        else
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                CommonPage.Loading.Hide();
+                                midVerticalScrolViewLayout.EndHeaderRefreshing();
+                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                            });
                         }
                     }
-                    else
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            CommonPage.Loading.Hide();
-                            midVerticalScrolViewLayout.EndHeaderRefreshing();
-                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                        });
-                    }
+
                     targetList.Clear();
                     //閫変腑鐩爣鍒楄〃 targetList
                     if (currentPanelSupportBindDeviceList.Count != 0 && curControlDev.bindList.Count != 0)
                     {
-                        foreach (var bindDev in currentPanelSupportBindDeviceList)
+                        foreach (var bindDev in curControlDev.bindList)
                         {
-                            var mainKey = bindDev.DeviceAddr + bindDev.DeviceEpoint;
-                            var dev = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey));
+                            var mainKey = bindDev.BindMacAddr + bindDev.BindEpoint;
+                            var dev = currentPanelSupportBindDeviceList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == mainKey));
                             if (dev != null)
                             {
-                                var device = LocalDevice.Current.GetDevice(bindDev.DeviceAddr, bindDev.DeviceEpoint);
+                                var device = LocalDevice.Current.GetDevice(dev.DeviceAddr, dev.DeviceEpoint);
                                 if (device != null)
                                 {
                                     switch (curDeviceBindType)
@@ -767,6 +784,14 @@
                                                     oldTargetList.Add(device);
                                                 }
                                             }
+                                            if (device.Type == DeviceType.PMSensor)
+                                            {
+                                                if (bindDev.BindCluster == 1026)
+                                                {
+                                                    targetList.Add(device);
+                                                    oldTargetList.Add(device);
+                                                }
+                                            }
                                             break;
                                         case 3:
                                             if (device.Type == DeviceType.TemperatureSensor)
@@ -783,13 +808,24 @@
                                                 targetList.Add(device);
                                                 oldTargetList.Add(device);
                                             }
+                                            if (device.Type == DeviceType.PMSensor)
+                                            {
+                                                if (bindDev.BindCluster == 1029)
+                                                {
+                                                    targetList.Add(device);
+                                                    oldTargetList.Add(device);
+                                                }
+                                            }
                                             break;
                                         case 4:
                                             //PM2.5
                                             if (device.Type == DeviceType.PMSensor)
                                             {
-                                                targetList.Add(device);
-                                                oldTargetList.Add(device);
+                                                if (bindDev.BindCluster == 1066)
+                                                {
+                                                    targetList.Add(device);
+                                                    oldTargetList.Add(device);
+                                                }
                                             }
                                             break;
                                     }
@@ -954,6 +990,12 @@
                                             btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                             this.RemoveFromParent();
                                         });
+                                        var mainKey = delDevice.DeviceAddr + delDevice.Epoint;
+                                        var dev1 = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey));
+                                        if (dev1 != null)
+                                        {
+                                            curControlDev.bindList.Remove(dev1);
+                                        }
                                     }
                                     else
                                     {
@@ -966,6 +1008,17 @@
                                         });
                                         return;
                                     }
+                                }
+                                else
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.OperrateFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+                                        btnFinifh.Enable = true;
+                                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                        CommonPage.Loading.Hide();
+                                    });
+                                    return;
                                 }
                             }
                         }
@@ -1030,6 +1083,17 @@
                                 var delDevice = DelBindDevice(bd);
                                 var delResult = new DelDeviceBindResponseAllData();
                                 delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+                                if (delResult == null || delResult.removeBindResultResponseData == null)
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+                                        btnFinifh.Enable = true;
+                                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                        CommonPage.Loading.Hide();
+                                    });
+                                    return;
+                                }
                                 if (delResult != null && delResult.removeBindResultResponseData != null)
                                 {
                                     if (delResult.removeBindResultResponseData.Result != 0)
@@ -1044,6 +1108,12 @@
                                         return;
                                     }
                                 }
+                                var mainKey = delDevice.DeviceAddr + delDevice.Epoint;
+                                var dev2 = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey));
+                                if (dev2 != null)
+                                {
+                                    curControlDev.bindList.Remove(dev2);
+                                }
                             }
                         }
                         else
@@ -1055,6 +1125,17 @@
                                 var delDevice = DelBindDevice(curBindDevice);
                                 var delResult = new DelDeviceBindResponseAllData();
                                 delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+                                if (delResult == null || delResult.removeBindResultResponseData == null)
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+                                        btnFinifh.Enable = true;
+                                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                        CommonPage.Loading.Hide();
+                                    });
+                                    return;
+                                }
                                 if (delResult != null && delResult.removeBindResultResponseData != null)
                                 {
                                     if (delResult.removeBindResultResponseData.Result != 0)
@@ -1068,6 +1149,12 @@
                                         });
                                         return;
                                     }
+                                }
+                                var mainKey = delDevice.DeviceAddr + delDevice.Epoint;
+                                var dev3 = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey));
+                                if (dev3 != null)
+                                {
+                                    curControlDev.bindList.Remove(dev3);
                                 }
                             }
                         }
@@ -1100,7 +1187,23 @@
                             addBindInfo.BindMacAddr = de.DeviceAddr;
                             addBindInfo.BindEpoint = de.DeviceEpoint;
                             addBindeDev.BindList.Add(addBindInfo);
-                            bindName = de.DeviceEpointName;
+                            addBindeDev.BindName = de.DeviceEpointName;
+
+                            switch (curDeviceBindType)
+                            {
+                                case 2:
+                                    if (de.Type == DeviceType.PMSensor)
+                                    {
+                                        addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
+                                    }
+                                    break;
+                                case 3:
+                                    if (de.Type == DeviceType.PMSensor)
+                                    {
+                                        addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
+                                    }
+                                    break;
+                            }
                         }
 
                         var dev = new AddedDeviceBindResponseAllData();
@@ -1120,33 +1223,31 @@
                         {
                             if (dev.addedDeviceBindResponseData.Result == 0)
                             {
-                                curControlDev.bindList = dev.addedDeviceBindResponseData.BindList;
                                 targetList.Clear();
-
                                 switch (curDeviceBindType)
                                 {
                                     case 1:
                                         if (actionFreshAirTarget != null)
                                         {
-                                            actionFreshAirTarget(bindName);
+                                            actionFreshAirTarget(addBindeDev.BindName);
                                         }
                                         break;
                                     case 2:
                                         if (actionTemperatureTarget != null)
                                         {
-                                            actionTemperatureTarget(bindName);
+                                            actionTemperatureTarget(addBindeDev.BindName);
                                         }
                                         break;
                                     case 3:
                                         if (actionHumidityTarget != null)
                                         {
-                                            actionHumidityTarget(bindName);
+                                            actionHumidityTarget(addBindeDev.BindName);
                                         }
                                         break;
                                     case 4:
                                         if (actionPMTarget != null)
                                         {
-                                            actionPMTarget(bindName);
+                                            actionPMTarget(addBindeDev.BindName);
                                         }
                                         break;
                                 }
@@ -1158,6 +1259,13 @@
                                     btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                     this.RemoveFromParent();
                                 });
+
+                                var mainKey = addBindeDev.DeviceAddr + addBindeDev.Epoint;
+                                var dev4 = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey));
+                                if (dev4 != null)
+                                {
+                                    curControlDev.bindList.Add(dev4);
+                                }
                             }
                             else if (dev.addedDeviceBindResponseData.Result == 1)
                             {
@@ -1281,6 +1389,7 @@
                     break;
                 case 4:
                     //PM2.5
+                    removeDevice.BindCluster = 1066;
                     break;
             }
             removeDevice.BindMacAddr = bd.DeviceAddr;
@@ -1402,19 +1511,30 @@
             foreach (var de in room.ListDevice)
             {
                 var device = LocalDevice.Current.GetDevice(de);
-                //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
-                if (device.ZigbeeType != 1)
-                {
-                    continue;
-                }
                 if (device != null)
                 {
+                    //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+                    if (device.ZigbeeType != 1)
+                    {
+                        continue;
+                    }
                     if (device.Type == DeviceType.TemperatureSensor)
                     {
                         var dev = device as TemperatureSensor;
                         if (dev.SensorDiv == 1)
                         {
                             roomIncludeMatchTempDevice.Add(device);
+                        }
+                    }
+                    else if (device.Type == DeviceType.PMSensor)
+                    {
+                        var dev = device as PMSensor;
+                        foreach (var clu in dev.InClusterList)
+                        {
+                            if (clu.InCluster == 1026)
+                            {
+                                roomIncludeMatchTempDevice.Add(device);
+                            }
                         }
                     }
                 }
@@ -1432,13 +1552,13 @@
             foreach (var de in room.ListDevice)
             {
                 var device = LocalDevice.Current.GetDevice(de);
-                //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
-                if (device.ZigbeeType != 1)
-                {
-                    continue;
-                }
                 if (device != null)
                 {
+                    //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+                    if (device.ZigbeeType != 1)
+                    {
+                        continue;
+                    }
                     if (device.Type == DeviceType.TemperatureSensor)
                     {
                         var dev = device as TemperatureSensor;
@@ -1447,6 +1567,17 @@
                             roomIncludeMatchHumpDevice.Add(device);
                         }
                     }
+                    else if (device.Type == DeviceType.PMSensor)
+                    {
+                        var dev = device as PMSensor;
+                        foreach (var clu in dev.InClusterList)
+                        {
+                            if (clu.InCluster == 1029)
+                            {
+                                roomIncludeMatchHumpDevice.Add(device);
+                            }
+                        }
+                    }
                 }
             }
             return roomIncludeMatchHumpDevice;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index 17af4c2..78b98e7 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -615,10 +615,6 @@
                         {
                             if (canOpenNormallyMode)
                             {
-                                //Application.RunOnMainThread(() =>
-                                //{
-                                //    NomallyOpenModeInvalidDialog(true);
-                                //});
                                 Application.RunOnMainThread(() =>
                                 {
                                     Action<bool> action = (obj) =>
@@ -864,10 +860,14 @@
                 if (doorLock.IsDoorLockNormallyMode)
                 {
                     if (canOpenNormallyMode)
-                    {
+                    {
                         Application.RunOnMainThread(() =>
                         {
-                            NomallyOpenModeInvalidDialog();
+                            Action<bool> action = (obj) =>
+                            {
+                                UpdateNomallyOpenStatus();
+                            };
+                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
                         });
                     }
                     else
@@ -897,7 +897,11 @@
                     {
                         Application.RunOnMainThread(() =>
                         {
-                            NomallyOpenModeInvalidDialog();
+                            Action<bool> action = (obj) =>
+                            {
+                                UpdateNomallyOpenStatus();
+                            };
+                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
                         });
                     }
                 }
@@ -1047,7 +1051,6 @@
         /// </summary>
         private async void NomallyOpenDialog()
         {
-            #region 鍚庣画鐗堟湰
             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
                 this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
@@ -1082,19 +1085,20 @@
                 addLogicPage.Show();
                 addLogicPage.action += (w) =>
                 {
-                    doorLock.IsDoorLockNormallyMode = w;
-                    ///鐣欑粰寰愭鐢ㄧ殑
-                    UpdateNomallyOpenStatus();
+                    doorLock.IsDoorLockNormallyMode = w;
+                    UpdateNomallyOpenStatus();
+                    //杩斿洖鎸夐敭娓呯┖褰撳墠閫昏緫瀹氫箟鐨凩ogicAction
+                    UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
                 };
             };
             HdlCheckLogic.Current.CheckSecondarySecurity(action);
-            #endregion 
+
         }
 
         /// <summary>
         /// 甯稿紑妯″紡澶辨晥澶勭悊
         /// </summary>
-        public void NomallyOpenModeInvalidDialog(bool IsFromReport = false)
+        private void NomallyOpenModeInvalidDialog(bool IsFromReport = false)
         {
             if (!canShowDialog)
             {
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
index c46b85d..9e2afc2 100644
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
@@ -472,6 +472,8 @@
             /// 娓╁害娴嬮噺鍔熻兘鐨勮澶囧锛氭俯搴︿紶鎰熷櫒銆傘�傘��
             /// <para>1029:Relative Humidity Measurement,璁惧鏀寔鈥滄箍搴︽祴閲忓姛鑳解��</para>
             /// 婀垮害娴嬮噺鍔熻兘鐨勮澶囧锛氭箍搴︿紶鎰熷櫒銆傘�傘��
+            /// <para>1066:Pm2.5  Measurement,璁惧鏀寔鈥減m2.5娴嬮噺鍔熻兘鈥�</para>
+            /// Pm2.5娴嬮噺鍔熻兘鐨勮澶囧锛歅m2.5浼犳劅鍣ㄣ�傘�傘��
             /// </summary>
             public int InCluster;
         }
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
old mode 100755
new mode 100644
index 7943391..13f1e4e
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
@@ -50,6 +50,10 @@
         /// </summary>
         RelativeHumidityMeasurement = 1029,
         /// <summary>
+        ///PM2.5娴嬮噺鍔熻兘
+        /// </summary>
+        PmTwoPointFiveMeasurement = 1066,
+        /// <summary>
         /// 鎭掓俯鍣ㄥ姛鑳�
         /// </summary>
         Thermostat = 513,
@@ -164,7 +168,7 @@
         ///鐏叿绉嶇被
         /// </summary>
         ColorCapabilities = 16394,
-       
+
         #region 绐楀笜
         /// <summary>
         ///绐楀笜璁惧绫诲瀷
@@ -322,12 +326,12 @@
         AddLogic = 2000,
         ReviseAttribute = 2001,
         GetLogicInfo = 2002,
-        GetLogicList= 2004,
+        GetLogicList = 2004,
         LogicChangeCondition = 2005,
         LogicSetConditionData = 2006,
         LogicChangeAction = 2007,
         LogicDelAction = 2008,
-        DelLogic= 2009,
+        DelLogic = 2009,
         /// <summary>
         /// 鎺ㄨ繜瀹氭椂
         /// </summary>
@@ -345,5 +349,5 @@
         SceneGetNewId = 800,
         SceneAddMember = 810,
     }
- 
+
 }
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
old mode 100755
new mode 100644
index 64b9859..7c8edec
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -2758,8 +2758,8 @@
            .WithTcpServer(domain, int.Parse(port))
            .WithCredentials(connEmqUserName, connEmqPwd)
            .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
-           .WithCleanSession()
-           //.WithCommunicationTimeout(TimeSpan.FromSeconds(10))
+           .WithCleanSession()
+           //.WithCommunicationTimeout(TimeSpan.FromSeconds(10))
            .Build();
                                 await DisConnectRemoteMqttClient("StartRemoteMqtt");
                                 await RemoteMqttClient.ConnectAsync(options, CancellationToken.None);
@@ -3184,9 +3184,23 @@
                 {
                     jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
                 }
+
+                #region 璁惧鐘舵�佷笂鎶ャ�愬鎬紝涓轰粈涔堟斁鍦ㄥ師鏉ョ殑浣嶇疆浼氫笉鎵ц杩欏潡浠g爜銆嬶紵锛燂紵銆�
+                if (topic == gatewayID + "/" + "DeviceStatusReport" + "/" + addr + "/" + epoint + "/" + cluID + "/" + attrId)
+                {
+                    var deviceID = jobject.Value<int>("Device_ID");
+                    var deviceAddr = jobject.Value<string>("DeviceAddr");
+                    var tempEpoint = jobject.Value<int>("Epoint");
+                    var dataId = jobject.Value<int>("Data_ID");
+
+                    var tempDevice = new CommonDevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint };
+                    tempDevice.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceStatusReportData>(jobject["Data"].ToString());
+                    UpdateDeviceInfo(tempDevice, "DeviceStatusReport");
+                }
+                #endregion
 
                 #region 杩滅▼,涓荤綉鍏充笂鎶ラ�氱煡
-                if (IsRemote)
+                else if (IsRemote)
                 {
                     if (topic == gatewayID + "/" + "BeMainGw_Report")
                     {
@@ -3208,27 +3222,12 @@
                         }
                     }
                 }
-
                 #endregion
 
                 #region 璁惧鍦ㄧ嚎鐘舵�佹洿鏂板弽棣�
 
                 //2020.05.11 鍒犻櫎
 
-                #endregion
-
-                #region 璁惧鐘舵�佷笂鎶�
-                else if (topic == gatewayID + "/" + "DeviceStatusReport" + "/" + addr + "/" + epoint + "/" + cluID + "/" + attrId)
-                {
-                    var deviceID = jobject.Value<int>("Device_ID");
-                    var deviceAddr = jobject.Value<string>("DeviceAddr");
-                    var tempEpoint = jobject.Value<int>("Epoint");
-                    var dataId = jobject.Value<int>("Data_ID");
-
-                    var tempDevice = new CommonDevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint };
-                    tempDevice.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceStatusReportData>(jobject["Data"].ToString());
-                    UpdateDeviceInfo(tempDevice, "DeviceStatusReport");
-                }
                 #endregion
                 #region 闂ㄩ攣鎿嶄綔浜嬩欢閫氱煡
                 else if (topic == gatewayID + "/" + "DoorLock/DoorLockOperatingEventNotificationCommand")
@@ -3511,13 +3510,13 @@
         public static void DebugPrintLog(string msg, bool flage = true)
         {
 #if DEBUG
-            if (flage == true)
-            {
-                if (msg.Contains("DeviceStatusReport") == false)
-                {
-                    System.Console.WriteLine(msg + "  " + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
-                }
-            }
+            //if (flage == true)
+            //{
+            //if (msg.Contains("DeviceStatusReport") == false)
+            //{
+            System.Console.WriteLine(msg + "  " + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
+            // }
+            // }
 #endif
         }
 
diff --git a/ZigbeeApp/Shared/R.cs b/ZigbeeApp/Shared/R.cs
index ade9d1f..8d52dc1 100644
--- a/ZigbeeApp/Shared/R.cs
+++ b/ZigbeeApp/Shared/R.cs
@@ -578,6 +578,31 @@
         /// 绌烘皵璐ㄩ噺浼犳劅鍣�
         /// </summary>
         public const int AirQualitySensor = 316;
+        /// <summary>
+        /// 浼�
+        /// </summary>
+        public const int ExcellentAirQuality = 317;
+        /// <summary>
+        /// 鑹�
+        /// </summary>
+        public const int GoodAirQuality = 318;
+        /// <summary>
+        /// 杞诲害姹℃煋
+        /// </summary>
+        public const int LightPollution = 319;
+        /// <summary>
+        /// 涓害姹℃煋
+        /// </summary>
+        public const int Moderatelyolluted = 320;
+        /// <summary>
+        /// 閲嶅害姹℃煋
+        /// </summary>
+        public const int HeavyPollution = 321;
+        /// <summary>
+        /// 涓ラ噸姹℃煋
+        /// </summary>
+        public const int SeriousPollution = 322;
+
 
         public readonly static int cancel = 5097;
         public readonly static int confrim = 5098;
@@ -1171,90 +1196,90 @@
         /// 鍔熻兘璁剧疆
         /// </summary>
         public const int FunctionSetting = 11012;
-		/// <summary>
-		/// 淇℃伅缂栬緫
-		/// </summary>
-		public const int EditInfo = 11013;
-		/// <summary>
-		/// 鍔熻兘鍚嶇О
-		/// </summary>
-		public const int FunctionName = 11014;
-		/// <summary>
-		/// 鎵�灞炲尯鍩�
-		/// </summary>
-		public const int BelongZone = 11015;
-		/// <summary>
-		/// 鎵�灞炶澶�
-		/// </summary>
-		public const int BelongDevice = 11016;
-		/// <summary>
-		/// 鏈煡
-		/// </summary>
-		public const int UNKnown = 11017;
-		/// <summary>
-		/// 鍒嗕韩
-		/// </summary>
-		public const int Share = 11018;
-		/// <summary>
-		/// 鍒嗕韩鐨�
-		/// </summary>
-		public const int Shared = 11019;
-		/// <summary>
-		/// 閫夋嫨鍥炬爣
-		/// </summary>
-		public const int SelectIcon = 11020;
-		/// <summary>
-		/// 淇濆瓨
-		/// </summary>
-		public const int Save = 11021;
-		/// <summary>
-		/// 鎻愰啋
-		/// </summary>
-		public const int TIP = 11022;
-		/// <summary>
-		/// 鍙栨秷
-		/// </summary>
-		public const int Cancel = 11023;
-		/// <summary>
-		/// 娌℃湁鍦烘櫙{0}璇风偣鍑诲彸涓婅娣诲姞
-		/// </summary>
-		public const int NoScene = 11024;
-		/// <summary>
-		/// 璁剧疆
-		/// </summary>
-		public const int Setting = 11025;
-		/// <summary>
-		/// 寤舵椂
-		/// </summary>
-		public const int Delay = 11026;
-		/// <summary>
-		/// 纭畾鍒犻櫎鍚楋紵
-		/// </summary>
-		public const int ConfirmDelete = 11027;
-		/// <summary>
-		/// 娣诲姞鍦烘櫙
-		/// </summary>
-		public const int AddScence = 11028;
-		/// <summary>
-		/// 鍦烘櫙鍚嶇О
-		/// </summary>
-		public const int SceneName = 11029;
-		/// <summary>
-		/// 璇疯緭鍏ュ満鏅悕绉�
-		/// </summary>
-		public const int PleaseInputSceneName = 11030;
-		/// <summary>
-		/// 娣诲姞鎵ц鐩爣
-		/// </summary>
-		public const int AddScentTargetAction = 11031;
-		/// <summary>
-		/// 閫夋嫨鍖哄煙
-		/// </summary>
-		public const int SelectZone = 11032;
-		/// <summary>
-		/// 閫夋嫨鍦烘櫙鍥剧墖
-		/// </summary>
-		public const int SelectScenePic = 11033;
+        /// <summary>
+        /// 淇℃伅缂栬緫
+        /// </summary>
+        public const int EditInfo = 11013;
+        /// <summary>
+        /// 鍔熻兘鍚嶇О
+        /// </summary>
+        public const int FunctionName = 11014;
+        /// <summary>
+        /// 鎵�灞炲尯鍩�
+        /// </summary>
+        public const int BelongZone = 11015;
+        /// <summary>
+        /// 鎵�灞炶澶�
+        /// </summary>
+        public const int BelongDevice = 11016;
+        /// <summary>
+        /// 鏈煡
+        /// </summary>
+        public const int UNKnown = 11017;
+        /// <summary>
+        /// 鍒嗕韩
+        /// </summary>
+        public const int Share = 11018;
+        /// <summary>
+        /// 鍒嗕韩鐨�
+        /// </summary>
+        public const int Shared = 11019;
+        /// <summary>
+        /// 閫夋嫨鍥炬爣
+        /// </summary>
+        public const int SelectIcon = 11020;
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        public const int Save = 11021;
+        /// <summary>
+        /// 鎻愰啋
+        /// </summary>
+        public const int TIP = 11022;
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        public const int Cancel = 11023;
+        /// <summary>
+        /// 娌℃湁鍦烘櫙{0}璇风偣鍑诲彸涓婅娣诲姞
+        /// </summary>
+        public const int NoScene = 11024;
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        public const int Setting = 11025;
+        /// <summary>
+        /// 寤舵椂
+        /// </summary>
+        public const int Delay = 11026;
+        /// <summary>
+        /// 纭畾鍒犻櫎鍚楋紵
+        /// </summary>
+        public const int ConfirmDelete = 11027;
+        /// <summary>
+        /// 娣诲姞鍦烘櫙
+        /// </summary>
+        public const int AddScence = 11028;
+        /// <summary>
+        /// 鍦烘櫙鍚嶇О
+        /// </summary>
+        public const int SceneName = 11029;
+        /// <summary>
+        /// 璇疯緭鍏ュ満鏅悕绉�
+        /// </summary>
+        public const int PleaseInputSceneName = 11030;
+        /// <summary>
+        /// 娣诲姞鎵ц鐩爣
+        /// </summary>
+        public const int AddScentTargetAction = 11031;
+        /// <summary>
+        /// 閫夋嫨鍖哄煙
+        /// </summary>
+        public const int SelectZone = 11032;
+        /// <summary>
+        /// 閫夋嫨鍦烘櫙鍥剧墖
+        /// </summary>
+        public const int SelectScenePic = 11033;
         /// <summary>
         /// 纭畾瑕佺Щ闄よ鍔熻兘锛�
         /// </summary>
diff --git a/ZigbeeApp/Shared/Shared.projitems b/ZigbeeApp/Shared/Shared.projitems
index d9db6b9..d52c277 100644
--- a/ZigbeeApp/Shared/Shared.projitems
+++ b/ZigbeeApp/Shared/Shared.projitems
@@ -476,8 +476,8 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\ZbGatewayData.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlSafeguardLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlAlarmsLogic.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\Base\DevicePmSensorRowControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DevicePmSensorDetailCardForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DevicePmSensorRowControl.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Phone\CommonForm\" />

--
Gitblit v1.8.0