ezviz.net Library - duanemck/ezviz.net GitHub Wiki
This library is available on Nuget here
This library is inspired by this python library
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:
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
}
var camera = await client.GetCameras().FirstOrDefault();
var alarm = await camera.GetLastAlarm();
var imageBase64 = client.GetAlarmImageBase64(alarm);
var mode = client.GetDefenceMode();
//Arm all cameras
await client.SetDefenceMode(DefenceMode.Away);
//Disarm all cameras
await client.SetDefenceMode(DefenceMode.Home);
/// <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();
}