Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

SCRIPT: Styre Squeezebox med Alexa


Moskus

Anbefalte innlegg

Med Jon00 sin Alexa Helper kan man gjøre mye morsomt. Samtidig har det irritert meg at ingen har fått ut fingeren og laget en Squeezebox-integrasjon for Alexa (eller Google Home). Men med alt integrert i HomeSeer så kan man likevel få til grunnleggende styring av musikk i flere rom! :)

 

Jeg kan nå si:

"Alexa, tell HomeSeer to press play in living room"

"Alexa tell HomeSeer to press next  in basement"

… etc.

 

Du kan velge mellom å si "push" og "press" (fordi jeg synes det var vanskelig å si "press play" uten at det ble "pless play") og du kan velge mellom "on" og "in". 

Disse to er med andre ord like:

"Alexa, tell HomeSeer to press play in bathroom"

"Alexa, tell HomeSeer to push play on bathroom"

 

HomeSeer kan altså styre denne devicen:

image.png

 

og denne:

image.png

 

… og alle knappene lar seg "trykke" på. :) 

 

Først selve scriptet: 

 

Alexa_SqueezeboxControl.vb

    Function Main(ByVal input As String)
        Dim statusDevices(,) As String = {{"living room", 202}, {"basement", 845}, {"kitchen", 294}, {"bathroom", 1601}, {"guest room", 1627}, {"bedroom", 271}}

        If input.StartsWith("push ") Then input = input.Replace("push ", "press ")
        If input.Contains(" on ") Then input = input.Replace(" on ", " in ")
        input = input.Trim
        input = input.Replace("press ", "").Replace("the ", "").Replace(" in ", "|")
        Dim command() As String = input.Split("|")

        Dim button As String = command(0)
        Dim devRef As Integer = 0

        For i As Integer = 0 To statusDevices.GetLength(0) - 1
            If command(1) = statusDevices(i, 0) Then
                devRef = statusDevices(i, 1)
                Exit For
            End If
        Next

        Select Case button
            Case "play", "pause", "stop"
                'do nothing
            Case Else
                devRef += 1
        End Select

        Dim cc As HomeSeerAPI.CAPIControl = hs.CAPIGetSingleControl(devRef, True, button, False, False)
        If cc IsNot Nothing Then
            hs.CAPIControlHandler(cc)
            Return "Done!"
        Else
            Dim msg As String = "The button '" & button & "' was not found on device " & devRef
            hs.WriteLog("Squeezebox", msg)
            Return msg
        End If

    End Function

Du må endre den første linja (etter Sub Main...) til å reflektere dine devicer og dine rom. Strukturen er {"romnavn", DEVICE_ID_TIL_SQUEEZEBOX_STATUS}.

Rom-navnet kan du velge selv.

Device IDen er nummeret til devicen hvor play, pause og stop er. Altså 931 i det øverste bildet i toppen av posten.

Alle disse er kommaseparerte inne i klammer {}.

 

Oppsettet i Jon00 sin Alexa helper kan du sette opp slik:

 

image.png

 

Dermed har du full kontroll på play/pause/stop, og next/previous. Og kan være fin inspirasjon til andre devicer man vil styre. :) 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.