HomeKitLink New Release 0.8.05

A plugin to integration Indigo devices into HomeKit (and Siri)
User avatar
GlennNZ
Posts: 1873
Joined: Sun Dec 07, 2014 3:33 pm
Location: Central Coast, Australia

HomeKitLink New Release 0.8.05

Post by GlennNZ »

Image

HomeKitLink Siri (HKLS)

HomeKitLink Siri is an Indigo plugin that creates native HomeKit Bridges — exposing your Indigo devices to Apple HomeKit and Siri control. No Homebridge. No external server. Everything runs inside Indigo.

Current Version: 0.8.05 | Requires: Indigo 2025.1+ (Python 3)
https://www.indigodomo.com/pluginstore/270/
GitHub: https://github.com/Ghawken/HomeKitLink-Siri
Full Documentation / Wiki: https://github.com/Ghawken/HomeKitLink-Siri/wiki

Image


What's New — Version 0.8.05

Major: Camera Audio — Opus SRTP Proxy

- New homekit_audio_proxy — a subprocess RTP/SRTP audio proxy that solves the FFmpeg/HomeKit clock-rate mismatch for Opus audio.
- FFmpeg uses 48 kHz timestamps (RFC 7587) but HomeKit expects the negotiated rate (e.g. 16 kHz). The proxy receives plain RTP from FFmpeg, converts timestamps, encrypts with SRTP, and forwards to the HomeKit client.
- Blue Iris cameras default to libopus audio.
- SecuritySpy cameras gain the same libopus audio proxy support.

Breaking: Cameras must be removed from Home and re-added so the Home app can reassess the audio stream. Results in near-perfect audio quality — well worth it.

Major: Camera Stream Intelligence

- New resolve_video_strategy() — uses ffprobe to decide whether to copy or transcode each camera's video stream.
- New Menu Item: "Check or Update Camera Streams for Compatibility" — run after changing Blue Iris stream settings.
- Auto-runs at startup. Automatic transcoding when incompatible streams are detected (non-H.264, wrong pixel format, borderline GOP).
- Updated homekitlink_ffmpeg library to include ffprobe binaries.

Code: Select all

====================================================================================================
   HomeKitLink Siri                Camera Stream Compatibility Check
====================================================================================================
   HomeKitLink Siri   [Deck Camera]   Video: codec=h264  profile=Constrained Baseline  pix_fmt=yuv420p  2688x1520 @ 15.0 fps
   HomeKitLink Siri   [Deck Camera]   GOP: 15 frames (1.1s between keyframes)
   HomeKitLink Siri   [Deck Camera]   ✓ H.264 + yuv420p — safe for copy/passthrough.
   HomeKitLink Siri   [Deck Camera]   Config: video_codec=copy — passthrough active. Good.
   HomeKitLink Siri   [Deck Camera]   Audio: codec=aac  rate=64000  channels=1
   HomeKitLink Siri   [Deck Camera]   Config encoder: libopus — will transcode from aac.
Major: mDNS/Zeroconf Refactor

- Default IP version changed to V4Only (was All) — the HAP server is IPv4-only; IPv6 mDNS was serving no purpose.
- New zeroconf_interfaces parameter separates "which interfaces zeroconf listens on" from ip_version.
- Fixed advertised_address conflation bug — was incorrectly passed as interfaces to AsyncZeroconf.
- mDNS Interfaces field now visible in Plugin Config (was previously hidden).
- Auto-derive mDNS interfaces from server IP when HAPServerIPAddress is set.

Major: Diagnostic & Troubleshooting Tools

- New Menu Item: "ℹ️ Troubleshoot 2 — Network Trouble Shooting" — definitive LNA test, multicast, firewall, bridge ports, DNS.
- New Menu Item: "ℹ️ Troubleshoot 3 — Support mDNS Troubleshooting" — mDNS/Bonjour diagnostic.
- "Support Information" (Troubleshoot 1) enhanced — now includes mDNS/network configuration details.

Code: Select all

