My setup is that I have a Flic Twist associated with Flic LR Hub. The goal is to be able to play Sonos internet radio stations (note: not “Playlists,” which are much more natively supported) and to change the volume with the twist dial.
The challenge is that the native IOS/Flic app does volume-to-Sonos correctly (via the twist dial), but can’t trigger stations. IFTTT is way too laggy/slow for real time music, so I ruled that out after I got it “working.” HA can trigger stations and set fixed volume, but volume adjustments from the dial are an issue. So, in the immortal words of the internet: “Why Not Both?”
--> Volume happens via the flic app
--> Station selection happens via a webhook to Home Assistant
Also, the Twist has a single and a double click, so I want to play two different radio stations (local NPR + Sirius XM) which is a whole additional problem.
CURRENT VERSIONS
Flic Hubs LR = v4.3.5
Filc Twist = v2
Sonos S1 = v11.14
HA Core = 2024.10.1
HA Supervisor = 2024.10.0
HA Operating System = 13.1
Here’s how to do it:
- Set up your Flic Twist & Hub + Sonos & configure the twist to do volume on the kitchen, via the Flic IOS app
- Then, in Home Assistant, set up an automation (yaml below) to trigger the radio playlist (trick is the
x-rincon-mp3radio
prefix before the http URL) note that there need to be two separate actions in the automation if you want to set the volume and play a thing) - I wanted a consistent, set volume for this particular source. - Still in HA, set up a webhook trigger to call that automation. It’s notable that the creation of the webhook creates a single-factor “secret” in the name of the webhook,
flic-button-pressed-<redacted>
which becomes the URI. - Test the automation with curl on your laptop, to make sure that part is set up. This should cause the music to start.
curl -X POST http://homeassistant.local:8123/api/webhook/flic-button-pressed-<redacted>
- Then, in the Flic IOS App, configure the flic button push trigger a URL hit to HA with the “http internet request” action, and paste in your HA webhook link.
- Repeat the whole process for flic double-click, with a second automation
There’s a GOTCHA on the media_content_id
and URL prefixing. For starters, media_content_type: music
should JFW. Don’t worry about that part. But for the streaming station, you’ll need that x-rincon-mp3radio
prefix. There’s a nice little doc about how to extract the Sirius XM specific station URL here, but do use the x-rincon-mp3radio
prefix again, and not the x-sonosapi-hls-static
approach.
alias: Flic Button Pressed
description: ""
triggers:
- trigger: webhook
allowed_methods:
- POST
- PUT
local_only: true
webhook_id: flic-button-pressed-<redacted>
actions:
- action: media_player.volume_set
data:
volume_level: 0.3
target:
area_id: kitchen
device_id: 59dd4ccdec3d2qq42408305b8c9c3fa7
entity_id: media_player.sonos_room_name
- action: media_player.play_media
target:
entity_id: media_player.sonos_room_name
area_id: kitchen
device_id: 59dd4ccdec3d2qq42408305b8c9c3fa7
data:
media_content_type: music
media_content_id: ""x-rincon-mp3radio://https://live-ftc-prod-device.streaming.siriusxm.com/v1/763a312c707<redacted>_v4.m3u8