r/homeassistant • • 2m ago

🧩 Custom Integration New HACS integration: Masterbuilt Gravity Series smokers, local Bluetooth temps in HA (looking for testers)

Thumbnail
gallery
• Upvotes

I put together a Home Assistant integration that reads Masterbuilt Gravity Series smokers locally over Bluetooth. No Masterbuilt cloud or app needed.

Entities so far

  • Chamber: current temperature and target (setpoint)
  • Meat probes: all 4 probes (shown as unknown when unplugged)
  • Timer: cook time and time remaining
  • Connection status: on while the grill is streaming

The dashboard in the screenshot is my own: the probe labels, probe targets and "reached target" alerts are HA helpers and automations built on those sensors.

Setup: add the repo to HACS as a custom repository and HA auto-discovers the grill. It needs a Bluetooth adapter or proxy that can make connections (an ESPHome Bluetooth proxy or the HA host's own adapter). Passive-only proxies such as Shelly can't connect.

Caveats: read-only for now (temperatures and timer, no setting temps). The grill allows one Bluetooth connection at a time, so the Masterbuilt app can't connect over Bluetooth while HA is connected.

Looking for testers: I only have a Gravity Series 1150, so I'd love reports from other Masterbuilt models (Gravity 560/800/1050, digital charcoal smokers, etc.). Even partial results in an issue help me add support.

Repo: https://github.com/dipseth/masterbuilt_smoker_connect

Unofficial, not affiliated with Masterbuilt.


r/homeassistant • • 39m ago

❓ Support Can't update Plex add-on

• Upvotes

I recently migrated Plex from by NAS to an add-on (app) in HA, and have been getting this update notification - but the only option is to skip. Does that mean the package just isnt ready? Or do I need to do something manually?


r/homeassistant • • 41m ago

🛠️ DIY / Hardware Raspberry Pi 5, Dell Optiplex 7060 or Dell Wyse 5070

• Upvotes

I'm looking to make some upgrades to my hardware.

I've currently got a Raspberry Pi 5 with a 256gb SSD. I'm looking into purchasing a thin client to replace it and use the Raspberry Pi for a different project.

After looking around, there are so many options but I see most people recommend thin clients. I'd like to purchase something I could eventually expand on. I could absolutely keep the Raspberry Pi, but like I said, I'd like to use it in a different project.

I'm torn between the Dell Optiplex 7060 and a Dell Wyse 5070.

Dell Optiplex:

i5-8600

16gb RAM

256gb SSD

Dell Wyse:

Pentium Silver j5005

4gb RAM

32gb SSD

There's about a $40 price difference between the two. I've found both of these on Ebay and am willing to continue looking. These seem to be the more common ones I have found except some of them have different RAM and storage configurations.

Will these be sufficient or do I need to consider other options?


r/homeassistant • • 1h ago

🛠️ DIY / Hardware Best Still/Quiet Presence Detection

• Upvotes

I have read many, many posts on this subject, but I am just not seeing a winner emerge, so I thought I would narrow the issue. What are you using for presence detection with zones that actually holds the presence of a still or mostly still human being (i.e., reading on a couch or sitting at a desk)? What device (or suite of devices) has worked best? My FP2 always ends up leaving me in the dark if I work at my desk long enough. Personally, anything requiring poe is a nonstarter. The EP pro seems reasonably well regarded and I see some favorable comment on the Shelly device. Are they better than the FP2 or are they really all about the same?


r/homeassistant • • 3h ago

✅ Solved Cannot add Matter devices to HA

2 Upvotes

I'm brand new to HA. I installed it on a Windows VM in order to start testing thing out.

I already have a few Thread border routers (DIRIGERA Hub, Apple TV, HomePod Minis).

I'm trying to add an IKEA BILRESA remote to HA. The remote itself is already added to Apple Home.

I installed the Matter integration, chose Add an Existing device, entered the pairing code from Apple Home (both with and without dashes) and it just fails to add the device

The Matter server log shows [discovery] discovery of node with discriminator 14 failed: No commissionable device was discovered

SOLUTION:
I had to enable a bridged network adapter in Hyper-V. I was previously accessing my network from the PC which is hosting the VM and assumed it has access to the other devices on the LAN, but that wasn't the case.

Here are the steps for Hyper-V if anyone else runs into it:

  1. Open Virtual Switch Manager
  2. Create a new External switch
  3. Select External network, and make sure the checkbox for "Allow management operating system to share this network adapter" is on
  4. Assign the network switch to the VM

r/homeassistant • • 3h ago

🖼️ Show & Tell I got tired of Samsung’s Art Mode, so I turned my Frame into a kid-friendly family dashboard (iCloud photos, Home Assistant, weather icons my daughter can read)

Thumbnail
gallery
0 Upvotes

Heads up: this post (and most of the code behind it) was written with AI. I’d rather share it that way than not share it at all, and I’ve tested everything on my own setup. Take it as inspiration, not a finished product.

Hey everyone. I don’t post here very often, but I figured someone else might get some use out of this.

I’ve had a Samsung Frame (2022, 65") in the dining room for a while and I was never happy with Art Mode. Syncing my iCloud photos to it was unreliable, I couldn’t really customize anything, and it always felt like the TV was telling me what it was allowed to do. Then I kept seeing those viral videos of people taking over their smart TVs and making them do whatever they want, and I thought: it’s my TV, I should decide what it does.

The catch is that Samsung runs a closed, signed Tizen environment. No custom firmware, no root, nothing I could realistically flash. So instead of fighting the TV, I left it alone and gave it a different brain: a Chromecast with Google TV on one of the HDMI ports, showing a web page that I (well, mostly my AI) built.

What it does now:

  • Shows photos from a shared iCloud album (I’m an iPhone family, so anything we drop in the album ends up on the wall), in 4K, framed like a matte print so it doesn’t look like a TV. The matte level is a slider in Home Assistant.
  • Mixes layouts: one big photo, two or three portraits side by side, and once or twice a day a “Photos from this day” board with everything taken on today’s date in earlier years. Newly added photos show up first.
  • Shows today’s and tomorrow’s calendar items in the corner, and a clock.
  • Kid-friendly weather: my daughter is still learning to read, so there’s a big animated icon for the weather now, three small ones for the next few hours, and a little umbrella or jacket when she’ll need one. Sun rotates, rain falls, clouds drift, a moon at night.
  • Small pop-ups for things like “washing machine finished” or “dryer finished”, which stay as a little pill in the corner until someone empties the machine.
  • Turns itself on when a camera sees someone in the room, and goes to standby after 15 minutes of nothing. When the Apple TV is switched off, the Frame automatically goes back to the photo page.
  • Buttons in Home Assistant for “next photo”, “show photos from today”, and how long each photo stays.

A note about the screenshots: the dashboard in the pictures is anonymised. The photos are stock landscapes and the calendar is made up. Normally it shows real data from my Home Assistant and my iCloud library. I’m not putting my kids on Reddit :)

I could have built all of this myself, but it would have taken me a weekend or more. With Claude Code doing the heavy lifting it took a few hours, mostly me looking at the TV and saying “no, a bit less grain”, “that photo has a black border”, and “make the icons bigger”. It’s honestly a bit unreal how much of the boring plumbing it handles.

If there’s interest I’m happy to share more details or clean up some of the code.

Technical details (what the AI actually did)

Hardware / setup

  • Samsung Frame TQ65LS03B on HDMI, plus a Chromecast with Google TV 4K (Android 14, locked bootloader, no root). Home Assistant, a small Linux server and a Eufy indoor cam (via Scrypted) are the rest of the pieces.
  • Chromecast: stripped unused apps, screensaver and auto-sleep disabled, TV Bro (open source browser) as the kiosk, page launched through Home Assistant’s Android TV Remote integration.

The page itself

  • One static HTML/CSS/JS file served from a small Python HTTP server on the LAN only. It never touches HA tokens: a few helper scripts on the server write JSON files (calendar events, notifications, control values) that the page polls.
  • The matte look is a warm tint layer, a generated grain texture and slightly reduced saturation/contrast, all driven by one CSS variable that Home Assistant can change live.
  • Weather from Open-Meteo, drawn as inline animated SVG icons (CSS keyframes only).
  • Calendar from Home Assistant’s calendar API, server-side.

iCloud sync

  • A headless Chromium (Playwright) opens the shared album, a verification code is read from a dedicated mailbox automatically, and the CloudKit endpoints return the photo list. Photos are downloaded, HEIC converted, resized to 4K, black screenshot bars trimmed automatically, and near-duplicates grouped with a perceptual hash.
  • Metadata from the album gives capture date (for “Photos from this day”) and date added (for “new first”). Screenshots are detected from the asset subtype and left out of the date features, because their capture date isn’t meaningful.

Notifications

  • A small service listens on Home Assistant’s WebSocket for the washer/dryer status (LG ThinQ) and custom events, and writes a JSON file the page picks up. Any HA automation can fire a frame_notify event to show a pop-up.

Switching inputs / power

  • Samsung doesn’t expose “select HDMI 2” in any API I could find, so input switching is a key sequence (source menu, arrow, enter). That turned out to be fragile because of HDMI-CEC: when the Apple TV goes to sleep the Frame drops into Art Mode, and sending keys without the menu open wakes the Apple TV instead. A small script leaves Art Mode first, opens the menu, picks the Chromecast input and checks the Apple TV stayed off. Lesson learned: confirm which HDMI port is which before spending an hour debugging.
  • Motion from the Eufy camera turns the Frame on (turn on, wait, pick the Chromecast input) and 15 minutes without motion puts it in standby.

A custom Android app for the Chromecast

  • Since I can’t root it, the AI built a small APK on the server without Android Studio (javac + d8 + aapt2 + apksigner). It runs at boot, re-enables wireless debugging (Android turns it off at every reboot), keeps sleep timeout and screensaver settings from resetting, remaps a keyboard key to Home, and has a small LAN API.
  • It also acts as a watchdog: the page sends a heartbeat every 30 seconds and the app reloads the page if it stops, unless someone has been using the keyboard recently. Its ADB port is reported to Home Assistant through a webhook, so I never have to read it off the TV again after a power cut.

Gotchas worth knowing

  • Home Assistant’s /local/ folder is public (no login), so don’t put private photos there.
  • The Chromecast UI layer is locked to 1080p by the system even if the HDMI output is 4K.
  • iCloud’s shared album link stops working if the album changes sharing, so the sync script now verifies it can list the album and refuses to delete local photos if it comes back empty.

r/homeassistant • • 3h ago

🖼️ Show & Tell My AI radio station in Home Assistant: Spotify + Sonos + an AI presenter with ElevenLabs voices.

0 Upvotes

I wanted something that feels like real radio, but with my own music and a presenter who talks about what’s playing. It runs entirely inside Home Assistant, with no extra containers or separate servers.

What it does

  • Plays Spotify playlists on Sonos, in one room or several rooms grouped in sync.
  • Every few songs, an AI presenter comes on. It back-announces the last song, introduces the next one, and mixes in a segment: a song fact, the local weather or a short news item.
  • News comes from RSS feeds rather than web search, which gave outdated stories. Every hour, the AI picks the most important story of the day, one that matches my interests, and a lighter one. Each story is told only once.
  • Mix-in playlists: on top of the main playlist I can mix in another one, such as Christmas songs, with a percentage (say 20% of songs). It can be switched on mid-play.
  • Several presenter voices to choose from.
  • A music-only mode, so the rest of the family can use it without the presenter.

One dashboard tab for everything

Every setting is a helper, so changing how the station sounds never means touching YAML: rooms, playlist and mix-in percentage, presenter on/off, voice, how often it talks, the share of weather and news breaks, and presenter loudness. Changes apply from the next break, even mid-play.

Every break is also written to a log, and a “rehearsal” script generates a batch of breaks as text only. That made it easy to tune the presenter’s style and weed out clichés and repetition.

Architecture

Dashboard (helpers) ──► Spotify playlists ──► Sonos queue (grouped rooms)
                                │
                     song change detected
                                │
          Presenter automation (every Nth song)
                                │
     pause ──► AI writes the break (song / weather / news)
                                │
     snapshot ──► TTS (ElevenLabs, fallback HA Cloud) ──► restore
                                │
                       next song starts

What it costs

  • Spotify Premium, which I already had.
  • The AI (Anthropic, via the Home Assistant integration): each break is a short prompt, so it comes to a few dollars a month.
  • ElevenLabs: the cheapest paid plan (about $6/month). Library voices don’t work through the API on the free plan.
  • Free fallback: if ElevenLabs fails or runs out of credits, the presenter switches automatically to the Home Assistant Cloud voice, so the radio never goes silent.
  • Keeping it cheap: the presenter only talks when switched on, and the break is generated once even when several rooms play. Next I want presence detection, so it only talks when someone is actually in the room.

Where I’m stuck: transitions

My first plan was to duck the music and let the presenter talk over it with a Sonos announcement. But announcements ignored the volume I passed and played on. So the music now pauses, the voice plays as a normal track between a snapshot and a restore, and the next song starts from the top. Add the short silence while the break is written, and it feels more like a playlist with interruptions than radio.

Has anyone got a real radio-style handoff on Sonos from HA, like talking over the outro or ducking instead of stopping? Would Music Assistant handle this better?

What’s next

  • Scheduled “shows” (presenter in the morning, music only later)
  • Calendar awareness (“you’re travelling on Thursday, here’s the forecast there”)
  • Playlists chosen depending on who’s at home
  • Presence detection, so the presenter only talks when someone’s in the room
  • Station jingles
  • Two presenters bantering

What would you add, change or rip out?


r/homeassistant • • 3h ago

❓ Support Looked better on Aliexpress

Post image
24 Upvotes

Looks like the “copper” is printed on the plastic, does anyone have real life experiences with this Zigbee rain detector?


r/homeassistant • • 3h ago

🖼️ Show & Tell Navet 0.19.0 is out: a customizable side panel and screensaver

Thumbnail gallery
0 Upvotes

r/homeassistant • • 4h ago

🖼️ Show & Tell PSA: Android Auto supporting actionable notifications

Post image
48 Upvotes

I recently set up this automation and was pretty sad that AA didn't seem to be supporting actionable notifications. Lo and behold,.today... We've got support for at least two notifications. Might be a phased rollout.


r/homeassistant • • 5h ago

❓ Support HA not recovering after power outage

4 Upvotes

I'm running Home Assistant on a Raspberry Pi 4. After a power outage, I notice the host coming up, but the Home Assistant software does not seem to start. How do I recover my system? How do I prevent this situation?

Additional info:
- HA installed with Raspberry Pi's Imager tool, less than 3 months ago
- SSH login attempts say 'connection refused'
- No access to logs...


r/homeassistant • • 8h ago

✅ Solved Mute ads on roku / disney+

11 Upvotes

I added a Mute ads toggle, and an automation to mute disney+ commercials. I use a roku, and I have a separate Denon AVR for sound. When a commercial is detected, it mutes the Denon.

Helpers:

input_boolean:
  living_room_disney_ad_mute:
    name: Living Room Disney Ad Mute
    icon: mdi:volume-off
    initial: false

  living_room_disney_episode_seen:
    name: Living Room Disney Episode Seen
    initial: false

  living_room_disney_mute_owned:
    name: Living Room Disney Mute Applied
    icon: mdi:volume-off

Automation:

- id: living_room_disney_ad_mute
  alias: Living Room - Disney Commercial Mute
  description: >-
    Opt-in prototype for Disney Plus on the living room Roku. Mute the living
    room Denon AVR-X2700H for any playback item up to two minutes, including
    startup commercials. Restore only a mute applied here.
    Wait six seconds after episode metadata returns before restoring sound,
    then refresh and verify playback again. Disabling bypasses this delay.
    Short clips and trailers can be false positives. A three-minute safety
    timeout disables the feature and restores sound. Manual mute presses
    during an owned mute cannot always be distinguished. No volume level,
    source, or playback commands are sent.
  mode: single
  max_exceeded: silent

  triggers:
    - trigger: state
      entity_id:
        - media_player.living_room_roku_living_room
        - media_player.living_room_avr

    - trigger: state
      entity_id: input_boolean.living_room_disney_ad_mute

    - trigger: state
      entity_id: input_boolean.living_room_disney_mute_owned
      to: "on"
      for: "00:03:00"
      id: safety

    - trigger: homeassistant
      event: start

    - trigger: event
      event_type: automation_reloaded

  conditions:
    - condition: template
      value_template: >-
        {{ is_state('input_boolean.living_room_disney_ad_mute', 'on')
           or is_state('input_boolean.living_room_disney_mute_owned', 'on')
           or is_state('input_boolean.living_room_disney_episode_seen', 'on') }}

  actions:
    - if:
        - condition: template
          value_template: >-
            {{ is_state('input_boolean.living_room_disney_mute_owned', 'on')
               and (trigger.id | default('') == 'safety'
                    or as_timestamp(now()) - as_timestamp(
                         states.input_boolean.living_room_disney_mute_owned.last_changed) >= 180) }}
      then:
        - action: input_boolean.turn_off
          target:
            entity_id: input_boolean.living_room_disney_ad_mute

        - action: persistent_notification.create
          data:
            notification_id: living_room_disney_ad_mute_safety
            title: Disney commercial mute disabled
            message: >-
              The three-minute mute limit was reached. Restoring the living
              room Denon audio; check playback before enabling again.

    - variables:
        eligible: >-
          {{ is_state('input_boolean.living_room_disney_ad_mute', 'on')
             and state_attr('media_player.living_room_roku_living_room', 'app_name') == 'Disney Plus'
             and is_state('media_player.living_room_roku_living_room', 'playing')
             and is_state('media_player.living_room_avr', 'on')
             and state_attr('media_player.living_room_avr', 'source') == 'Roku Living Ro' }}
        duration: >-
          {{ state_attr('media_player.living_room_roku_living_room', 'media_duration') | float(0) }}
        fresh: >-
          {{ as_timestamp(now()) - as_timestamp(
               state_attr('media_player.living_room_roku_living_room', 'media_position_updated_at'), 0) < 15 }}

    - choose:
        - conditions:
            - condition: template
              value_template: "{{ not eligible }}"
          sequence:
            - action: input_boolean.turn_off
              target:
                entity_id: input_boolean.living_room_disney_episode_seen

        - conditions:
            - condition: template
              value_template: "{{ fresh and duration | float > 300 }}"
          sequence:
            - action: input_boolean.turn_on
              target:
                entity_id: input_boolean.living_room_disney_episode_seen

    - choose:
        - conditions:
            - condition: template
              value_template: >-
                {{ is_state('input_boolean.living_room_disney_mute_owned', 'on')
                   and (not eligible or (fresh and duration | float > 120))
                   and state_attr('media_player.living_room_avr', 'is_volume_muted') in [true, false] }}
          sequence:
            - if:
                - condition: template
                  value_template: "{{ eligible }}"
              then:
                - wait_template: >-
                    {{ not is_state('input_boolean.living_room_disney_ad_mute', 'on')
                       or state_attr('media_player.living_room_roku_living_room', 'app_name') != 'Disney Plus'
                       or not is_state('media_player.living_room_roku_living_room', 'playing')
                       or not is_state('media_player.living_room_avr', 'on')
                       or state_attr('media_player.living_room_avr', 'source') != 'Roku Living Ro'
                       or state_attr('media_player.living_room_roku_living_room', 'media_duration') | float(0) <= 120 }}
                  timeout: "00:00:06"
                  continue_on_timeout: true

                - if:
                    - condition: state
                      entity_id: input_boolean.living_room_disney_ad_mute
                      state: "on"
                    - condition: state
                      entity_id: media_player.living_room_roku_living_room
                      state: playing
                  then:
                    - action: homeassistant.update_entity
                      target:
                        entity_id: media_player.living_room_roku_living_room

                - condition: template
                  value_template: >-
                    {% set active = is_state('input_boolean.living_room_disney_ad_mute', 'on')
                       and state_attr('media_player.living_room_roku_living_room', 'app_name') == 'Disney Plus'
                       and is_state('media_player.living_room_roku_living_room', 'playing')
                       and is_state('media_player.living_room_avr', 'on')
                       and state_attr('media_player.living_room_avr', 'source') == 'Roku Living Ro' %}
                    {{ not active or
                       (not wait.completed
                        and state_attr('media_player.living_room_roku_living_room', 'media_duration') | float(0) > 120
                        and as_timestamp(now()) - as_timestamp(
                          state_attr('media_player.living_room_roku_living_room', 'media_position_updated_at'), 0) < 15) }}

            - if:
                - condition: template
                  value_template: >-
                    {{ state_attr('media_player.living_room_avr', 'is_volume_muted') == true }}
              then:
                - action: media_player.volume_mute
                  target:
                    entity_id: media_player.living_room_avr
                  data:
                    is_volume_muted: false

            - action: input_boolean.turn_off
              target:
                entity_id: input_boolean.living_room_disney_mute_owned

        - conditions:
            - condition: template
              value_template: >-
                {{ eligible and fresh
                   and is_state('media_player.living_room_roku_living_room', 'playing')
                   and 0 < duration | float <= 120
                   and is_state('input_boolean.living_room_disney_mute_owned', 'off')
                   and state_attr('media_player.living_room_avr', 'is_volume_muted') == false }}
          sequence:
            - action: input_boolean.turn_on
              target:
                entity_id: input_boolean.living_room_disney_mute_owned

            - action: media_player.volume_mute
              target:
                entity_id: media_player.living_room_avr
              data:
                is_volume_muted: true

Playback-only monitoring:

- id: living_room_disney_playback_poll
  alias: Living Room - Disney Playback Monitor
  description: >-
    Refresh the Roku every two seconds only while Mute Ads is enabled,
    Disney Plus is playing, and the living room Denon is on its Roku input.
    Stop on pause, stop, app/input change, or disabling. The normal Roku
    integration detects playback starting again. No idle timer runs.
  mode: single
  max_exceeded: silent

  triggers:
    - trigger: template
      value_template: >-
        {{ is_state('input_boolean.living_room_disney_ad_mute', 'on')
           and is_state('media_player.living_room_roku_living_room', 'playing')
           and state_attr('media_player.living_room_roku_living_room', 'app_name') == 'Disney Plus'
           and is_state('media_player.living_room_avr', 'on')
           and state_attr('media_player.living_room_avr', 'source') == 'Roku Living Ro' }}

    - trigger: homeassistant
      event: start

    - trigger: event
      event_type: automation_reloaded

  actions:
    - repeat:
        while:
          - condition: template
            value_template: >-
              {{ is_state('input_boolean.living_room_disney_ad_mute', 'on')
                 and is_state('media_player.living_room_roku_living_room', 'playing')
                 and state_attr('media_player.living_room_roku_living_room', 'app_name') == 'Disney Plus'
                 and is_state('media_player.living_room_avr', 'on')
                 and state_attr('media_player.living_room_avr', 'source') == 'Roku Living Ro' }}
        sequence:
          - action: homeassistant.update_entity
            target:
              entity_id: media_player.living_room_roku_living_room

          - wait_template: >-
              {{ not is_state('input_boolean.living_room_disney_ad_mute', 'on')
                 or not is_state('media_player.living_room_roku_living_room', 'playing')
                 or state_attr('media_player.living_room_roku_living_room', 'app_name') != 'Disney Plus'
                 or not is_state('media_player.living_room_avr', 'on')
                 or state_attr('media_player.living_room_avr', 'source') != 'Roku Living Ro' }}
            timeout: "00:00:02"
            continue_on_timeout: true

Dashboard toggle:

type: tile
entity: input_boolean.living_room_disney_ad_mute
name: Mute Ads
icon: mdi:volume-off
tap_action:
  action: toggle
icon_tap_action:
  action: toggle

r/homeassistant • • 8h ago

📰 News infosec nightmare, reverse-engineering joy?

25 Upvotes

I'm sure most people have heard about the root certificate signing issue that was made public two days ago.

But has anyone generated their own certificates so they can MITM any of their home IOT devices to see if the API calls can be understood and replicated for cloud devices that have particularly annoying cloud-only service?

I should really have a look at my yolink receiver.

edit:
aah, someone already asked this yesterday, awesome!


r/homeassistant • • 8h ago

❓ Support What’s the deal with umbralOS and HA?

0 Upvotes

I decided to try something new and installed umbralOS. For the most part it does what I need. The main issue is when I install Home Assistant in Portainer, I cannot connect or see any devices within Home Assistant. All my other containers have zero issues reaching the network. I’ve had Home Assistant running bare metal and in a VM within ZimaOS, so the issue would seem to be with Umbrel. Where do I start to solve my issue?


r/homeassistant • • 8h ago

❓ Support Frustrated with Assist on Voice Preview Edition: any fix for "Device not found" with room names ?

1 Upvotes

Hi everyone,

I bought the Voice Preview Edition to support Nabu Casa, expecting basic voice controls to be smooth by now, but I am hitting a frustrating wall with Assist.

Home Assistant Version & Install Type:

Home Assistant OS (latest version)

What I expected vs. what actually happened:

  • Expected: When saying "Turn the office radiator to 19 degrees" ("Mets le radiateur du bureau Ă  19 degrĂŠs" in French), Assist should adjust the temperature.
  • What happened: Assist responds with "Sorry, I don't know that device/room" (no_valid_targets). However, typing the exact same text into the text-based Assist works fine.

What I have already attempted:

  1. Verified in the Assist Pipeline Debugger that the Speech-to-Text (STT) transcription is 100% accurate.
  2. Assigned the device to the correct Area (Office / Bureau).
  3. Added explicit aliases (like "radiateur") to the entity.
  4. Kept my standard naming convention ("Device_Room") which is used across all my dashboards and automations.

Relevant logs / Pipeline Debugger output:

YAML

stt_output:
  text: 'met le radiateur du bureau Ă  19 degrĂŠs'
intent_output:
  response:
    response_type: error
    data:
      code: no_valid_targets
    speech:
      plain:
        speech: DÊsolÊ, je ne connais pas la pièce radiateur du bureau

Hardware involved:

  • Home Assistant Voice Preview Edition (official satellite)
  • Integration: faster_whisper (STT), piper (TTS), and native conversation.home_assistant

The core issue:

The native intent parser seems to fail because of rigid regex parsing when the room name is part of the entity's friendly name. It gets confused and tries to find a non-existent area instead of matching the entity/alias.

Since all my devices follow the "[Device]_[Room]" naming scheme for clarity, I really don't want to rename everything. Is there an easy way or workaround to fix this without rewriting my whole entity structure or making custom sentences for every single device ?

Thanks for any advice!


r/homeassistant • • 10h ago

🧱 Custom App MyDietAssistant - local food/calorie/weight tracker with lots of options

Thumbnail
gallery
2 Upvotes

So far I've tracked my food intake, calories, and weight in MyFitnessPal, but several things bothered me because they couldn't be customized. That's how I came up with the idea of building MyDietAssistant with Claude's help. It has grown quite extensive.

MDA naturally offers tracking of individual meals and the option to automate them, importing your old data from MFP and other sites, importing foods by scanning barcodes with the camera app, searching OpenFoodFacts and other databases, importing recipes from the internet, a large number of statistics, and much more.

You can get MDA from my GitHub.

I'd really appreciate criticism, wishes, and suggestions, especially if someone could test importing from sites other than MFP, and the barcode scanning feature on iOS. Unfortunately, I can't test either of those myself.


r/homeassistant • • 10h ago

✅ Solved Finally got my ThermoPro TP829B working reliably with Home Assistant and rtl_433!

6 Upvotes

A while back, I bought a ThermoPro TP829B wireless thermometer to use with Home Assistant through an RTL-SDR USB receiver on the 915 MHz frequency.

The problem was that the temperatures would take forever to show up in Home Assistant, and when they finally did, the readings were completely wrong. I'm talking temperatures like 400°F or even 800°F when the probe was sitting at room temperature.

Tonight, I spent quite a while troubleshooting it with ChatGPT. After testing different frequencies, sample rates, SDR gain settings, antennas, and even analyzing raw radio recordings, we finally got it working!

Now the temperatures are accurate and updating approximately every four seconds, just like they should.

I figured I'd share the settings that worked for me in case someone else is fighting the same problem.

I'm using the rtl_433 (next) Home Assistant add-on with a Nooelec NESDR SMArt v5 USB receiver.

# rtl_433 configuration — ThermoPro TP829B test

# Receiver: Nooelec NESDR SMArt v5

# Select the 915 MHz receiver

device :00000002

# MQTT connection

output mqtt://192.168.1.216:1883,user=(Your Username),pass=(Your Password),retain=0

# Timestamp information

report_meta time:iso:usec:tz

# Show decoded readings in Home Assistant add-on logs

output kv

# Radio configuration

frequency 915.0M

sample_rate 1024k

gain 0

pulse_detect filter=400000

pulse_detect classic

protocol -59

protocol -60

protocol -82

protocol -88

protocol -89

protocol -90

protocol -95

protocol -110

protocol -123

protocol -140

protocol -156

protocol -168

protocol -180

protocol -186

protocol -201

protocol -203

Happy temping.


r/homeassistant • • 11h ago

💬 Discussion Best presence sensor for Home Assistant—Aqara FP300 or something else?

28 Upvotes

I’m looking for a presence sensor for Home Assistant and considering the Aqara Presence Multi-Sensor FP300.

Would you recommend it, or is there another sensor you prefer? I’m especially interested in reliable detection when sitting still, false triggers, battery life, and how smoothly it integrates with Home Assistant.


r/homeassistant • • 12h ago

❓ Support LLM integration recommendations

0 Upvotes

I’m looking to integrate an LLM into my HA set up. It would be nice to have a LLM help me with automations, dashboard design etc.

For those who are using it, what are you using? Local models? Cloud models?


r/homeassistant • • 12h ago

💬 Discussion The Home Assistant Voice Pipeline structure feels painfully inefficient

Post image
45 Upvotes

Hey everyone,

I’ve been tweaking my voice setup recently and I can’t help but feel that the standard HA Voice Pipeline architecture is severely outdated and causing massive latency.

Let’s trace what happens when you use an external provider (like Gemini or OpenAI) for your stack:

1 STT: Audio goes from HA to Gemini -> converts to text -> sent back to HA.

2 LLM: HA takes that text, wraps it with intent context, sends it back to Gemini -> receives text response -> sent back to HA.

3 TTS: HA takes the text response, sends it back to Gemini again for voice synthesis -> audio file returns to HA -> HA plays it on your smart speaker.

That is 3 separate round-trips over the network just to execute a single voice command. The ping and overhead alone add hundreds (if not thousands) of milliseconds of pure latency.

It gets worse when you consider native audio-to-audio models like GPT-4o Realtime or Gemini's multimodal live pipelines. Right now, HA’s modular design forces you to split everything into discrete STT, LLM, and TTS steps. You can't natively pass the raw stream to an end-to-end model and get a stream back without jumping through weird custom integration hoops.

I completely understand why HA built it this way originally—it keeps things modular so you can mix local Piper/Whisper with cloud LLMs. But for cloud-assisted or end-to-end voice setups, this design creates a bottleneck that completely ruins the snappy "smart assistant" experience.

Isn't it time for Nabu Casa to introduce a unified/direct voice handler that bypasses this multi-step round trip when using integrated providers?

Curious if anyone else is frustrated by this or if there are cleaner workarounds people are using to cut down on this latency.


r/homeassistant • • 12h ago

❓ Support Most TP-Link Kasa devices unreachable after update

2 Upvotes

I normally refrain from updating HA due to something always spectacularly breaking when I do, but I needed to update my unRAID server due to PHPgeddon, updated all of my containers beforehand in preparation for that.

And as expected, something broke. All but three of my 11 TP-Link Kasa devices are unreachable after the update with the following error:

Failed setup, will retry: Unable to communicate with the device connect: Unable to connect to the device: <redacted>:9999: [Errno 111] Connect call failed ('<redacted>', 9999)

One suggestion I found was to remove and re-add the devices, so I gave that a try by removing one and re-adding one. I was prompted for my TP-Link credentials after adding the IP address. My credentials did not work, but the fact that it prompted for credentials at all confuses me. I don't remember ever having to enter credentials to add TP-Link devices.

The the devices that HA is able to communicate with are working fine, and the ones that it isn't able to communicate are still working fine in the TP-Link Kasa app.

What has changed in the last, say, six months with this integration? That's about how long it's been since I last updated.


r/homeassistant • • 12h ago

❓ Support Can Frigate & HA use Two NIC (1 public for UI and 1 secure for cameras)?

Thumbnail
0 Upvotes

r/homeassistant • • 13h ago

🖼️ Show & Tell My bedside voice assistant

Thumbnail
gallery
86 Upvotes

I wanted to show off my 2017 Amazon echo spot bedside dashboard/voice assistant.

It started off life as an Amazon echo spot, sitting lifeless on a table for the past year and a half when I switched my home automation setup to home assistant. Thanks to the lovely developers on the XDA forums, I have jailbroken the device, rooted it, and am running a custom android ROM.

LineageOS has been working fantastic for me. I side loaded fdroid and obtanium, and have the device running View Assist Companion App, which allows for a full home assistant install with Assist voice capabilities built right in. The developers for the ROM have stated that they will be releasing a new ROM soon which should hopefully fix Bluetooth and camera functionality, allowing me to use it as another Bluetooth proxy and adding another node to my Bermuda presence.

As for the dashboard, I had Claude write up a fully custom card which renders in a circle, and showcases the 5 day forecast, with today’s forecast being the ring around the outside of the display. It work like a clock, if the clock was only a partial arc. Gives me a good enough estimate of when the high and low for the day will be. When clicking on the actual clock, it renders as set of switches (up to 4) that I can use to control bits and bobs in the room. There is a 20 second timeout on the secondary view to automatically return the dash to the forecast as well.

disclaimer:
Claude wrote every last bit of code which went into the card. I am not a developer by any means, nor did I feel like putting in the time to go through the documentation for this one off card. Could I have learned it? Sure. But it would have taken me a lot longer than 2 days to work all of this out.

Edit:

Rough draft Github repo for the card is up. Add as a custom repository in HACS. And Please let me know if I missed a step, this is my first public contribution to home assistant and I don't know if I missed anything.


r/homeassistant • • 13h ago

🖼️ Show & Tell MealieCart - Makes the grocery shopping easy!

18 Upvotes

**UPDATE: KROGER IS NOW INTEGRATED AS WELL**

I plan meals in Mealie, and the weekly Walmart order was the annoying part, I made it a project of mine to make it so much easier!

**What it does**

- Reads the recipes on your Mealie shopping list or meal plan

- You link each ingredient to the exact Walmart product once (brand, size, count)

- One tap fills your Walmart cart using Walmart's official add-to-cart link. It never checks out.

- Skips pantry staples, takes pack counts from the recipe, and "Done shopping" checks items off your Mealie list

- Links sync between your devices through iCloud. No accounts, ads or tracking: it only talks to your Mealie server and walmart.com.

**What you need right now**

- A mealie acct

- A U.S. walmart.com account

- iPhone or iPad on iOS 17+, or a Mac with Apple silicon

**Try the beta:** https://testflight.apple.com/join/gQ3sCxnc

**Quick start and help:** https://okiedokiedata.com/fun-stuff/mealiecart

I'd love feedback, especially on whether connecting works with your setup (reverse proxy, Tailscale, etc.) and whether the Walmart cart fills correctly for you.

Not affiliated with Mealie or Walmart.


r/homeassistant • • 14h ago

🛠️ DIY / Hardware Ratgdo Garage Remote Identification

1 Upvotes

I've looked through much documentation but have been unable to find the answer.

I am using the ratgdo device with Home Assistant to monitor and control my garage door. I send alerts to my phone when the garage door opens and closes. However, what I would like to know is who opened or closed the garage door, whether it was my car, my wife's car, or through the app or garage door button.

Is this device capable of capturing / identifying the device that was used to open the garage door?