HomeKitLink Siri   ✅ Successfully sent multicast packet to 224.0.0.251:5353 via 192.168.1.6
HomeKitLink Siri      Local Network Access is ENABLED.
HomeKitLink Siri   ✅ Port 51840 is accepting connections.
HomeKitLink Siri   ✅ Port 51841 is accepting connections.
Python 3.13 Compatibility

- Removed async_timeout dependency — replaced with Python 3.11+ built-in asyncio.timeout.
- Updated libraries: cryptography 41→46, orjson 3.8→3.11, h11 0.14→0.16, zeroconf 0.131→0.148.
- Removed slugify and aiofiles dependencies.
- Added cffi, pycparser, ifaddr as explicit dependencies.
- Fixed pip install success detection for Python-version-prefixed filenames.

Bug Fixes

- Fixed image snapshot timeout issue.
- Fixed interfaces not being selectable in plugin config.
- Fixed multi-NIC discovery — binding to all IPv4 interfaces fixes issues with 2+ active network connections.

What It Does

Create one or more HomeKitLink Bridge devices inside Indigo. Each bridge acts as a HomeKit accessory bridge — pair it once with a QR code in the iOS Home app, and every Indigo device you publish to it appears automatically in HomeKit and is controllable via Siri.

Key Features:
- Unlimited bridges (up to 95 Indigo devices each)
- Lights — colour, colour temperature, dimmer, switch — auto-detected subtype
- Fans — simple and speed-controlled (Fan V2)
- Switches, Outlets, Action Groups
- All sensor types — temperature, humidity, motion, occupancy, contact, luminance, smoke, CO, leak
- Blinds and Windows — with position and inversion options
- Thermostats, Locks, Garage Doors, Valves
- Security Systems — Paradox, DSC, VSS, AD2USB
- Cameras — Blue Iris and SecuritySpy with live video, Opus audio, motion detection, doorbell
- Full Siri control once paired
- All configuration stored in the Indigo database — migrates with Indigo

Image

Quick Start

1. Install from the Plugin Store or download from GitHub Releases
2. In Indigo: Devices → New Device → Plugin → HomeKitLink Siri → HomeKitLink Bridge
3. Select a device, check Publish, choose HomeKit type, click Save Device. Repeat for more devices.
4. Click Save in the dialog to start the bridge.
5. Open the bridge config → Show QR Code
6. iOS Home app → + → Add Accessory → scan QR code
7. Done. Siri can now control your devices.

Image

Limits: Each Indigo device can be published to one bridge only. 95 devices max per bridge — create more bridges as needed (unlimited).

Image

Plugin Menu Items

Image

⚠️ Before Posting — Run These Three Items First ⚠️

These diagnostic tools solve the vast majority of issues. Please run all three and include the Indigo log output in any forum post. Without this output, diagnosing your issue is much harder.

Plugins → HomeKitLink Siri →

ℹ️ Troubleshoot 1 — Support Information For Forum Posting
Generates a complete summary of your HKLS installation: plugin version, Python version, all configured bridges, published device list, mDNS/network configuration, active drivers, port assignments, and any known error conditions. Include this in every support post.

ℹ️ Troubleshoot 2 — Network Trouble Shooting
Comprehensive network diagnostic. Checks: Apple Local Network Access (macOS Sequoia 15.x+ requirement), mDNS multicast send and group join, outbound UDP, gateway reachability, firewall status (stealth mode, block-all), plugin network config, bridge port accessibility, and DNS resolution. Uses a definitive multicast send test that catches the exact LNA failure mode.

ℹ️ Troubleshoot 3 — Support mDNS Troubleshooting
Focused mDNS/Bonjour diagnostic. Checks: interface binding, firewall as it relates to mDNS, Zeroconf/AsyncZeroconf state, Bonjour/mDNSResponder status, and mDNS advertisement records for all active bridges.

macOS Sequoia (15.x+) users: Run Troubleshoot 2 first — it will tell you definitively if Local Network Access is blocked. If it is: System Settings → Privacy & Security → Local Network → enable IndigoPluginHost3.

