From 3698c13aba988cd3e41b91b255e1c682c057e565 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期四, 23 三月 2023 11:49:58 +0800
Subject: [PATCH] 1.新增历史记录相关页面及功能 2.修改配网为热点配网 3.设备列表增加过滤门锁功能 4.增加添加设备通知功能

---
 EZSDK/EZSDK/EZ/Global/EZHttpUtil.h                                                     |   15 
 EZSDK/EZSDK/EZ/Global/HDLEZConstants.h                                                 |   15 
 EZSDK/EZSDK/EZ/Global/HDLEZConstants.m                                                 |   10 
 EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m                            |  308 ++++++++--
 EZSDK/EZSDK.xcodeproj/project.pbxproj                                                  |  184 +++--
 EZSDK/EZSDK/EZSDK.h                                                                    |   43 +
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m                             |   64 ++
 EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs                                                   |  135 +---
 EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h                            |    4 
 EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m                         |   28 
 EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h                              |   22 
 EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m             |  121 ++++
 EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m                                              |  207 +++++++
 EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h                         |    3 
 EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h        |   18 
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m                                 |  108 +++
 EZSDK/EZSDK/EZSDK.m                                                                    |   62 +
 EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h             |   16 
 EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plist                     |    0 
 EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h                                              |   39 +
 EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj                                                   |    3 
 EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m                           |   12 
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h                                 |   18 
 EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a                                            |    0 
 EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h                           |   19 
 EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m                              |   14 
 EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m                            |    5 
 EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDK                  |    0 
 EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a                                                 |    0 
 EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m             |   11 
 EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h                             |   16 
 EZSDK/EZSDK/EZ/Global/EZHttpUtil.m                                                     |   48 +
 EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a                                         |    0 
 EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap       |    6 
 EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h |  107 +++
 EZSDK/EZSDK/EZ/Global/GlobalKit.h                                                      |    2 
 36 files changed, 1,411 insertions(+), 252 deletions(-)

diff --git a/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs b/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
index 9f04503..0db1f41 100644
--- a/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
+++ b/EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
@@ -1,100 +1,30 @@
-锘縰sing System;
-using Foundation;
+锘縰sing Foundation;
 using ObjCRuntime;
 
 namespace EZSDK.IOS
 {
-	// @interface EZDeviceInfo : NSObject
+	// @protocol EZSDKDelegate <NSObject>
+	[Protocol, Model(AutoGeneratedName = true)]
 	[BaseType(typeof(NSObject))]
-	interface EZDeviceInfo
+	interface EZSDKDelegate
 	{
-		// @property (nonatomic, strong) NSArray * cameraInfo;
-		[Export("cameraInfo", ArgumentSemantic.Strong)]
-		//[Verify(StronglyTypedNSArray)]
-		NSArray CameraInfo { get; set; }
-
-		// @property (nonatomic) NSInteger cameraNum;
-		[Export("cameraNum")]
-		int CameraNum { get; set; }
-
-		// @property (nonatomic) NSInteger defence;
-		[Export("defence")]
-		int Defence { get; set; }
-
-		// @property (nonatomic) NSInteger detectorNum;
-		[Export("detectorNum")]
-		int DetectorNum { get; set; }
-
-		// @property (nonatomic, strong) NSArray * detectorInfo;
-		[Export("detectorInfo", ArgumentSemantic.Strong)]
-		//[Verify(StronglyTypedNSArray)]
-		NSArray DetectorInfo { get; set; }
-
-		// @property (copy, nonatomic) NSString * deviceCover;
-		[Export("deviceCover")]
-		string DeviceCover { get; set; }
-
-		// @property (copy, nonatomic) NSString * deviceName;
-		[Export("deviceName")]
-		string DeviceName { get; set; }
-
-		// @property (copy, nonatomic) NSString * deviceSerial;
-		[Export("deviceSerial")]
-		string DeviceSerial { get; set; }
-
-		// @property (copy, nonatomic) NSString * deviceType;
-		[Export("deviceType")]
-		string DeviceType { get; set; }
-
-		// @property (copy, nonatomic) NSString * deviceVersion;
-		[Export("deviceVersion")]
-		string DeviceVersion { get; set; }
-
-		// @property (nonatomic) BOOL isEncrypt;
-		[Export("isEncrypt")]
-		bool IsEncrypt { get; set; }
-
-		// @property (nonatomic) NSInteger status;
-		[Export("status")]
-		nint Status { get; set; }
-
-		// @property (nonatomic) NSInteger isSupportTalk;
-		[Export("isSupportTalk")]
-		int IsSupportTalk { get; set; }
-
-		// @property (nonatomic) BOOL isSupportPTZ;
-		[Export("isSupportPTZ")]
-		bool IsSupportPTZ { get; set; }
-
-		// @property (nonatomic) BOOL isSupportZoom;
-		[Export("isSupportZoom")]
-		bool IsSupportZoom { get; set; }
-
-		// @property (nonatomic) BOOL isSupportAudioOnOff;
-		[Export("isSupportAudioOnOff")]
-		bool IsSupportAudioOnOff { get; set; }
-
-		// @property (nonatomic) BOOL isSupportMirrorCenter;
-		[Export("isSupportMirrorCenter")]
-		bool IsSupportMirrorCenter { get; set; }
-
-		// @property (nonatomic) BOOL isSupportSoundWave;
-		[Export("isSupportSoundWave")]
-		bool IsSupportSoundWave { get; set; }
-
-		// @property (copy, nonatomic) NSString * category;
-		[Export("category")]
-		string Category { get; set; }
-
-		// @property (nonatomic, strong) NSDate * addTime;
-		[Export("addTime", ArgumentSemantic.Strong)]
-		NSDate AddTime { get; set; }
+		// @required -(void)addDeviceSuccessed;
+		[Abstract]
+		[Export("addDeviceSuccessed")]
+		void AddDeviceSuccessed();
 	}
 
 	// @interface EZSDK : NSObject
 	[BaseType(typeof(NSObject))]
 	interface EZSDK
 	{
+		[Wrap("WeakDelegate")]
+		EZSDKDelegate Delegate { get; set; }
+
+		// @property (nonatomic, weak) id<EZSDKDelegate> delegate;
+		[NullAllowed, Export("delegate", ArgumentSemantic.Weak)]
+		NSObject WeakDelegate { get; set; }
+
 		// +(instancetype)sharedInstance;
 		[Static]
 		[Export("sharedInstance")]
@@ -120,24 +50,45 @@
 		[Export("go2EZvizMonitor")]
 		void Go2EZvizMonitor();
 
+		// -(void)toEZDeviceListViewWithFilterTypes:(NSArray *)filterTepes;
+		[Export("toEZDeviceListViewWithFilterTypes:")]
+		//[Verify(StronglyTypedNSArray)]
+		void ToEZDeviceListViewWithFilterTypes(NSObject[] filterTepes);
+
 		// -(void)addEzvizMonitor;
 		[Export("addEzvizMonitor")]
 		void AddEzvizMonitor();
 
-		// -(void)Play:(EZDeviceInfo *)deviceInfo;
+		// -(void)addEzvizMonitorWithDeviceType:(NSString *)deviceType;
+		[Export("addEzvizMonitorWithDeviceType:")]
+		void AddEzvizMonitorWithDeviceType(string deviceType);
+
+		// -(void)Play:(id)deviceInfo;
 		[Export("Play:")]
-		void Play(EZDeviceInfo deviceInfo);
+		void Play(NSObject deviceInfo);
 
 		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial;
 		[Export("PlayWithDeviceSerial:")]
 		void PlayWithDeviceSerial(string deviceSerial);
 
-		// -(void)setting:(EZDeviceInfo *)deviceInfo;
-		[Export("setting:")]
-		void Setting(EZDeviceInfo deviceInfo);
+		// -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString *)deviceId deviceType:(NSString *)deviceType;
+		[Export("PlayWithDeviceSerial:deviceId:deviceType:")]
+		void PlayWithDeviceSerial(string deviceSerial, string deviceId, string deviceType);
 
-		// -(void)playBackVideo:(EZDeviceInfo *)deviceInfo;
+		// -(void)setting:(id)deviceInfo;
+		[Export("setting:")]
+		void Setting(NSObject deviceInfo);
+
+		// -(void)playBackVideo:(id)deviceInfo;
 		[Export("playBackVideo:")]
-		void PlayBackVideo(EZDeviceInfo deviceInfo);
+		void PlayBackVideo(NSObject deviceInfo);
+
+		// -(void)toTemPassView:(NSString *)deviceId;
+		[Export("toTemPassView:")]
+		void ToTemPassView(string deviceId);
+
+		// -(void)toDeviceMsgListView:(NSString *)deviceId;
+		[Export("toDeviceMsgListView:")]
+		void ToDeviceMsgListView(string deviceId);
 	}
 }
diff --git a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
index 3ec93e4..cc6efcc 100644
--- a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
+++ b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
@@ -60,6 +60,9 @@
     <NativeReference Include="Library\lib\libssl.a">
       <Kind>Static</Kind>
     </NativeReference>
+    <NativeReference Include="Library\lib\FQDateTimeSDK.framework">
+      <Kind>Framework</Kind>
+    </NativeReference>
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDK b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDK
new file mode 100755
index 0000000..df82751
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDK
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h
new file mode 100644
index 0000000..136848d
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h
@@ -0,0 +1,107 @@
+//
+//  FQDateTimePickerView.h
+//  FQTools
+//
+//  Created by wuwuFQ on 2021/5/26.
+//
+
+#import <UIKit/UIKit.h>
+typedef enum{
+    FQDateTimePickerModelYMDate,// 骞存湀 2021-05
+    FQDateTimePickerModelDate,// 骞存湀鏃� 2021-05-26
+    FQDateTimePickerModelDateTime,//骞存湀鏃� 鏃跺垎 yyyy-mm-dd HH:mm 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelDateTimeSecond,//骞存湀鏃� 鏃跺垎绉� yyyy-mm-dd HH:mm:ss 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelTime,// 鏃跺垎 HH:mm 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelTimeSecond,// 鏃跺垎绉� HH:mm:ss 鍙敮鎸�24灏忔椂鍒�
+} FQDateTimePickerModel;
+
+
+NS_ASSUME_NONNULL_BEGIN
+@protocol FQDateTimePickerViewDelegate <NSObject>
+
+/// 纭鎿嶄綔
+/// @param date 鏃ユ湡NSDate
+/// @param dateStr 鏃ユ湡NSString
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)confirmActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target;
+
+@optional
+/// 鍙栨秷鎿嶄綔
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)cancelActionWithTarget:(NSInteger)target;
+
+/// 婊氬姩鎿嶄綔
+/// @param date 鏃ユ湡NSDate
+/// @param dateStr 鏃ユ湡NSString
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)scrollActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target;
+
+@end
+
+
+@interface FQDateTimePickerView : UIView
+/*----------------   UI  ------------------------*/
+/// 閬僵鑳屾櫙鑹�
+@property (nonatomic, strong) UIColor *maskBackgroundColor;
+
+/// 閫夋嫨鍣ㄨ儗鏅壊
+@property (nonatomic, strong) UIColor *pickerBackgroundColor;
+
+///纭畾鎸夐挳鏂囨湰
+@property (nonatomic, copy) NSString *confirmText;
+///纭畾鎸夐挳棰滆壊 榛樿black
+@property (nonatomic, strong) UIColor *confirmColor;
+///纭畾鎸夐挳瀛椾綋 榛樿绯荤粺18pt
+@property (nonatomic, strong) UIFont *confirmFont;
+
+///鍙栨秷鎸夐挳鏂囨湰
+@property (nonatomic, copy) NSString *cancelText;
+///鍙栨秷鎸夐挳棰滆壊 榛樿榛戣壊
+@property (nonatomic, strong) UIColor *cancelColor;
+///鍙栨秷鎸夐挳瀛椾綋 榛樿绯荤粺18pt
+@property (nonatomic, strong) UIFont *cancelFont;
+
+///鏍囬鏂囨湰 榛樿 ""
+@property (nonatomic, copy) NSString *title;
+///鏍囬棰滆壊 榛樿榛戣壊
+@property (nonatomic, strong) UIColor *titleColor;
+///鏍囬瀛椾綋 榛樿绯荤粺SFUI-Regular 16.00pt
+@property (nonatomic, strong) UIFont *titleFont;
+
+///婊氳疆鏃ユ湡鏂囨湰棰滆壊(榛樿black)
+@property (nonatomic, strong) UIColor *pickerColor;
+///婊氳疆鏃ユ湡鏂囨湰瀛椾綋[UIFont systemFontOfSize:16]
+@property (nonatomic, strong) UIFont *pickerFont;
+
+
+/*----------------   NSDate  ------------------------*/
+///闄愬埗鏈�澶ф椂闂�
+@property (nonatomic, strong) NSDate *maxDate;
+///闄愬埗鏈�灏忔椂闂�
+@property (nonatomic, strong) NSDate *minDate;
+///榛樿鏃堕棿 - - 榛樿褰撳墠鏃堕棿
+@property (nonatomic, strong) NSDate *defaultDate;
+/// 鍗曚綅锛氶粯璁@"骞�", @"鏈�", @"鏃�", @"鏃�", @"鍒�", @"绉�"]锛岃涓�涓�瀵瑰簲锛岃缃� unitsData = nil 鍙疆绌�
+@property (nonatomic, strong, null_unspecified) NSArray *unitsData;
+
+
+/*----------------   other  ------------------------*/
+/// Protocol
+@property (nonatomic, weak) id<FQDateTimePickerViewDelegate> delegate;
+
+/// 閫夋嫨鍣ㄧ殑鏋氫妇 榛樿FQDateTimePickerModelDate
+@property (nonatomic, assign) FQDateTimePickerModel pickerModel;
+
+/// pickerView鐨則ag  鐢ㄤ簬鍖哄垎鍥炶皟
+@property (nonatomic, assign) NSInteger target;
+
+/// 灞曠ず鍦╳indow涓婏紙璇峰湪灞曠ず涔嬪墠锛岃缃ソ闇�瑕佺殑灞炴�э級
+- (void)showPicker;
+
+/// 灞曠ず鍦╲iew涓婏紙璇峰湪灞曠ず涔嬪墠锛岃缃ソ闇�瑕佺殑灞炴�э級
+/// - Parameter view: <#view description#>
+- (void)showPickerInView:(UIView *)view;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h
new file mode 100644
index 0000000..06c8307
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h
@@ -0,0 +1,18 @@
+//
+//  FQDateTimeSDK.h
+//  FQDateTimeSDK
+//
+//  Created by wuwuFQ on 2022/4/28.
+//
+
+#import <Foundation/Foundation.h>
+#import "FQDateTimePickerView.h"
+//! Project version number for FQDateTimeSDK.
+FOUNDATION_EXPORT double FQDateTimeSDKVersionNumber;
+
+//! Project version string for FQDateTimeSDK.
+FOUNDATION_EXPORT const unsigned char FQDateTimeSDKVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <FQDateTimeSDK/PublicHeader.h>
+
+
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plist b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plist
new file mode 100644
index 0000000..dc1ab4c
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plist
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap
new file mode 100644
index 0000000..6f6d782
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module FQDateTimeSDK {
+  umbrella header "FQDateTimeSDK.h"
+
+  export *
+  module * { export * }
+}
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
index 144f2c3..f7daae4 100644
--- a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
+++ b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
Binary files differ
diff --git a/EZSDK/EZSDK.xcodeproj/project.pbxproj b/EZSDK/EZSDK.xcodeproj/project.pbxproj
index aef42c9..b8b15a7 100644
--- a/EZSDK/EZSDK.xcodeproj/project.pbxproj
+++ b/EZSDK/EZSDK.xcodeproj/project.pbxproj
@@ -10,6 +10,12 @@
 		AE5068D829B9DB5E009EA09A /* HDLEZTemInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AE5068D729B9DB5E009EA09A /* HDLEZTemInfoModel.m */; };
 		AEC306D229B9F2B5000B3861 /* HDLEZVisitorRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC306D129B9F2B5000B3861 /* HDLEZVisitorRecordView.m */; };
 		AEC306D529B9F2DB000B3861 /* HDLEZVisitorRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC306D429B9F2DB000B3861 /* HDLEZVisitorRecordCell.m */; };
