ezviz.net Library - duanemck/ezviz.net GitHub Wiki

This library is available on Nuget here

This library is inspired by this python library

Usage

Create a client and login

Note: Does not currently support users with 2 factor auth enabled

var client = new EzvizClient("[email protected]", "password");

//To specify the regional API, you can pass in a 3rd optional parameter, the default is "apiieu.ezvizlife.com"

var user = await client.Login();

Once logged in, the client can be used to do the following:

Get all cameras and act on them

var cameras = await client.GetCameras();

foreach (var camera in cameras)
{
  // Get most recent 10 alarms
  var alarms = await camera.GetAlarms();

  //Get most recent alarm from camera (null if none)
  var alarm = await camera.GetLastAlarm();

  // Arm / disarm camera
  await camera.Arm();
  await camera.Disarm();

  //Trigger alarm
  await camera.TriggerAlarm();

  //Stop alarm
  await camera.StopAlarm();

  // Many more actions and properties, check the Intelisense or see bottom of this page
}

Get alarm snapshot image (Base64)

var camera = await client.GetCameras().FirstOrDefault();
var alarm = await camera.GetLastAlarm();

var imageBase64 = client.GetAlarmImageBase64(alarm); 

Arm/Disarm all cameras

var mode = client.GetDefenceMode();

//Arm all cameras
await client.SetDefenceMode(DefenceMode.Away);

//Disarm all cameras
await client.SetDefenceMode(DefenceMode.Home);

Camera properties and methods

  /// <summary>
  /// Represents an ezviz camera
  /// </summary>
  public class Camera
  {
      /// <summary>
      /// ezviz assigned unique serial number
      /// </summary>
      public string SerialNumber { get; }

      /// <summary>
      /// User defined camera name
      /// </summary>
      public string Name { get; }

      /// <summary>
      /// ezviz model name
      /// </summary>
      public string DeviceType { get; }

      /// <summary>
      /// IP on the user's local network
      /// </summary>
      public string? LocalIp { get; }
      
      /// <summary>
      /// Alarm intensity level
      /// </summary>
      public AlarmSound? AlarmSoundLevel { get; }

      /// <summary>
      /// Is an armed/disarmed schedule enabled for this camera
      /// </summary>
      public bool AlarmScheduleEnabled { get; }

      /// <summary>
      /// Is a firmware upgrade available
      /// </summary>
      public bool UpgradeAvailable { get; }

      /// <summary>
      /// Is a firmware upgrade in progress
      /// </summary>
      public bool UpgradeInProgress { get; }

      /// <summary>
      /// How far along is the firmware upgrade
      /// </summary>
      public decimal UpgradePercent { get; }

      /// <summary>
      /// Is the camera in sleep mode
      /// </summary>
      public bool Sleeping { get; }

      /// <summary>
      /// Is privacy mode enabled?
      /// </summary>
      public bool PrivacyModeEnabled { get; }

      /// <summary>
      /// Is audio enabled?
      /// </summary>
      public bool AudioEnabled { get; }

      /// <summary>
      /// Is the infrared LED enabled
      /// </summary>
      public bool InfraredEnabled { get; }

      /// <summary>
      /// Is the status LED enabled
      /// </summary>
      public bool StateLedEnabled { get; }

      /// <summary>
      /// Is mobile tracking enabled
      /// </summary>
      public bool MobileTrackingEnabled { get; }

      /// <summary>
      /// Is the camera armed - i.e. motion detection results in notification and siren (depending on configuration)
      /// </summary>
      public bool Armed { get; }

      /// <summary>
      /// Should the API notify users when this camera goes offline
      /// </summary>
      public bool NotifyOffline { get; }

      /// <summary>
      /// Is the RTSP stream encrypted with a password
      /// </summary>
      public bool IsEncrypted { get; }

      /// <summary>
      /// Internet IP, not sure how to use it yet
      /// </summary>
      public string? WANIp { get; }

      /// <summary>
      /// Unique network address
      /// </summary>
      public string? MacAddress { get; }

      /// <summary>
      /// Port used for local RTSP
      /// </summary>
      public int? LocalRtspPort { get; }
      
      /// <summary>
      /// The channel this camera is on
      /// </summary>
      public int? SupportedChannels { get; }

      /// <summary>
      /// For battery operated cameras, the battery level
      /// </summary>
      public int? BatteryLevel { get; }
      
      /// <summary>
      /// PiR status
      /// </summary>
      public int PirStatus { get; }

      /// <summary>
      /// Sensitivty of motion detection
      /// </summary>
      public DetectionSensitivityLevel DetectionSensitivity { get;}

      /// <summary>
      /// Camera is online with the ezviz API
      /// </summary>
      public bool? Online { get; }
            
      /// <summary>
      /// SD Card space remaining in MB
      /// </summary>
      public decimal DiskCapacityMB { get; }
      
      /// <summary>
      /// SD Card space remaining in GB
      /// </summary>
      public decimal DiskCapacityGB { get; }

      /// <summary>
      /// Motion detection method (human/vehicle/both/regular motion)
      /// </summary>
      public AlarmDetectionMethod AlarmDetectionMethod { get; }
      
      /// <summary>
      /// Image filters being applied
      /// </summary>
      public DisplayMode ImageDisplayMode { get; }

      /// <summary>
      /// Most recent alarm raised on this camera
      /// </summary>
      /// <returns></returns>
      public async Task<MotionAlarm?> GetLastAlarm();

      /// <summary>
      /// Update the motion detection sensitivity level
      /// </summary>
      /// <param name="level"></param>
      /// <returns></returns>
      public async Task SetDetectionSensibility(DetectionSensitivityLevel level);

      /// <summary>
      /// Arm the motion detection alert and siren on the camera
      /// </summary>
      /// <returns></returns>
      public async Task Arm();

      /// <summary>
      /// Disarm the motion detection alert and siren on the camera
      /// </summary>
      /// <returns></returns>
      public async Task Disarm();

      /// <summary>
      /// Set siren sound intensity
      /// </summary>
      /// <param name="soundLevel"></param>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task SetAlarmSoundLevel(AlarmSound soundLevel, bool enabled);

      /// <summary>
      /// Get recent alarms for this camera
      /// </summary>
      /// <returns></returns>
      public async Task<ICollection<Alarm>> GetAlarms();

      /// <summary>
      /// Toggle audio enabled/disabled
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task ToggleAudio(bool enabled);

      /// <summary>
      /// Toggle status LED
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task ToggleLed(bool enabled);

      /// <summary>
      /// Toggle infrared LED
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task ToggleInfrared(bool enabled);

      /// <summary>
      /// Toggle the privacy mode
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task TogglePrivacyMode(bool enabled);

      /// <summary>
      /// Toggle if camera can sleep
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task ToggleSleepMode(bool enabled);

      /// <summary>
      /// Toggle mobile tracking of camera
      /// </summary>
      /// <param name="enabled"></param>
      /// <returns></returns>
      public async Task ToggleMobileTracking(bool enabled);

      /// <summary>
      /// Set the method used to detect motion
      /// </summary>
      /// <param name="method"></param>
      /// <returns></returns>
      public async Task SetAlarmDetectionMethod(AlarmDetectionMethod method);

      /// <summary>
      /// Set image filters
      /// </summary>
      /// <param name="mode"></param>
      /// <returns></returns>
      public async Task SetImageDisplayMode(DisplayMode mode);

      /// <summary>
      /// Make the alarm siren sound and the light flash
      /// </summary>
      public async Task TriggerAlarm();

      /// <summary>
      /// Stop an alarming camera
      /// </summary>
      public async Task StopAlarm();

  }
⚠️ **GitHub.com Fallback** ⚠️