Other menu items:
- Show Device Publications — lists all published devices in the Indigo log with status (running / disabled / orphaned)
- Identify Devices Running / Not Running — shows which bridges are active
- Restart HomeKit — stops and restarts all bridges
- Unlink Orphaned Devices — cleans up devices whose bridge was deleted
- Delete Residual States Files — removes leftover HomeKit state files
- Rerun FFmpeg Call for Logging — replays last camera stream command, logs full FFmpeg output
- Check or Update Camera Streams for Compatibility — runs ffprobe against all cameras, logs compatibility analysis (run after changing Blue Iris stream settings)
- Debug Log Menu Options — internal debug: bridges, drivers, threads, accessories, device list
- Move Accessories to Another Bridge — recovery tool if a bridge was accidentally deleted
- Reset Accessory / Bridge — deletes security keys for a bridge (use before re-pairing a broken bridge)

Image

Device Configuration

Image

The device list in the bridge config shows your published devices. Greyed-out devices are published to another bridge — edit that bridge to manage them.

Show All Options — unlocks every HomeKit device type for any Indigo device. Use with care: an incompatible selection can cause the bridge to fail.

Sensor device state selection: When publishing a sensor, choose which Indigo device state to use. For temperature/humidity, the state must be a plain number (22.1, not "22.1°C"). The config shows the current value to help you choose.

Changing a device's HomeKit type (e.g. Switch → Blind) requires a specific sequence:
1. Uncheck Publish → Save Device
2. Save the dialog (bridge restarts)
3. Confirm old device has disappeared in Home app
4. Re-add with the new type

Image

Image

Camera Setup

Supported: Blue Iris (via the Blue Iris Indigo plugin) and SecuritySpy (via FlyingDiver's SecuritySpy plugin).

Features: live RTSP streaming, Opus audio, doorbell integration, motion detection (BI cameras register as HomeKit motion sensors).

Blue Iris — recommended Stream 2 settings for zero-transcoding passthrough:
Image
- Codec: H.264 (Constrained Baseline)
- Pixel format: yuv420p
- GOP: keep low (≤ 2 seconds between keyframes)

After changing any Blue Iris stream settings, run Check or Update Camera Streams for Compatibility from the plugin menu.

Doorbell: Any on/off Indigo device can be the doorbell trigger. When it turns on, HomeKit fires a notification with the live camera feed.

Opus audio: Existing cameras must be removed from Home and re-added after upgrading to 0.7.10+ — this lets the Home app renegotiate the audio stream and results in significantly better quality.

Image

Advanced Options

Image

mDNS IP Version — default is IPVersion.V4Only (recommended). The HAP server is IPv4-only so IPv6 mDNS serves no purpose for most setups.

mDNS Interfaces — comma-separated list of IP addresses for mDNS binding. Leave empty to auto-derive from the HAP server IP. Use when your Mac has multiple network interfaces and bridges advertise on the wrong one.

HAP Server IP Address — force a specific local IP for the HomeKit TCP server. Use with multiple NICs or VPN connections.

Debug levels (in Plugin Config): 11 granular debug options including per-device tracing. Debug 10 (mDNS) goes to file only to avoid flooding the Indigo log.

Reset Accessory / Bridge — deletes security keys and pairing info for a bridge. Use when a bridge shows "needs to be reset" in the Home app.
Image

Delete the bridge from Home app first, then reset, then restart plugin, then re-add with QR code.

Image


Support & Links

Forum: HomeKitLink Siri — Indigo Forums
GitHub: https://github.com/Ghawken/HomeKitLink-Siri
Releases: https://github.com/Ghawken/HomeKitLink-Siri/releases
Wiki / Full Docs: https://github.com/Ghawken/HomeKitLink-Siri/wiki
Issues / Bug Reports: https://github.com/Ghawken/HomeKitLink-Siri/issues

When posting a support request — always run and include output from:
Plugins → HomeKitLink Siri → ℹ️ Troubleshoot 1, 2 & 3

Return to “HomeKitLink Siri”