+		AEDBFB9929C2B90F005F6512 /* HDLEZAlertInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */; };
+		AEDBFB9C29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */; };
+		AEDBFB9F29C30126005F6512 /* HDLEZDeviceMsgListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */; };
+		AEDBFBA229C302E0005F6512 /* HDLEZDeviceMsgListView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */; };
+		AEDBFBA529C3072D005F6512 /* HDLEZDeviceMsgCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */; };
+		AEDBFBA829C30DEF005F6512 /* HDLEZDevMsgListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */; };
 		AEDD437F29BED161001D9477 /* HDLEZButton.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD437D29BED161001D9477 /* HDLEZButton.m */; };
 		AEDD438229BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD438029BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m */; };
 		AEDD438529BEE6D2001D9477 /* HDLEZCreateTemPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD438429BEE6D2001D9477 /* HDLEZCreateTemPassView.m */; };
@@ -95,7 +101,6 @@
 		B9BC99F125C0FFBD00C024FE /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A125C0FFB800C024FE /* UIImageView+WebCache.m */; };
 		B9BC99F225C0FFBD00C024FE /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A425C0FFB800C024FE /* UIView+WebCacheOperation.m */; };
 		B9BC99F325C0FFBD00C024FE /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A825C0FFB800C024FE /* UIButton+WebCache.m */; };
-		B9BC99F425C0FFBD00C024FE /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B9BC98FD25C0FFBA00C024FE /* libcrypto.a */; };
 		B9BC99F625C0FFBD00C024FE /* Aspects.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990125C0FFBA00C024FE /* Aspects.m */; };
 		B9BC99F725C0FFBD00C024FE /* EZQRView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990425C0FFBA00C024FE /* EZQRView.m */; };
 		B9BC99F825C0FFBD00C024FE /* EZCustomTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990925C0FFBA00C024FE /* EZCustomTableView.m */; };
@@ -185,6 +190,18 @@
 		AEC306D129B9F2B5000B3861 /* HDLEZVisitorRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZVisitorRecordView.m; sourceTree = "<group>"; };
 		AEC306D329B9F2DA000B3861 /* HDLEZVisitorRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLEZVisitorRecordCell.h; sourceTree = "<group>"; };
 		AEC306D429B9F2DB000B3861 /* HDLEZVisitorRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZVisitorRecordCell.m; sourceTree = "<group>"; };
+		AEDBFB9729C2B90F005F6512 /* HDLEZAlertInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZAlertInputView.h; sourceTree = "<group>"; };
+		AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZAlertInputView.m; sourceTree = "<group>"; };
+		AEDBFB9A29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgInfoModel.h; sourceTree = "<group>"; };
+		AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgInfoModel.m; sourceTree = "<group>"; };
+		AEDBFB9D29C30126005F6512 /* HDLEZDeviceMsgListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgListViewController.h; sourceTree = "<group>"; };
+		AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgListViewController.m; sourceTree = "<group>"; };
+		AEDBFBA029C302E0005F6512 /* HDLEZDeviceMsgListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgListView.h; sourceTree = "<group>"; };
+		AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgListView.m; sourceTree = "<group>"; };
+		AEDBFBA329C3072D005F6512 /* HDLEZDeviceMsgCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgCell.h; sourceTree = "<group>"; };
+		AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgCell.m; sourceTree = "<group>"; };
+		AEDBFBA629C30DEF005F6512 /* HDLEZDevMsgListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDevMsgListModel.h; sourceTree = "<group>"; };
+		AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDevMsgListModel.m; sourceTree = "<group>"; };
 		AEDD437D29BED161001D9477 /* HDLEZButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZButton.m; sourceTree = "<group>"; };
 		AEDD437E29BED161001D9477 /* HDLEZButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLEZButton.h; sourceTree = "<group>"; };
 		AEDD438029BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZCreatTempPassViewController.m; sourceTree = "<group>"; };
@@ -496,7 +513,6 @@
 		B9BC98F925C0FFBA00C024FE /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = "<group>"; };
 		B9BC98FA25C0FFBA00C024FE /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = "<group>"; };
 		B9BC98FB25C0FFBA00C024FE /* pq_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pq_compat.h; sourceTree = "<group>"; };
-		B9BC98FD25C0FFBA00C024FE /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = "<group>"; };
 		B9BC990025C0FFBA00C024FE /* Aspects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Aspects.h; sourceTree = "<group>"; };
 		B9BC990125C0FFBA00C024FE /* Aspects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Aspects.m; sourceTree = "<group>"; };
 		B9BC990325C0FFBA00C024FE /* NSDate-Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate-Utilities.h"; sourceTree = "<group>"; };
@@ -646,7 +662,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				AEDD944129B0329D00EAA2CA /* libEZOpenSDK.a in Frameworks */,
-				B9BC99F425C0FFBD00C024FE /* libcrypto.a in Frameworks */,
 				AEE4704529C03DA300480163 /* FQDateTimeSDK.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -675,6 +690,8 @@
 				AEDD438B29BF2C50001D9477 /* HDLEZInputViewController.m */,
 				AEE4704A29C061AC00480163 /* HDLEZTempDetailViewController.h */,
 				AEE4704B29C061AC00480163 /* HDLEZTempDetailViewController.m */,
+				AEDBFB9D29C30126005F6512 /* HDLEZDeviceMsgListViewController.h */,
+				AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
@@ -694,6 +711,10 @@
 				AEDD438E29BF2C78001D9477 /* HDLEZInputView.m */,
 				AEE4704D29C061DF00480163 /* HDLEZTempDetailView.h */,
 				AEE4704E29C061DF00480163 /* HDLEZTempDetailView.m */,
+				AEDBFBA029C302E0005F6512 /* HDLEZDeviceMsgListView.h */,
+				AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */,
+				AEDBFBA329C3072D005F6512 /* HDLEZDeviceMsgCell.h */,
+				AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */,
 			);
 			path = Views;
 			sourceTree = "<group>";
@@ -703,6 +724,10 @@
 			children = (
 				AE5068D629B9DB5E009EA09A /* HDLEZTemInfoModel.h */,
 				AE5068D729B9DB5E009EA09A /* HDLEZTemInfoModel.m */,
+				AEDBFB9A29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.h */,
+				AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */,
+				AEDBFBA629C30DEF005F6512 /* HDLEZDevMsgListModel.h */,
+				AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */,
 			);
 			path = Models;
 			sourceTree = "<group>";
@@ -797,6 +822,8 @@
 				AEE84D4429BACBAA0078FDAD /* HDLEZTopBarView.m */,
 				AEE84D3E29BAC5BF0078FDAD /* HDLEZBaseViewController.h */,
 				AEE84D3D29BAC5BC0078FDAD /* HDLEZBaseViewController.m */,
+				AEDBFB9729C2B90F005F6512 /* HDLEZAlertInputView.h */,
+				AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */,
 			);
 			path = Base;
 			sourceTree = "<group>";
@@ -1053,8 +1080,8 @@
 		B9BC988525C0FFB800C024FE /* MBProgressHUD */ = {
 			isa = PBXGroup;
 			children = (
-				B9BC988625C0FFB800C024FE /* MBProgressHUD.m */,
 				B9BC988725C0FFB800C024FE /* MBProgressHUD.h */,
+				B9BC988625C0FFB800C024FE /* MBProgressHUD.m */,
 			);
 			path = MBProgressHUD;
 			sourceTree = "<group>";
@@ -1119,85 +1146,85 @@
 		B9BC98AC25C0FFB800C024FE /* openssl */ = {
 			isa = PBXGroup;
 			children = (
-				B9BC98AD25C0FFB900C024FE /* pem2.h */,
-				B9BC98AE25C0FFB900C024FE /* pem.h */,
-				B9BC98AF25C0FFB900C024FE /* md2.h */,
-				B9BC98B025C0FFB900C024FE /* ssl3.h */,
-				B9BC98B125C0FFB900C024FE /* ossl_typ.h */,
-				B9BC98B225C0FFB900C024FE /* dtls1.h */,
-				B9BC98B325C0FFB900C024FE /* err.h */,
-				B9BC98B425C0FFB900C024FE /* bn.h */,
-				B9BC98B525C0FFB900C024FE /* blowfish.h */,
-				B9BC98B625C0FFB900C024FE /* cms.h */,
-				B9BC98B725C0FFB900C024FE /* engine.h */,
-				B9BC98B825C0FFB900C024FE /* conf_api.h */,
-				B9BC98B925C0FFB900C024FE /* x509.h */,
-				B9BC98BA25C0FFB900C024FE /* asn1_mac.h */,
-				B9BC98BB25C0FFB900C024FE /* ui.h */,
-				B9BC98BC25C0FFB900C024FE /* kssl.h */,
-				B9BC98BD25C0FFB900C024FE /* sha.h */,
-				B9BC98BE25C0FFB900C024FE /* symhacks.h */,
-				B9BC98BF25C0FFB900C024FE /* asn1.h */,
-				B9BC98C025C0FFB900C024FE /* opensslconf.h */,
-				B9BC98C125C0FFB900C024FE /* bio.h */,
-				B9BC98C225C0FFB900C024FE /* rc2.h */,
-				B9BC98C325C0FFB900C024FE /* dh.h */,
-				B9BC98C425C0FFB900C024FE /* ui_compat.h */,
-				B9BC98C525C0FFB900C024FE /* x509v3.h */,
-				B9BC98C625C0FFB900C024FE /* ssl23.h */,
-				B9BC98C725C0FFB900C024FE /* conf.h */,
-				B9BC98C825C0FFB900C024FE /* md5.h */,
-				B9BC98C925C0FFB900C024FE /* x509_vfy.h */,
-				B9BC98CA25C0FFB900C024FE /* txt_db.h */,
-				B9BC98CB25C0FFB900C024FE /* safestack.h */,
-				B9BC98CC25C0FFB900C024FE /* ecdsa.h */,
-				B9BC98CD25C0FFB900C024FE /* objects.h */,
-				B9BC98CE25C0FFB900C024FE /* pkcs12.h */,
-				B9BC98CF25C0FFB900C024FE /* crypto.h */,
-				B9BC98D025C0FFB900C024FE /* opensslv.h */,
-				B9BC98D125C0FFB900C024FE /* pkcs7.h */,
-				B9BC98D225C0FFB900C024FE /* obj_mac.h */,
-				B9BC98D325C0FFB900C024FE /* tmdiff.h */,
-				B9BC98D425C0FFB900C024FE /* buffer.h */,
-				B9BC98D525C0FFB900C024FE /* ssl.h */,
-				B9BC98D625C0FFB900C024FE /* srp.h */,
-				B9BC98D725C0FFB900C024FE /* camellia.h */,
-				B9BC98D825C0FFB900C024FE /* evp.h */,
-				B9BC98D925C0FFB900C024FE /* e_os2.h */,
-				B9BC98DA25C0FFB900C024FE /* md4.h */,
-				B9BC98DB25C0FFB900C024FE /* hmac.h */,
 				B9BC98DC25C0FFB900C024FE /* aes.h */,
-				B9BC98DD25C0FFB900C024FE /* comp.h */,
+				B9BC98BA25C0FFB900C024FE /* asn1_mac.h */,
+				B9BC98BF25C0FFB900C024FE /* asn1.h */,
+				B9BC98F525C0FFB900C024FE /* asn1t.h */,
+				B9BC98C125C0FFB900C024FE /* bio.h */,
+				B9BC98B525C0FFB900C024FE /* blowfish.h */,
+				B9BC98B425C0FFB900C024FE /* bn.h */,
+				B9BC98D425C0FFB900C024FE /* buffer.h */,
+				B9BC98D725C0FFB900C024FE /* camellia.h */,
 				B9BC98DE25C0FFB900C024FE /* cast.h */,
-				B9BC98DF25C0FFB900C024FE /* rc4.h */,
-				B9BC98E025C0FFB900C024FE /* stack.h */,
+				B9BC98F625C0FFBA00C024FE /* cmac.h */,
+				B9BC98B625C0FFB900C024FE /* cms.h */,
+				B9BC98DD25C0FFB900C024FE /* comp.h */,
+				B9BC98B825C0FFB900C024FE /* conf_api.h */,
+				B9BC98C725C0FFB900C024FE /* conf.h */,
+				B9BC98CF25C0FFB900C024FE /* crypto.h */,
+				B9BC98EE25C0FFB900C024FE /* des_old.h */,
 				B9BC98E125C0FFB900C024FE /* des.h */,
-				B9BC98E225C0FFB900C024FE /* ocsp.h */,
+				B9BC98C325C0FFB900C024FE /* dh.h */,
+				B9BC98F325C0FFB900C024FE /* dsa.h */,
+				B9BC98E825C0FFB900C024FE /* dso.h */,
+				B9BC98B225C0FFB900C024FE /* dtls1.h */,
+				B9BC98D925C0FFB900C024FE /* e_os2.h */,
+				B9BC98F725C0FFBA00C024FE /* ebcdic.h */,
 				B9BC98E325C0FFB900C024FE /* ec.h */,
 				B9BC98E425C0FFB900C024FE /* ecdh.h */,
-				B9BC98E525C0FFB900C024FE /* rand.h */,
-				B9BC98E625C0FFB900C024FE /* ts.h */,
-				B9BC98E725C0FFB900C024FE /* pqueue.h */,
-				B9BC98E825C0FFB900C024FE /* dso.h */,
-				B9BC98E925C0FFB900C024FE /* seed.h */,
-				B9BC98EA25C0FFB900C024FE /* modes.h */,
-				B9BC98EB25C0FFB900C024FE /* ssl2.h */,
-				B9BC98EC25C0FFB900C024FE /* rsa.h */,
-				B9BC98ED25C0FFB900C024FE /* krb5_asn.h */,
-				B9BC98EE25C0FFB900C024FE /* des_old.h */,
-				B9BC98EF25C0FFB900C024FE /* ripemd.h */,
-				B9BC98F025C0FFB900C024FE /* whrlpool.h */,
-				B9BC98F125C0FFB900C024FE /* tls1.h */,
-				B9BC98F225C0FFB900C024FE /* mdc2.h */,
-				B9BC98F325C0FFB900C024FE /* dsa.h */,
-				B9BC98F425C0FFB900C024FE /* srtp.h */,
-				B9BC98F525C0FFB900C024FE /* asn1t.h */,
-				B9BC98F625C0FFBA00C024FE /* cmac.h */,
-				B9BC98F725C0FFBA00C024FE /* ebcdic.h */,
-				B9BC98F825C0FFBA00C024FE /* store.h */,
+				B9BC98CC25C0FFB900C024FE /* ecdsa.h */,
+				B9BC98B725C0FFB900C024FE /* engine.h */,
+				B9BC98B325C0FFB900C024FE /* err.h */,
+				B9BC98D825C0FFB900C024FE /* evp.h */,
+				B9BC98DB25C0FFB900C024FE /* hmac.h */,
 				B9BC98F925C0FFBA00C024FE /* idea.h */,
+				B9BC98ED25C0FFB900C024FE /* krb5_asn.h */,
+				B9BC98BC25C0FFB900C024FE /* kssl.h */,
 				B9BC98FA25C0FFBA00C024FE /* lhash.h */,
+				B9BC98AF25C0FFB900C024FE /* md2.h */,
+				B9BC98DA25C0FFB900C024FE /* md4.h */,
+				B9BC98C825C0FFB900C024FE /* md5.h */,
+				B9BC98F225C0FFB900C024FE /* mdc2.h */,
+				B9BC98EA25C0FFB900C024FE /* modes.h */,
+				B9BC98D225C0FFB900C024FE /* obj_mac.h */,
+				B9BC98CD25C0FFB900C024FE /* objects.h */,
+				B9BC98E225C0FFB900C024FE /* ocsp.h */,
+				B9BC98C025C0FFB900C024FE /* opensslconf.h */,
+				B9BC98D025C0FFB900C024FE /* opensslv.h */,
+				B9BC98B125C0FFB900C024FE /* ossl_typ.h */,
+				B9BC98AE25C0FFB900C024FE /* pem.h */,
+				B9BC98AD25C0FFB900C024FE /* pem2.h */,
+				B9BC98D125C0FFB900C024FE /* pkcs7.h */,
+				B9BC98CE25C0FFB900C024FE /* pkcs12.h */,
 				B9BC98FB25C0FFBA00C024FE /* pq_compat.h */,
+				B9BC98E725C0FFB900C024FE /* pqueue.h */,
+				B9BC98E525C0FFB900C024FE /* rand.h */,
+				B9BC98C225C0FFB900C024FE /* rc2.h */,
+				B9BC98DF25C0FFB900C024FE /* rc4.h */,
+				B9BC98EF25C0FFB900C024FE /* ripemd.h */,
+				B9BC98EC25C0FFB900C024FE /* rsa.h */,
+				B9BC98CB25C0FFB900C024FE /* safestack.h */,
+				B9BC98E925C0FFB900C024FE /* seed.h */,
+				B9BC98BD25C0FFB900C024FE /* sha.h */,
+				B9BC98D625C0FFB900C024FE /* srp.h */,
+				B9BC98F425C0FFB900C024FE /* srtp.h */,
+				B9BC98D525C0FFB900C024FE /* ssl.h */,
+				B9BC98EB25C0FFB900C024FE /* ssl2.h */,
+				B9BC98B025C0FFB900C024FE /* ssl3.h */,
+				B9BC98C625C0FFB900C024FE /* ssl23.h */,
+				B9BC98E025C0FFB900C024FE /* stack.h */,
+				B9BC98F825C0FFBA00C024FE /* store.h */,
+				B9BC98BE25C0FFB900C024FE /* symhacks.h */,
+				B9BC98F125C0FFB900C024FE /* tls1.h */,
+				B9BC98D325C0FFB900C024FE /* tmdiff.h */,
+				B9BC98E625C0FFB900C024FE /* ts.h */,
+				B9BC98CA25C0FFB900C024FE /* txt_db.h */,
+				B9BC98C425C0FFB900C024FE /* ui_compat.h */,
+				B9BC98BB25C0FFB900C024FE /* ui.h */,
+				B9BC98F025C0FFB900C024FE /* whrlpool.h */,
+				B9BC98C925C0FFB900C024FE /* x509_vfy.h */,
+				B9BC98B925C0FFB900C024FE /* x509.h */,
+				B9BC98C525C0FFB900C024FE /* x509v3.h */,
 			);
 			path = openssl;
 			sourceTree = "<group>";
@@ -1205,7 +1232,6 @@
 		B9BC98FC25C0FFBA00C024FE /* lib */ = {
 			isa = PBXGroup;
 			children = (
-				B9BC98FD25C0FFBA00C024FE /* libcrypto.a */,
 			);
 			path = lib;
 			sourceTree = "<group>";
@@ -1554,6 +1580,7 @@
 				B9BC99F825C0FFBD00C024FE /* EZCustomTableView.m in Sources */,
 				B9BC9A2625C0FFBD00C024FE /* EZEditViewController.m in Sources */,
 				AEC306D529B9F2DB000B3861 /* HDLEZVisitorRecordCell.m in Sources */,
+				AEDBFBA529C3072D005F6512 /* HDLEZDeviceMsgCell.m in Sources */,
 				B9BC9A2525C0FFBD00C024FE /* EZOnlineCameraCell.m in Sources */,
 				B9BC999B25C0FFBD00C024FE /* UITableView+FDTemplateLayoutCell.m in Sources */,
 				B9BC9A0325C0FFBD00C024FE /* CameraListCell.m in Sources */,
@@ -1573,6 +1600,7 @@
 				B9BC999D25C0FFBD00C024FE /* UITableView+FDTemplateLayoutCellDebug.m in Sources */,
 				B9BC999E25C0FFBD00C024FE /* UITableView+FDIndexPathHeightCache.m in Sources */,
 				AEDD438929BEF0CD001D9477 /* HDLEZNormalCellView.m in Sources */,
+				AEDBFB9F29C30126005F6512 /* HDLEZDeviceMsgListViewController.m in Sources */,
 				B9BC99F325C0FFBD00C024FE /* UIButton+WebCache.m in Sources */,
 				B9BC99B925C0FFBD00C024FE /* MWTapDetectingImageView.m in Sources */,
 				B9BC99DE25C0FFBD00C024FE /* AFHTTPRequestOperationManager.m in Sources */,
@@ -1600,6 +1628,7 @@
 				B9BC99DD25C0FFBD00C024FE /* AFURLSessionManager.m in Sources */,
 				B9BC9A1A25C0FFBD00C024FE /* EZDeviceTableViewController.m in Sources */,
 				B9BC99D625C0FFBD00C024FE /* AFNetworkActivityIndicatorManager.m in Sources */,
+				AEDBFBA829C30DEF005F6512 /* HDLEZDevMsgListModel.m in Sources */,
 				B9BC99EF25C0FFBD00C024FE /* SDWebImageDownloaderOperation.m in Sources */,
 				AEE84D4329BAC7FE0078FDAD /* HDLEZConstants.m in Sources */,
 				B9BC99BD25C0FFBD00C024FE /* MWGridCell.m in Sources */,
@@ -1617,12 +1646,14 @@
 				B9BC99EC25C0FFBD00C024FE /* SDWebImageCompat.m in Sources */,
 				B9BC99E125C0FFBD00C024FE /* AFNetworkReachabilityManager.m in Sources */,
 				AEE84D3B29BABAC00078FDAD /* HDLEZVisitorRecordViewController.m in Sources */,
+				AEDBFB9929C2B90F005F6512 /* HDLEZAlertInputView.m in Sources */,
 				B9BC9A1B25C0FFBD00C024FE /* EZWifiTipsViewController.m in Sources */,
 				B9BC99D925C0FFBD00C024FE /* UIActivityIndicatorView+AFNetworking.m in Sources */,
 				B9BC9A0725C0FFBD00C024FE /* EZWifiConfigViewController.m in Sources */,
 				B9BC9A1325C0FFBD00C024FE /* EZLocalRealPlayViewController.m in Sources */,
 				B9BC9A2725C0FFBD00C024FE /* EZAddByQRCodeViewController.m in Sources */,
 				AEDD438529BEE6D2001D9477 /* HDLEZCreateTemPassView.m in Sources */,
+				AEDBFB9C29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m in Sources */,
 				B9BC99FC25C0FFBD00C024FE /* NSDate-Utilities.m in Sources */,
 				B9BC9A0425C0FFBD00C024FE /* MessageListCell.m in Sources */,
 				B9EA4E8525C7E806000FFDA2 /* UIScrollView+MJRefresh.m in Sources */,
@@ -1660,6 +1691,7 @@
 				B9BC9A2225C0FFBD00C024FE /* UINavigationController+EZOpenSDK.m in Sources */,
 				B9BC99E725C0FFBD00C024FE /* SDWebImageDecoder.m in Sources */,
 				B9EA4E9225C7E806000FFDA2 /* MJRefreshGifHeader.m in Sources */,
+				AEDBFBA229C302E0005F6512 /* HDLEZDeviceMsgListView.m in Sources */,
 				B9BC99EE25C0FFBD00C024FE /* SDImageCache.m in Sources */,
 				B9BC99D725C0FFBD00C024FE /* UIImageView+AFNetworking.m in Sources */,
 				B9EA4E9125C7E806000FFDA2 /* MJRefreshStateHeader.m in Sources */,
diff --git a/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h b/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h
new file mode 100644
index 0000000..d213f62
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h
@@ -0,0 +1,39 @@
+//
+//  HDLEZAlertInputView.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+typedef void (^HDLEZAlertInputViewSureBlock)(NSString* content);
+typedef void (^HDLEZAlertInputViewCancleBlock)(void);
+
+@interface HDLEZAlertInputView : UIView
+
+/*灞曠ず杈撳叆寮圭獥
+ @param title 鏍囬
+ @param cancleTitle 鍒犻櫎鎸夐挳鏍囬
+ @param sureTitle 纭鎸夐挳鏍囬
+ @param keyboardType 閿洏绫诲瀷
+ @param cancle 鍙栨秷鍥炶皟
+ @param sure 纭鍥炶皟
+ */
++(void)showInputAlertWithtitle:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure;
+
+/*灞曠ず杈撳叆寮圭獥
+ @param view 灞曠ず鐨勭埗view
+ @param title 鏍囬
+ @param cancleTitle 鍒犻櫎鎸夐挳鏍囬
+ @param sureTitle 纭鎸夐挳鏍囬
+ @param keyboardType 閿洏绫诲瀷
+ @param cancle 鍙栨秷鍥炶皟
+ @param sure 纭鍥炶皟
+ */
++(void)showInputAlertToView:(UIView*)view title:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m b/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m
new file mode 100644
index 0000000..bc19036
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m
@@ -0,0 +1,207 @@
+//
+//  HDLEZAlertInputView.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZAlertInputView.h"
+//棰滆壊
+#define HDLEZAlertHEXCOLOR(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a]
+//瀛椾綋
+#define HDLEZ_Alert_Get_FontRegularWithSize(s) [UIFont fontWithName:@"PingFangSC-Regular" size:s]
+
+@interface HDLEZAlertInputView ()
+@property (atomic, strong) UIView *inputV;//杈撳叆view
+@property (atomic, strong) UILabel *titleL;//鏍囬lable
+@property (atomic, strong) UITextField *inputTextF;//杈撳叆textField
+@property (atomic, strong) UIButton *cancleBtn;//鍙栨秷button
+@property (atomic, strong) UIButton *sureBtn;//纭button
+
+@property(nonatomic,strong)HDLEZAlertInputViewCancleBlock cancleBlock; //鍙栨秷鍥炶皟
+@property(nonatomic,strong)HDLEZAlertInputViewSureBlock sureBlock; //纭鍥炶皟
+
+@end
+@implementation HDLEZAlertInputView
+
+/*灞曠ず杈撳叆寮圭獥
+ @param title 鏍囬
+ @param cancleTitle 鍒犻櫎鎸夐挳鏍囬
+ @param sureTitle 纭鎸夐挳鏍囬
+ */
++(void)showInputAlertWithtitle:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle  keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure{
+    [[[[UIApplication sharedApplication] windows] lastObject] makeKeyWindow];
+    [self showInputAlertToView:[[[UIApplication sharedApplication] windows] lastObject] title:title cancleTitle:cancleTitle sureTitle:sureTitle keyboardType:keyboardType cancleBlock:cancle sureBlock:sure];
+}
+
+/*灞曠ず杈撳叆寮圭獥
+ */
++(void)showInputAlertToView:(UIView*)view title:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure{
+    HDLEZAlertInputView *alert = [[self alloc] initWithView:view];
+    alert.titleL.text=title;
+    [alert.cancleBtn setTitle:cancleTitle forState:UIControlStateNormal];
+    [alert.sureBtn setTitle:sureTitle forState:UIControlStateNormal];
+    alert.inputTextF.keyboardType=keyboardType;
+    alert.cancleBlock=cancle;
+    alert.sureBlock=sure;
+    [view addSubview:alert];
+    [alert.inputTextF becomeFirstResponder];//杩涘叆缂栬緫鐘舵��
+}
+
+/*鍒濆鍖杤iew
+ */
+- (id)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        //鑳屾櫙
+        UIView *backV=[[UIView alloc] initWithFrame:frame];
+        backV.backgroundColor=[UIColor blackColor];
+        backV.alpha=0.6;
+        [self addSubview:backV];
+        
+        //杈撳叆view
+        CGFloat inputV_Width=frame.size.width-104;
+        CGFloat inputV_Height=inputV_Width*0.64;
+        _inputV=[[UIView alloc] initWithFrame:CGRectMake(52,(frame.size.height-inputV_Height)/2, inputV_Width, inputV_Height)];
+        _inputV.backgroundColor=HDLEZAlertHEXCOLOR(0xFFFFFF,1.0);
+        _inputV.layer.cornerRadius=10;
+        _inputV.layer.masksToBounds=YES;
+        [self addSubview:_inputV];
+
+        //鏍囬
+        _titleL=[[UILabel alloc] initWithFrame:CGRectMake(0, 20, inputV_Width, 24)];
+        _titleL.textAlignment=NSTextAlignmentCenter;
+        _titleL.textColor=HDLEZAlertHEXCOLOR(0x4484F4,1.0);
+        _titleL.font=HDLEZ_Alert_Get_FontRegularWithSize(16);
+        [_inputV addSubview:_titleL];
+        
+        //杈撳叆妗�
+        _inputTextF=[[UITextField alloc] initWithFrame:CGRectMake(24, (inputV_Height-40)/2, inputV_Width-48, 40)];
+        _inputTextF.textColor=HDLEZAlertHEXCOLOR(0x1B2D4D,1.0);
+        _inputTextF.font=HDLEZ_Alert_Get_FontRegularWithSize(14);
+        _inputTextF.backgroundColor=HDLEZAlertHEXCOLOR(0xF2F3F7,1.0);
+        _inputTextF.layer.cornerRadius=4;
+        _inputTextF.clearButtonMode=UITextFieldViewModeWhileEditing;
+        [_inputV addSubview:_inputTextF];
+
+        //鍙栨秷鎸夐挳
+        _cancleBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, inputV_Height-((inputV_Width/2)*0.33), inputV_Width/2, (inputV_Width/2)*0.33)];
+        [_cancleBtn setTitleColor:HDLEZAlertHEXCOLOR(0x798394,1.0) forState:UIControlStateNormal];
+        _cancleBtn.titleLabel.font=HDLEZ_Alert_Get_FontRegularWithSize(16);
+        [_cancleBtn addTarget:self action:@selector(clickCancle) forControlEvents:UIControlEventTouchUpInside];
+        [_inputV addSubview:_cancleBtn];
+
+        //纭畾鎸夐挳
+        _sureBtn=[[UIButton alloc] initWithFrame:CGRectMake(inputV_Width/2, inputV_Height-((inputV_Width/2)*0.33), inputV_Width/2, (inputV_Width/2)*0.33)];
+        [_sureBtn setTitleColor:HDLEZAlertHEXCOLOR(0xFFFFFF,1.0) forState:UIControlStateNormal];
+        [_sureBtn setBackgroundColor:HDLEZAlertHEXCOLOR(0x4484F4,1.0)];
+        _sureBtn.titleLabel.font=HDLEZ_Alert_Get_FontRegularWithSize(16);
+        [_sureBtn addTarget:self action:@selector(clickSure) forControlEvents:UIControlEventTouchUpInside];
+        [_inputV addSubview:_sureBtn];
+        
+
+        //妯嚎
+        UIView *lineV=[[UIView alloc] initWithFrame:CGRectMake(0, _sureBtn.frame.origin.y-0.3,inputV_Width/2 , 0.6)];
+        lineV.backgroundColor=HDLEZAlertHEXCOLOR(0x08141F,1.0);
+        
+        
+        //娣诲姞鐐瑰嚮灞忓箷鎵嬪娍
+        UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (viewTapped)];
+        tapGr.cancelsTouchesInView = NO ;
+        [backV addGestureRecognizer:tapGr];
+        
+        //娉ㄥ唽閿洏閫氱煡
+        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];
+        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillhide:) name:UIKeyboardWillHideNotification object:nil];
+    }
+    return self;
+}
+
+-(void)dealloc{
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
+}
+
+//鍒濆鍖朼lertView
+- (id)initWithView:(UIView *)view {
+    return [self initWithFrame:view.bounds];
+}
+
+
+/*鐐瑰嚮鍙栨秷
+ */
+-(void)clickCancle{
+    if (self.cancleBlock) {
+        self.cancleBlock();
+    }
+    [self removeFromSuperview];
+}
+
+/*鐐瑰嚮纭
+ */
+-(void)clickSure{
+    if (self.sureBlock) {
+        self.sureBlock(self.inputTextF.text);
+    }
+    [self removeFromSuperview];
+}
+
+/*鐐瑰嚮鑳屾櫙view
+ */
+-(void)viewTapped{
+//    //閿洏閫�鍑�
+    [self endEditing:YES];
+    HDLEZLog(@"鐐瑰嚮浜嗚儗鏅�");
+//    [_inputTextF becomeFirstResponder];//杩涘叆缂栬緫鐘舵��
+}
+
+/*灏嗗睍绀洪敭鐩�
+ */
+-(void)keyBoardWillShow:(NSNotification*)notification{
+    //鑾峰彇閿洏寮瑰嚭鐨勬椂闂�
+    double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
+    //鑾峰彇閿洏涓婄Y鍧愭爣
+    CGFloat keyboardY = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
+    //鑾峰彇杈撳叆妗嗕笅绔浉瀵逛簬window鐨刌鍧愭爣
+    CGRect rect = [_inputV convertRect:_inputV.bounds toView:[self appWindow]];
+    CGPoint tmp = rect.origin;
+    CGFloat inputBoxY = tmp.y + _inputV.frame.size.height;
+    //璁$畻浜岃�呭樊鍊�
+    CGFloat ty = keyboardY - inputBoxY-20;
+//    NSLog(@"position keyboard: %f, inputbox: %f, ty: %f", keyboardY, inputBoxY, ty);
+    //宸�煎皬浜�0锛屽仛骞崇Щ鍙樻崲
+    __weak __typeof(self)weakSelf = self;
+    [UIView animateWithDuration:duration animations:^{
+        if (ty < 0) {
+            weakSelf.inputV.transform = CGAffineTransformMakeTranslation(0, ty);
+        }
+    }];
+}
+
+/*灏嗗叧闂敭鐩�
+ */
+-(void)keyBoardWillhide:(NSNotification*)notification{
+    //鑾峰彇閿洏寮瑰嚭鐨勬椂闂�
+    double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
+    //杩樺師
+    __weak __typeof(self)weakSelf = self;
+    [UIView animateWithDuration:duration animations:^{
+        weakSelf.inputV.transform = CGAffineTransformMakeTranslation(0, 0);
+    }];
+}
+
+/*鑾峰彇鍗曞墠window
+ */
+-(UIWindow*)appWindow{
+    UIWindow *window;
+    if (@available(iOS 13.0, *)) {
+        if ([UIApplication sharedApplication].delegate.window) {
+            window=[UIApplication sharedApplication].delegate.window;
+        }else{
+            window = [UIApplication sharedApplication].windows[0];
+        }
+    } else {
+        window = [UIApplication sharedApplication].delegate.window;
+    }
+    return window;
+}
+@end
diff --git a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
index 7f4034f..22fd570 100644
--- a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
+++ b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
@@ -80,13 +80,11 @@
  *  @since 娌充笢闂ㄩ攣缁堢鎺堟潈鎺ュ彛
  *  @param password   闂ㄩ攣瀵嗙爜
  *  @param deviceId   璁惧id
