PDA

View Full Version : Yet another Remote Control Plugin - SBNetIO



cadfish
2013-12-10, 16:56
I just wanted to share a plugin I developed lately. I use it to switch my amps but it can potentially also be usefull for other scenarios as well.

The project is hosted at code.google.com and I prepared a web page which contains all necessary information:

http://code.google.com/p/sbnetio/

This is both, my first LMS plugin and my first perl project. In the course of development the Denon AVP Plugin was an invaluable source of information.

Hope it is helpful for one or the other. Bug reports, ideas, questions, etc. are very welcome.

Günther


Update: An improved Version 0.2 is available. The plugin now supports http-requests and can pause playback to allow amps to get fully up and un-muted

Update: An improved Version 0.2.5 is available. The plugin now supports the execution of several commands. Cmd parameter fields now accept semi-colon separated lists of individual commands. Timers can be set to delay cmd execution.

mherger
2013-12-10, 21:09
Just skimmed your page to get an idea what it was... 433MHz
communication via Pi... just got a new Pi from a pre-Christmas sale for
cheap... hmm... interesting! Haven't run the plugin yet, but I could see
some potential here for my own use!

> http://code.google.com/p/sbnetio/

Please edit the "Manual installation" section: don't install plugins
manually to the InstalledPlugins folder. If ever a user decides to use
the repository instead (which he should be doing to start with anyway)
this can cause a lot of confusion. Better unzip it inside the
installation's Plugins folder. Or remove that section all together.
Users should stick with the repository. Devs should know where to put
things to start tinkering ;-)

--

Michael

cadfish
2013-12-11, 01:41
Hi Michael,


(...) Or remove that section all together. (...)


I removed that section - thanks for your comment.



(...) but I could see some potential here for my own use! (...)

Would be great if its useful for you - a tiny compensation for all your efforts.

Günther

jwagner010
2013-12-24, 15:30
This looks to be just what I need. I want to update my home automation system (universal devices ISY) with the status of the players as they change by updating a variable in the ISY using the REST interface of the ISY. I think I can just build scripts for the server to execute curl / wget commands to the ISY. Thanks for sharing. I will tinker with this when back from vacation.

Couple of questions:

1) What version of LMS does this run / been tested on?
2) Is python the only server option built today of are there other languages to select from?

Again thank you.

cadfish
2013-12-27, 04:07
1) What version of LMS does this run / been tested on?



I'm using LMS 7.7.2 - r33893 - this is the only version the plugin is tested for.





2) Is python the only server option built today of are there other languages to select from?



I used python because there are plenty examples to start from. Python is very popular on RPi; there are libraries which make the access to the GPIO pins pretty simple. In my server I did not use them because I forward the commands to 433MHz devices, but another option would be to directly switch connected relays - in that case usage of Python would be more beneficial I think.

Anyway, you can choose a server written in any language - obviously the plugin does not make any assumptions on the server implementation.

On the SBNetIO Homepage I added a link to a simple server implemented in Java by the NetIO team:

http://netio.davideickhoff.de/tutorials#pc

This can be setup in minutes on a PC for test purposes.

But I think the real problem is, that the plugin currently does only support TCP communication - so, to use it with your ISY device would require to setup a Pi (or whatever hardware) to launch wget/curl scripts to establich a REST based communication between the plugn and the ISY.

I think best would be to enhance the plugin to also support http - then the plugin could directly communicate with your ISY device without the need of having a intermediate device.

Support of http was on my roadmap anyway - but since I had no real use case I havn't done it yet. I would appreciate if you could give me some details on the REST cmds you want send, and the expected reaction. Then I will update the plugin accordingly.

I will leave for ski vacation today and will be back on Jan. 6th. After my return I can do the needed changes.

jwagner010
2013-12-27, 05:43
Thanks that would be awesome.

All calls to the ISY use the HTTP GET method with basic authentication (ISY requires the AUTHBASIC header) using following format for the URL:

xxx.xxx.xxx.xxx: port/rest/vars/set/<var-type>/<var-id>/<value>

More details at:

http://wiki.universal-devices.com/index.php?title=ISY-99i_Series_INSTEON:REST_Interface

Again thank you. Enjoy the skiing may the powder be deep.

cadfish
2013-12-27, 06:29
Hi,

thanks, - I already found that link, and also that there exist Perl libraries to interface with ISY. I looked into them and got the impression (I'm no Perl guy) that they (at least in part) at the end also rely on the REST http interface.

So, for special wishes usage of those libraries could be needed - but if you are sure you only need things which are supported by RESt, fine. Thats why I asked ...

However, addition of http support would be the first step anyways.

Talk to you next year!!

Gesendet von meinem MD_LIFETAB_P9516 mit Tapatalk 4

jwagner010
2014-01-11, 04:35
Cadfish,

Interested in when you think http REST support / functionality will be available in your SBNetIO plugin?

Regards

Jason

cadfish
2014-01-11, 04:50
Hi,

I pm'd you on thursday that its available - hm, obviously you didn't get that message.

Anyways, it is there - I did not announce it yet, because I wanted to wait on your experience.

Please go to

http//:code.google.com/p/sbnetio

and grab Version 0.2.

I updated the configuration section of the homepage; please take look there for info you may need.

I checked functionality against a simple homebrewn java based http-server. Right now basic auth is only supported if the username and password are profided through the URL:

e.g. http://<user>:<passwd>@<IP>:<port>/some_path

As far as I know from the universal devices forum, isy supports this.

Please check and let me know your findings - have a nice weekend.

Gesendet von meinem MD_LIFETAB_P9516 mit Tapatalk

jwagner010
2014-01-11, 06:08
Awesome, I will test it when back home tonight.

Just interested in how the plugin works. Does it continually poll the LMS for status of players or does it subscribe to LMS and get notifications of player changes only when they occur? The reason I ask is this will impact if my unix server that runs LMS will hibernate when not in use. If plugin is continually running / polling the server will never hibernate.

cadfish
2014-01-11, 06:13
Hi Jason,

the plugin subscribes to LMS to be notified on the occurance of a set of events - so hibernation should still work :-)

Gesendet von meinem MD_LIFETAB_P9516 mit Tapatalk

jwagner010
2014-01-11, 09:22
I tried the plugin but it isnt working for me in terms of updating my ISY HA controller.

I installed the plugin from http://www.specifica.de/public/sbnetio/download/V02/repo.xml I assume this is correct location.

Then I configured it for a player as follows:

Enable Plugin: Checked

General Settings:
- Connection: http://<UserID>:<Password>@192.168.0.8:80
- Turn on Delay: 0
- Turn Off Delay: 1 (appears to be a bug, cannot set this to 0)

Setting for Zone 1:
- Activate Zone: Checked
- Name of Zone: Update ISY
- Switch Automatically: Checked
- Turn on Command: /rest/vars/set/1/13/1
- Turn off Command: /rest/vars/set/1/13/0

When I go to firefox browser and issue a http://<UserID>:<Password>@192.168.0.8:80/rest/vars/set/1/13/1 it works fine.

Not sure what is going on or where to start debugging

cadfish
2014-01-11, 10:23
Hi Jason,

Please go to 'LMS settings' > Advanced > Logging, select server in the dropdown list and set the log level of SBNetIO plugin to 'debug'.

Then you can watch SBNetIO acting ... - in the log file (and in the console window - depending on how you start LMS)

Just hit play and pause or whatever on your controller - the logging should give you hints or just sent the LOG ..

Sent by Tapatalk

jwagner010
2014-01-11, 10:57
Plugin doesn't seem to do anything when I start playing music or turning off the squeezebox. Set log to debug for the plugin and this is all I get:

[14-01-11 12:53:16.8086] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/SBNetIO/HTML]
[14-01-11 12:53:16.8094] Slim::Utils::PluginManager::load (239) Loading plugin: SN
[14-01-11 12:53:16.8205] Slim::Utils::PluginManager::load (239) Loading plugin: SavePlaylist
[14-01-11 12:53:16.8320] Slim::Utils::PluginManager::load (239) Loading plugin: Sirius
[14-01-11 12:53:16.8449] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/Sirius/HTML]
[14-01-11 12:53:16.8458] Slim::Utils::PluginManager::load (239) Loading plugin: Slacker
[14-01-11 12:53:16.8642] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/Slacker/HTML]
[14-01-11 12:53:16.8650] Slim::Utils::PluginManager::load (228) Skipping plugin: SlimTris - disabled
[14-01-11 12:53:16.8656] Slim::Utils::PluginManager::load (228) Skipping plugin: Snow - disabled
[14-01-11 12:53:16.8662] Slim::Utils::PluginManager::load (239) Loading plugin: SongScanner
[14-01-11 12:53:16.8771] Slim::Utils::PluginManager::load (239) Loading plugin: Sounds
[14-01-11 12:53:16.8844] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/Sounds/HTML]
[14-01-11 12:53:16.8852] Slim::Utils::PluginManager::load (239) Loading plugin: SpotifyLogi
[14-01-11 12:53:16.9022] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/SpotifyLogi/HTML]
[14-01-11 12:53:16.9030] Slim::Utils::PluginManager::load (239) Loading plugin: UPnP
[14-01-11 12:53:16.9090] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/UPnP/HTML]
[14-01-11 12:53:16.9098] Slim::Utils::PluginManager::load (239) Loading plugin: Visualizer
[14-01-11 12:53:16.9179] Slim::Utils::PluginManager::load (239) Loading plugin: WiMP
[14-01-11 12:53:16.9333] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Slim/Plugin/WiMP/HTML]
[14-01-11 12:53:16.9356] Slim::Utils::PluginManager::load (239) Loading plugin: YouTube
[14-01-11 12:53:16.9647] Slim::Utils::PluginManager::load (329) Adding HTML directory: [/volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/YouTube/HTML]
[14-01-11 12:53:16.9660] Slim::Utils::PluginManager::load (228) Skipping plugin: iTunes - disabled
[14-01-11 12:53:16.9671] Slim::Utils::PluginManager::load (228) Skipping plugin: xPL - disabled
[14-01-11 12:53:17.1045] Slim::Utils::Misc::msg (1304) Warning: [12:53:17.1038] Can't locate auto/IO/Interface/autosplit.ix in @INC (@INC contains: /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/YouTube/lib /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/FindArt/lib /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86 /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86/auto /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8.6/X86 /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8.6/X86/auto /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86 /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86/auto /volume1/@appstore/SqueezeCenter/CPAN/arch/X86 /volume1/@appstore/SqueezeCenter/lib /volume1/@appstore/SqueezeCenter/CPAN /volume1/@appstore/SqueezeCenter /volume1/@appstore/SqueezeCenter /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86 /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8/X86/auto /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8.6/X86 /volume1/@appstore/SqueezeCenter/CPAN/arch/5.8.6/X86/auto /volume1/@appstore/SqueezeCenter/CPAN/arch/X86 /volume1/@appstore/SqueezeCenter/lib /volume1/@appstore/SqueezeCenter/CPAN /usr/lib/perl5/5.8.6/X86 /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/X86 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl .) at /volume1/@appstore/SqueezeCenter/CPAN/AutoLoader.pm line 170.
at /volume1/@appstore/SqueezeCenter/CPAN/IO/Interface.pm line 12
[14-01-11 12:53:17.2384] Slim::Utils::PluginDownloader::checkForUpdates (241) generating apps query to find latest plugin state
[14-01-11 12:53:17.2814] main::init (564) Server Jive init...
[14-01-11 12:53:17.2839] main::init (567) Remote Metadata init...
[14-01-11 12:53:17.4155] main::init (576) Server checkDataSource...
[14-01-11 12:53:17.4175] main::init (586) Library Browser init...
[14-01-11 12:53:17.4213] main::init (590) Server persist playlists...
[14-01-11 12:53:17.4224] main::init (626) Server HTTP enable...
[14-01-11 12:53:17.4249] main::init (634) Server done init...
[14-01-11 12:53:18.2042] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/picks.png as /volume1/@appstore/SqueezeCenter/Cache/icons/picks.png
[14-01-11 12:53:18.2084] Slim::Utils::Strings::storeExtraStrings (413) Reading extrastrings.json file
[14-01-11 12:53:18.2112] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Picks
[14-01-11 12:53:18.2143] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radiolocal.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radiolocal.png
[14-01-11 12:53:18.2196] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Local
[14-01-11 12:53:18.2227] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radiomusic.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radiomusic.png
[14-01-11 12:53:18.2279] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Music
[14-01-11 12:53:18.2311] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radiotalk.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radiotalk.png
[14-01-11 12:53:18.2364] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Talk
[14-01-11 12:53:18.2393] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radiosports.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radiosports.png
[14-01-11 12:53:18.2445] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Sports
[14-01-11 12:53:18.2474] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radioworld.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radioworld.png
[14-01-11 12:53:18.2525] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::World
[14-01-11 12:53:18.2555] Slim::Plugin::InternetRadio::Plugin::cacheIcon (304) Caching remote icon http://www.mysqueezebox.com/static/images/icons/radiosearch.png as /volume1/@appstore/SqueezeCenter/Cache/icons/radiosearch.png
[14-01-11 12:53:18.2606] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Search
[14-01-11 12:53:25.0153] Slim::Utils::Cache::cleanup (256) Cache purge: cache - skipping, purged recently

cadfish
2014-01-11, 12:31
When I start LMS, in the order of appearance I see the following in the Log:

During load sequence:

...
[14-01-11 20:05:28.4096] Slim::Utils::PluginManager::_loadPluginCache (564) Rescan
[14-01-11 20:05:28.4101] Slim::Utils::PluginManager::_loadPluginCache (564) RhapsodyDirect
[14-01-11 20:05:28.4106] Slim::Utils::PluginManager::_loadPluginCache (564) SBNetIO
[14-01-11 20:05:28.4110] Slim::Utils::PluginManager::_loadPluginCache (564) SN
[14-01-11 20:05:28.4114] Slim::Utils::PluginManager::_loadPluginCache (564) SavePlaylist
...


...
[14-01-11 20:05:34.9354] Slim::Utils::PluginManager::load (239) Loading plugin: RhapsodyDirect
[14-01-11 20:05:34.9535] Slim::Utils::PluginManager::load (329) Adding HTML directory: [C:\Program Files\Squeezebox\server\Slim\Plugin\RhapsodyDirect \HTML]
[14-01-11 20:05:34.9541] Slim::Utils::PluginManager::load (239) Loading plugin: SBNetIO
[14-01-11 20:05:34.9729] Slim::Utils::PluginManager::load (329) Adding HTML directory: [C:\ProgramData\Squeezebox\Cache\InstalledPlugins\P lugins\SBNetIO\HTML]
[14-01-11 20:05:34.9733] Slim::Utils::PluginManager::load (239) Loading plugin: SN
...

When plugin load has finished, main init starts; here the plugin is initialized and the players are registered ...

...
[14-01-11 20:10:16.3219] main::init (564) Server Jive init...
[14-01-11 20:10:16.3228] main::init (567) Remote Metadata init...
[14-01-11 20:10:16.3682] main::init (576) Server checkDataSource...
[14-01-11 20:10:16.3725] main::init (586) Library Browser init...
[14-01-11 20:10:16.3739] main::init (590) Server persist playlists...
....
[14-01-11 20:10:17.8394] Slim::Plugin::InternetRadio::Plugin::generate (289) Creating radio plugin: Slim::Plugin::InternetRadio::Plugin::Search
[14-01-11 20:10:17.8559] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: Squeezebox Receiver is: Slim::Player::Receiver=ARRAY(0xa5a97bc)
[14-01-11 20:10:17.8566] Plugins::SBNetIO::Plugin::newPlayerCheck (163) *** SBNetIO: Plugin Not Enabled for: Squeezebox Receiver
[14-01-11 20:10:17.8570] Plugins::SBNetIO::Plugin::clearCallback (210) *** SBNetIO:Clearing command callback
[14-01-11 20:10:17.8599] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: SqueezeboxWork is: Slim::Player::SqueezePlay=ARRAY(0x88c5bf4)
[14-01-11 20:10:17.8604] Plugins::SBNetIO::Plugin::newPlayerCheck (169) *** SBNetIO: Plugin Enabled:
[14-01-11 20:10:17.8612] Plugins::SBNetIO::Plugin::newPlayerCheck (174) Calling the plugin menu register
[14-01-11 20:10:17.8641] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: ChrissiSqueeze is: Slim::Player::SqueezePlay=ARRAY(0x7ec4ddc)
[14-01-11 20:10:17.8645] Plugins::SBNetIO::Plugin::newPlayerCheck (163) *** SBNetIO: Plugin Not Enabled for: ChrissiSqueeze
[14-01-11 20:10:17.8647] Plugins::SBNetIO::Plugin::clearCallback (210) *** SBNetIO:Clearing command callback
[14-01-11 20:10:17.8675] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: JuliaSqueeze is: Slim::Player::SqueezePlay=ARRAY(0x7ed4244)
[14-01-11 20:10:17.8680] Plugins::SBNetIO::Plugin::newPlayerCheck (163) *** SBNetIO: Plugin Not Enabled for: JuliaSqueeze
[14-01-11 20:10:17.8685] Plugins::SBNetIO::Plugin::clearCallback (210) *** SBNetIO:Clearing command callback
[14-01-11 20:10:17.8713] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: Squeezebox Touch is: Slim::Player::SqueezePlay=ARRAY(0x7ee54bc)
[14-01-11 20:10:17.8718] Plugins::SBNetIO::Plugin::newPlayerCheck (169) *** SBNetIO: Plugin Enabled:
[14-01-11 20:10:17.8722] Plugins::SBNetIO::Plugin::newPlayerCheck (174) Calling the plugin menu register
[14-01-11 20:10:18.3554] Slim::Utils::Strings::loadAdditional (208) Loading string file for additional language DE: C:\Program Files\Squeezebox\server\strings.txt
[14-01-11 20:10:18.4724] Slim::Utils::Strings::storeString (386) Language DE using EN for SHN inC:\Program Files\Squeezebox\server\strings.txt
...

If a player has registered (i.e. the plugin is enabled for that player) you should see something like that near the end of the startsequence:

...
[14-01-11 20:10:19.0466] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:10:19.0478] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: power
[14-01-11 20:10:19.0482] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1:
[14-01-11 20:10:19.0486] Plugins::SBNetIO::Plugin::commandCallback (234) *** SBNetIO: power request Slim::Control::Request=HASH(0x76bd50c)
[14-01-11 20:10:19.3364] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:10:19.3369] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: mixer
[14-01-11 20:10:19.3373] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1: volume
[14-01-11 20:10:20.9221] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:10:20.9227] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: mixer
[14-01-11 20:10:20.9236] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1: volume
...

Pressing PLAY on a player results in


[14-01-11 20:23:36.1249] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:23:36.1255] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: playlist
[14-01-11 20:23:36.1259] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1: open
[14-01-11 20:23:37.3241] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:23:37.3254] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: playlist
[14-01-11 20:23:37.3263] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1: newsong
[14-01-11 20:23:37.3272] Plugins::SBNetIO::Plugin::commandCallback (247) PLAYMODE play
[14-01-11 20:23:37.3281] Plugins::SBNetIO::Plugin::RequestPowerOn (273) *** SBNetIO: Request Power ON
[14-01-11 20:23:37.3302] Plugins::SBNetIO::Plugin::RequestPowerOn (274) *** SBNetIO: In transition = 0
[14-01-11 20:23:38.3306] Plugins::SBNetIO::Plugin::SetPowerState (355) *** SBNetIO: Turn Power: 1
[14-01-11 20:23:38.3318] Plugins::SBNetIO::Plugin::SetZonePower (399) *** SBNetIO: SetZonePower: 1 - 1
[14-01-11 20:23:38.3342] Plugins::SBNetIO::Plugin::SetZonePower (412) *** SBNetIO: SetPower: Zone 1, Msg: /protected/An.txt
[14-01-11 20:23:38.3357] Plugins::SBNetIO::SBNetIOSendMsg::SendCmd (74) SendCmd - Addr: http://192.168.1.3:1989, Cmd: /protected/An.txt
[14-01-11 20:23:38.3366] Plugins::SBNetIO::SBNetIOSendMsg::HTTPSend (127) HTTPSend - Addr: http://192.168.1.3:1989, Cmd: /protected/An.txt

And later PAUSE

[14-01-11 20:23:50.1209] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: pause
[14-01-11 20:23:50.1219] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1:
[14-01-11 20:23:50.1229] Plugins::SBNetIO::Plugin::commandCallback (247) PLAYMODE pause
[14-01-11 20:23:50.1239] Plugins::SBNetIO::Plugin::RequestPowerOff (314) *** SBNetIO: Request Power OFF
[14-01-11 20:23:50.1252] Plugins::SBNetIO::Plugin::RequestPowerOff (315) *** SBNetIO: In transition = 0
[14-01-11 20:23:50.1261] Plugins::SBNetIO::Plugin::RunCommand (863) --> 00:04:20:23:8a:73 display SBNetIO: Zones will be turned off in 3 seconds.
[14-01-11 20:23:50.1275] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:23:50.1287] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: displaynotify
[14-01-11 20:23:50.1297] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1:
[14-01-11 20:23:50.1349] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:23:50.1357] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: playlist
[14-01-11 20:23:50.1377] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1: pause
[14-01-11 20:23:50.1696] Plugins::SBNetIO::Plugin::commandCallback (229) *** SBNetIO: commandCallback()
[14-01-11 20:23:50.1701] Plugins::SBNetIO::Plugin::commandCallback (230) *** SBNetIO: commandCallback() p0: display
[14-01-11 20:23:50.1705] Plugins::SBNetIO::Plugin::commandCallback (231) *** SBNetIO: commandCallback() p1:

And 3 seconds later (turn off delay)

[14-01-11 20:23:53.1318] Plugins::SBNetIO::Plugin::SetPowerState (355) *** SBNetIO: Turn Power: 0
[14-01-11 20:23:53.1326] Plugins::SBNetIO::Plugin::SetZonePower (399) *** SBNetIO: SetZonePower: 1 - 0
[14-01-11 20:23:53.1332] Plugins::SBNetIO::Plugin::SetZonePower (412) *** SBNetIO: SetPower: Zone 1, Msg: /protected/Aus.txt
[14-01-11 20:23:53.1338] Plugins::SBNetIO::SBNetIOSendMsg::SendCmd (74) SendCmd - Addr: http://192.168.1.3:1989, Cmd: /protected/Aus.txt
[14-01-11 20:23:53.1344] Plugins::SBNetIO::SBNetIOSendMsg::HTTPSend (127) HTTPSend - Addr: http://192.168.1.3:1989, Cmd: /protected/Aus.txt

Please compare, and let me know your findings. Do you see anything in the Extra's menu?

Guenther

jwagner010
2014-01-11, 13:53
It appears that the player is not enabling even though I have it set to enable:

[14-01-11 15:23:40.7833] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: Upstairs - Bathroom is: Slim::Player::Receiver=ARRAY(0xb90cb58)
[14-01-11 15:23:40.7843] Plugins::SBNetIO::Plugin::newPlayerCheck (163) *** SBNetIO: Plugin Not Enabled for: Upstairs - Bathroom
[14-01-11 15:23:40.7849] Plugins::SBNetIO::Plugin::clearCallback (210) *** SBNetIO:Clearing command callback

15470

cadfish
2014-01-11, 14:04
That's weird ... - You restarted the server, right?

No idea what could be wrong.

I'm leaving for today.

Maybe one of the experts can give advice. I will think on the problem and let you know if I have another idea.

Sent by Tapatalk

cadfish
2014-01-11, 14:06
Stupid question - obviously you restarted the server ...

Sent by Tapatalk

jwagner010
2014-01-11, 14:46
Yes restarted LMS. Also rebooted the Linux Server to make sure. I have enabled all the players for SBNetIO in the UI, but all of them show as not enabled in the log. I have attached the full log from boot up if anyone can provide some insight on how to correct this.

15471

cadfish
2014-01-11, 19:53
I looked into the code and changed a tiny bit, to be able to know, why the plugin thinks it needs not to be enabled.

I updated the file which is available on specifica.de - it is still in the 0.2 folder. Please update, run and watch the log.

Do you see a pref-file "sbnetio.pref" in the "prefs\plugin"-folder? (The prefs folder usually is next to the log folder.) Does it show the 'pref_enabled' attribute being set to "1"


_client:00:04:20:22:a8:09:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Wohnzimmer
Zone2Active: 1
Zone2Auto: '1'
Zone2Name: Galerie
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1384106260
_ts_Zone1Auto: 1387563543
_ts_Zone1Name: 1386180887
_ts_Zone2Active: 1386180887
_ts_Zone2Auto: 1386832866
_ts_Zone2Name: 1386180887
_ts_Zone3Active: 1384106260
_ts_Zone3Auto: 1386180887
_ts_Zone3Name: 1384106260
_ts_delayOff: 1386180887
_ts_delayOn: 1382731752
_ts_msgOff1: 1386189873
_ts_msgOff2: 1386189873
_ts_msgOn1: 1386189873
_ts_msgOn2: 1386189873
_ts_pref_Enabled: 1386180955
_ts_srvAddress: 1386180887
_version: 0
delayOff: '300'
delayOn: '0'
msgOff1: RCSend 11111 1 0
msgOff2: RCSend 11111 4 0
msgOn1: RCSend 11111 1 1
msgOn2: RCSend 11111 4 1
pref_Enabled: 1
srvAddress: 192.168.1.16:54321
_client:00:04:20:23:3d:7f:
_ts_delayOff: 1374910134
_ts_delayOn: 1374910134

for the activated clients (i.e. players)?

Guenther

jwagner010
2014-01-11, 20:56
Yes Prefs file shows enabled:

_client:00:01:20:2b:8a:3e:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389474625
_ts_Zone1Auto: 1389474667
_ts_Zone1Name: 1389474667
_ts_Zone2Active: 1389474625
_ts_Zone2Auto: 1389474667
_ts_Zone2Name: 1389474625
_ts_Zone3Active: 1389474625
_ts_Zone3Auto: 1389474667
_ts_Zone3Name: 1389474625
_ts_delayOff: 1389474667
_ts_delayOn: 1389474625
_ts_msgOff1: 1389474691
_ts_msgOn1: 1389474691
_ts_pref_Enabled: 1389474667
_ts_srvAddress: 1389474667
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/14/0
msgOn1: /rest/vars/set/1/14/1
pref_Enabled: 1
srvAddress: http://xxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_version: 0

slartibartfast
2014-01-12, 02:37
This looks interesting. I might need to buy a Raspberry Pi to replace my GoflexNet in order to use it. Only concern is that my amplifier has a speaker mute delay at switch on, how can I avoid missing the first five seconds of playback when using automatic switching?

Sent from my Nexus 7 using Tapatalk

cadfish
2014-01-12, 04:51
This looks interesting. I might need to buy a Raspberry Pi to replace my GoflexNet in order to use it. Only concern is that my amplifier has a speaker mute delay at switch on, how can I avoid missing the first five seconds of playback when using automatic switching?


My amplifiers also need some seconds before they are really turned on - I never saw this as a problem as it only occurs on first "Play" after a while of silence. I set a "turn of delay" of 5min - and I'm fine with the behaviour. But anyways, I think about halting the playback after amps were turned on - nice idea.

cadfish
2014-01-12, 04:54
Yes Prefs file shows enabled:

_client:00:01:20:2b:8a:3e:
Zone1Active: 1
...
pref_Enabled: 1
srvAddress: http://xxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_version: 0

What do you find in the log in the sequence when the players are registered; i.e. in the sequence wheer it is checked whether or not the plugin is enabled for that particular player?

It should look a bit different with the newest SW version.

Guenther

jwagner010
2014-01-12, 07:16
Log now says:


[14-01-12 08:57:35.1860] Plugins::SBNetIO::Plugin::newPlayerCheck (133) *** SBNetIO: Upstairs - Bathroom is: Slim::Player::Receiver=ARRAY(0xbce91e0)
[14-01-12 08:57:35.1869] Plugins::SBNetIO::Plugin::newPlayerCheck (162) *** SBNetIO: Failed to read prefs for: Upstairs - Bathroom
[14-01-12 08:57:35.1875] Plugins::SBNetIO::Plugin::newPlayerCheck (163) *** SBNetIO: will not be activated.

It isn't reading the prefs by the look of the log. I am running it on a Synology NAS / Linux machine. The prefs file is at /volume1/@appstore/SqueezeCenter/prefs/plugin/sbnetio.prefs I checked file permissions and it is rwxrwxrwx so I assume it isnt an access permission issue to the file. The prefs file looks to contain correct settings I set in the web UI:


---
_client:00:04:20:16:59:cf:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: 'Zone 2 '
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389445481
_ts_Zone1Auto: 1389456004
_ts_Zone1Name: 1389454781
_ts_Zone2Active: 1389445481
_ts_Zone2Auto: 1389454781
_ts_Zone2Name: 1389472337
_ts_Zone3Active: 1389445481
_ts_Zone3Auto: 1389454781
_ts_Zone3Name: 1389445481
_ts_delayOff: 1389456087
_ts_delayOn: 1389445481
_ts_msgOff1: 1389456004
_ts_msgOn1: 1389456004
_ts_pref_Enabled: 1389477035
_ts_srvAddress: 1389456004
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/13/0
msgOn1: /rest/vars/set/1/13/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:16:a3:7a:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389473722
_ts_Zone1Auto: 1389473739
_ts_Zone1Name: 1389474514
_ts_Zone2Active: 1389473722
_ts_Zone2Auto: 1389473739
_ts_Zone2Name: 1389473722
_ts_Zone3Active: 1389473722
_ts_Zone3Auto: 1389473739
_ts_Zone3Name: 1389473722
_ts_delayOff: 1389473739
_ts_delayOn: 1389473722
_ts_msgOff1: 1389474382
_ts_msgOn1: 1389474382
_ts_pref_Enabled: 1389473739
_ts_srvAddress: 1389473739
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/9/0
msgOn1: /rest/vars/set/1/9/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:16:ab:cc:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389456512
_ts_Zone1Auto: 1389473789
_ts_Zone1Name: 1389474590
_ts_Zone2Active: 1389456512
_ts_Zone2Auto: 1389473789
_ts_Zone2Name: 1389456512
_ts_Zone3Active: 1389456512
_ts_Zone3Auto: 1389473789
_ts_Zone3Name: 1389456512
_ts_delayOff: 1389473789
_ts_delayOn: 1389456512
_ts_msgOff1: 1389474590
_ts_msgOn1: 1389474590
_ts_pref_Enabled: 1389473789
_ts_srvAddress: 1389473789
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/4/0
msgOn1: /rest/vars/set/1/4/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:16:dc:91:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389473762
_ts_Zone1Auto: 1389473772
_ts_Zone1Name: 1389474568
_ts_Zone2Active: 1389473762
_ts_Zone2Auto: 1389473772
_ts_Zone2Name: 1389473762
_ts_Zone3Active: 1389473762
_ts_Zone3Auto: 1389473772
_ts_Zone3Name: 1389473762
_ts_delayOff: 1389473772
_ts_delayOn: 1389473762
_ts_msgOff1: 1389474568
_ts_msgOn1: 1389474568
_ts_pref_Enabled: 1389473772
_ts_srvAddress: 1389473772
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/8/0
msgOn1: /rest/vars/set/1/8/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:17:f2:26:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389473793
_ts_Zone1Auto: 1389473800
_ts_Zone1Name: 1389474615
_ts_Zone2Active: 1389473793
_ts_Zone2Auto: 1389473800
_ts_Zone2Name: 1389473793
_ts_Zone3Active: 1389473793
_ts_Zone3Auto: 1389473800
_ts_Zone3Name: 1389473793
_ts_delayOff: 1389473800
_ts_delayOn: 1389473793
_ts_msgOff1: 1389474615
_ts_msgOn1: 1389474615
_ts_pref_Enabled: 1389473800
_ts_srvAddress: 1389473800
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/10/0
msgOn1: /rest/vars/set/1/10/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:1e:c2:d5:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389473810
_ts_Zone1Auto: 1389473821
_ts_Zone1Name: 1389474652
_ts_Zone2Active: 1389473810
_ts_Zone2Auto: 1389473821
_ts_Zone2Name: 1389473810
_ts_Zone3Active: 1389473810
_ts_Zone3Auto: 1389473821
_ts_Zone3Name: 1389473810
_ts_delayOff: 1389473821
_ts_delayOn: 1389473810
_ts_msgOff1: 1389474652
_ts_msgOn1: 1389474652
_ts_pref_Enabled: 1389473821
_ts_srvAddress: 1389473821
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/15/1
msgOn1: /rest/vars/set/1/15/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:26:ad:97:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389473744
_ts_Zone1Auto: 1389473758
_ts_Zone1Name: 1389474478
_ts_Zone2Active: 1389473744
_ts_Zone2Auto: 1389473758
_ts_Zone2Name: 1389473744
_ts_Zone3Active: 1389473744
_ts_Zone3Auto: 1389473758
_ts_Zone3Name: 1389473744
_ts_delayOff: 1389473758
_ts_delayOn: 1389473744
_ts_msgOff1: 1389474490
_ts_msgOn1: 1389474490
_ts_pref_Enabled: 1389473758
_ts_srvAddress: 1389473758
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/12/0
msgOn1: /rest/vars/set/1/12/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:27:4c:d5:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389474399
_ts_Zone1Auto: 1389474423
_ts_Zone1Name: 1389474499
_ts_Zone2Active: 1389474399
_ts_Zone2Auto: 1389474423
_ts_Zone2Name: 1389474399
_ts_Zone3Active: 1389474399
_ts_Zone3Auto: 1389474423
_ts_Zone3Name: 1389474399
_ts_delayOff: 1389474423
_ts_delayOn: 1389474399
_ts_msgOff1: 1389474465
_ts_msgOn1: 1389474465
_ts_pref_Enabled: 1389474423
_ts_srvAddress: 1389474423
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/11/0
msgOn1: /rest/vars/set/1/11/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_client:00:04:20:2b:8a:3e:
Zone1Active: 1
Zone1Auto: 1
Zone1Name: Update ISY
Zone2Active: 0
Zone2Auto: 0
Zone2Name: Zone 2
Zone3Active: 0
Zone3Auto: 0
Zone3Name: Zone 3
_ts_Zone1Active: 1389474625
_ts_Zone1Auto: 1389474667
_ts_Zone1Name: 1389474667
_ts_Zone2Active: 1389474625
_ts_Zone2Auto: 1389474667
_ts_Zone2Name: 1389474625
_ts_Zone3Active: 1389474625
_ts_Zone3Auto: 1389474667
_ts_Zone3Name: 1389474625
_ts_delayOff: 1389474667
_ts_delayOn: 1389474625
_ts_msgOff1: 1389474691
_ts_msgOn1: 1389474691
_ts_pref_Enabled: 1389474667
_ts_srvAddress: 1389474667
_version: 0
delayOff: '1'
delayOn: '0'
msgOff1: /rest/vars/set/1/14/0
msgOn1: /rest/vars/set/1/14/1
pref_Enabled: 1
srvAddress: http://xxxxxxxxxx:xxxxxxxxxx@192.168.0.8:180
_version: 0

Restarted the LMS. Not sure where to go from here?

jwagner010
2014-01-12, 10:21
Ok so I figured out the issue. I noticed the prefs file was named sbnetio.prefs but everywhere else you refer to the plugin as SBNetIO. In Linux/Unix the file system is case sensitive. So I copied the sbnetio.prefs to SBNetIO.prefs in the same directory. After this it works like a charm. So there appears to be a bug in the code as it relates to the case of the sbnetio.prefs filename. The bug wouldn't be showing itself on windows systems as the file system isn't case sensitive. Happy to help debug code for you to correct this bug if you don't have a linux system to test on, but I have got it working by changing file system name of prefs file above as a work around.

Again thanks for this plugin and support. Really appreciated.

cadfish
2014-01-12, 13:43
Hi Jason,

thank you very much for sorting this out.

Your renaming got the plugin working; this proofs that case matters (not surprising really). The whole time I ask myself, how it could be that setting of preferences (which involves reading and writing) works whereas usage in the actual plugin code (which involves only reading) does not; I thought that this may be a permission thing, that the settings UI has more rights.

Now, based on your finding, it followed that a) the pref name must be specified in the code, and b) that the specs are different in settings part and in the plugin part.

I wasn't aware, that the name of the pref file is set in the code - it is not too obvious for a beginner what the respective line really does - I assumed the name is chosen automatically through LMS infrastructure. The pref-access is abstract - from the code one can not tell, that the prefs are stored file based.

Anyway, from what we know now, it is clear that your renaming made the plugin run - but it must have broken preference setting functionality.

So I checked in the code and found the lines which specify the settings name and changed them to be consistently "SBNetIO".

I put the modified plugin (Ver. 0.2.4) on the download site (0.2 folder) - please update. Now both, running and preference setting, should work as expected.

Again, thanks for sorting this out!!

Good to hear the plugin works for you.


Guenther

jwagner010
2014-01-13, 17:44
Guenther,

Works perfectly now. The only bug I can see now is you cannot set the delay off time to zero. If you do, it reverts back to 30 seconds. I just set it to 1 which is good enough for my application.

Again thanks for building this plugin it has been something I have been searching for.

cadfish
2014-01-16, 01:45
This looks interesting. I might need to buy a Raspberry Pi to replace my GoflexNet in order to use it. Only concern is that my amplifier has a speaker mute delay at switch on, how can I avoid missing the first five seconds of playback when using automatic switching?

Sent from my Nexus 7 using Tapatalk

Hi,

I updated the plugin - now you can specify a time span to pause playback during amp start up - now you should'nt miss a single tune ;-)

Guenther

cadfish
2014-01-16, 01:54
Guenther,

Works perfectly now. The only bug I can see now is you cannot set the delay off time to zero. If you do, it reverts back to 30 seconds. I just set it to 1 which is good enough for my application.

Again thanks for building this plugin it has been something I have been searching for.


Hi Jason,

hm - I wasn't able to reproduce this bug. If you keep the field empty - it reverts to the default value, but if you specify zero (0) it should work. Anyway, I looked into the settings part of the plugin and improved it slightly, hope it now works for you.

I removed the turn on delay (as I came to the conclusion, that it doesn't make too much sense) but added a turn on pause. Just to let you know ...

Older versions of the plugin missed some playback start/stop events - depending on the controller, the sent commands are different, and not all had been taken into account, which in worst case lead to not starting amps or amp shut down during playback.

So update could be useful.

Guenther

jwagner010
2014-01-17, 06:46
Ok I will test it this weekend. Is the latest version at http://www.specifica.de/public/sbnetio/download/BSF/repo.xml
Or should I still be using 0.2?

cadfish
2014-01-17, 10:19
Hi Jason,

the BSF now points to V0.2 ...

Guenther


Thanks for testing ....

Sent by Tapatalk

jwagner010
2014-01-17, 11:34
I can confirm that when I set "Zone turn off delay" to 0, and then click 'Apply' that the screen will show 0, however, if I navigate to another settings screen and then come back to the same SBNetIO settings screen the "Zone turn off delay" will show 30.

cadfish
2014-01-17, 12:49
I can confirm that when I set "Zone turn off delay" to 0, and then click 'Apply' that the screen will show 0, however, if I navigate to another settings screen and then come back to the same SBNetIO settings screen the "Zone turn off delay" will show 30.

Now this scenario should work as well ...

Thanks

jwagner010
2014-01-17, 14:05
Ok this is fixed now. I will do further testing this weekend on the plugin in general and let you know how things go.

On a side note, I personally think there is a need for both the 'Zone turn on delay' and the ''Turn on playback pause" parameters. It depends how you are using the plugin. For example, you may use the plugin to issue a GET command to turn on the bedroom lights 10 seconds after the alarm clock goes off in the morning, before you could achieve that with the 'Zone turn on delay'. I think there is a place for both parameters. Just my personal take.

christiantf
2014-12-12, 15:58
Servus Günther!

Playing around creating a settings dialog for my first-try plugin, imagined to send http requests to my Smart Home, I especially was hitting your SBNetIO plugin on a Google search.
I immediately installed it, configured it, tried it and it works. I already deleted my own plugin try ;-)

With your plugin I found one issue and one wish:

The issue I have:
Setting a "Turn on playback pause" other than 0 sets the volume of my player to 0/mute. I have tried two general options for the player: "Pause at power off/continue at poweron" and "Stop at power off/Restart track after power on".
With zero delay this works as expected (volume keeps the last value). As soon as I use a delay (6 seconds) it mutes the player at power on.

My wish is (possibly it is simply misunderstanding):
As I understand your Zones layout (I know Zones from CasaTunes), and I don't want to use it, if I have four players I cannot configure four different On- and Off-Commands for these players?
So in my (zoneless setting) player 1 has to have Zone 1 enabled, player 2 = Zone 2 and finally player 3 = Zone 3 (player 4 is not possible).
If this is as I explained, my wish from the Christkind would be to get two or three more zones.

Because, if I understood your Zones concept, if I configure Player 1 using Zone 1 with On-/Off-Settings, and Player 2 using Zone 1 with individual On-/Off settings, the plugin will always send both requests if one of the players start?

Your plugin is very useful for the Loxone Smarthome. I already did some tutorials for integrating things to Loxone, so I think about doing a turorial for yours as well. Christmas gifts may get bigger with a paypal donation button on your Google Code page.

Best regards!
Christian

cadfish
2014-12-13, 07:40
Hi Christian,



The issue I have:
Setting a "Turn on playback pause" other than 0 sets the volume of my player to 0/mute. I have tried two general options for the player: "Pause at power off/continue at poweron" and "Stop at power off/Restart track after power on".
With zero delay this works as expected (volume keeps the last value). As soon as I use a delay (6 seconds) it mutes the player at power on.


Yes, if a "Turn on playback pause" is configured, the plugin mutes the player temporariliy - otherwise it just sounds bad, when the track is suddenly rewound by a couple of seconds. The idea is that the player is muted for the period it takes the amps to become alive. So, what happens (or should happen) is that the the player is muted (without amp this does not hurt), the amps are fired off, after the specified time the track is rewound (typically to the begin of the track) and then the the player is unmuted - in the best case the track is just about to begin and you don't even get to know, that the player was muted. At least at my place, it works exactly this way. If it doesn't work this way for you, there is something wrong - I happy to help to find the reason. So please let me know your experience.




My wish is (possibly it is simply misunderstanding):
As I understand your Zones layout (I know Zones from CasaTunes), and I don't want to use it, if I have four players I cannot configure four different On- and Off-Commands for these players?
So in my (zoneless setting) player 1 has to have Zone 1 enabled, player 2 = Zone 2 and finally player 3 = Zone 3 (player 4 is not possible).
If this is as I explained, my wish from the Christkind would be to get two or three more zones.

Because, if I understood your Zones concept, if I configure Player 1 using Zone 1 with On-/Off-Settings, and Player 2 using Zone 1 with individual On-/Off settings, the plugin will always send both requests if one of the players start?


I think your understanding of "zone" is wrong. Maybe you think of a too sophisticated concept - it is not. It is dead simple - I was just missing an appropriate name. I came up with the SBNetIO zone concept to support this scenario: One of my players is connected with two amps powering speakers on different levels of my house - and I want to be able to switch those two areas individually through the app UI. Each amp creates a zone; and if the player is started, the cmds for both zones are sent (synced Mode enabled) and both amps are turned on. But I'm always able to shut down (or turn on) this or the other amp through the App UI. But this is my special scenario - I guess in 99% of cases people have only one amp for each player, so there is only one zone necessary.

There is no limitation regarding the number of players you are using - the plugin is configured for each player individually. So in the server settings dialog go through your players and configure one zone for each, i.e. one On and one Off cmd - that should be all you want to do.

16930

Please let me know, if I misunderstood what you want to achieve.

Günther

christiantf
2014-12-13, 07:59
Thank you Günther for your explanation of the Zones. That zone concept therefore is different from Casatunes' and is exactly what I was looking for. (in Casatunes, the zone concept is - in LMS words - a pre-configured layout of synchronization groups of players).
I'll retry the delay setting and give you feedback.
Best wishes
Christian

touchstone
2014-12-26, 11:52
Thanks Guenther for your work and explanations. Would you consider adding an option to have the socket connection via UDP? I'm using Keene IR Anywhere (KIRA) modules, which will transmit IR based on a UDP text packet. If SBNetIO implemented UDP connections, I could send on/off IR codes directly to the KIRA module connected to the amp.

cadfish
2014-12-26, 16:38
Would you consider adding an option to have the socket connection via UDP?

Hi touchstone,

I added udp support - please give it a try and report back your experience as I can not test. The plugin reads the protocol from the first (optional) portion of the connection string


[<protocol>:]<IP>:<Port>

Protocol may be 'tcp' or 'udp' - tcp is the default.

So, valid settings include:



192.168.1.3:7777
tcp:192.168.1.3:7777
udp:192.168.1.3:7777


Get the latest sw from:

http://www.specifica.de/public/sbnetio/download/V04/repo.xml

Kind regards

Günther

touchstone
2014-12-27, 23:14
Thank you for adding that so quickly. Your plugin works to send a single IR code to a KIRA, and with a few changes to SBNetIOSendMsg, works great for my purposes.

I discovered that either the KIRA or my amp doesn't understand if two IR codes into the same message. So I made some changes to treat semicolons as marking separate connections. I also added the ability to specify a delay between connections by a comma (so the command for two IR codes with a three-second delay is, "K 2822 2296 10FD... ,3;K 2422 21A1 ...")

I'm not a programmer, let alone proficient in perl (in fact, I just realized that I didn't check the post-comma characters before plugging them into the sleep command). But I'll attach a diff of my changes, in case they are useful to you or someone else.

cadfish
2014-12-28, 07:23
Hi Touchstone,


... works great for my purposes.

good to hear ...


So I made some changes to treat semicolons as marking separate connections. I also added the ability to specify a delay between connections by a comma (so the command for two IR codes with a three-second delay is, "K 2822 2296 10FD... ,3;K 2422 21A1 ...")


I'm a bit confused as I implemented this functionality already ...

It is documented (see cmd syntax below):

17063


TurnOnCmd = Cmd1;Cmd2;n1;Cmd3;n2;Cmd4;...


Or am I getting something wrong - was something wrong with my implementation?

Günther

cadfish
2014-12-28, 07:48
Hi Touchstone,


So I made some changes to treat semicolons as marking separate connections. I also added the ability to specify a delay between connections by a comma (so the command for two IR codes with a three-second delay is, "K 2822 2296 10FD... ,3;K 2422 21A1 ...")

Thinking about it, I'm even more confused ...

The semicolons shouldn't make it into your code, but should be stripped by the time the SocketSend-Method is called - so your split(/;/,$Cmd) should never actually split something.

Your comma separated delay will make it there and is effective I guess. But your delay implementation by means of sleep will interrupt plugin execution whereas in my implementation a callback mechanism is used which is triggered after the specified time and does not interrupt the execution of the plugin. For small delays this is perhaps no big thing, but for large delays it may lead to problems - additionally, for more than one zone, the cmds for the individual zones will get out of sync.

May I ask you to replace the comma (to indicate the delay) in your cmd-definition by a semicolon - then your changes would become completely uneffective - just to check my code works.

If something is wrong with my implementation and it doesn't work for you, I'm more than happy to make it work.


Kind regards

Günther

touchstone
2014-12-28, 17:21
Thinking about it, I'm even more confused ...


That would be because I am an idiot who created a solution to a non-existent problem. Before you posted your changes, I looked in SBNetIOSendMsg to change the hardcoded protocol to UDP. I didn't see any parsing of multiple commands in SendCmd or SocketSend. So I cobbled together some of my own, without checking to see if your code handled multiple messages. When you posted your updated version I added my changes, again without checking. You've obviously taken care of the parsing somewhere else.



If something is wrong with my implementation and it doesn't work for you, I'm more than happy to make it work.


No, it works great... as documented. Sorry for the incompetence!

cadfish
2014-12-28, 19:40
No, it works great... as documented. Sorry for the incompetence!

Great - thank's for your feedback!

sevi_at
2015-09-10, 23:35
hy,
thx günther! it's exactly what I was looking. I use the plugin to send the status of my zones to my home control (loxone). However, I have more than 3 zones and want the plugin expand to 10 zones. unfortunately I can not program LMS plugins so i need your help. the next step I want to send more information to my Loxone (volume, titel,...).
Could you help me with this?

THX

Severin

snoopy86
2015-12-31, 04:52
I need some help. I want to send on turning on the sq this "http://some_ip/cgi-bin/relay.cgi?on" and on turning of "http://some_ip/cgi-bin/relay.cgi?off".

What do i have to change?

Is this ok?

19569

cadfish
2015-12-31, 11:49
I need some help. I want to send on turning on the sq this "http://some_ip/cgi-bin/relay.cgi?on" and on turning of "http://some_ip/cgi-bin/relay.cgi?off".

What do i have to change?

Is this ok?



Yes, this looks OK. But I think you want the commands to be sent automatically - then you should check the 'switch automatically' option.

Please let me know, if this solved the problem - otherwise we can dig deeper into that ...

Happy new year!

Günther

Wiredcharlie
2016-03-20, 02:15
Hi Günther

I'm very impressed by your work here!

I was looking at whether I could use your plugin to control the Orvibo S20 WiFi controlled socket directly from my XP LMS.

Is there a way of running a VBScript file as the command?

Many Thanks

Tony

cadfish
2016-03-21, 11:58
Hi Tony,




Is there a way of running a VBScript file as the command?



yes shouldn't be a problem. If the listening server is running on a windows box, the server should be able to run a vbscript. The server I use, and which can be downloaded from the info page is written in Java - so you can use it on the windows machine. Some lines would need to be adapted though, as the cmd related part is somewhat linux centric.

But what script do you want to start - maybe its simpler to comunicate directly with the orvibo. Do you have the API documentation?

Wiredcharlie
2016-03-21, 16:24
- maybe its simpler to comunicate directly with the orvibo. Do you have the API documentation?

To be honest, I was hoping to avoid the automation server as the Orvibo is directly controlled by wifi. From what I can gather from the reverse engineering that's been done, the Orvibo communicates by UDP packets. So the instruction must be sent and then the status checked to make sure that it has worked. Some documentation here:

https://stikonas.eu/wordpress/2015/02/24/reverse-engineering-orvibo-s20-socket/ Windows Binary

https://www.oiepoie.nl/2015/10/04/cheap-wifi-switch-orvibo-wiwo-s20/ netcat control

https://github.com/fernadosilva/orvfms php web interface

https://github.com/happyleavesaoc/python-orvibo/blob/master/orvibo/s20.py python script

https://github.com/franc-carter/bauhn-wifi perl script

I have a VBScript which calls Andrius Štikonas' Windows binary and was hoping to run that directly.

Can SBNetIO send UDP packets?

cadfish
2016-03-25, 12:45
To be honest, I was hoping to avoid the automation server as the Orvibo is directly controlled by wifi.

...

Can SBNetIO send UDP packets?

Sorry, for not answering quicker - I was on a easter holiday trip.

My plugin should support udp - looking at the bauhn script, you can try


'udp:686400176463%MAC%2020202020200000000001'

and


'udp:686400176463%MAC%2020202020200000000000'

as turn on and off cmds, where %MAC% is the devices MAC adress and the rest is some magic strings as found by reverse engineering by the authors of provided links.

The above, however, does not do the pairing. I don't know, whether the pairing has to be established once or with every request.

You can send several commands - just separate them with a semi colon. The pairing command should look like


udp:6864001e636c%MAC%202020202020%REVERSEDMAC%2020 20202020'

where %REVERSEDMAC% is the reversed MAC adress. From the netcat example you can see the reversal


MAC: accf532147e4 --> Reversed MAC:e4472153cfac

I don't have an orvibo though, so I can not test.

Günther

Wiredcharlie
2016-03-26, 17:52
Hi Günther

Thanks for your reply. I couldn't get it to work, unfortunately.
Looking at the debug log:

[16-03-27 00:07:14.4762] Plugins::SBNetIO::Plugin::commandCallback (301) PLAYMODE play
[16-03-27 00:07:14.4775] Plugins::SBNetIO::Plugin::RequestPowerOn (329) *** SBNetIO: Power ON request from client Bedroom
[16-03-27 00:07:14.4787] Plugins::SBNetIO::Plugin::RequestPowerOn (340) *** SBNetIO: In transition = 0
[16-03-27 00:07:14.4800] Plugins::SBNetIO::Plugin::SetPowerState (438) *** SBNetIO: Turn Power: 1
[16-03-27 00:07:14.4813] Plugins::SBNetIO::Plugin::SetPowerState (468) *** SBNetIO: Turn Power - Zones : 1
[16-03-27 00:07:14.4822] Plugins::SBNetIO::Plugin::SetZonePower (483) *** SBNetIO: SetZonePower: 1 - 1
[16-03-27 00:07:14.4831] Plugins::SBNetIO::Plugin::SetZonePower (501) *** SBNetIO: SetPower: Zone 1, Msg: udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020;udp:686400176463accf238da92c2020202 020200000000001
[16-03-27 00:07:14.4841] Plugins::SBNetIO::Plugin::SendCmd (550) *** SBNetIO::SendCmd - Cmd : udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020;udp:686400176463accf238da92c2020202 020200000000001 Connection: 192.168.1.125:10000
[16-03-27 00:07:14.4849] Plugins::SBNetIO::Plugin::SendCmd (557) *** SBNetIO::SendCmd - Zone specific connection will be used.
[16-03-27 00:07:14.4859] Plugins::SBNetIO::Plugin::SendCmd (563) *** SBNetIO::SendCmd - CleanedCmd : udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020;udp:686400176463accf238da92c2020202 020200000000001
[16-03-27 00:07:14.4868] Plugins::SBNetIO::Plugin::SendCommands (576) *** SBNetIO::SendCommands - Cmd : udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020;udp:686400176463accf238da92c2020202 020200000000001
[16-03-27 00:07:14.4877] Plugins::SBNetIO::Plugin::SendCommands (591) *** SBNetIO::SendCmds - ThisCmd : udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020
[16-03-27 00:07:14.4885] Plugins::SBNetIO::Plugin::SendCommands (592) *** SBNetIO::SendCmds - RemainingCmds : udp:686400176463accf238da92c2020202020200000000001
[16-03-27 00:07:14.4893] Plugins::SBNetIO::SBNetIOSendMsg::SendCmd (74) SendCmd - Addr: 192.168.1.125:10000, Cmd: udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020
[16-03-27 00:07:14.4902] Plugins::SBNetIO::SBNetIOSendMsg::SocketSend (93) SocketSend - Addr: 192.168.1.125:10000, Cmd: udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020
[16-03-27 00:07:14.4910] Plugins::SBNetIO::SBNetIOSendMsg::SocketSend (109) SocketSend - Proto: tcp, PeerAddr: 192.168.1.125, PeerPort: 10000, Cmd: udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020
[16-03-27 00:07:15.8441] Slim::Control::Request::notify (2085) Error: Failed notify: Could not create socket: No connection could be made because the target machine actively refused it.
I wondered if there was a problem with udp not being used because of the line:
[16-03-27 00:07:14.4910] Plugins::SBNetIO::SBNetIOSendMsg::SocketSend (109) SocketSend - Proto: tcp, PeerAddr: 192.168.1.125, PeerPort: 10000, Cmd: udp:6864001e636caccf238da92c2020202020202ca98d23cf ac202020202020
But if I forced udp by changing the line in your script
my $proto = 'tcp'; to udp it still didn't work!

I proved that my connection string was correct with the following shell script:
#!/bin/bash


## Subscribe to the device:
echo '6864001e636caccf238da92c2020202020202ca98d23cfac2 02020202020' | xxd -r -p | nc -u -w2 -p10000 192.168.1.125 10000 | xxd -p
## Switching on:
echo '686400176463accf238da92c2020202020200000000001' | xxd -r -p | nc -u -w2 -p10000 192.168.1.125 10000 | xxd -pwhich does work!

My LMS is on a WinXP machine and I have tried the bauhn.pl script on that machine and it works.

Your help is very much appreciated but please don't spoil your easter holiday!

Tony

cadfish
2016-03-27, 05:27
I couldn't get it to work, unfortunately. Looking at the debug log:


Hi Tony,

I'm very sorry - what I wrote was wrong. The protocol has to go into the connection string, which for you should then read


udp:192.168.1.125:10000

and the commands

ON:


6864001e636caccf238da92c2020202020202ca98d23cfac20 2020202020;686400176463accf238da92c202020202020000 0000001


OFF:


6864001e636caccf238da92c2020202020202ca98d23cfac20 2020202020;686400176463accf238da92c202020202020000 0000000


Please try and let me know your findings ...

Wiredcharlie
2016-03-27, 09:16
Hi Günther

Thanks for your quick response!

Still doesn't work despite the log now looking right. I think it must be a hex / ascii thing.
The working shell script pipes the command string through xxd -r -p ?

Thanks for all your help

Tony

Wiredcharlie
2016-04-11, 03:19
I found this:
http://stackoverflow.com/questions/27630789/convert-a-hex-string-in-ascii-to-the-same-hex-values-using-perl

So in SBNetIOSendMsg.pm I added



$Cmd = pack('H*', $Cmd);


And now my Orvibo S20 works!


EDIT:

Oops, spoke too soon. The subscribe to device part is not working and so the operation relied on a control script that had already run. More to follow...

Wiredcharlie
2016-04-16, 08:43
All working reliably now.

Two changes to SBNetIOSendMsg.pm




added:

$Cmd = pack('H*', $Cmd);

and

my $request = $Cmd . "/n";

becomes

my $request = $Cmd;

linefeed removed



I send each control string three times with short intervals inbetween. Default connection udp:255.255.255.255:10000 will probably work universally.

To make writing the Turn On Command and Turn Off Command easier I wrote an online helper: http://118design.co.uk/Orvibo_S20/

I am very grateful to Günther for writing SBNetIO and for his help in getting this working. If anyone is interested in using an Orvibo S20 to switch their amplifier, they cost about £16 from Amazon.

Tony

muntos
2016-11-23, 15:47
Hello, I need to execute some actions (I don't know now exactly, maybe running some scripts, maybe calling a REST service, whatever can be done with this plugin) when volume changes (so the LMS receive a volume UP/DOWN command from a client), is this possible with this plugin ?
I've installed the plugin but I can see only some "turn on/off command" options...

muntos
2016-11-24, 04:51
Ok, I looked a little on the plugin, enable it and I see these entries in the server.log file

[16-11-24 13:47:17.6470] Plugins::SBNetIO::Plugin::commandCallback (236) *** SBNetIO: commandCallback from client H80_DAC
[16-11-24 13:47:17.6475] Plugins::SBNetIO::Plugin::commandCallback (272) *** SBNetIO: commandCallback() Client : H80_DAC
[16-11-24 13:47:17.6480] Plugins::SBNetIO::Plugin::commandCallback (273) *** SBNetIO: commandCallback() p0 : mixer
[16-11-24 13:47:17.6483] Plugins::SBNetIO::Plugin::commandCallback (274) *** SBNetIO: commandCallback() p1 : volume

[16-11-24 13:47:55.1514] Plugins::SBNetIO::Plugin::commandCallback (236) *** SBNetIO: commandCallback from client H80_DAC
[16-11-24 13:47:55.1521] Plugins::SBNetIO::Plugin::commandCallback (272) *** SBNetIO: commandCallback() Client : H80_DAC
[16-11-24 13:47:55.1527] Plugins::SBNetIO::Plugin::commandCallback (273) *** SBNetIO: commandCallback() p0 : mixer
[16-11-24 13:47:55.1531] Plugins::SBNetIO::Plugin::commandCallback (274) *** SBNetIO: commandCallback() p1 : volume

One is for volume UP and the other is for volume DOWN, but the logs show identical, no way to know when is volume up and when is down :( ?

mherger
2016-11-24, 05:12
> *** SBNetIO: commandCallback() p1 : volume
> *** SBNetIO: commandCallback() p1 : volume-
>
> One is for volume UP and the other is for volume DOWN, but the logs show
> identical, no way to know when is volume up and when is down :( ?

They're not identical, are they? ;-)

--

Michael

muntos
2016-11-24, 05:59
Nevermind, I'm on it, getting back if I'm stuck again :)!

muntos
2016-11-24, 23:47
> *** SBNetIO: commandCallback() p1 : volume
> *** SBNetIO: commandCallback() p1 : volume-
>
> One is for volume UP and the other is for volume DOWN, but the logs show
> identical, no way to know when is volume up and when is down :( ?

They're not identical, are they? ;-)

--

Michael

Nope, they are identical, I've checked again, where did you see "volume-" in my logs... :) ?

mherger
2016-11-25, 01:51
> Nope, they are identical, I've checked again, where did you see
> "volume-" in my logs... :) ?

Now that's a good question: I'm not following on the web based forum,
but am subscribed to the mailing list. And there I got that additional
dash. Though it doesn't make sense when looking at what that actually
is. What you're seeing is a CLI command, but only the first parameter
shown (the "volume"). What makes the difference is the second parameter,
which would be the value to which the volume should be set. If you check
the CLI documentation you'll see that this can be an absolute value, or
a relative (-10, +5) to lower/increase the volume.

http://htmlpreview.github.io/?https://raw.githubusercontent.com/Logitech/slimserver/public/7.9/HTML/EN/html/docs/cli-api.html

--

Michael

realbase
2017-09-03, 02:36
Thanks for building SBNetIO. It allows me to running and executing external scripts on the logitech media server when my squeezebox start playing and when it stops. (i couldn't find the former ExecuteScript anymore).

Like to share my solution to control my Yamaha receiver. I have to post a XML-file to the receiver in order to turn the Yamaha Receiver on and off.

Made this possible by running a bash sh script on my raspberry pi and controlling it with SBNetIO.

This allows me to my Yamaha to Switch-On on play (going to Scene 4), and shut off on stop.

My settings of SBNetIO:

23558

Added files to my raspberry PI: (and chmod +x them)

/home/pi/netio/on.sh

#!/bin/sh
curl -s -X POST -d '<YAMAHA_AV cmd="PUT"><Main_Zone><Scene><Scene_Load>Scene 4</Scene_Load></Scene></Main_Zone></YAMAHA_AV>' http://192.168.1.15/YamahaRemoteControl/ctrl > /dev/null

/home/pi/netio/off.sh

#!/bin/sh
curl -s -X POST -d '<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>' http://192.168.1.15/YamahaRemoteControl/ctrl > /dev/null

BobSammers
2019-01-23, 12:30
Hi,

I've been using this plugin for a couple of years now to switch an amp on and off with one of my Squeezeboxes - very useful, thank you!

I'm suddenly getting the following message at the top of the "plugins" page of LMS Settings:

Bad repository http://www.specifica.de/public/sbnetio/download/BSF/repo.xml - 404 Not Found

The message is fairly self-explanatory (and looking with a browser confirms the 404). Is this a temporary glitch or is this likely to be permanent?

Thanks,
Bob

tschu
2019-01-24, 10:26
Hi,

You may want to check https://github.com/TheAppService/sbnetio/tree/master/LMS_Plugin

/t

Gesendet von meinem KFSUWI mit Tapatalk

BobSammers
2019-01-25, 02:20
Thanks, tschu. I'll go that way if we don't hear from the original author.

richyboypalm
2019-06-20, 04:04
Hi, Is there any reason this would not work on a Synology (Intel based) running LMS ?