Du trycker på en ”play”-knapp och… ingenting händer. Eller värre: Spotify startar på fel enhet, med fel volym, och plötsligt jagar du högtalare i appen i stället för att njuta av musiken.
Spotify MQTT-styrning träffar hemautomationspillrare först, men en kontorsansvarig och en Airbnb-värd råkar ut för samma kaos. Du vill ha en fysisk knapp som pålitligt spelar, pausar, hoppar eller justerar volym på rätt högtalare, varje gång.
Det här n8n-flödet gör om MQTT-knappmeddelanden till Spotify-åtgärder för uppspelning, med en inbyggd kontroll som ”säkerställer att målenheten är aktiv”. Nedan ser du hur det fungerar, vad du behöver och vad du ska justera för din egen setup.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Spotify + MQTT: pålitlig musikkontroll med knapp
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify Next"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify Resume"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify Pause"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Spotify API - Volume up 5pct"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Spotify API - Volume down 5pct"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Spotify API - Get Available .."]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Individual Devices", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Select Device by Name to get..", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Custom Function 1 - P1"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Custom Function 2 - P2"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Custom Function 1 - P3"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Spotify API - Activate Targe.."]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route to Requested Function", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Custom Function 2 - P1"]
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Globals", pos: "b", h: 48 }
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Custom Function 2 - P3"]
n17@{ icon: "mdi:cog", form: "rounded", label: "Oops. How was this reached?", pos: "b", h: 48 }
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Spotify API - Get Device Sta.."]
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Already playing on Target De..", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Playing?", pos: "b", h: 48 }
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify Prev"]
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Remote Action - Function Rou..", pos: "b", h: 48 }
n14 --> n16
n15 --> n23
n20 --> n2
n20 --> n1
n8 --> n9
n13 --> n14
n9 --> n10
n6 --> n7
n12 --> n3
n12 --> n4
n12 --> n20
n12 --> n8
n12 --> n13
n12 --> n17
n18 --> n19
n23 --> n21
n23 --> n0
n23 --> n18
n19 --> n12
n19 --> n5
n5 --> n6
n7 --> n11
n11 --> n12
end
subgraph sg1["MQTT Trigger - Remote Switch Flow"]
direction LR
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/mqtt.svg' width='40' height='40' /></div><br/>MQTT Trigger - Remote Switch"]
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n22 trigger
class n0,n1,n2,n7,n9,n10,n12,n13,n14,n16,n19,n20,n21,n23 decision
class n3,n4,n5,n8,n11,n18 api
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n4,n5,n8,n9,n10,n11,n13,n16,n18,n21,n22 customIcon
Problemet: Spotify spelar på fel enhet
Spotify är kanon tills du försöker styra det ”handsfree” över flera rum, högtalare eller konton. Appen kan komma ihåg den senaste enheten du använde, men den väljer inte alltid den enhet du vill ha just nu. Så du hamnar i samma lilla ritual: öppna appen, hitta listan med Connect-enheter, välj högtalaren och tryck play/pause igen. Det är inte svårt. Det är bara hela tiden. Och i ett hem, på ett kontor eller i en uthyrning blir ”enkel musik” en liten återkommande huvudvärk.
Det blir snabbt mycket. Här är var det faller i verkligheten.
- Uppspelningsåtgärder misslyckas eftersom Spotify inte har någon aktiv enhet vald när ditt knapptryck kommer in.
- Någon använde Spotify på sin telefon senast, så din knapp i vardagsrummet styr fel högtalare.
- Volymändringar blir en gissningslek, vilket är så du råkar dra på musiken mitt i natten.
- Manuella fixar känns ”snabba” men stjäl fokus, särskilt när du gör dem några gånger om dagen.
Lösningen: MQTT-knapptryck routas till Spotify-åtgärder
Det här flödet lyssnar på meddelanden från en IoT-knapp eller fjärr som pratar via MQTT (tänk en Ikea-fjärr via Zigbee2MQTT i Home Assistant). När ett knapptryck kommer in läser n8n åtgärdstexten, avgör vad du menade (play/pause, nästa, volym upp/ner, starta en favoritspellista) och anropar sedan Spotify för att göra det. Nyckeln är driftsäkerhet: innan det kör vissa åtgärder kontrollerar det om din föredragna Spotify-uppspelningsenhet är aktiv. Om den inte är det hämtar flödet dina tillgängliga enheter, hittar den som matchar namnet du har satt och flyttar uppspelningen till den. Efter det kör det önskat uppspelningskommando så att åtgärden hamnar i rätt rum.
Flödet börjar med en MQTT-trigger och en liten ”globals”-konfiguration där du anger namnet på din mål-enhet i Spotify och (valfritt) namnet på en favoritspellista. Sedan routar det inkommande knappkommandot till rätt Spotify- eller HTTP-anrop. Till sist ändrar det uppspelningsläge, justerar volym i små steg eller startar något specifikt – helt utan att du öppnar Spotify-appen.
Det du får: automation kontra resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du använder Spotify i kök, vardagsrum och kontor, och att du trycker på en fysisk knapp ungefär 6 gånger om dagen (play, pause, nästa, volym). Manuellt är det lätt att lägga cirka 1 minut per knapptryck på att låsa upp telefonen, öppna Spotify, välja rätt enhet och försöka igen. Det blir ungefär 6 minuter per dag. Med det här flödet är ”arbetet” själva knapptrycket, och n8n sköter enhetsval och kommandot i bakgrunden. Du får tillbaka minuterna och du slipper bryta stunden.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger funkar bra)
- MQTT-broker för att ta emot dina knapphändelser.
- IoT-knapp/fjärr som publicerar MQTT-meddelanden (till exempel via Zigbee2MQTT).
- Spotify-utvecklarappens inloggningsuppgifter (Client ID och Client Secret från Spotify Developer Dashboard).
Svårighetsnivå: Medel. Du kommer mest att klistra in värden i n8n, men du behöver vara bekväm med att matcha MQTT-topics och slutföra Spotify OAuth.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett MQTT-meddelande triggar allt. Din fjärr publicerar ett meddelande som ”arrow_left_click” (exakt text beror på din enhet) till en specifik MQTT-topic. n8n prenumererar på den topicen med noden MQTT Trigger.
Globala inställningar och routing avgör vad du menade. Ett litet konfigsteg laddar namnet på din Spotify-målenhet för uppspelning och ett valfritt namn på en favoritspellista. Sedan använder flödet routningslogik för att mappa knappens åtgärdstext till rätt gren.
Spotify-status kontrolleras innan kommandon körs. Flödet hämtar aktuell uppspelningsstatus via HTTP och bekräftar att målenheten är aktiv. Om den inte är det hämtar det listan över tillgängliga enheter, filtrerar på namnet du valde och flyttar uppspelningen till den enheten så att kommandon hamnar rätt.
Den begärda åtgärden körs och avslutas rent. Beroende på gren pausar eller återupptar det uppspelning, hoppar låtar, spolar tillbaka/framåt, justerar volym i små steg eller startar uppspelning från en vald spellista. Om det inkommande meddelandet inte matchar någon förväntad väg avslutas det utan att göra något.
Du kan enkelt ändra mappningen mellan knapp och åtgärd så att den matchar din fjärrs meddelandetext utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera MQTT-triggern
Det här arbetsflödet startar när en Zigbee- eller MQTT-fjärrkontroll skickar en knapphändelse. Konfigurera triggerns topic så att den matchar er enhet.
- Lägg till noden MQTT Remote Trigger.
- Ställ in Topics på
zigbee2mqtt/MyIOTButton1234/action. - Aktivera JSON-tolkning genom att låta Options → jsonParseBody vara aktiverat.
- Credential Required: Anslut era mqtt-inloggningsuppgifter.
⚠️ Vanlig fallgrop: Om topic inte matchar exakt med er Zigbee2MQTT-enhets action-topic kommer inga meddelanden att trigga arbetsflödet.
Steg 2: Anslut Spotify
Spotify är den primära tjänsten. Flera noder använder Spotify OAuth-inloggningen i både Spotify- och HTTP Request-noder.
- Anslut Spotify OAuth en gång och återanvänd den i alla Spotify-relaterade noder.
- Credential Required: Anslut era spotifyOAuth2Api-inloggningsuppgifter i dessa noder: Rewind Spotify Track, Advance Spotify Track, Pause Spotify Playback, Resume Spotify Playback, Play Specific Track, Skip To Next Track, Fetch User Playlists, Start Playlist Playback.
- Credential Required: Anslut era spotifyOAuth2Api-inloggningsuppgifter i dessa HTTP-noder: Fetch Playback Status, Retrieve Spotify Devices, Activate Chosen Device, Increase Volume 5%, Decrease Volume 5%, Preset Volume Step.
⚠️ Vanlig fallgrop: Säkerställ att er Spotify-app har nödvändiga scopes för uppspelningsstyrning (t.ex. user-modify-playback-state, user-read-playback-state), annars kommer HTTP-anropen att misslyckas.
Steg 3: Konfigurera globala alternativ och routing för fjärrkontrollen
Dessa noder definierar er målenhet och favoritspellista och routar sedan knapphändelser till rätt styrväg.
- I Set Global Options, ställ in target_spotify_playback_device_name till
My Smart-Speaker Playback Device. - I Set Global Options, ställ in favorite_playlist_name till
Discover Weekly. - I Remote Action Router, ställ in Value 1 till
{{ $('MQTT Remote Trigger').first().json.message }}och behåll Data Type som string. - Verifiera att reglerna i Remote Action Router routar till utgångar som
arrow_left_click,brightness_up_clickochtoggle. - I Route Requested Action, bekräfta att utgångsnycklarna mappar till styrvägar som
volume_up,volume_down,play/pause,custom_function_1ochcustom_function_2.
Tips: Om er fjärrkontroll använder andra payloads, uppdatera rightValue-strängarna i Remote Action Router och Route Requested Action så att de matchar er enhet.
Steg 4: Konfigurera enhetsmål och aktivering
Den här vägen säkerställer att Spotify spelar på er valda enhet innan åtgärderna körs.
- I Fetch Playback Status, ställ in URL till
https://api.spotify.com/v1/me/playeroch frågeparametern device_id till{{ $('Set Global Options').first().json.target_spotify_playback_device_id }}. - I Check Target Device Active, ställ in villkoret så att det jämför
{{ $('Fetch Playback Status').first().json.device.name }}är lika med{{ $('Set Global Options').first().json.target_spotify_playback_device_name }}. - Konfigurera Retrieve Spotify Devices med URL
https://api.spotify.com/v1/me/player/devices. - I Split Device Records, ställ in Field To Split Out till
devices. - I Filter Device By Name, jämför
{{ $json.name }}med{{ $('Set Global Options').first().json.target_spotify_playback_device_name }}. - I Activate Chosen Device, ställ in URL till
https://api.spotify.com/v1/me/playeroch JSON Body till{ "device_ids": [ "{{ $('Filter Device By Name').first().json.id }}" ], "play": true }.
⚠️ Vanlig fallgrop: Om target_spotify_playback_device_name inte matchar det faktiska enhetsnamnet kommer Activate Chosen Device inte att hitta den och åtgärder kommer att routas till Utility: Unexpected Path.
Steg 5: Konfigurera uppspelnings- och volymåtgärder
Dessa noder utför uppspelnings-, volym- och spellisteåtgärder efter enhetskontrollen.
- I Increase Volume 5%, ställ in URL till
https://api.spotify.com/v1/me/player/volumeoch använd frågeparametrarnadevice_id={{ $json.device.id }}ochvolume_percent={{ Math.min($json.device.volume_percent + 5, 100) }}. - I Decrease Volume 5%, ställ in URL till
https://api.spotify.com/v1/me/player/volumeoch användvolume_percent={{ Math.max($json.device.volume_percent - 5, 20) }}. - I Check Playback State, ställ in villkoret till
{{ $('Fetch Playback Status').first().json.is_playing && !$('Activate Chosen Device').isExecuted }}. - I Preset Volume Step, ställ in volume_percent till
80, kedja sedan till Play Specific Track med IDspotify:track:4PTG3Z6ehGkBFwjybzWkR8och därefter Skip To Next Track. - I Fetch User Playlists, ställ in Resource till playlist, Operation till getUserPlaylists och Return All till true, filtrera sedan i Filter Playlist Name där
{{ $json.name }}är lika med{{ $('Set Global Options').first().json.favorite_playlist_name }}. - I Start Playlist Playback, ställ in ID till
spotify:playlist:{{ $json.id }}och Operation till startMusic. - Lämna Utility: Unexpected Path som en no-op för alla knapphändelser som inte matchar.
Tips: Ni kan ändra låt eller spellista genom att uppdatera Play Specific Track och Start Playlist Playback utan att röra routningslogiken.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att era fjärrkontrollhändelser routas till Spotify-åtgärder korrekt och aktivera sedan arbetsflödet för drift.
- Klicka på Execute Workflow och trigga er MQTT-knapphändelse (t.ex. tryck på fjärrkontrollens knapp).
- Verifiera att MQTT Remote Trigger tar emot ett meddelande och att Remote Action Router och Route Requested Action skickar flödet till rätt gren.
- Bekräfta att Spotify-uppspelningen ändras på enheten som anges i Set Global Options och att volym-/spåråtgärderna matchar era knapptryckningar.
- Om allt fungerar, växla arbetsflödet till Active för att aktivera användning i produktion.
Vanliga fallgropar
- Spotify-inloggningar kan löpa ut eller behöva specifika behörigheter. Om saker slutar fungera: kontrollera Spotify-inloggningen i n8n (och anslut igen) först.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder nedströms fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars redigerar du output för alltid.
Vanliga frågor
Cirka en timme om din MQTT-enhet redan publicerar meddelanden.
Nej, ingen kod krävs för grundsetupen. Du uppdaterar främst MQTT-topic, mappar knappens meddelandetext och kopplar Spotify-inloggning.
Ja. n8n har ett gratisalternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med Spotify-kostnader (ett Premium-konto krävs vanligtvis för full uppspelningskontroll).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och du kommer nästan säkert behöva göra det. Uppdatera de två routningspunkterna som tolkar din fjärrs meddelandetext (”Remote Action Router” och logiken ”Route Requested Action”) så att värden som ”brightness_up_click” mappar till volym upp, play/pause eller start av en spellista. Vanliga justeringar är att lägga till långtrycksbeteende, ändra storleken på volymsteg och att routa vissa knappar till en specifik spellista i stället för bara play/pause.
Oftast är det OAuth. Spotify-appens Client ID/Secret kan vara fel, redirect-URL:en kanske inte matchar det Spotify förväntar sig, eller så har token i n8n gått ut och behöver kopplas om. Bekräfta också att du har valt din Spotify-inloggning igen i varje Spotify- och HTTP-nod efter att du skapat den, eftersom den här mallen förutsätter att du ”kopplar” inloggningen på flera ställen.
Väldigt många – för hemmabruk är det i princip ansträngningslöst för n8n.
För MQTT-driven styrning är n8n oftast en renare lösning, eftersom MQTT är förstaklassstöd och du kan förgrena logik utan att betala per ”path”. Det är också enklare att hålla allt lokalt med egen hosting, vilket är viktigt för driftsäker hemautomation. Zapier och Make kan fortfarande fungera, men du kan behöva lägga till extra middleware bara för att ta emot MQTT-händelser. Om du vill att det ska kännas som en riktig knapp (inte en ”ibland funkar det”-knapp) är n8n en mer praktisk startpunkt. Prata med en automationsexpert om du vill ha hjälp att välja snabbaste vägen för din setup.
När det väl är satt blir musikstyrningen tråkig på bästa möjliga sätt. Flödet hanterar den repetitiva enhetsvalet och kommandoroutningen så att du bara kan trycka på knappen och gå vidare.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.