A Home Assistant custom integration for BTicino Classe 100X and 300X video intercom systems. Monitor calls, control door locks, manage staircase lights, and view event snapshots — all from your Home Assistant dashboard.
Communicates with the BTicino/Netatmo cloud API via the pybticino library. Uses a persistent WebSocket connection for real-time call notifications and periodic polling for state synchronization.
Important
This integration works only with Netatmo cloud-connected devices (the ones managed via the Home + Security app).
- Android: Home + Security on Google Play
- iOS: Home + Security on App Store
If your device uses the old "BTicino Door Entry" app, it is not compatible. BTicino has announced migration to the Netatmo platform — check with BTicino support for your device's status.
| Entity type | What it does |
|---|---|
| Lock | Control door locks (BNDL modules). Open/close with optimistic state and automatic relock timer. |
| Binary Sensor | Real-time incoming call detection (BNEU external units). Auto-off after 30 seconds. |
| Sensor — Last Event | Shows the last call event type (incoming, answered elsewhere, terminated) with timestamp and snapshot URLs. |
| Sensor — Last Call Timestamp | Timestamp sensor for the most recent completed call. |
| Sensor — Bridge Diagnostics | Uptime, WiFi strength, WebSocket status, local IP, last seen, last config update. |
| Light | Staircase lights (BNSL modules). On/off control. |
| Camera | Last event snapshot and vignette images, fetched from the Netatmo cloud. |
The integration fires logbook events for automations:
bticino_intercom_incoming_call— someone rang the doorbellbticino_intercom_answered_elsewhere— call answered on another devicebticino_intercom_terminated— call ended
Some BTicino installations use the lighting relay instead of a dedicated lock module. Enable "Use lighting relay as lock" in the integration options to expose the light module as a lock entity.
Prerequisites: You need HACS installed in your Home Assistant. If you don't have it yet, follow the HACS installation guide first.
Step 1 — Add the repository to HACS:
Click the button above to add the repository. This opens HACS in your Home Assistant and adds the BTicino Intercom repository. If the button doesn't work, add it manually:
- Open HACS > Integrations > click the three-dot menu (top right) > Custom repositories
- Paste
https://github.com/k-the-hidden-hero/bticino_intercomas the URL - Select Integration as the category and click Add
Step 2 — Download the integration:
- In HACS, find BTicino Intercom in the integration list (search if needed)
- Click on it, then click Download (bottom right)
- Select the latest version and confirm
- Restart Home Assistant
Step 3 — Add the integration to Home Assistant:
Click the button above to start the setup, or go to Settings > Devices & Services > + Add Integration and search for BTicino Intercom.
- Download the latest release zip file
- Extract the
custom_components/bticino_intercomfolder into your Home Assistantconfig/custom_components/directory - Restart Home Assistant
During setup you will be asked to enter your Netatmo account email and password. If you have multiple homes, you'll select the one with your intercom. You can also enable "Light as Lock" if your setup uses the lighting relay for the door.
Tip
We strongly recommend creating a dedicated Netatmo account for Home Assistant instead of using your personal account. See the section below for why and how.
The BTicino/Netatmo cloud API has limitations on concurrent sessions. If you use the same account on both the Home + Security app and Home Assistant, you may experience:
- WebSocket disconnections
- Delayed notifications
- Intermittent API errors
Gmail (and Google Workspace) supports address aliases using the + character. This lets you create a new Netatmo account without needing a separate email address.
For example, if your email is yourname@gmail.com, you can use:
yourname+homeassistant@gmail.com
All emails sent to this address will arrive in your existing yourname@gmail.com inbox. No setup needed — it works automatically. (Learn more about Gmail aliases)
Step by step:
- Create a new Netatmo account at my.netatmo.com using your
+homeassistantalias email - Set a strong password for this account
- Open the Home + Security app on your phone (logged in with your main account)
- Go to your Home settings and invite the new alias email as a member
- Accept the invitation by logging into the Home + Security app with the new account (you can use a second device, or log out and back in)
- Use the new account credentials when setting up the BTicino Intercom integration in Home Assistant
Now your phone app and Home Assistant use separate accounts, each with their own session, and both have full access to the same home.
BTicino Intercom <---> Netatmo Cloud <---> Home Assistant
|
+-----------+
| REST API | Polling every 5 min (topology, status, events)
+-----------+
| WebSocket | Real-time push (call events, state changes)
+-----------+
The integration maintains a persistent WebSocket connection to the Netatmo push server (wss://app-ws.netatmo.net/ws/). This is the same mechanism used by the official Android/iOS app to receive real-time notifications.
When someone rings your doorbell, the event is delivered via WebSocket in under a second. The integration processes it and immediately updates the binary sensor, fires a logbook event, and dispatches a signal for automations.
As a fallback, the integration also polls the API every 5 minutes. If the WebSocket connection drops, it automatically reconnects with an exponential backoff strategy.
To keep the connection alive, the integration re-subscribes every hour with a refreshed OAuth token on the existing connection — the same approach used by the official Android app. This prevents disconnections from token expiry.
A watchdog monitors WebSocket health: if no messages are received for 10 minutes, the connection is flagged as stale and forcefully reconnected. During temporary cloud outages, entities remain available with their last known state instead of going unavailable.
- Startup: authenticates via OAuth2, fetches home topology, creates entities
- Polling (every 5 min): refreshes module status, event history, bridge diagnostics
- WebSocket push: real-time call events (ring, answer, terminate) update entities immediately
- Actions: lock/unlock and light on/off send commands via the REST API
Add to your configuration.yaml:
logger:
logs:
custom_components.bticino_intercom: debug
pybticino: debug| Problem | Cause | Solution |
|---|---|---|
| WebSocket errors at startup | Normal during first connection attempts | Wait 1-2 minutes, the integration retries automatically |
| "Something is blocking startup" | Other integrations (not this one since v1.8.1) | Unrelated to bticino_intercom |
| Delayed call notifications | WebSocket was disconnected | Check debug logs; the watchdog should reconnect within 10 minutes |
| Authentication failed | Wrong credentials or expired token | Re-enter credentials in the integration settings |
| No entities created | Modules not found in topology | Check that your intercom appears in the Home + Security app |
- Home Assistant 2026.3 or later
- Home Assistant 2025.x or later (Python 3.13+)
- A BTicino Classe 100X or 300X connected to the Netatmo cloud
- pybticino >= 1.7.1 (installed automatically)
Found a bug or want a feature? Open an issue.
Pull requests are welcome. The project uses:
- ruff for linting and formatting
- pytest with
pytest-homeassistant-custom-componentfor testing (87 tests) - bandit for security scanning
- CI runs on every push and PR
MIT License. See LICENSE for details.