- *  @param verifyCode   sdk鑾峰彇鐨勬牎楠岀爜
  *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
  *
  */
 - (void)authLockByHDL:(NSString *)password
                deviceId:(NSString *)deviceId
-           verifyCode:(NSString *)verifyCode
                 completion:(void (^)(ResponseData *responseData))completion;
 
 
@@ -132,6 +130,19 @@
             deviceId:(NSString *)deviceId
                 completion:(void (^)(ResponseData *responseData))completion;
 
+/**
+ *  @since 娌充笢鑾峰彇璁惧娑堟伅
+ *  @param deviceId   璁惧id
+ *  @param pageSize   椤甸潰澶у皬
+ *  @param pageNo   褰撳墠椤�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ *
+ */
+- (void)getDeviceMessageByHDL:(NSString *)deviceId
+                     pageSize:(NSInteger)pageSize
+                       pageNo:(NSInteger)pageNo
+                completion:(void (^)(ResponseData *responseData))completion;
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
index 2d5042c..3fc0474 100644
--- a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
+++ b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
@@ -24,6 +24,7 @@
 #define API_POST_EZ_TempList @"/home-wisdom/platform/yingshi/lock/temp/list"//钀ょ煶闂ㄤ复鏃跺瘑鐮佸垪琛�
 #define API_POST_EZ_AddTemp @"/home-wisdom/platform/yingshi/lock/temp/add"//钀ょ煶闂ㄦ坊鍔犱复鏃跺瘑鐮�
 #define API_POST_EZ_DeleteTemp @"/home-wisdom/platform/yingshi/lock/temp/delete"//钀ょ煶闂ㄥ垹闄や复鏃跺瘑鐮�
+#define API_POST_EZ_DeviceMessage @"/home-wisdom/app/device/message"//钀ょ煶璁惧娑堟伅鍒楄〃
 
 #define API_POST_EZ_GetAlarmList @"/home-wisdom/platform/yingshi/alarm/records"//鑾峰彇鎶ヨ娑堟伅
 #define API_POST_EZ_DeleteAlarmMes @"/home-wisdom/platform/yingshi/alarm/delete"//鍒犻櫎鎶ヨ娑堟伅
@@ -116,7 +117,7 @@
                               verifyCode:(NSString *)verifyCode
                               completion:(void (^)(ResponseData *responseData))completion{
 
-    //2.璁剧疆璇锋眰鍙傛暟
+    //璁剧疆璇锋眰鍙傛暟
     NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
     [parameters setValue:deviceSerial forKey:@"deviceSerial"];
     [parameters setValue:verifyCode forKey:@"validateCode"];
@@ -125,7 +126,16 @@
     
     parameters = [self GetSignRequestDictionary:parameters];
     
+    HDLEZLog(@"娣诲姞璁惧鍙傛暟锛�%@",parameters);
+
+    
     [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) {
+        if (responseData.success){//娣诲姞鎴愬姛锛岃Е鍙戜唬鐞�
+            if ([EZSDK sharedInstance].delegate&&[[EZSDK sharedInstance].delegate respondsToSelector:@selector(addDeviceSuccessed)]) {
+                [[EZSDK sharedInstance].delegate addDeviceSuccessed];
+            }
+        }
+        
         if (completion) {
             completion (responseData);
         }
@@ -229,20 +239,17 @@
  *  @since 娌充笢闂ㄩ攣缁堢鎺堟潈鎺ュ彛
  *  @param password   闂ㄩ攣瀵嗙爜
  *  @param deviceId   璁惧id
- *  @param verifyCode   sdk鑾峰彇鐨勬牎楠岀爜
  *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
  *
  */
 - (void)authLockByHDL:(NSString *)password
                deviceId:(NSString *)deviceId
-           verifyCode:(NSString *)verifyCode
            completion:(void (^)(ResponseData *responseData))completion{
     //2.璁剧疆璇锋眰鍙傛暟
     NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
     [parameters setValue:deviceId forKey:@"deviceId"];
     [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
     [parameters setValue:password forKey:@"password"];
-    [parameters setValue:verifyCode forKey:@"verifyCode"];
     [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
     
     parameters = [self GetSignRequestDictionary:parameters];
@@ -294,7 +301,7 @@
  */
 - (void)getTempListByHDL:(NSString *)deviceId
               completion:(void (^)(ResponseData *responseData))completion{
-    //2.璁剧疆璇锋眰鍙傛暟
+    //璁剧疆璇锋眰鍙傛暟
     NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
     [parameters setValue:deviceId forKey:@"deviceId"];
     [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
@@ -367,6 +374,37 @@
 
 }
 
+/**
+ *  @since 娌充笢鑾峰彇璁惧娑堟伅
+ *  @param deviceId   璁惧id
+ *  @param pageSize   椤甸潰澶у皬
+ *  @param pageNo   褰撳墠椤�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘垚鍔�
+ *
+ */
+- (void)getDeviceMessageByHDL:(NSString *)deviceId
+                     pageSize:(NSInteger)pageSize
+                       pageNo:(NSInteger)pageNo
+                   completion:(void (^)(ResponseData *responseData))completion{
+    //璁剧疆璇锋眰鍙傛暟
+    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+    [parameters setValue:deviceId forKey:@"deviceId"];
+    [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageSize] forKey:@"pageSize"];
+    [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageNo] forKey:@"pageNo"];
+    [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"];
+    [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"];
+    
+    parameters = [self GetSignRequestDictionary:parameters];
+    
+    NSLog(@"鑾峰彇璁惧娑堟伅鍙傛暟锛�%@",parameters);
+    
+    [self requestHttpsPost:API_POST_EZ_DeviceMessage parameters:parameters completion:^(ResponseData *responseData) {
+        if (completion) {
+            completion (responseData);
+        }
+    }];
+}
+
 /// 鍒锋柊token
 /// @param block 缁撴灉
 - (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{
diff --git a/EZSDK/EZSDK/EZ/Global/GlobalKit.h b/EZSDK/EZSDK/EZ/Global/GlobalKit.h
index 48842f4..ee0fc5e 100644
--- a/EZSDK/EZSDK/EZ/Global/GlobalKit.h
+++ b/EZSDK/EZSDK/EZ/Global/GlobalKit.h
@@ -7,7 +7,7 @@
 //
 
 #import <Foundation/Foundation.h>
-#import "EZSDK.h"
+#import "HDLEZConstants.h"
 //#define CURR_LANG ([[NSLocale preferredLanguages] objectAtIndex:0])
 //#define LanguageIsChinese ([CURR_LANG rangeOfString:@"zh-Hans"].location != NSNotFound)
 ////涓枃璧板浗鍐咃紝 涓嶆槸涓枃璧版捣澶�
diff --git a/EZSDK/EZSDK/EZ/Global/HDLEZConstants.h b/EZSDK/EZSDK/EZ/Global/HDLEZConstants.h
index 9d25246..99140dd 100755
--- a/EZSDK/EZSDK/EZ/Global/HDLEZConstants.h
+++ b/EZSDK/EZSDK/EZ/Global/HDLEZConstants.h
@@ -119,6 +119,17 @@
 //// 閫氳瘽绫诲瀷
 //#define HDLF_FV_CALL_TYPE_KEY  @"HDLEZCallTypeKey"
 
+//钀ょ煶闂ㄩ攣spk
+#define HDLEZ_DOOR_SPK  @"security.door.ezviz"
+
+
+//璁惧绫诲瀷
+typedef enum {
+    HDLEZDeviceType_Default=0, //榛樿绫诲瀷
+    HDLEZDeviceType_Door=1,//闂ㄩ攣
+}HDLEZDeviceType;
+
+
 @interface HDLEZConstants : NSObject
 /*鑾峰彇褰撳墠controller
  */
@@ -185,4 +196,8 @@
  @param number 鍐呭
  */
 +(BOOL)validateNumber:(NSString*)number;
+
+/* 灏唍il杞负""
+ */
++(NSString*)turnNil:(NSString *)str;
 @end
diff --git a/EZSDK/EZSDK/EZ/Global/HDLEZConstants.m b/EZSDK/EZSDK/EZ/Global/HDLEZConstants.m
index 365ba78..effd2de 100755
--- a/EZSDK/EZSDK/EZ/Global/HDLEZConstants.m
+++ b/EZSDK/EZSDK/EZ/Global/HDLEZConstants.m
@@ -307,4 +307,14 @@
     }
     return res;
 }
+
+/* 灏唍il杞负""
+ */
++(NSString*)turnNil:(NSString *)str{
+    if (str == nil || str == NULL) {
+        return @"";
+    }else{
+        return str;
+    }
+}
 @end
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h
new file mode 100644
index 0000000..45b60f5
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h
@@ -0,0 +1,16 @@
+//
+//  HDLEZDeviceMsgListViewController.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZDeviceMsgListViewController : HDLEZBaseViewController
+@property (nonatomic, copy)NSString *deviceId;//璁惧id
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m
new file mode 100644
index 0000000..0c1ca3e
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m
@@ -0,0 +1,121 @@
+//
+//  HDLEZDeviceMsgListViewController.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZDeviceMsgListViewController.h"
+#import "HDLEZDeviceMsgListView.h"
+#import "MJRefreshNormalHeader.h"
+#import "MJRefreshAutoNormalFooter.h"
+#import "HDLEZDevMsgListModel.h"
+@interface HDLEZDeviceMsgListViewController ()
+@property (nonatomic, strong) HDLEZDeviceMsgListView *msgListV;//娑堟伅鍒楄〃view
+
+@property (nonatomic, strong) MJRefreshNormalHeader *header;//鍒锋柊header
+
+@property (nonatomic, strong) MJRefreshAutoNormalFooter *footer;//鍔犺浇footer
+
+@property (nonatomic, strong) HDLEZDevMsgListModel *msgListModel;//娑堟伅鍒楄〃model
+
+@property (nonatomic, strong) NSMutableArray<HDLEZDeviceMsgInfoModel*> *msgList;//娑堟伅鍒楄〃锛堝垎椤佃幏鍙栧埌鐨勬墍鏈夋秷鎭級
+
+@property (nonatomic, assign) NSInteger currentPageNo;//褰撳墠椤电爜
+
+@property (nonatomic, assign) NSInteger pageSize;//鍒嗛〉瀹归噺
+
+@end
+
+@implementation HDLEZDeviceMsgListViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    [self setTopBarViewWithTitle:HDLEZLocallizedString(@"device_history")];
+    [self.topBarView.bottomLine setHidden:YES];
+    // Do any additional setup after loading the view.
+}
+
+-(void)addSubViews{
+    
+    //
+    _msgListV=[[HDLEZDeviceMsgListView alloc] init];
+    [self.view addSubview:_msgListV];
+    [_msgListV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.view).offset(HDLEZ_APP_TOP_BAR_HEIGHT);
+        make.left.bottom.right.equalTo(self.view);
+    }];
+//    _msgListV.choseDelegate=self;
+    
+    //涓嬫媺鍒锋柊
+    // 璁剧疆鍥炶皟锛堜竴鏃﹁繘鍏ュ埛鏂扮姸鎬侊紝灏辫皟鐢╰arget鐨刟ction锛屼篃灏辨槸璋冪敤self鐨刲oadNewData鏂规硶锛�
+    _header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refreshData)];
+    // 璁剧疆鑷姩鍒囨崲閫忔槑搴�(鍦ㄥ鑸爮涓嬮潰鑷姩闅愯棌)
+    _header.automaticallyChangeAlpha = YES;
+    // 闅愯棌鏃堕棿
+    _header.lastUpdatedTimeLabel.hidden = YES;
+    // 闅愯棌鍒锋柊鐘舵�佹枃鏈�
+    _header.stateLabel.hidden = YES;
+    _msgListV.mj_header=_header;
+    
+    //涓婃媺鍔犺浇鏇村
+    _footer=[MJRefreshAutoNormalFooter  footerWithRefreshingTarget:self refreshingAction:@selector(loadMore)];
+    _footer.refreshingTitleHidden=YES;
+    [_footer setTitle:@"" forState:MJRefreshStateIdle];
+    [_footer setTitle:HDLEZLocallizedString(@"device_his_no_more_data") forState:MJRefreshStateNoMoreData];
+    _footer.stateLabel.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY;
+    _msgListV.mj_footer=_footer;
+
+    //寮�濮嬪姞杞芥暟鎹�
+    [_header beginRefreshing];
+    
+    
+}
+
+/*鍒锋柊鏁版嵁
+ */
+-(void)refreshData{
+    self.msgList=[[NSMutableArray alloc] init];
+    _currentPageNo=1;
+    _pageSize=20;
+    
+    [self getMsgList];
+}
+
+/*鍔犺浇鏇村
+ */
+-(void)loadMore{
+//    _currentPageNo+=1;
+    
+    [self getMsgList];
+
+}
+
+/*鑾峰彇鍘嗗彶璁板綍
+ */
+-(void)getMsgList{
+    __weak __typeof(self)weakSelf = self;
+    [[EZHttpUtil sharedManager] getDeviceMessageByHDL:self.deviceId pageSize:_pageSize pageNo:_currentPageNo completion:^(ResponseData * _Nonnull responseData) {
+        [weakSelf.header endRefreshing];
+        [weakSelf.footer endRefreshing];
+        weakSelf.msgListModel=[HDLEZDevMsgListModel yy_modelWithDictionary:responseData.data];
+        if (responseData.success) {
+            weakSelf.msgListModel=[HDLEZDevMsgListModel yy_modelWithDictionary:responseData.data];
+            if (weakSelf.msgListModel.list.count!=0) {
+                [weakSelf.msgList addObjectsFromArray:weakSelf.msgListModel.list];
+                weakSelf.msgListV.msgList=weakSelf.msgList;
+                weakSelf.currentPageNo+=1;
+            }else{
+                [weakSelf.footer endRefreshingWithNoMoreData];
+            }
+            
+        }else{
+            [weakSelf.view makeToast:responseData.message
+                            duration:1.5
+                            position:@"center"];
+        }
+    }];
+}
+
+
+@end
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m
index d5fb9b0..ef6ab69 100755
--- a/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m
+++ b/EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m
@@ -78,7 +78,16 @@
     [[EZHttpUtil sharedManager] getTempListByHDL:self.deviceId completion:^(ResponseData * _Nonnull responseData) {
         HDLEZLog(@"涓存椂瀵嗙爜鍒楄〃锛�%@",responseData.data);
         [weakSelf.header endRefreshing];
-        weakSelf.visitorRecordV.temPList=[NSArray yy_modelArrayWithClass:[HDLEZTemInfoModel class] json:responseData.data];
+        if (responseData.success) {
+            weakSelf.visitorRecordV.temPList=[NSArray yy_modelArrayWithClass:[HDLEZTemInfoModel class] json:responseData.data];
+//            if (weakSelf.visitorRecordV.temPList.count==0) {
+//
+//            }
+        }else{
+            [weakSelf.view makeToast:responseData.message
+                            duration:1.5
+                            position:@"center"];
+        }
     }];
 }
 
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h
new file mode 100644
index 0000000..82d60a2
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h
@@ -0,0 +1,22 @@
+//
+//  HDLEZDevMsgListModel.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import <Foundation/Foundation.h>
+#import "HDLEZDeviceMsgInfoModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZDevMsgListModel : NSObject
+@property (nonatomic, assign)NSInteger totalCount;//鎬绘暟
+@property (nonatomic, assign)NSInteger totalPage;//鎬婚〉鏁�
+@property (nonatomic, assign)NSInteger pageNo;//褰撳墠椤垫暟
+@property (nonatomic, assign)NSInteger pageSize;//椤甸潰瀹归噺
+@property (nonatomic, strong) NSArray<HDLEZDeviceMsgInfoModel*> *list;//娑堟伅鍒楄〃
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m
new file mode 100644
index 0000000..d6b367d
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m
@@ -0,0 +1,14 @@
+//
+//  HDLEZDevMsgListModel.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZDevMsgListModel.h"
+
+@implementation HDLEZDevMsgListModel
++ (NSDictionary *)modelContainerPropertyGenericClass {
+    return @{@"list" : [HDLEZDeviceMsgInfoModel class]};
+}
+@end
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h
new file mode 100644
index 0000000..a8faa31
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h
@@ -0,0 +1,19 @@
+//
+//  HDLEZDeviceMsgInfoModel.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZDeviceMsgInfoModel : NSObject
+@property (nonatomic, copy)NSString *title;//鏍囬
+@property (nonatomic, copy)NSString *content;//鍐呭
+@property (nonatomic, copy)NSString *level;//娑堟伅绛夌骇
+@property (nonatomic, copy)NSString *createTime;//鍒涘缓鏃堕棿
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m
new file mode 100644
index 0000000..1c4d7b5
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m
@@ -0,0 +1,12 @@
+//
+//  HDLEZDeviceMsgInfoModel.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZDeviceMsgInfoModel.h"
+
+@implementation HDLEZDeviceMsgInfoModel
+
+@end
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h
new file mode 100644
index 0000000..c57c7f8
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h
@@ -0,0 +1,18 @@
+//
+//  HDLEZDeviceMsgCell.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import <UIKit/UIKit.h>
+#import "HDLEZDeviceMsgInfoModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZDeviceMsgCell : UITableViewCell
+@property (nonatomic, strong)HDLEZDeviceMsgInfoModel* msgInfo;//娑堟伅璇︽儏
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m
new file mode 100644
index 0000000..7eabe97
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m
@@ -0,0 +1,108 @@
+//
+//  HDLEZDeviceMsgCell.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZDeviceMsgCell.h"
+@interface HDLEZDeviceMsgCell(){
+    UIFont *titleFont,*describeFont;
+}
+@property (nonatomic, strong)UILabel *titleL;//鏍囬lable
+@property (nonatomic, strong)UILabel *timeL;//鏃堕棿lable
+@property (nonatomic, strong)UILabel *describeL;//鎻忚堪lable
+@property (nonatomic, strong)UIView *lineV;//涓嬪垝绾�
+@end
+@implementation HDLEZDeviceMsgCell
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+-(instancetype)initWithFrame:(CGRect)frame{
+    if(self = [super initWithFrame:frame]){
+        self.frame=frame;
+        self.selectionStyle=UITableViewCellSelectionStyleNone;
+        titleFont=HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
+        describeFont=HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_12);
+
+        [self initUI];
+    }
+    return self;
+}
+
+-(void)initUI{
+    //鏍囬L
+    _titleL=[[UILabel alloc] init];
+    _titleL.font=titleFont;
+    _titleL.textColor=HDLEZ_COLOR_TITLE_BLACK;
+    _titleL.adjustsFontSizeToFitWidth=YES;
+    [self.contentView addSubview:_titleL];
+    [_titleL mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.contentView).offset(12);
+        make.left.equalTo(self.contentView).offset(16);
+        make.height.mas_equalTo(22);
+        make.right.equalTo(self.contentView).offset(-16);
+    }];
+    
+    //鏃堕棿L
+    _timeL=[[UILabel alloc] init];
+    _timeL.font=describeFont;
+    _timeL.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY;
+    _timeL.adjustsFontSizeToFitWidth=YES;
+    [self.contentView addSubview:_timeL];
+    [_timeL mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.contentView).offset(-12);
+        make.left.equalTo(_titleL);
+        make.height.mas_equalTo(17);
+        make.width.mas_equalTo(120);
+    }];
+
+    //鎻忚堪L
+    _describeL=[[UILabel alloc] init];
+    _describeL.font=describeFont;
+    _describeL.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY;
+    _describeL.adjustsFontSizeToFitWidth=YES;
+    _describeL.textAlignment=NSTextAlignmentRight;
+    [self.contentView addSubview:_describeL];
+    [_describeL mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.contentView).offset(-12);
+        make.height.mas_equalTo(17);
+        make.right.equalTo(_titleL);
+        make.left.equalTo(_timeL.mas_right);
+    }];
+    
+    //涓嬪垝绾�
+    _lineV=[[UIView alloc] init];
+    [self.contentView addSubview:_lineV];
+    [_lineV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(_titleL.mas_left);
+        make.bottom.equalTo(self.contentView);
+        make.right.equalTo(_describeL.mas_right);
+        make.height.mas_equalTo(1);
+    }];
+    _lineV.backgroundColor=HDLEZ_COLOR_BACKGROUND_LINE;
+
+}
+
+/*鏃堕棿鎴宠浆鏃堕棿
+ */
+-(NSString *)turnDate:(NSString*)dateStr{
+    return [HDLEZConstants timeStrWithFormate:[NSString stringWithFormat:@"yyyy%@MM%@dd%@ HH:mm",HDLEZLocallizedString(@"device_temp_year"),HDLEZLocallizedString(@"device_temp_month"),HDLEZLocallizedString(@"device_temp_date")] data:[NSDate dateWithTimeIntervalSince1970:[dateStr doubleValue]/1000]];
+}
+
+
+/*璁剧疆娑堟伅鍊�
+ */
+-(void)setMsgInfo:(HDLEZDeviceMsgInfoModel *)msgInfo{
+    _msgInfo=msgInfo;
+    
+    _titleL.text=[HDLEZConstants turnNil:msgInfo.title] ;
+    _timeL.text=[NSString stringWithFormat:@"%@",[self turnDate:msgInfo.createTime]];
+    _describeL.text=[HDLEZConstants turnNil:msgInfo.content];
+    
+}
+@end
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h
new file mode 100644
index 0000000..e0f1e43
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h
@@ -0,0 +1,16 @@
+//
+//  HDLEZDeviceMsgListView.h
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import <UIKit/UIKit.h>
+#import "HDLEZDeviceMsgInfoModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HDLEZDeviceMsgListView : UITableView<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic, strong) NSArray<HDLEZDeviceMsgInfoModel*> *msgList;//娑堟伅鍒楄〃
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m
new file mode 100644
index 0000000..a8e76b8
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m
@@ -0,0 +1,64 @@
+//
+//  HDLEZDeviceMsgListView.m
+//  EZSDK
+//
+//  Created by 闄堝惎鎵� on 2023/3/16.
+//
+
+#import "HDLEZDeviceMsgListView.h"
+#import "HDLEZDeviceMsgCell.h"
+@implementation HDLEZDeviceMsgListView{
+    CGFloat cellHeight;
+}
+
+-(instancetype)init{
+    self = [super init];
+    if (self) {
+        self.backgroundColor = HDLEZ_COLOR_VIEW_BACKGROUND;
+//        self.backgroundColor = [UIColor greenColor];
+
+        self.separatorStyle = NO;
+        self.showsVerticalScrollIndicator=NO;
+        self.delegate = self;
+        self.dataSource = self;
+        cellHeight=65;
+        [self setSeparatorInset:UIEdgeInsetsZero];
+//        [self setLayoutMargins:UIEdgeInsetsZero];
+    }
+    
+    return  self;
+}
+
+-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
+    return _msgList.count;
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
+    return cellHeight;
+}
+
+-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    HDLEZLog(@"鍒濆鍖朿ell");
+    HDLEZDeviceMsgCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HDLEZDeviceMsgCell"];
+    if(cell == nil){
+        cell=[[HDLEZDeviceMsgCell alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, cellHeight)];
+    }
+    HDLEZDeviceMsgInfoModel *model=self.msgList[indexPath.row];
+    cell.msgInfo=model;
+//    HDLEZLog(@"鍒濆鍖朿ell ID:%@",model.extVisitorId);
+    
+    return cell;
+
+}
+
+/*璁剧疆娑堟伅鍒楄〃鍊�
+ */
+-(void)setMsgList:(NSArray<HDLEZDeviceMsgInfoModel *> *)msgList{
+    _msgList=msgList;
+    [self reloadData];
+}
+@end
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h
index 3263257..e919353 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h
@@ -12,4 +12,7 @@
 
 @property (nonatomic) BOOL needRefresh;
 
