<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home-Assistant on Nelson Chen's Blog</title><link>https://mindflakes.com/tags/home-assistant/</link><description>Recent content in Home-Assistant on Nelson Chen's Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Copyright Nelson Chen</copyright><lastBuildDate>Tue, 29 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mindflakes.com/tags/home-assistant/index.xml" rel="self" type="application/rss+xml"/><item><title>My security camera tells me when the laundry is done</title><link>https://mindflakes.com/posts/2026/09/29/reolink-laundry-announcements/</link><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid>https://mindflakes.com/posts/2026/09/29/reolink-laundry-announcements/</guid><description>&lt;p&gt;I wish Reolink did more with the speakers in its cameras. They&amp;rsquo;re already powered, on the network, and sitting in useful places. They could double as little smart speakers for announcements, but that use doesn&amp;rsquo;t seem to get much attention.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d already &lt;a href="https://github.com/starkillerOG/reolink_aio/issues/161"&gt;opened an issue about adding speaker playback to the library behind Home Assistant&amp;rsquo;s official Reolink integration&lt;/a&gt;. With AI coding tools like Codex around to help, I decided to take a crack at getting it working myself.&lt;/p&gt;
&lt;p&gt;I wanted to know when the washer or dryer finished, even from across the house with the laundry-room door closed. There was already a Reolink camera with a speaker next to the stairs, near the bedrooms and a bit away from the machines. That seemed like a useful place for the announcements to come from.&lt;/p&gt;
&lt;p&gt;First I needed Home Assistant to know when the appliances finished. Samsung had &lt;a href="https://blog.smartthings.com/smartthings-updates/a-new-enhanced-smartthings-api-experience/"&gt;announced a $4.99/month plan for SmartThings API access&lt;/a&gt;, with free access being phased out starting in October. I wasn&amp;rsquo;t about to pay a stupid subscription for that. I used &lt;a href="https://github.com/mbillow/localthings"&gt;LocalThings&lt;/a&gt; instead: a free, open source integration that talks to the washer and dryer directly over the local network.&lt;/p&gt;
&lt;p&gt;I still had to connect the appliances to SmartThings first to get LAN access working, and &lt;a href="https://github.com/mbillow/localthings#known-device-behavior"&gt;keep them registered there&lt;/a&gt;. LocalThings handles Home Assistant&amp;rsquo;s ongoing communication with them locally.&lt;/p&gt;
&lt;p&gt;The official Reolink integration still &lt;a href="https://www.home-assistant.io/integrations/reolink/#known-limitations"&gt;lists two-way audio and text-to-speech as unavailable&lt;/a&gt;, so I used a custom integration.&lt;/p&gt;
&lt;p&gt;I started with &lt;a href="https://github.com/matthewholm/ha-reolink-talk"&gt;ha-reolink-talk&lt;/a&gt;, Matthew Holm&amp;rsquo;s integration based on &lt;a href="https://github.com/joeblack2k/reolink_talk"&gt;joeblack2k&amp;rsquo;s Reolink Talk&lt;/a&gt;. It already provides camera media players for audio files and text-to-speech, including cameras behind an NVR. I forked it to fix a couple of problems with my setup.&lt;/p&gt;
&lt;p&gt;The first was camera discovery. A separate request to the NVR failed because of its self-signed HTTPS certificate. The error was caught, and discovery quietly fell back to channel 0. I&amp;rsquo;m still wondering how the hell this worked in the upstream author&amp;rsquo;s setup without hitting that certificate error. Meanwhile, Home Assistant&amp;rsquo;s official Reolink integration was already connected and knew which channels existed. Reusing that information got the right cameras to show up.&lt;/p&gt;
&lt;p&gt;The audio framing needed fixing too. The encoded audio blocks weren&amp;rsquo;t being packaged the way the camera expected. Correcting the block metadata, padding, and stream framing got speech playing through the camera. Those fixes are in &lt;a href="https://github.com/nelsonjchen/ha-reolink-talk"&gt;my fork&lt;/a&gt; and an &lt;a href="https://github.com/matthewholm/ha-reolink-talk/pull/1"&gt;upstream pull request&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once playback worked, the laundry part was small. Each appliance&amp;rsquo;s LocalThings progress sensor reaching &lt;code&gt;finish&lt;/code&gt; triggers an announcement through the camera by the stairs. &lt;a href="https://www.home-assistant.io/integrations/piper/"&gt;Piper&lt;/a&gt; supplies the speech: “The washer has finished its cycle,” or the dryer equivalent.&lt;/p&gt;
&lt;p&gt;I tried a few versions of the sound, including repeated flute announcements and a Samsung completion melody. With the appliance and the camera playing the Samsung melody out of sync, it was a confusing cacophony. I went with one short tone followed by speech instead. The washer gets a higher tone and the dryer a lower one. Each tone and its spoken message are rendered together into one audio file, so the camera only has to start playback once.&lt;/p&gt;
&lt;p&gt;The laundry automations are specific to this house, but the integration fixes are there for other Reolink owners to use. A camera speaker is a pretty convenient little announcement speaker when it&amp;rsquo;s already in the right place.&lt;/p&gt;</description></item></channel></rss>