Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 11 123 ... LastLast
Results 1 to 10 of 267

Hybrid View

  1. #1
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793

    [Announce] LMS-lite certified Smart Home skill for Alexa

    LMS is so awesome, it deserves more than just one certified Alexa skill to control it. That's why I've released a second and very different skill that complements MediaServer and nicely co-exists with it. Just like MediaServer, because it's a certified skill you do not need any developer or beta accounts to use it. Plus, it's free!

    Name:  lms-lite - small.png
Views: 3923
Size:  15.4 KB

    It's called LMS-lite and unlike MediaServer which is a custom skill, this one uses the Smart Home paradigm. While the downside of this is far fewer and more limited commands compared to MediaServer, the upside is that there's never a need for an invocation name (so commands are shorter), plus, your LMS players show up as smart-home devices in the Alexa app. That means they can be included in groups with other smart home devices and used in routines to do clever things like switch an amplifier on/off together with a Squeezebox.

    With the Smart Home paradigm, Amazon has pre-written a bunch of voice commands to control gadgets. A skill author cannot extend or change these, but they do provide basic/useful functionality and are available for several spoken languages. There's a pool of so-called interfaces that a skill can rely on, and for this skill I've included everything that could possibly work with LMS: Alexa.PowerController, Alexa.Speaker, Alexa.PlaybackController, Alexa.RangeController, Alexa.ModeController, Alexa.ToggleController and Alexa.EndpointHealth. Check https://developer.amazon.com/en-US/d...nterfaces.html if that got you curious.

    LMS-lite uses exactly the same account-linking process as the full-function MediaServer skill, where most people use ngrok as their proxy. The easy-setup procedure is explained at https://smartskills.tech/lmslitesetup but if you already have MediaServer then you will be familiar with the idea.

    Once you link the skill successfully, you just say Alexa, discover devices. You should also do this any time you add or remove players. Note that Alexa will only mention a device as being 'new' the first time she sees it so if you re-discover you will be told that no new devices were found. However, whatever Squeezeboxes were found will always be visible in the Alexa app in the display category MUSIC_SYSTEM. Here's an example:


    Name:  IMG_5531.PNG
