What? Why? Everything in EventGhost including any plugin submitted is open source AFAIK but in any case you were only talking about how to work with EventGhost not exploiting anything. I can't think of anything in your post that anyone would object to.
I was just coming back to reread this post because I think you had a question. Is there still something you need help with?
I tried to use the EventGhost plugin and had limited success with it. It was able to play some of my favourites but not all of them. I'm not sure how I felt about having to specify a zone in each action. In my mind it makes more sense to specify a zone to control once and then have subsequent commands applied to that zone.
In any case, I was pleased to see you sharing your solution with the community, and I'm sorry you took it down.
As it happens, I am currently working on a VC plugin for Sonos that is going to be awesome. I've already got it doing some great stuff but there is a lot of work left to do on it.
I was just now rereading this thread. There isn't anything in the thread that wasn't kosher, feel free to resurrect the original post if you can. It was a just some wording in the eg sonos plugin that gave me the idea the dev may not have appreciated it. That probably isn't the case, i just didn't want to step on anyone's toes.
My setup is with a whole room mic. Any subsequent commands will never be registered over playing music. That's why i specified the room within each play command. To get all of your favorites, it's easiest to set them up with the EG Sonos plugin. Then you can just copy/paste the python to find out what the url is.
TTS through sonos is way to slow to really be effective. It has to buffer up the stream. It works well for alerts. I have timers,call/sms alerts, & my doorbell routed to a few zones.
My question was re guarding if/then statements. I have 4 zones that are run off AV receivers, so when those zones are chosen it needs to also send an additional command to power on the av receiver. I haven't had much time to play with it but the code below is how i have it working now(I'm sure there's a better way). In the a=b statement {the Basement} = a zone that needs to have an additional command sent to power on the AV receiver.
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.4.5-->
<command id="454" name="Play music Genre" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Sound.MicMute</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>genre</param>
<param>{PF.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>room</param>
<param>{PF.2}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>room</param>
<param>{PF.2}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>genreid</param>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>zone</param>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{PF.2}&&in the basement</ifParams>
<then>
<action>
<cmdType>Group.Disable</cmdType>
<params>
<param>Sonos</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Hue.Light</cmdType>
<params>
<param>11</param>
<param>"alert":"select"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>EventGhost.Send</cmdType>
<params>
<param>[tts]</param>
<param>Okay. I'll start some {var.genre} tunes in {var.room}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>EventGhost.Send</cmdType>
<params>
<param>Sonos.playlist</param>
<param>{var.genreid}</param>
<param>Sonos Playlist</param>
<param>{var.genre}</param>
<param>{var.zone}</param>
<param>{var.room}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>Group.Disable</cmdType>
<params>
<param>Sonos</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Hue.Light</cmdType>
<params>
<param>11</param>
<param>"alert":"select"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>EventGhost.Send</cmdType>
<params>
<param>[tts]</param>
<param>Okay. I'll start some {var.genre} tunes in {var.room}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>EventGhost.Send</cmdType>
<params>
<param>Sonos.playlistB</param>
<param>{var.genreid}</param>
<param>Sonos Playlist</param>
<param>{var.genre}</param>
<param>{var.zone}</param>
<param>{var.room}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<action>
<cmdType>VC.SetEventTimer</cmdType>
<params>
<param>4</param>
<param>UnMuteMic</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Hue.Light</cmdType>
<params>
<param>11</param>
<param>"alert":"select"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Play</phrase>
<phrase optional="true">some</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\Sonos Genre.xml</payloadFromXML>
<phrase>music in</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\Sonos locations.xml</payloadFromXML>
</command>