Repository navigation
Conversation
Custom integrations ship their translations/*.json as they are: only core's compile step replaces [%key:...%] references, so users saw the raw reference for unknown errors, an already configured gateway and a successful reauth. Write the text out, using the same wording as core's common strings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FWeinb
force-pushed
the
feat/2wayaudio
branch
from
October 28, 2026 22:36
7c822e5 to
ddd1d41
Compare
pytest-homeassistant-custom-component does not load on Home Assistant 2026.11, which now ships its own test package, pytest-home-assistant (home-assistant/core#187272). Switch to it and target 2026.11.0b0: - Import the test helpers from pytest_homeassistant, and drop the enable_custom_integrations wrapper; custom integrations are enabled by default now. - Disable the respx pytest plugin, so Home Assistant aliases httpx to httpx2 before respx imports it. - Install pytest-home-assistant from the 2026.11.0b0 core tag until it is published on PyPI. media_source now loads platforms lazily, so the image proxy view was only registered once media had been browsed, and stored image URLs returned 404 after a restart. Register it in async_setup instead. Declare pydantic as a requirement. api.py and types.py use it, but it was never declared: Home Assistant only constrains its version and doesn't install it, and the old test package happened to depend on it, while pytest-home-assistant doesn't. Require it in the manifest for installs, and pin Home Assistant's constrained version in requirements.txt for CI. Add pytest-cov to the test requirements for the same reason: scripts/test uses its --cov options and CI's coverage report needs coverage, which the old test package brought along and pytest-home-assistant doesn't. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Talk to the person at the door from the camera's live view, using Home Assistant 2026.11's two-way audio preview feature. Opt in with the new Two-way audio option; without it the camera stays MJPEG. - sip/rtp.py: an RtpSession per call on a configurable UDP port range (default 5004-5013). It sends a continuous, clock-paced G.711 stream from the advertised port, plays received audio out through a small jitter buffer, and mixes live audio over play_audio clips. - minisip: offer sendrecv on incoming and outgoing calls, accept PCMU, handle CANCEL, resend our 200 OK until the ACK, and let a call ring until it is answered or rejected later. - GatewayLine: with auto answer off and two-way audio on, ring along with the handsets and answer when talk is pressed; calls nobody answers are rejected as busy after a minute. - talkback.py: native WebRTC through aiortc. One VP8 encoder per camera feeds every viewer, door audio goes to every session, and the newest talking session's microphone goes into the call. The call is hung up when the last session that talked closes. - A Hang Up button next to each camera, ending the calls its device is on. Pressing it with no call shows an error. aiortc needs an av<20 release (main has it; PyPI 1.15.0 pins av<18), so requirements.txt pins an aiortc commit until then. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A header image in Home Assistant's style, with a light and a dark version picked by GitHub's theme. - The HACS default badge. - The actions get their own section, as a table with their fields and responses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FWeinb
force-pushed
the
feat/2wayaudio
branch
from
October 28, 2026 22:49
ddd1d41 to
ec3fe07
Compare
Setup the gateway device in init and link all the entities via get_gateway_identifier()
Still need to wait until a proper release of * pytest-homeassistant==2026.11.0 * aiortc==1.16.0 (including aioice>=0.12.1) was made.
FWeinb
force-pushed
the
feat/2wayaudio
branch
from
November 4, 2026 21:12
faf1081 to
62fccc6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warning
Do not merge yet. This waits for an aiortc release on PyPI that accepts
av>=14,<20. Home Assistant pinsav==19.0.0, and the current aiortc release (1.15.0) requiresav<18, so it cannot be installed alongside Home Assistant. aiortcmainalready has the relaxed pin, and this branch is built and tested against a commit of it. Until the release is out, the manifest requirementaiortc>=1.16.0cannot be installed anywhere.Before merging:
av>=14,<20; check thataiortc>=1.16.0inmanifest.jsonnames that releaserequirements.txt: replace the aiortc commit pin with the releaserequirements.txt:homeassistant==2026.11.0b0→2026.11.0requirements_test.txt:pytest-homeassistantfrom PyPI instead of the core2026.11.0b0tag archiveSummary
Talk to the person at the door from the camera's live view, using Home Assistant 2026.11's two-way audio preview (Labs). It's opt-in with the new Two-way audio option; without it, the camera stays MJPEG as before.
With SIP Auto Answer off and Two-way audio on, Home Assistant rings along with the indoor stations and answers when talk is pressed:
sequenceDiagram participant Door as Door station / SG-150 participant HA as Home Assistant participant Browser as Live view Door->>HA: INVITE HA-->>Door: 180 Ringing (ring along) Browser->>HA: WebRTC offer with microphone (talk pressed) HA-->>Door: 200 OK, then ACK Door-)HA: RTP (G.711) HA-)Browser: door audio + VP8 video Browser-)HA: microphone HA-)Door: RTP (G.711) Browser->>HA: close live view (last talker) HA->>Door: BYEAlso in this PR:
pytest-homeassistant-custom-component, which doesn't load on 2026.11, to Home Assistant's ownpytest-home-assistant(Clarify pytest-home-assistant docstrings and README home-assistant/core#187272).[%key:common::…%]references are written out. Custom integrations shiptranslations/*.jsonas they are, so users saw the raw reference text.Evidence
RuntimeError: httpx was already imported). Stored-image URLs return 404 after a restart, until the media browser has been opened.After:
scripts/testgives 138 passed, 84% coverage. This includes an in-process WebRTC test with a second aiortc peer as the browser:play_audioall work.The live view shows video while the call is still ringing.Merge Danger
Door: two-way
Two-way audio is opt-in and off by default. Reverting the PR restores the previous behaviour, with no config migration. Saved options gain three keys, which older versions ignore.
Blast Radius: calls
sendrecvinstead ofsendonly.hacs.json). HACS won't offer this version to older installs. Installed by hand on older HA, the camera platform fails to load, becauseCameraEntityCapabilitiesdoesn't exist there.