Skip to content

Add support for SimpliSafe scout indoor camera (device type 21) - #1198

Open
jtmchorse wants to merge 2 commits into
bachya:devfrom
jtmchorse:scout-support
Open

jtmchorse wants to merge 2 commits into
bachya:devfrom
jtmchorse:scout-support

Conversation

@jtmchorse

Copy link
Copy Markdown

Describe what the PR does:

Adds recognition for the SimpliSafe Smart Alarm Wireless Indoor Camera, which the API reports as camera model scout and as sensor device type 21.

  • CameraTypes.SCOUT_CAMERA, mapped from model "scout" in MODEL_TO_TYPE
  • DeviceTypes.SCOUT_CAMERA = 21

Before this change, a system with one of these cameras logs Unknown camera type: scout and Unknown device type: 21 on load (seen in Home Assistant 2026.11 with simplisafe-python 2026.09.0). I checked a captured API response from my own V3 system: the subscription's camera list has an entry with "model": "scout", and the sensors list has a "type": 21 entry whose serial matches that camera's serial (the last 8 characters of its uuid). So type 21 is the same physical camera showing up in the sensors list.

This only maps the types. It does not add live view or video support for scout. These cameras report webRTCProvider: kvs, and I have not tested video_url() against one.

Does this fix a specific issue?

Fixes #1186

Checklist:

  • Confirm that one or more new tests are written for the new functionality.
  • Run tests and ensure everything passes (with 100% test coverage).
  • Update README.md with any new documentation. (Not needed, the docs don't list camera types.)

Tests: new test_scout_camera loads a V3 system with a scout camera added to the subscription and sensor fixtures, checks the camera type and sensor type, and asserts nothing is logged as unknown. test_device_type_21 checks the raw mapping. Fixtures are built from a real capture with identifiers zeroed or redacted. Full suite passes at 100% coverage; ruff and mypy are clean.

The scout model string maps to new CameraTypes.SCOUT_CAMERA. Sensor type
21 is the same camera (its serial matches the camera uuid suffix in a real
API capture), so it gets DeviceTypes.SCOUT_CAMERA. Regression tests use
sanitized fixtures.

Refs bachya#1186
LOCK = 16
OUTDOOR_CAMERA = 17
MOTION_V2 = 20
SCOUT_CAMERA = 21

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small nit: let's keep these members alphabetized.

@codecov

codecov Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (b03f554) to head (5d56e59).

Additional details and impacted files
@@            Coverage Diff            @@
##               dev     #1198   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           16        16           
  Lines         1027      1029    +2     
=========================================
+ Hits          1027      1029    +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support Smart Alarm Wireless Indoor Cameras (scout / suspected device type 21)

2 participants