+@property (nonatomic, strong)NSArray *filterTypes;//闇�瑕佽繃婊ょ殑鍨嬪彿
+
+
 @end
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m
index 6c7fc55..c27e2b8 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m
@@ -70,6 +70,10 @@
     [self.logoutBtn setEnabled: NO];
     
     [self checkEZIsLogin];
+    
+//    self.addButton=nil;
+    self.addButton=[[UIBarButtonItem alloc] init];
+//    self.addButton=[UIImage imageNamed:@""];
 }
 
 
@@ -253,7 +257,17 @@
                         return;
                     }
                     [weakSelf.deviceList removeAllObjects];
-                    [weakSelf.deviceList addObjectsFromArray:deviceList];
+                    HDLEZLog(@"鑾峰彇鍒扮殑璁惧鍒楄〃锛�%@",deviceList);
+                    NSMutableArray *finalDeviceList=[NSMutableArray arrayWithArray:deviceList];
+                    if (self.filterTypes&&self.filterTypes.count!=0) {//鍒ゆ柇鏄惁闇�瑕佽繃婊�
+                        for (EZDeviceInfo *deviceInfo in deviceList) {
+                            HDLEZLog(@"鑾峰彇鍒扮殑璁惧鍒楄〃category锛�%@",deviceInfo.category);
+                            if ([self.filterTypes containsObject:[HDLEZConstants turnNil:deviceInfo.category]]) {
+                                [finalDeviceList removeObject:deviceInfo];
+                            }
+                        }
+                    }
+                    [weakSelf.deviceList addObjectsFromArray:finalDeviceList];
                     [weakSelf.tableView reloadData];
                     [weakSelf.tableView.header endRefreshing];
                     if (weakSelf.deviceList.count == totalCount)
@@ -310,7 +324,17 @@
 //                    [weakSelf.view makeToast:error.description duration:2.0 position:@"bottom"];
 //                    return;
 //                }
-                [weakSelf.deviceList addObjectsFromArray:deviceList];
+                
+                NSMutableArray *finalDeviceList=[NSMutableArray arrayWithArray:deviceList];
+                if (self.filterTypes&&self.filterTypes.count!=0) {//鍒ゆ柇鏄惁闇�瑕佽繃婊�
+                    for (EZDeviceInfo *deviceInfo in deviceList) {
+                        if ([self.filterTypes containsObject:[HDLEZConstants turnNil:deviceInfo.category]]) {
+                            [finalDeviceList removeObject:deviceInfo];
+                        }
+                    }
+                }
+                [weakSelf.deviceList addObjectsFromArray:finalDeviceList];
+//                [weakSelf.deviceList addObjectsFromArray:deviceList];
                 [weakSelf.tableView reloadData];
                 [weakSelf.tableView.footer endRefreshing];
                 if (weakSelf.deviceList.count == totalCount)
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h
index d3ef53f..fdcaf09 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h
@@ -16,6 +16,10 @@
 @property (nonatomic, copy) NSString *hubCoDevSerial;
 @property (nonatomic) NSInteger cameraIndex;
 
