我把我的立体声音响的音量旋钮改造成了智能家居控制器
我在网上寻找智能家居设备时,偶然发现了一个智能旋钮,立刻就想买它。然后我注意到,正是我需要的东西正摆在我面前。放在我桌子上的迷你音响系统有一个很大的旋钮,转起来感觉非常棒,所以我想知道是否可以把它改造成智能家居控制器。
为什么实体旋钮对于智能家居控制有用
转动旋钮比按按钮更令人满意
我想要一个旋钮的主要原因是为了调节我家庭办公室智能灯泡的亮度。这款智能灯泡使用了自定义组件Adaptive Lighting,可以在一天中自动改变色温和亮度,以模拟太阳的自然光。经过一些调整后,我已经把设置调整到自己喜欢的状态,但有时我需要暂时改变亮度。
例如,如果我需要为一篇文章拍摄产品照片,我通常需要调高亮度以获得最佳图像。这意味着我需要么请求本地语音助手来操作,要么打开 Home Assistant 并拖动滑块。当我不确定灯光的亮度应该是多少时,使用语音命令会很令人沮丧,因此我不得不使用滑块上下调整亮度,直到找到我喜欢的设置。
如果我有一个智能旋钮,可以通过旋转刻度盘来调节亮度,生活会更轻松。这样,我就能快速轻松地将亮度调到我想要的水平。
我如何在 Home Assistant 中使用我的立体声音量旋钮
音乐助手显示媒体播放器音量
当我看到我的立体声音响上的音量旋钮时,我知道我必须使用它。这是一台松下迷你家庭影院,是我爸爸在不再需要时送给我的,它有一个大而显眼的音量旋钮,手感非常好。旋转时的轻微阻力令人难以抗拒。
我使用 Music Assistant 在家里播放音乐,因为它允许我从多个来源播放音乐,包括 Apple Music、Spotify 以及我自己的本地媒体文件。我连接了多台设备作为音乐播放器,包括通过 DLNA 连接的立体声音响。
在 Home Assistant 中,立体声系统被作为媒体播放器暴露。这包括许多属性,其中一个是 volume_level,它以 0.0 到 1.0 之间的浮点数形式暴露。旋转我的立体声音量旋钮会改变 volume_level 的值。
创建一个将音量级别转换为亮度级别的自动化相当简单。该自动化在媒体播放器的音量变化时触发。由于我使用的是 brightness_pct 字段,它的范围是 1 到 100,所以我需要使用如下模板将音量级别转换为亮度级别:
{{ (trigger.to_state.attributes.volume_level * 100) | int }} 我将其添加到了我的自动化中用于 light.turn_on 动作的 亮度 字段。现在,当我调高音量旋钮时,我的智能灯泡的亮度会增加,而当我调低音量时,亮度会降低。
棘手的部分是阻止音乐音量变化
把灯调亮可能很快就会很吵
这个设置有一个明显的缺陷。旋转音量旋钮会使亮度升高或降低,但它也会使立体声音量升高或降低。如果我把灯泡调到最亮,这意味着我的立体声也被调到最大音量。
如果立体声正在播放,这已经够糟了,但如果它没有播放,当我下次播放音乐时,我会真的被吓一跳,音乐会以最大音量从立体声中爆出。不幸的是,我找不到一个明显的方法在不改变立体声音量的情况下获取音量旋钮的值。
我的解决方案最终有点像临时凑合的办法。自动化只在音乐未播放时运行,这样我就不会把音量调到疯狂的程度。它第一次运行时,会检测当前是否有一个“活动”助手处于关闭状态,存储当前音量,启动一个30秒的计时器,然后切换“活动”助手为开启状态。
当旋钮被转动时,自动化会重复,但现在由于自动化被标记为活动状态,原始音量不会被保存,因此不会被覆盖。当定时器达到30秒时,立体声的音量会恢复到原始值,并且“活动”辅助功能会关闭。
现在,只要我的音乐没有播放,调节立体声音量旋钮就会改变灯光的亮度。一旦我停止旋转旋钮,音量将恢复到原来的值。当音乐播放时,音量旋钮会像往常一样改变音量,而灯光保持不变。
有时候你只是想转动一个旋钮
智能家居让你以多种方式控制设备,从语音命令到自动触发,例如运动传感器。然而,有时,你只是想转动一个漂亮的粗旋钮。调节灯光亮度从未感觉如此美好。







