Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 3 123 LastLast
Results 1 to 10 of 28
  1. #1
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,955

    LMS Plugin Development

    I am about to embark on writing an LMS plugin to control the Meridian 218 I have recently acquired.

    I have never built a SqueezeCenter/LMS plugin before, and have never written anything in Perl before. But I am a (retired) software developer, experienced with languages like C++, Java, PHP and the like, so should be able to figure it out provided I can find the correct documentation.

    Can anyone tell me if the wiki page at https://wiki.slimdevices.com/index.p...operGuide.html is still the right place to start (bearing in mind I'm running LMS 7.9)?
    Or is there some more up-to-date guide around that I've not discovered?
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  2. #2
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,569

    LMS Plugin Development

    > Can anyone tell me if the wiki page at
    > https://wiki.slimdevices.com/index.p...operGuide.html is still the
    > right place to start (bearing in mind I'm running LMS 7.9)?
    > Or is there some more up-to-date guide around that I've not discovered?


    Documentation for plugins is... inexistent or outdated. Your best bet
    probably is to find a plugin which does similar things to what you want
    to do, and go from there. And ask questions here.

  3. #3
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,955
    Quote Originally Posted by mherger View Post
    > Can anyone tell me if the wiki page at
    > https://wiki.slimdevices.com/index.p...operGuide.html is still the
    > right place to start (bearing in mind I'm running LMS 7.9)?
    > Or is there some more up-to-date guide around that I've not discovered?


    Documentation for plugins is... inexistent or outdated. Your best bet
    probably is to find a plugin which does similar things to what you want
    to do, and go from there. And ask questions here.
    Ah, right. Thanks for the heads up.

    What I want to do is turn the Meridian speakers on & off when the player is turned on & off, and adjust their volume.
    So I think IR Blaster would be the place to start.
    The difference is that the control signals are sent via TCP over the network, rather than via an IR emitter.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  4. #4
    Senior Member
    Join Date
    Apr 2005
    Location
    UK/London
    Posts
    4,430
    Take a look at the Denon plugin.
    It has had a lot of activity over recent months and maybe the protocols are similar given they both target the the hifi installer market.

    https://forums.slimdevices.com/showt...Control-Plugin
    Paul Webster
    http://dabdig.blogspot.com
    Author of "Now Playing" plugins covering Radio France (FIP etc), PlanetRadio (Bauer - Kiss, Absolute, Scala, JazzFM etc), KCRW, Supla Finland, ABC Australia, CBC/Radio-Canada and RTE Ireland

  5. #5
    +1 on Paul's suggestion.

    I'm curious - do you have protocol specs? Is it this? https://www.meridian-audio.com/media...ol-issue-4.pdf If so, I think the existing Denon plugins should definitely help.

    One option might be using DenonSerial in "Remote system" mode, and writing external software that would connect to the LMS command line interface and subscribe to "denonserial" commands. DenonSerial would then send notifications for the Denon TCP commands it would send (e.g. MUON for muting output) and you'd just need to translate that to the equivalent Meridian command. To keep LMS in sync with the Meridian you'd issue CLI commands mimicking a Denon, e.g. if your tool saw the speakers were "Demute" then you'd send a denonserial CLI command with MUOFF.

    I do plan to update my DenonSerial (which, despite the name, supports not only RS232 but also Denon's TCP protocol) to support Yamaha's YNCA TCP protocol, but I have been dragging my feet on that. When I get around to it, that will mean abstracting the general commands (power on, power off, mute, unmute, set volume to X, query for current power/volume/mute/source status), and should make it much easier to support other brands' protocols. But did I mention I've been dragging my feet?
    owner of the stuff at https://tuxreborn.netlify.app/
    (which used to reside at www. tux.org/~peterw/)
    Note: The best way to reach me is email or PM, as I don't spend much time on the forums.
    Free plugins: AllQuiet Auto Dim/AutoDisplay BlankSaver ContextMenu DenonSerial
    FuzzyTime KidsPlay KitchenTimer PlayLog PowerCenter/BottleRocket SaverSwitcher
    SettingsManager SleepFade StatusFirst SyncOptions VolumeLock

  6. #6
    Oh, more thoughts about the CLI -- Squeezebox player settings like power on/off, mute/unmute, and volume are handled as client "pref" preference values. You could simply connect to LMS and "subscribe" to the preferences you care about ("volume", "mute", "power") and issue commands to the Meridian in response to those changes: e.g., when see the player's "mute" pref change to "1", tell the Meridian to "Mute". And if you see a change initiated on the Meridian side, just issue the corresponding LMS CLI command -- you see Meridian "Demute", just issue CLI command "mixer muting 0".

    EDIT: try subscribe power,mixer and you'll see the volume and muting changes as mixer commands, and power toggle as power commands.
    Last edited by peterw; 2021-05-16 at 13:03.
    owner of the stuff at https://tuxreborn.netlify.app/
    (which used to reside at www. tux.org/~peterw/)
    Note: The best way to reach me is email or PM, as I don't spend much time on the forums.
    Free plugins: AllQuiet Auto Dim/AutoDisplay BlankSaver ContextMenu DenonSerial
    FuzzyTime KidsPlay KitchenTimer PlayLog PowerCenter/BottleRocket SaverSwitcher
    SettingsManager SleepFade StatusFirst SyncOptions VolumeLock

  7. #7
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,955
    Thanks to everyone for all the useful tips.

    Quote Originally Posted by peterw View Post
    I'm curious - do you have protocol specs? Is it this? https://www.meridian-audio.com/media...ol-issue-4.pdf
    Yes, that's the one.
    As it happens, I only had an earlier version from 2017, so thanks for the link to this later one.
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  8. #8
    Senior Member
    Join Date
    Apr 2005
    Location
    Honiton, Devon, UK
    Posts
    1,955
    Quote Originally Posted by mherger View Post
    Your best bet
    probably is to find a plugin which does similar things to what you want
    to do, and go from there. And ask questions here.
    I spent a bit of time writing a simple Android app to try out the Meridian protocol, hence the delay in following up.

    But I'm now ready to start developing the LMS plugin, and I do have a question:

    In the INSTALL.XML file for various plugins, I see an <ID> attribute containing a rather long hex number.
    What is the significance of this, and how do I generate an appropriate ID for my plugin?
    Until recently: Transporter -> ATC SCM100A, now sold :-(
    House move forced change to: piCorePlayer(RPi2/HiFiBerry DIGI2 Pro/HiFiBerry DSP) -> Meridian 218 -> Meridian M6

  9. #9
    Senior Member
    Join Date
    Apr 2005
    Location
    UK/London
    Posts
    4,430
    It is optional - and leaving it out (like most 3rd-party plugins do I think) has no obvious bad effects.
    Paul Webster
    http://dabdig.blogspot.com
    Author of "Now Playing" plugins covering Radio France (FIP etc), PlanetRadio (Bauer - Kiss, Absolute, Scala, JazzFM etc), KCRW, Supla Finland, ABC Australia, CBC/Radio-Canada and RTE Ireland

  10. #10
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,569

    LMS Plugin Development

    > In the INSTALL.XML file for various plugins, I see an <ID> attribute
    > containing a rather long hex number.
    > What is the significance of this, and how do I generate an appropriate
    > ID for my plugin?


    It should be a unique string. I usually use
    https://www.uuidgenerator.net to generate a UUID.

Posting Permissions

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