+@property (nonatomic, copy) NSString *deviceSerial;//璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceId;//璁惧id
+
+
 - (void)imageSavedToPhotosAlbum:(UIImage *)image
        didFinishSavingWithError:(NSError *)error
                     contextInfo:(void *)contextInfo;
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
index a830842..f648436 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
@@ -23,7 +23,7 @@
 #import "EZStreamPlayer.h"
 #import "MBProgressHUD.h"
 #import "EZPMPlayPrivateTokenInfo.h"
-
+#import "HDLEZAlertInputView.h"
 #define MinimumZoomScale 1.0
 #define MaximumZoomScale 4.0
 
@@ -90,6 +90,8 @@
 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
 @property (weak, nonatomic) IBOutlet UILabel *zoomSizeLabel;
 
+@property (nonatomic, strong) HDLEZButton *unlockButton;//寮�閿佹寜閽�
+
 @property (nonatomic, copy) NSString *streamToken;
 
 @end
@@ -112,6 +114,197 @@
     self.ptzView.hidden = YES;
     self.talkView.hidden = YES;
     
+    if (!self.deviceInfo) {//濡傛灉娌℃湁浼燿eviceInfo,闇�涓诲姩鑾峰彇
+        [self getDeviceInfo];
+        return;
+    }
+    
+    //鍒濆鍖栫浉鍏虫暟鎹�
+    [self initialData];
+    
+//    self.talkButton.enabled = self.deviceInfo.isSupportTalk;
+//    self.controlButton.enabled = self.deviceInfo.isSupportPTZ;
+//    self.captureButton.enabled = NO;
+//    self.localRecordButton.enabled = NO;
+//    self.streamPlayBtn.hidden = YES;
+//
+//    if (_url)
+//    {
+//        _player = [EZOPENSDK createPlayerWithUrl:_url];
+//    }
+//    else if([self.deviceInfo.deviceType containsString:@"CAS"]) //hub
+//    {
+//        _cameraInfo = [[EZCameraInfo alloc]init]; //鍏煎demo涔嬪墠鐨勪笟鍔¢�昏緫锛屾墜鍔ㄥ~鍏呬簡cameraInfo锛屽疄闄呭紑鍙戠洿鎺ヤ紶鍏ュ簭鍒楀彿鍜岄�氶亾鍙风敓鎴怑ZPlayer鍗冲彲
+//        _cameraInfo.deviceSerial = _hubCoDevSerial;
+//        _cameraInfo.cameraNo = _cameraIndex;
+//        _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo];
+//    }
+//    else
+//    {
+//        _cameraInfo = [self.deviceInfo.cameraInfo dd_objectAtIndex:_cameraIndex];
+//        _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo];
+//        _talkPlayer = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo];
+//        if (_cameraInfo.videoLevel == 2)
+//        {
+//            [self.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"楂樻竻") forState:UIControlStateNormal];
+//        }
+//        else if (_cameraInfo.videoLevel == 1)
+//        {
+//            [self.qualityButton setTitle:NSLocalizedString(@"device_quality_median", @"鍧囪 ") forState:UIControlStateNormal];
+//        }
+//        else
+//        {
+//            [self.qualityButton setTitle:NSLocalizedString(@"device_quality_low",@"娴佺晠") forState:UIControlStateNormal];
+//        }
+//    }
+//    if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //涓嶆敮鎸佹竻鏅板害鍒囨崲
+//        self.qualityButton.hidden = YES;
+//    }
+//
+//    if (self.deviceInfo.cameraInfo.count > 1) {
+//        self.title = [NSString stringWithFormat:@"Camera %ld", (long)_cameraInfo.cameraNo];
+//    }
+//    else {
+//        self.title = _deviceInfo.deviceName;
+//    }
+//    self.largeTitleLabel.text = self.title;
+//    [self hidenWatchFunc];
+//
+//#if DEBUG
+//    if (!_url)
+//    {
+//        //鎶撳浘鎺ュ彛婕旂ず浠g爜
+//        [EZOPENSDK captureCamera:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo completion:^(NSString *url, NSError *error) {
+//            NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", _cameraInfo.deviceSerial, (int)_cameraInfo.cameraNo, url, error);
+//        }];
+//    }
+//#endif
+//
+//    _player.delegate = self;
+//    _talkPlayer.delegate = self;
+//    //鍒ゆ柇璁惧鏄惁鍔犲瘑锛屽姞瀵嗗氨浠巇emo鐨勫唴瀛樹腑鑾峰彇璁惧楠岃瘉鐮佸~鍏ュ埌鎾斁鍣ㄧ殑楠岃瘉鐮佹帴鍙i噷锛屾湰demo鍙鐞嗗唴瀛樺瓨鍌紝鏈湴鎸佷箙鍖栧瓨鍌ㄧ敤鎴疯嚜琛屽畬鎴�
+//    if (self.deviceInfo.isEncrypt)
+//    {
+//        NSString *verifyCode = [[GlobalKit shareKit].deviceVerifyCodeBySerial objectForKey:self.deviceInfo.deviceSerial];
+//        [_player setPlayVerifyCode:verifyCode];
+//        [_talkPlayer setPlayVerifyCode:verifyCode];
+//    }
+//    [_player setPlayerView:_playerView];
+//    BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]];
+//    [_player setHDPriority:hdStatus];
+//    [_player startRealPlay];
+//
+//    if(!_loadingView)
+//        _loadingView = [[HIKLoadView alloc] initWithHIKLoadViewStyle:HIKLoadViewStyleSqureClockWise];
+//    [self.view insertSubview:_loadingView aboveSubview:self.playerView];
+//    [_loadingView mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.width.height.mas_equalTo(@14);
+//        make.centerX.mas_equalTo(self.playerView.mas_centerX);
+//        make.centerY.mas_equalTo(self.playerView.mas_centerY);
+//    }];
+//    [self.loadingView startSquareClcokwiseAnimation];
+//
+//    self.largeBackButton.hidden = YES;
+//    _isOpenSound = YES;
+//
+//    [self.controlButton dd_centerImageAndTitle];
+//    [self.talkButton dd_centerImageAndTitle];
+//    [self.captureButton dd_centerImageAndTitle];
+//    [self.localRecordButton dd_centerImageAndTitle];
+//
+//    [self.voiceButton setImage:[UIImage imageNamed:@"preview_unvoice_btn_sel"] forState:UIControlStateHighlighted];
+//    [self addLine];
+//
+//    self.localRecordLabel.layer.borderColor = [UIColor whiteColor].CGColor;
+//    self.localRecordLabel.layer.cornerRadius = 12.0f;
+//    self.localRecordLabel.layer.borderWidth = 1.0f;
+//    self.localRecordLabel.clipsToBounds = YES;
+//    self.playButton.enabled = NO;
+//
+//
+//    self.scrollView.minimumZoomScale = MinimumZoomScale;
+//    self.scrollView.maximumZoomScale = MaximumZoomScale;
+//    self.scrollView.backgroundColor = [UIColor clearColor];
+//    self.scrollView.delegate = self;
+//    self.scrollView.showsHorizontalScrollIndicator = NO;
+//    self.scrollView.showsVerticalScrollIndicator = NO;
+//    self.scrollView.userInteractionEnabled = YES;
+//    self.scrollView.multipleTouchEnabled = YES;
+//    self.scrollView.pagingEnabled = NO;
+//
+//    if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂锛屽彧鏄剧ず楹﹀厠椋庡拰寮�闂ㄦ寜閽�
+//        self.captureButton.hidden=YES;
+//        self.localRecordButton.hidden=YES;
+//
+//        [self.controlButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal];
+//    }
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
+    self.navigationController.navigationBar.hidden = NO;//2021-02-01
+    self.ptzViewContraint.constant = self.bottomView.frame.size.height;
+    self.talkViewContraint.constant = self.ptzViewContraint.constant;
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+//    self.navigationController.navigationBarHidden = YES;//2021-02-01 娣诲姞闅愯棌navigationBarHidden
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil];
+    //缁撴潫鏈湴褰曞儚
+    if(self.localRecordButton.selected)
+    {
+        [_player stopLocalRecordExt:^(BOOL ret) {
+            
+            NSLog(@"%d", ret);
+            
+            [_recordTimer invalidate];
+            _recordTimer = nil;
+            self.localRecordLabel.hidden = YES;
+            [self saveRecordToPhotosAlbum:_filePath];
+            _filePath = nil;
+        }];
+    }
+    
+    NSLog(@"viewWillDisappear");
+    [super viewWillDisappear:animated];
+}
+
+- (void)viewDidDisappear:(BOOL)animated
+{
+    NSLog(@"viewDidDisappear");
+    [super viewDidDisappear:animated];
+    [_player stopRealPlay];
+    if (_talkPlayer)
+    {
+        [_talkPlayer stopVoiceTalk];
+    }
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+/*鑾峰彇璁惧淇℃伅
+ */
+-(void)getDeviceInfo{
+    //鑾峰彇璁惧淇℃伅
+    [EZOpenSDK getDeviceInfo:self.deviceSerial completion:^(EZDeviceInfo *deviceInfo, NSError *error) {
+        if(error)
+        {
+            NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触");
+            return;
+        }
+        if (deviceInfo) {
+            self.deviceInfo=deviceInfo;
+            [self initialData];
+        }
+    }];
+}
+
+/*鍒濆鍖栫浉鍏虫暟鎹�
+ */
+-(void)initialData{
     self.talkButton.enabled = self.deviceInfo.isSupportTalk;
     self.controlButton.enabled = self.deviceInfo.isSupportPTZ;
     self.captureButton.enabled = NO;
@@ -225,56 +418,64 @@
     if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂锛屽彧鏄剧ず楹﹀厠椋庡拰寮�闂ㄦ寜閽�
         self.captureButton.hidden=YES;
         self.localRecordButton.hidden=YES;
+        self.controlButton.hidden=YES;
         
-        [self.controlButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal];
-    }
-}
-
-- (void)viewDidAppear:(BOOL)animated {
-    [super viewDidAppear:animated];
-    self.navigationController.navigationBar.hidden = NO;//2021-02-01
-    self.ptzViewContraint.constant = self.bottomView.frame.size.height;
-    self.talkViewContraint.constant = self.ptzViewContraint.constant;
-}
-
-- (void)viewWillDisappear:(BOOL)animated {
-//    self.navigationController.navigationBarHidden = YES;//2021-02-01 娣诲姞闅愯棌navigationBarHidden
-    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil];
-    //缁撴潫鏈湴褰曞儚
-    if(self.localRecordButton.selected)
-    {
-        [_player stopLocalRecordExt:^(BOOL ret) {
-            
-            NSLog(@"%d", ret);
-            
-            [_recordTimer invalidate];
-            _recordTimer = nil;
-            self.localRecordLabel.hidden = YES;
-            [self saveRecordToPhotosAlbum:_filePath];
-            _filePath = nil;
+        //閲嶈鎺у埗鍙版寜閽�
+        _unlockButton=[[HDLEZButton alloc] init];
+        [self.bottomView addSubview:_unlockButton];
+        [_unlockButton mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.top.left.right.bottom.equalTo( self.controlButton);
         }];
+        [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock_disable"] forState:UIControlStateNormal];
+        [_unlockButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal];
+        [_unlockButton dd_centerImageAndTitle];
+        [_unlockButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
+        _unlockButton.titleLabel.font=[UIFont systemFontOfSize:14];
+        [_unlockButton addTarget:self action:@selector(unlockDoor) forControlEvents:UIControlEventTouchUpInside];
+        _unlockButton.enabled=NO;
+//        self.controlButton.enabled=YES;
+//        [self.controlButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal];
+//        [self.controlButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal];
     }
+}
+
+/*寮�閿�
+ */
+-(void)unlockDoor{
+    [HDLEZAlertInputView showInputAlertWithtitle:HDLEZLocallizedString(@"device_please_input_door_password") cancleTitle:HDLEZLocallizedString(@"device_temp_cancle") sureTitle:HDLEZLocallizedString(@"device_temp_sure") keyboardType:UIKeyboardTypeASCIICapableNumberPad cancleBlock:^{
+        
+    } sureBlock:^(NSString * _Nonnull content) {
+        HDLEZLog(@"鐐瑰嚮浜嗙‘璁わ細%@",content);
+        [MBProgressHUD showHUDAddedTo:self.view animated:YES];
+        __weak __typeof(self)weakSelf = self;
+        [[EZHttpUtil sharedManager] authLockByHDL:content deviceId:self.deviceId  completion:^(ResponseData * _Nonnull responseData) {
+            if (responseData.success) {
+                [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) {
+                    [MBProgressHUD hideHUDForView:weakSelf.view animated:YES];
+                    if (responseData.success) {
+                        [weakSelf.view makeToast:HDLEZLocallizedString(@"device_open_success")
+                                        duration:1.5
+                                        position:@"center"];
+
+                    }else{
+                        [weakSelf.view makeToast:responseData.message
+                                        duration:1.5
+                                        position:@"center"];
+                    }
+                }];
+            }else{
+                [MBProgressHUD hideHUDForView:weakSelf.view animated:YES];
+                [weakSelf.view makeToast:responseData.message
+                                duration:1.5
+                                position:@"center"];
+            }
+        }];
+
+    }];
     
-    NSLog(@"viewWillDisappear");
-    [super viewWillDisappear:animated];
-}
 
-- (void)viewDidDisappear:(BOOL)animated
-{
-    NSLog(@"viewDidDisappear");
-    [super viewDidDisappear:animated];
-    [_player stopRealPlay];
-    if (_talkPlayer)
-    {
-        [_talkPlayer stopVoiceTalk];
-    }
-}
 
-- (void)didReceiveMemoryWarning {
-    [super didReceiveMemoryWarning];
-    // Dispose of any resources that can be recreated.
 }
-
 /*
 #pragma mark - Navigation
 
@@ -506,6 +707,11 @@
 - (void)player:(EZPlayer *)player playPrivateTokenInfo:(EZPMPlayPrivateTokenInfo *)tokenInfo {
     NSLog(@"寮�闂╰oken--->%@", tokenInfo.token);
     self.streamToken=tokenInfo.token;
+    
+    if (!_unlockButton.isEnabled) {
+        [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal];
+        _unlockButton.enabled=YES;
+    }
 }
 #pragma mark - ValidateCode Methods
 
@@ -724,7 +930,7 @@
                       }
                       [weakSelf.player stopRealPlay];
                       
-                      _cameraInfo.videoLevel = type;
+                      weakSelf.cameraInfo.videoLevel = type;
                       if (sender == weakSelf.highButton)
                       {
                           [weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"楂樻竻") forState:UIControlStateNormal];
@@ -812,18 +1018,6 @@
 
 - (IBAction)ptzViewShow:(id)sender
 {
-    if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佽澶囨椂锛屾墽琛屽紑闂�
-        NSString *verifyCode = [[GlobalKit shareKit].deviceVerifyCodeBySerial objectForKey:self.deviceInfo.deviceSerial];
-
-        [[EZHttpUtil sharedManager] authLockByHDL:@"123456" deviceId:self.deviceInfo.deviceSerial verifyCode:verifyCode completion:^(ResponseData * _Nonnull responseData) {
-            NSLog(@"缁堢鎺堟潈缁撴灉锛�%@",responseData.data);
-            [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceInfo.deviceSerial completion:^(ResponseData * _Nonnull responseData) {
-                NSLog(@"寮�闂ㄧ粨鏋滐細%@",responseData.data);
-            }];
-        }];
-        return;
-    }
-    
     self.ptzView.hidden = NO;
     [self.bottomView bringSubviewToFront:self.ptzView];
     self.ptzControlButton.alpha = 0;
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m
index 547eb2d..101a4d0 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m
@@ -230,7 +230,10 @@
 
 - (IBAction)nextAction:(id)sender
 {
-    [self showModeSelect];
+    //鐑偣閰嶇綉
+    [self performSegueWithIdentifier:@"go2APWifiConfig" sender:nil];
+
+//    [self showModeSelect];
 }
 
 @end
diff --git a/EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a b/EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a
index ad3d482..757096f 100644
--- a/EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a
+++ b/EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a
Binary files differ
diff --git a/EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a b/EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a
index 342610d..c526e71 100644
--- a/EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a
+++ b/EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a
Binary files differ
diff --git a/EZSDK/EZSDK/EZSDK.h b/EZSDK/EZSDK/EZSDK.h
index 2ae3791..5afdf36 100644
--- a/EZSDK/EZSDK/EZSDK.h
+++ b/EZSDK/EZSDK/EZSDK.h
@@ -8,13 +8,20 @@
 #import <Foundation/Foundation.h>
 #import "EZDeviceInfo.h"
 
-//璁惧绫诲瀷
-typedef enum {
-    HDLEZDeviceType_Default=0, //榛樿绫诲瀷
-    HDLEZDeviceType_Door=1,//闂ㄩ攣
-}HDLEZDeviceType;
+
+
+@protocol EZSDKDelegate <NSObject>
+
+//娣诲姞璁惧鎴愬姛
+-(void)addDeviceSuccessed;
+
+@end
 
 @interface EZSDK : NSObject
+
+@property (nonatomic, weak) id<EZSDKDelegate> delegate;//浠g悊
+
+
 ///sharedInstance
 + (instancetype)sharedInstance;
 
@@ -40,6 +47,13 @@
  鐩存帴璺宠浆鍒拌悿鐭虫憚鍍忓ご鍒楄〃
  */
 - (void)go2EZvizMonitor;
+
+/**
+ 鐩存帴璺宠浆鍒拌悿鐭虫憚鍍忓ご鍒楄〃(绛涙帀闂ㄩ攣璁惧)
+ @param filterTepes 杩囨护鍨嬪彿鏁扮粍
+ */
+- (void)toEZDeviceListViewWithFilterTypes:(NSArray*)filterTepes;
+
 /**
  璺宠浆娣诲姞娣诲姞璁惧
  */
@@ -47,17 +61,27 @@
 
 /**
  璺宠浆娣诲姞娣诲姞璁惧
- @param deviceType 璁惧绫诲瀷
+ @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
  */
-- (void)addEzvizMonitorWithDeviceType:(HDLEZDeviceType)deviceType;
+- (void)addEzvizMonitorWithDeviceType:(NSString *)deviceType;
 
 /**
  鏌ョ湅瑙嗛鐩戞帶鐩存挱
  */
 - (void)Play:(EZDeviceInfo*)deviceInfo;
+
 /// 鎸囧畾搴忓垪鍙� 鏌ョ湅瑙嗛鐩戞帶鐩存挱
 /// @param deviceSerial 搴忓垪鍙�
 - (void)PlayWithDeviceSerial:(NSString *)deviceSerial;
+
+/**
+ 鏍规嵁spk杩涘叆闂ㄩ攣瑙嗛
+ @param deviceSerial 搴忓垪鍙�
+ @param deviceId 璁惧id
+ @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
+ */
+-(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType;
+
 /**
  鎵撳紑鎽勫儚澶磋缃〉闈�
  */
@@ -75,5 +99,10 @@
  */
 - (void)toTemPassView:(NSString*)deviceId;
 
+/**璁惧鍘嗗彶璁板綍椤�
+ @param deviceId 璁惧id
+ */
+- (void)toDeviceMsgListView:(NSString*)deviceId;
+
 
 @end
diff --git a/EZSDK/EZSDK/EZSDK.m b/EZSDK/EZSDK/EZSDK.m
index 81b7859..d7c2c54 100644
--- a/EZSDK/EZSDK/EZSDK.m
+++ b/EZSDK/EZSDK/EZSDK.m
@@ -20,8 +20,7 @@
 #import "EZHCNetDeviceSDK.h"
 #import "EZMessagePhotoViewController.h"
 #import "HDLEZVisitorRecordViewController.h"
-
-
+#import "HDLEZDeviceMsgListViewController.h"
 
 @implementation EZSDK
 
@@ -120,16 +119,34 @@
  */
 -(void)go2EZvizMonitor
 {
-    //    NSLog(@"go2EZvizMonitor");
+//    [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default;
+//    //    NSLog(@"go2EZvizMonitor");
+//    //鑾峰彇EZMain鐨剆troyboard鏂囦欢
+//    UIStoryboard *ezMainStoryboard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];
+//    //鑾峰彇EZMain.storyboard鐨勫疄渚媀iewController--鑾峰彇鎽勫儚澶村垪琛�
+//    EZDeviceTableViewController *instanceVC = [ezMainStoryboard instantiateViewControllerWithIdentifier:@"EZCameraList"];
+//    //push鎽勫儚澶村垪琛ㄧ殑viewController
+//    [[self getCurrentVC] setNavigationBarHidden:NO];
+//    //        NSLog(@"willpush********");
+//    [[self getCurrentVC] pushViewController:instanceVC animated:YES];
+//    //        NSLog(@"had pushed********");
+    [self toEZDeviceListViewWithFilterTypes:@[@""]];
+}
+
+/**
+ 鐩存帴璺宠浆鍒拌悿鐭虫憚鍍忓ご鍒楄〃(绛涙帀闂ㄩ攣璁惧)
+ @param filterTepes 杩囨护鍨嬪彿鏁扮粍
+ */
+- (void)toEZDeviceListViewWithFilterTypes:(NSArray*)filterTepes{
+    [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default;
     //鑾峰彇EZMain鐨剆troyboard鏂囦欢
     UIStoryboard *ezMainStoryboard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];
     //鑾峰彇EZMain.storyboard鐨勫疄渚媀iewController--鑾峰彇鎽勫儚澶村垪琛�
     EZDeviceTableViewController *instanceVC = [ezMainStoryboard instantiateViewControllerWithIdentifier:@"EZCameraList"];
+    instanceVC.filterTypes=filterTepes;
     //push鎽勫儚澶村垪琛ㄧ殑viewController
     [[self getCurrentVC] setNavigationBarHidden:NO];
-    //        NSLog(@"willpush********");
     [[self getCurrentVC] pushViewController:instanceVC animated:YES];
-    //        NSLog(@"had pushed********");
 }
 
 /**
@@ -147,19 +164,20 @@
 //        //        [UIView dd_showMessage:@"iOS 7.0浠ヤ笅鎵爜鍔熻兘璇疯嚜琛屽疄鐜�"];
 //        NSLog(@"iOS 7.0浠ヤ笅鎵爜鍔熻兘璇疯嚜琛屽疄鐜�");
 //    }
-    [self addEzvizMonitorWithDeviceType:HDLEZDeviceType_Default];
+    [self addEzvizMonitorWithDeviceType:@""];
 }
 
 /**
  璺宠浆娣诲姞娣诲姞璁惧
  @param deviceType 璁惧绫诲瀷
  */
-- (void)addEzvizMonitorWithDeviceType:(HDLEZDeviceType)deviceType{
+- (void)addEzvizMonitorWithDeviceType:(NSString *)deviceType{
+    HDLEZDeviceType type=[deviceType isEqualToString:HDLEZ_DOOR_SPK] ? HDLEZDeviceType_Door : HDLEZDeviceType_Default;
     //    NSLog(@"娣诲姞鎽勫儚澶�");
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
         UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"AddDevice" bundle:nil];
         EZAddByQRCodeViewController *rootViewController = [addDeviceStoryBoard instantiateViewControllerWithIdentifier:@"AddByQRCode"];
-        rootViewController.deviceType=deviceType;
+        rootViewController.deviceType=type;
         [[self getCurrentVC] setNavigationBarHidden:NO];
         [[self getCurrentVC] pushViewController:rootViewController animated:YES];
     } else {
@@ -173,6 +191,7 @@
  */
 -(void)Play:(EZDeviceInfo*)deviceInfo
 {
+    [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default;
     UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];
     EZLivePlayViewController *rootViewController = [addDeviceStoryBoard instantiateViewControllerWithIdentifier:@"EZLivePlayViewController"];
     //        NSLog(@"play--iphone--rootViewController");
@@ -199,6 +218,22 @@
             [self Play:deviceInfo];
         }
     }];
+}
+
+/**
+ 鏍规嵁搴忓垪鍙疯繘鍏ラ棬閿佽棰�
+ @param deviceSerial 搴忓垪鍙�
+ @param deviceId 璁惧id
+ @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
+ */
+-(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType{
+    [GlobalKit shareKit].deviceType=[deviceType isEqualToString:HDLEZ_DOOR_SPK] ? HDLEZDeviceType_Door : HDLEZDeviceType_Default;
+    UIStoryboard *ezMainStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];
+    EZLivePlayViewController *vc = [ezMainStoryBoard instantiateViewControllerWithIdentifier:@"EZLivePlayViewController"];
+    vc.deviceId=deviceId;
+    vc.deviceSerial=deviceSerial;
+    [[self getCurrentVC] setNavigationBarHidden:NO];
+    [[self getCurrentVC] pushViewController:vc animated:YES];
 }
 
 /**
@@ -235,6 +270,17 @@
     [[self getCurrentVC] pushViewController:vc animated:YES];
 }
 
+/**璁惧鍘嗗彶璁板綍椤�
+ @param deviceId 璁惧id
+ */
+- (void)toDeviceMsgListView:(NSString*)deviceId{
+    HDLEZDeviceMsgListViewController *vc=[[HDLEZDeviceMsgListViewController alloc] init];
+    vc.deviceId=deviceId;
+    [[self getCurrentVC] setNavigationBarHidden:YES];
+    [[self getCurrentVC] pushViewController:vc animated:YES];
+
+}
+
 ////
 //-(void)goToEZMessagePhotoVC:(EZAlarmInfo*)alarmInfo{
 //    UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];

--
Gitblit v1.8.0