Skip to content

vjt/ha-verisure-italy

Repository files navigation

Verisure Italy

Verisure Italy for Home Assistant

Leggi il post sul blog per la storia completa: perché l'ho costruito, come funziona e come installarlo.

Home Assistant custom component for Verisure Italy alarm systems.

Talks directly to customers.verisure.it/owa-api/graphql. Fully replaces the Verisure mobile app for alarm control and camera monitoring.

Not affiliated with Verisure Group or Securitas Direct.

Verisure Dashboard

Features

  • Alarm control — arm home (partial+perimeter), arm away (total+perimeter), disarm
  • Force arm — open zone detection with one-tap force-arm and cancel buttons on the dashboard
  • Cameras — auto-discovered, parallel on-demand capture with per-camera and capture-all buttons
  • Auto-managed dashboard — Lovelace dashboard auto-populated with alarm panel, camera grid, and capture buttons
  • Passive polling via xSStatus — no panel ping, no timeline spam
  • Configurable — poll interval, operation timeout, and poll delay tunable from the UI
  • Config flow with 2FA/OTP support

Installation (HACS)

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

Or manually:

  1. Open HACS in Home Assistant
  2. Click ... (top right) → Custom repositories
  3. Add https://github.com/vjt/ha-verisure-italy as Integration
  4. Search for "Verisure Italy" and install
  5. Restart Home Assistant
  6. Go to Settings → Devices & Services → Add Integration → Verisure Italy

The API client (verisure-italy) is installed automatically from PyPI.

Setup

Step-by-step setup screenshots

1. Find the integration

Search for Verisure Italy

2. Enter credentials

Login

3. Select phone for 2FA

Phone selection

4. Enter SMS code

SMS code

5. Devices are created

Devices created

6. Integration page

Integration page

Dashboard

The integration automatically creates a Verisure dashboard in the sidebar on setup. It's populated with the alarm panel, camera grid, and capture buttons based on discovered entities. The dashboard updates itself on every integration reload and is removed when the integration is unloaded.

Alarm State Mapping

Panel State Proto HA State Action
Disarmed D Disarmed disarm
Partial + Perimeter B Armed Home arm_home
Total + Perimeter A Armed Away arm_away
Perimeter only E Armed Custom Bypass display only
Partial (no peri) P Armed Custom Bypass display only
Total (no peri) T Armed Custom Bypass display only

Entity IDs

Entity Example ID
Alarm panel alarm_control_panel.verisure_alarm
Camera camera.verisure_fotocucina
Capture button button.verisure_fotocucina_capture
Capture all button.verisure_capture_all_cameras
Force arm button.verisure_force_arm
Cancel force arm button.verisure_cancel_force_arm

Force Arm

A forgotten open window shouldn't leave your house unprotected. Verisure panels refuse to arm when a zone is open — but an unarmed alarm is worse than an armed one with exceptions. This integration detects the blocked arming and lets you force-arm with one tap, or automate it entirely so leaving the house always arms the alarm.

When arming fails because a zone is open, the integration:

  1. Shows an alert banner on the dashboard listing the open zones
  2. Fires a verisure_italy_arming_exception event (for automations)
  3. Makes the Force Arm and Cancel buttons available

Force Arm dashboard

Tap Force Arm to arm anyway, bypassing the open zones. Tap Cancel to abort. The buttons disappear automatically once used or after 2 minutes.

For full automation, use the auto force-arm example to bypass open zones automatically when leaving home — no manual intervention needed.

Note: Force arm requires an administrator API user. A restricted user will arm regardless of open zones without raising exceptions — and sensors will trip.

Smoke Test

After a Home Assistant update, run the smoke test to verify everything still works:

./scripts/smoke_test.sh

Checks all entities, services, and the dashboard panel are registered and responding. Takes about 3 seconds, does not arm or disarm.

Stability

The integration uses stable HA public APIs for entities (CoordinatorEntity, ButtonEntity, AlarmControlPanelEntity) and is expected to survive HA updates without changes.

The auto-managed dashboard uses LovelaceStorage internals and frontend.async_register_built_in_panel. If a HA update breaks the dashboard, the alarm, cameras, and buttons still work — you just won't get the auto-generated sidebar panel. Build a manual dashboard as a fallback.

The Verisure API (customers.verisure.it) is the real risk factor — GraphQL schema or auth flow changes are outside our control. The API client is a separate package (verisure-italy) to isolate those changes.

Architecture

  • Client library architecture — API client internals, auth flow, state model, exception hierarchy
  • Integration architecture — HA entities, coordinator, force-arm state machine, security model
  • Hacking guide — dev setup, deploy workflow, engineering rules, API gotchas, releasing
  • Example automations — arm on leave, safety net, force-arm, night arm, morning disarm, actionable disarm notification, unknown state alert

Development

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

pytest tests/ -x -q
pyright verisure_italy/ custom_components/
ruff check verisure_italy/ tests/ custom_components/

License

MIT. See LICENSE.

About

My HA interface for Verisure italy

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors