@jackietreeh0rn/homebridge-blink-security
v1.2.0
Published
Homebridge plugin for Amazon Blink security cameras
Downloads
1,652
Maintainers
Readme
Supported Devices
| Device | Model Type | Capabilities |
| ------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 📹 Blink Outdoor / Indoor | default, catalina | Live view (IMMI)Motion sensorSnapshotsTemperatureBattery levelNight visionClip recordingPrivacy modeMotion enable/disable |
| 📹 Blink Mini | owl | Live view (IMMI)Motion sensorSnapshotsClip recordingPrivacy modeMotion enable/disable |
| 📹 Blink Mini 2 | hawk | Live view (IMMI)Motion sensorSnapshotsClip recordingPrivacy modeMotion enable/disable |
| 💡 Blink Wired Floodlight | superior_owl | Live view (IMMI)Motion sensorSnapshotsClip recordingPrivacy modeMotion enable/disable |
| 🔔 Blink Video Doorbell | lotus | Live view (IMMI)Motion sensorSnapshotsDoorbell press notificationClip recordingPrivacy modeMotion enable/disable |
| 🔊 Blink Siren | siren | On/off switch |
Features
- Live view — IMMI streaming via ffmpeg with automatic keepalive
- Security system — Arm/disarm per network, with optional manual arm switch
- Multi-network — Supports multiple sync modules, each with independent arm/disarm
- Motion detection — Configurable polling interval with debounce
- Motion enable/disable — Per-camera switch to turn motion detection on or off
- Snapshots — Periodic thumbnail refresh with caching and retry
- Battery — Battery level and low-battery alerts (Outdoor/Indoor models)
- Temperature — Ambient temperature sensor (Outdoor/Indoor models)
- Doorbell press — Push notifications on doorbell button press
- Privacy mode — Per-camera switch to suppress snapshots when disarmed
- Night vision — IR illuminator toggle (Outdoor/Indoor models)
- Clip recording — Trigger a clip recording via momentary switch
- Audio — One-way audio (OPUS / AAC-ELD)
- OAuth 2.0 + PKCE — Token refresh and persistent sessions across restarts
- 2FA — One-time PIN verification for Blink's two-factor auth
- Snapshot fallback — Streams the last thumbnail when live view is unavailable
- Stale accessory cleanup — Removes devices no longer on your Blink account
- Retry with backoff — Automatic retry on network errors and rate limiting
Installation
Install Homebridge, add it to Apple Home, then install and configure Homebridge Blink Security.
Recommended
Open the Homebridge UI.
Open the Plugins tab, search for
homebridge-blink-security, and install the plugin.Configure your Blink credentials through the settings panel.
Manual
Install the plugin using NPM:
npm i -g @jackietreeh0rn/homebridge-blink-securityConfigure the BlinkSecurity platform in
~/.homebridge/config.jsonas shown inconfig.example.json.Start Homebridge:
homebridge -D
2FA Setup
Blink requires two-factor authentication on first login:
- Configure your
usernameandpasswordand restart Homebridge - Blink will send a verification code to your email/phone
- Add the code to the
pinfield in config and restart Homebridge - After successful verification, remove the
pinfield — the session is persisted
Configuration
| Property | Type | Default | Description |
| ---------------------------------- | ------- | ---------- | --------------------------------------------- |
| username | string | required | Blink account email |
| password | string | required | Blink account password |
| pin | string | | 2FA verification code (only needed once) |
| hide-alarm | boolean | false | Hide the SecuritySystem accessory |
| hide-manual-arm-switch | boolean | false | Hide the manual arm/disarm switch |
| hide-temperature-sensor | boolean | false | Hide temperature sensors on cameras |
| hide-enabled-switch | boolean | false | Hide motion enabled/disabled switch |
| hide-privacy-switch | boolean | false | Hide privacy mode switch |
| enable-liveview | boolean | true | Enable IMMI live view streaming |
| disable-thumbnail-refresh | boolean | false | Disable automatic thumbnail refresh |
| camera-thumbnail-refresh-seconds | integer | 3600 | Thumbnail refresh interval in seconds |
| camera-status-polling-seconds | integer | 30 | Status polling interval in seconds |
| camera-motion-polling-seconds | integer | 15 | Motion detection polling interval in seconds |
| logging | string | | "verbose" or "debug" for extended logging |
| enable-startup-diagnostic | boolean | false | Log diagnostic info on startup |
Development
Prerequisites
- Node.js 18.20.4+, 20.18.0+, 22.10.0+, or 24.0.0+
- Homebridge 1.8.0+ or 2.0.0-beta+
Setup
npm install
npm run build
npm linkWatch Mode
Automatically recompiles and restarts Homebridge on source changes:
npm run watchThis runs a local Homebridge instance in debug mode using the config at ./test/hbConfig/. Stop any other Homebridge instances first to avoid port conflicts. The watch behavior can be adjusted in nodemon.json.
Linting & Formatting
npm run lint # check for lint errors
npm run lint:fix # auto-fix lint errors
npm run prettier # check formatting
npm run format # auto-fix formattingCommits must follow Conventional Commits — enforced by pre-commit hooks via commitlint and husky.
Troubleshooting
If you run into issues, check the Homebridge troubleshooting wiki first. If the problem persists, open an issue with as much detail as possible.
Contributing
See CONTRIBUTING.md for guidelines on bug reports, feature requests, and code contributions.
Useful Resources
- MattTW/BlinkMonitorProtocol — Blink API documentation
- fronzbot/blinkpy — Python Blink library (Home Assistant)
- Homebridge Developer Documentation
- Apple HomeKit Documentation
License
GNU GENERAL PUBLIC LICENSE, Version 3
Disclaimer
This project is not endorsed by, directly affiliated with, maintained, authorized, or sponsored by Amazon.com, Inc., Immedia Semiconductor, or Apple Inc. All product and company names are the registered trademarks of their original owners. The use of any trade name or trademark is for identification and reference purposes only and does not imply any association with the trademark holder of their product brand.