Views: 744
Size:  20.8 KB


    During discovery, your player names are untouched by the skill and reported as-is to Alexa (except for removing disallowed characters).

    So, what commands do we have available? The following examples are for spoken English and are on an interface-by-interface basis and assuming a Squeezebox called Touch for example purposes. Once a player name has been mentioned in any of the commands, it persists until a different player is mentioned or a different music-playing skill is launched from that Echo. The examples below omitting 'Touch' in them assume that fact and will not work if no previous command recently mentioned Touch (or else Alexa will ask "Sorry, on what device?"). If in doubt, always mention the player name in the command. Each Echo has its own persisted Squeezebox too, so remember that fact if you move to another room and issue a name-free command. Don't blame/credit me for these utterances, they're Amazon's work:

    Alexa.PowerController gives us power on/off.

    Alexa, power ON the Touch
    Alexa, power OFF the Touch
    Alexa, turn ON the Touch
    Alexa, turn OFF the Touch

    Alexa.Speaker gives us volume control and muting.

    Alexa, set Touch volume to 70
    Alexa, volume 20 on Touch
    Alexa, increase the Touch volume by 10
    Alexa, louder
    Alexa, quieter
    Alexa, decrease the volume by 20
    Alexa, mute the Touch
    Alexa, unmute Touch

    Alexa.PlaybackController gives us transport commands.

    Alexa, next track on Touch
    Alexa, next
    Alexa, skip this
    Alexa, previous track on Touch
    Alexa, previous
    Alexa, go back
    Alexa, 'play' on Touch *
    Alexa, resume Touch *
    Alexa, pause
    Alexa, stop
    Alexa, rewind (not native on LMS but skips back 60 sec)
    Alexa, FastForward (not native on LMS but skips ahead 60 sec)
    Alexa, start-over (goes to track 1)

    *For play/resume, never leave out the player name. Otherwise a music skill will attempt to process the command instead of LMS-lite.

    Alexa.RangeController gives us setting and querying the track index (first track is 1) and numbered favorites.

    Alexa, track 7 on Touch
    Alexa, what track is the Touch at?
    Alexa, favorite 3 on Touch
    Alexa, preset 6 on Touch

    Alexa.ToggleController gives us setting and querying of both loop (repeat album) and shuffle-play (shuffle by song)

    Alexa, turn ON 'loop' on Touch
    Alexa, activate 'loop' on Touch
    Alexa, turn OFF 'loop' on Touch
    Alexa, deactivate 'loop' on Touch
    Alexa, is 'loop' ON, on Touch?

    Alexa, turn ON 'shuffle play' on Touch
    Alexa, activate 'shuffle play' on Touch
    Alexa, turn OFF 'shuffle play' on Touch
    Alexa, deactivate 'shuffle play' on Touch
    Alexa, is 'shuffle play' ON, on Touch?

    Alexa.ModeController gives us more control of both repeat and shuffle.

    Alexa, set 'repeat mode' on Touch to 'OFF'
    Alexa, set 'repeat mode' on Touch to 'song'
    Alexa, set 'repeat mode' on Touch to 'playlist'
    Alexa, set 'repeat mode' on Touch to 'album'
    Alexa, what is the repeat mode on Touch?

    Alexa, set 'shuffle mode' on Touch to 'OFF'
    Alexa, set 'shuffle mode' on Touch to 'song'
    Alexa, set 'shuffle mode' on Touch to 'playlist'
    Alexa, set 'shuffle mode' on Touch to 'album'
    Alexa, what is the shuffle mode on Touch?

    See https://mediaserver.smartskills.tech...ml#section-6-0 for an explanation of the above and also a summary of how LMS-lite and MediaServer handle overlapping commands.

    With an Alexa Routine*, you can have a single trigger send a volley of commands to a player — much like a smart-home 'scene'. A trigger can be a self-defined voice command, time of day, or input from a sensor such as motion/contact/illuminance. Any combination of player Power (on/off), Favorite (#), Loop (on/off), Player Volume (0-100), Preset (#), Repeat Mode (off/song/album), Shuffle Mode (off/song/album), Shuffle Play (on/off) and Track (#) can be assigned to a single trigger (see image on the left). This could be used to start playing a particular favorite at a certain volume at a pre-defined time (giving a more capable Alarm Clock than the built-in LMS one — see image on the right) or when you arrive home and your door-contact triggers.

    *In the Alexa app select Routines and under Add/edit routine, as an Action select Smart Home. Under All Devices you should see your players among your other Smart Home devices. Any parameter(s) you tick will be included in the routine with the selected value.

    Name:  routine.png
Views: 697
Size:  64.1 KB


    With smart-home skills, custom error messages are not possible. Any error(s) mentioned by Alexa with your connectivity should be taken as a prompt to check out your entire connectivity chain from cloud to player — the error text may not nail down the real issue. A disconnected player or server, for example, can result in incorrect advice to re-link the skill (which is totally unnecessary). Always check the LMS GUI to troubleshoot connectivity !

    You should use the same ngrok tunnel for both LMS-lite and MediaServer. If you have any account-linking issues then it should *not* be necessary to unlink either skill just to get the other one working. Like MediaServer, LMS-lite can handle multiple LMS instances at different locations provided player names are unique.

    For people who prefer minimal setup instructions without explanations, visit https://smartskills.tech/lmslitesetup/minimal.html. Otherwise see https://smartskills.tech/lmslitesetup for the full text.
    Last edited by philchillbill; 2021-09-05 at 02:01. Reason: New abbreviated help option

  2. #2
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793
    LMS-lite is now available in French for both the fr-FR (France) and fr-CA (Canada) locales.

    Thanks to DrMacabre for translating the skill store description at https://www.amazon.fr/smartskills-te...dp/B083H9JTJY/.

    Thanks to Google translate for preparing setup instructions in French at https://smartskills.tech/lmslitesetup.

    If you're in Canada and enable Multilingual Mode in your Alexa app, you can alternate between English and French commands at will. The response will automatically track the language used for the command.

    New additions in Feb 2020:

    If a particular player is completely powered down or otherwise off the network when you issue a command to it, the error returned is ENDPOINT_UNREACHABLE which should have Alexa tell you that that specific device is offline, please check its power supply and connection.

    Finally, if your ngrok tunnel is no longer valid then the error is of type EXPIRED_AUTHORIZATION_CREDENTIAL which will result in Alexa telling you that the skill needs to be unlinked and re-linked (with a valid/new tunnel). If you are using autoupdate via the uuid concept, make sure to run the updater .py/.pl/.sh/.ps1 script. A full unlink/relink is actually not needed but Amazon does not have a message that matches.

    New in July 2020:

    Thanks to the translation efforts of @strict20, the skill is now available with German language support for the DACH countries. You can find it at https://www.amazon.de/smartskills-te.../dp/B083H9JTJY
    If you say "Alexa, speak English and German" then you can alternate between issuing commands in both languages with the skill.

    New in November 2020:

    Numerical favorites can be requested

    New in February 2021

    Easy-setup — enabling secure cloud-access to LMS is now fully automated

    New in March 2021

    Player Volume can now be set from within Alexa Routines. Also, requesting numerical favorites now handles nesting/sub-folders

    New in Sept 2021
    Retrieving favorites no longer has to be a recursive activity so timeouts with large collections should no longer occur.
    Last edited by philchillbill; Yesterday at 01:03.

  3. #3
    Quote Originally Posted by philchillbill View Post
    LMS-lite is now available in French for both the fr-FR (France) and fr-CA (Canada) locales.

    Thanks to DrMacabre for translating the skill store description at https://www.amazon.fr/smartskills-te...dp/B083H9JTJY/.

    Thanks to Google translate for preparing setup instructions in French at https://smartskills.tech/lmslitesetup.

    If you're in Canada and enable Multilingual Mode in your Alexa app, you can alternate between English and French commands at will. The response will automatically track the language used for the command.

    New additions in Feb 2020:

    If a particular player is completely powered down or otherwise off the network when you issue a command to it, the error returned is ENDPOINT_UNREACHABLE which should have Alexa tell you that that specific device is offline, please check its power supply and connection.

    Finally, if your ngrok tunnel is no longer valid then the error is of type EXPIRED_AUTHORIZATION_CREDENTIAL which will result in Alexa telling you that the skill needs to be unlinked and re-linked (with a valid/new tunnel). If you are using autoupdate via the uuid concept, make sure to run the updater.py/.pl script. A full unlink/relink is actually not needed but Amazon does not have a cookie-cutter message that matches.

    New in July 2020:

    Thanks to the translation efforts of @strict20, the skill is now available with German language support for the DACH countries. You can find it at https://www.amazon.de/smartskills-te.../dp/B083H9JTJY
    If you say "Alexa, speak English and German" then you can alternate between issuing commands in both languages with the skill.

    New in November 2020:

    Numerical favorites can be requested

    New in February 2021

    Easy-setup - enabling secure cloud-access to LMS is now fully automated
    Hi, I would like to help translating the app in italian, since I have to keep my devices on italian language.
    Let me know if I can help. Thanks!

  4. #4
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793
    Quote Originally Posted by gianpaoloracca;
    Hi, I would like to help translating the app in italian, since I have to keep my devices on italian language.
    Let me know if I can help. Thanks!
    Thanks for offering to translate. For smart-home skills, it's not the skill voice model that needs translating but the description shown in the Alexa app when you browse the skill. Should be easy-peasy.

    However, one of the key Amazon code-library items needed by the skill (Alexa.PlaybackController) is not available in Italian, so it's simply not possible. Amazon does not publish roadmaps so I have no idea when it will be available (I do monitor availability from time to time). https://developer.amazon.com/en-US/d...nterfaces.html

  5. #5
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793
    A user asked if it would be possible to add a slider for player volume for use in Alexa Routines. It's now live and is called

    Player Volume
    Volume du lecteur
    Player-Lautstärke

    How can you use this? Well, you could already use an Alexa routine to e.g. start a player playing e.g. favorite 2 when motion is detected in a room or when a smart light is turned on. But the player would of course play at its most recent volume, which may be inappropriate. By having a volume slider in the routine, you can always set a fixed volume for when playback starts due to a routine. Remember, all those options for a player are selectable in every routine, so routine A could play favorite 2 at volume 20 with repeat on, and routine B could play favorite 5 at volume 50 with repeat off. That's why the volume slider is useful.
    Last edited by philchillbill; 2021-03-15 at 03:42. Reason: Added explanation

  6. #6
    Is there a way to tell this skill to play a certain song or artist, or should I continue using Media Server?
    1 Touch
    4 Receivers
    3 Controllers
    3 Radios
    (I think I have a problem)

  7. #7
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793
    Quote Originally Posted by FredFredrickson View Post
    Is there a way to tell this skill to play a certain song or artist, or should I continue using Media Server?
    That’s not possible in a smart home skill so you will have to continue using MediaServer for those commands. This skill is more for accessing the players for home automation purposes and simple commands.

  8. #8
    Senior Member philchillbill's Avatar
    Join Date
    Jan 2019
    Location
    The Netherlands
    Posts
    793
    The way favorites are handled by LMS-lite has been changed. Under the hood, if you asked for Favorite 'N', it used to call ["favorites","playlist","play","item_id:'+str(int(N ) - 1)+'"] which is fast but does not traverse nested favorites. On Squeezeboxes with a display, it also led to a heart symbol on the screen instead of the now-playing screen.

    It now works the same way as favorites in MediaServer, meaning it parses the hierarchy in multiple API calls to retrieve all your favorites. Flattening to a numerical index should be the same as it is in MediaServer. In case this to-and-fro'ing to the API causes a timeout with your slow internet, you can still use the old method by asking for 'preset' instead of 'favorite'. With favorite, you now also get now-playing as under the hood it uses ["favorites","playlist","play","menu:favorites","is ContextMenu:1","item_id:'+str(id)+'"]

    If you ask for a numerical favorite that is out of range, Alexa will now tell you rather than just saying 'OK' as she used to.

    Enjoy!

    EDIT: As a reminder, don't say "Play" - just say "Alexa, favorite 6 on Livingroom"
    Last edited by philchillbill; 2021-04-07 at 06:46.

  9. #9
    Senior Member
    Join Date
    Jan 2010
    Location
    Hertfordshire
    Posts
    7,610
    Quote Originally Posted by philchillbill View Post
    LMS is so awesome, it deserves more than just one certified Alexa skill to control it. That's why I've released a second and very different skill that complements MediaServer and nicely co-exists with it. Just like MediaServer, because it's a certified skill you do not need any developer or beta accounts to use it.

    Name:  lms-lite - small.png
Views: 3923
Size:  15.4 KB

    It's called LMS-lite and unlike MediaServer which is a custom skill, this one uses the Smart Home paradigm. While the downside of this is far fewer and more limited commands compared to MediaServer, the upside is that there's never a need for an invocation name (so commands are shorter), plus, your LMS players show up as smart-home devices in the Alexa app. That means they can be included in groups with other smart home devices and used in routines to do clever things like switch an amplifier on/off together with a Squeezebox. LMS-lite is also free, and will be available (soon) in languages other than English.

    With the Smart Home paradigm, Amazon has pre-written a bunch of voice commands to control Smart Home gadgets. A skill author cannot extend or change these, but they do provide basic/useful functionality and are available for several languages. There's a pool of so-called interfaces that a skill can declare an endpoint/device to support during device discovery. For this skill, I've included everything from this (current) arsenal that could possibly work with LMS: Alexa.PowerController, Alexa.Speaker, Alexa.PlaybackController, Alexa.RangeController, Alexa.ModeController, Alexa.ToggleController and Alexa.EndpointHealth. The reason I'm listing all this here is so that you can go check the Amazon docs on those interfaces if you want further information: https://developer.amazon.com/en-US/d...nterfaces.html

    LMS-Lite uses exactly the same account-linking process as the full-function MediaServer skill, where most people use ngrok for external accessibility and encryption/password-protection. Because it's a Smart Home skill, with LMS-Lite you must immediately account-link during enablement. The howto is at https://smartskills.tech/lmslitesetup but if you already have MediaServer then you will be familiar with the idea.

    Once you link the skill successfully, you just say Alexa, discover devices. She will do a round-robin with all of your Smart Home skills and all your gadgets will be reported by their associated skills. LMS-Lite will add all your LMS players, so Alexa should tell you that there are some new devices. She may name a few informatively, but that's up to Amazon - with Smart Home skills, the skill itself never determines what Alexa says. If you subsequently discover devices she will not mention any new LMS devices as they are already known. Any changes to player names and/or deleting players is done in the Alexa app under Devices.

    During discovery, your player names are untouched by the skill and reported as-is to Alexa. If you have unspeakable player names like Onkyo-XTR672VMK, well, good luck with getting her to understand them because you cannot abbreviate much. However, you can rename players textually in the Alexa app, which is a nice side-effect of their showing up there. It's probably smart to tack on ' player' to the end of each device name if you are using room-based naming in your house. Otherwise you risk being told that 'More than one device(s) share that name, which one do you want?', every time you issue a control directive. At a minimum, split concocted names like 'rearupstairsbedroomtouch' into a few separate words - this is after all voice control and not UI navigation. But unlike with MediaServer, there's no preference for a room barename as basis. You are free to call your players anything that can be reasonably enunciated. Yaay!

    So, what commands do we have available? The following examples are for English and are on an interface-by-interface basis and assuming a Squeezebox called Touch for example purposes. Once a player name has been mentioned in any of the commands, it persists until a different player is mentioned or a different music-playing skill is launched from that Echo. The examples below omitting 'Touch' in them assume that fact and will not work if no previous command recently mentioned Touch. If in doubt, always mention the player name in the command. Each Echo has its own persisted Squeezebox too, so remember that fact if you move to another room and issue a name-free command. Don't blame/credit me for these utterances, they're Amazon's work:

    Alexa.PowerController gives us power on/off.
    Examples:

    Alexa, power ON the Touch
    Alexa, power OFF the Touch
    Alexa, turn ON the Touch
    Alexa, turn OFF the Touch
    etc.

    Alexa.Speaker gives us volume control and muting.
    Examples:

    Alexa, set Touch volume to 70
    Alexa, volume 20 on Touch
    Alexa, increase the Touch volume by 10
    Alexa, pump up the volume
    Alexa, pump it up
    Alexa, louder
    Alexa, make it louder
    Alexa, louder please
    Alexa, quieter
    Alexa, tone it down
    Alexa, lower the volume
    Alexa, decrease the volume by 20
    Alexa, mute the Touch
    Alexa, unmute Touch
    etc.

    Alexa.PlaybackController gives us transport commands.
    Examples:

    Alexa, next track on Touch
    Alexa, next
    Alexa, skip this
    Alexa, previous track on Touch
    Alexa, previous
    Alexa, go back
    Alexa, play on Touch
    Alexa, resume on Touch
    Alexa, pause
    Alexa, stop
    Alexa, start-over (goes to track 1)
    (note that play/resume can misbehave and kick off your most recent stream-to-Echo from another Music skill instead of sending a Smart Home command to LMS - it all depends on your recent history of commands)

    Alexa.RangeController gives us setting and querying the track index (first track is 1).
    Examples:

    Alexa, track 7 on Touch
    Alexa, song 9 on Touch
    Alexa, what track is the Touch at?
    Alexa, what track is the Touch on?

    Alexa.ToggleController gives us setting and querying of both loop (repeat album) and shuffle-play (shuffle by song)
    Examples:

    Alexa, turn ON 'loop' on Touch
    Alexa, activate 'loop' on Touch
    Alexa, turn OFF 'loop' on Touch
    Alexa, deactivate 'loop' on Touch
    Alexa, is 'loop' ON, on Touch?

    Alexa, turn ON 'shuffle play' on Touch
    Alexa, activate 'shuffle play' on Touch
    Alexa, turn OFF 'shuffle play' on Touch
    Alexa, deactivate 'shuffle play' on Touch
    Alexa, is 'shuffle play' ON, on Touch?

    Alexa.ModeController gives us more control of both shuffle and repeat.
    Examples:

    Alexa, set 'repeat mode' on Touch to 'OFF'
    Alexa, set 'repeat mode' on Touch to 'song'
    Alexa, set 'repeat mode' on Touch to 'playlist'
    Alexa, set 'repeat mode' on Touch to 'album'
    Alexa, what is the repeat mode on Touch?

    Alexa, set 'shuffle mode' on Touch to 'OFF'
    Alexa, set 'shuffle mode' on Touch to 'song'
    Alexa, set 'shuffle mode' on Touch to 'playlist'
    Alexa, set 'shuffle mode' on Touch to 'album'
    Alexa, what is the shuffle mode on Touch?

    To control a player in an Alexa routine, in the Alexa app select routines and under add/edit routine, as an action select Smart Home. Under All Devices you should see your players among your other Smart Home devices. If you select one of your players, you will see the options for Power, Loop, Repeat Mode, Shuffle Mode, Shuffle Play and Track. Under each of those will be options like On/Off or Off/Track/Album, and, for Track, a slider to set a value from 1 to 200. You can specify more than one category and have them all triggered at once when that action runs. Note that if you have no recognized event-triggering devices such as door contacts or motion sensors, you may not see any Smart Home devices under actions. In that case, you can still add the players to groups so they at least power on/off with the other devices in the group, although you then have less settings options than in routines.

    Attachment 28918

    If you have any connectivity errors with your proxy, such as bad or expired cert, upstream proxy issues, ngrok tunnel killed or invalid, auth details wrong, etc, then Alexa will issue a standard Amazon warning message based on the BRIDGE_UNREACHABLE error which the skill returns for an unresponsive LMS. Because there cannot be a custom and more detailed/specific error message, you should assume if you get that standard message that your proxy or LMS itself is down and that, at a minimum, you need to troubleshoot your full cloud-to-LMS connectivity chain.

    In my testing, Toggle and Mode controllers are a both still flaky but Range is rock solid (all 3 are relatively new capabilities). Amazon still has some work to do. The other stuff is bulletproof.

    My next step is to get it available in languages other than English. Should be coming soon !
    This sounds exactly what I need to turn off my Touch at the same time as my smart socket connected amplifier. Brilliant.

    Sent from my Pixel 3a using Tapatalk

  10. #10
    Senior Member
    Join Date
    Feb 2008
    Posts
    5,268
    Enabled.

    Looking good so far!

    Thanks.
    ------------------------------------------------------------------------------------

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •