Skip to content

Commit

Permalink
New cameras (#160)
Browse files Browse the repository at this point in the history
* Add 4 new cameras:
 Essential Indoor Gen2 HD
 Essential Outdoor Gen2 HD
 Essential Outdoor Gen2 2K
 Essential XL Outdoor Gen2 HD

* Add 1 new camera:
 Essential XL Spotlight

Renamed constants to better reflect Arlo naming.

* Bumped revision...
  • Loading branch information
twrecked authored Sep 4, 2024
1 parent 6fe0d8e commit 1b823cc
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 54 deletions.
8 changes: 8 additions & 0 deletions changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
0.8.0.10
Added some missing cameras.
Essential Indoor Gen2 HD
Essential Outdoor Gen2 HD
Essential Outdoor Gen2 2K
Essential XL Outdoor Gen2 HD
Essential XL Spotlight
Renamed some constants.
0.8.0.9
Fix setup.py [thanks @jamesoff]
0.8.0.8
Expand Down
42 changes: 26 additions & 16 deletions pyaarlo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,24 @@
BLANK_IMAGE,
DEVICES_PATH,
FAST_REFRESH_INTERVAL,
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_GO,
MODEL_GO_2,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
PING_CAPABILITY,
SLOW_REFRESH_INTERVAL,
TOTAL_BELLS_KEY,
Expand All @@ -47,7 +52,7 @@

_LOGGER = logging.getLogger("pyaarlo")

__version__ = "0.8.0.9"
__version__ = "0.8.0.10"


class PyArlo(object):
Expand Down Expand Up @@ -236,12 +241,17 @@ def __init__(self, **kwargs):
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_XL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_GO_2
)):
Expand All @@ -254,11 +264,11 @@ def __init__(self, **kwargs):
or dtype == "arloq"
or dtype == "arloqs"
or device.get("modelId").startswith((
MODEL_GO,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL
MODEL_GO,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL
))
):
self._cameras.append(ArloCamera(dname, self, device))
Expand Down
17 changes: 10 additions & 7 deletions pyaarlo/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,16 @@
MODE_NAME_TO_ID_KEY,
MODE_UPDATE_INTERVAL,
MODEL_BABY,
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_GO,
MODEL_HUB,
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
PING_CAPABILITY,
RESOURCE_CAPABILITY,
Expand Down Expand Up @@ -566,13 +567,14 @@ def has_capability(self, cap):

# Don't ping these devices ever.
if self.model_id.startswith((
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
)):
return False

Expand All @@ -593,7 +595,8 @@ def has_capability(self, cap):
# Not all devices need (or want) to get their resources queried.
if self.model_id.startswith((
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_ESSENTIAL
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
)):
return False
return True
Expand Down
67 changes: 46 additions & 21 deletions pyaarlo/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,24 @@
MEDIA_UPLOAD_KEYS,
MIRROR_KEY,
MODEL_BABY,
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_PRO_2,
MODEL_PRO_3,
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_ULTRA,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_GO,
MOTION_DETECTED_KEY,
Expand Down Expand Up @@ -1363,7 +1368,8 @@ def has_capability(self, cap):
if cap in (BATTERY_KEY,):
if self.model_id.startswith((
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
)):
return False
else:
Expand All @@ -1374,10 +1380,15 @@ def has_capability(self, cap):
return True
if cap in (AUDIO_DETECTED_KEY,):
if self.model_id.startswith((
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_PRO_2,
MODEL_PRO_3,
MODEL_PRO_3_FLOODLIGHT,
Expand All @@ -1392,24 +1403,33 @@ def has_capability(self, cap):
return True
if cap in (SIREN_STATE_KEY,):
if self.model_id.startswith((
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_PRO_3,
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_ULTRA,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
)):
return True
if cap in (SPOTLIGHT_KEY,):
if self.model_id.startswith((
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_PRO_3,
MODEL_PRO_4,
MODEL_PRO_5,
Expand All @@ -1432,14 +1452,19 @@ def has_capability(self, cap):
MODEL_PRO_3_FLOODLIGHT,
MODEL_PRO_4,
MODEL_PRO_5,
MODEL_ESSENTIAL,
MODEL_ESSENTIAL_XL,
MODEL_ESSENTIAL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_SPOTLIGHT,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD,
MODEL_ESSENTIAL_OUTDOOR_GEN2_2K,
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MODEL_ESSENTIAL_INDOOR,
MODEL_ESSENTIAL_INDOOR2,
MODEL_ESSENTIAL_INDOOR_GEN2_2K,
MODEL_ESSENTIAL_INDOOR_GEN2_HD,
MODEL_GO,
)):
return False
Expand Down
18 changes: 13 additions & 5 deletions pyaarlo/constant.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,15 +277,23 @@
MODEL_ULTRA = "VMC5040"
MODEL_BABY = "ABC1000"

MODEL_ESSENTIAL = "VMC2030"
MODEL_ESSENTIAL_SPOTLIGHT = "VMC2030"
MODEL_ESSENTIAL_XL_SPOTLIGHT = "VMC2032"

MODEL_ESSENTIAL_INDOOR = "VMC2040"
MODEL_ESSENTIAL_INDOOR2 = "VMC3060"
MODEL_ESSENTIAL_XL = "VMC3052"
MODEL_ESSENTIAL_INDOOR_GEN2_2K = "VMC3060"
MODEL_ESSENTIAL_INDOOR_GEN2_HD = "VMC2060"

MODEL_ESSENTIAL_OUTDOOR_GEN2_2K = "VMC3050"
MODEL_ESSENTIAL_OUTDOOR_GEN2_HD = "VMC2050"
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_2K = "VMC3052"
MODEL_ESSENTIAL_XL_OUTDOOR_GEN2_HD = "VMC2052"

MODEL_ESSENTIAL_VIDEO_DOORBELL = "AVD2001"

MODEL_WIRED_VIDEO_DOORBELL = "AVD1001"
MODEL_WIRED_VIDEO_DOORBELL2_HD = "AVD3001"
MODEL_WIRED_VIDEO_DOORBELL2_2K = "AVD4001"
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K = "AVD4001"
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD = "AVD3001"

MODEL_GO = "VML4030"
MODEL_GO_2 = "VML2030"
Expand Down
8 changes: 4 additions & 4 deletions pyaarlo/doorbell.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
CHIMES_KEY,
CONNECTION_KEY,
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL,
MOTION_DETECTED_KEY,
SIGNAL_STR_KEY,
Expand Down Expand Up @@ -93,8 +93,8 @@ def resource_type(self):
def is_video_doorbell(self):
return self.model_id.startswith((
MODEL_WIRED_VIDEO_DOORBELL,
MODEL_WIRED_VIDEO_DOORBELL2_HD,
MODEL_WIRED_VIDEO_DOORBELL2_2K,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_HD,
MODEL_WIRED_VIDEO_DOORBELL_GEN2_2K,
MODEL_ESSENTIAL_VIDEO_DOORBELL
))

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def readme():
setup(

name='pyaarlo',
version='0.8.0.9',
version='0.8.0.10',
packages=['pyaarlo'],

python_requires='>=3.7',
Expand Down

0 comments on commit 1b823cc

Please sign in to comment.