Page 1 of 1

XML Control Protocol

PostPosted: Wed Jul 08, 2015 8:54 am
by nanobots
Hi,

A couple questions:

1. Is there documentation for the XML control protocol (port 1176)?

2. Would using this protocol allow changing the properties of 3rd party plugin based devices (such as changing the color of Hue Lights, pausing a Sonos, etc.)?

Thanks!

Re: XML Control Protocol

PostPosted: Wed Jul 08, 2015 9:31 am
by jay (support)
nanobots wrote:
1. Is there documentation for the XML control protocol (port 1176)?


Not public and not particularly complete. Can you describe what you're wanting to do?

nanobots wrote:
2. Would using this protocol allow changing the properties of 3rd party plugin based devices (such as changing the color of Hue Lights, pausing a Sonos, etc.)?


Not directly. We specifically designed the API such that only the plugin that "owns" any given device instance can modify it's properties (otherwise misbehaving plugins/scripts could cause a device to stop working properly).

Any action that the plugin defines can be scripted if the developer documents the appropriate information, but I'm not sure that's what you're looking for. Without more description, I'm going to guess that what you want to do (control custom devices) isn't currently possible outside of rendering control pages (a la Indigo Touch and HousePad). This is primarily because there really isn't a way for plugins to define control UIs - this is something that's on the list to consider (and has been since the Plugin API was created) but just hasn't yet reached sufficient priority to make it to a release.

Re: XML Control Protocol

PostPosted: Wed Jul 08, 2015 10:05 am
by nanobots
Thanks Jay,

Working on a home automation dashboard that pulls together information from Indigo, as well as a few other sources, and allows controlling devices, etc. I started down the restful API route, but that API doesn't really give full details on the devices (viewtopic.php?f=109&t=14358).

I spent some time reverse engineering the XML protocol and have a client that get device statuses, do basic updates (turn on, turn off, etc.), but would still like to be able to control other devices--specifically hue lights and sonos.

I understand that I can build custom python plugins that control the custom devices on the server through custom actions, events, etc., but I don't think that helps with controlling those devices through a custom client? It also sounds like building IWS plugins isn't really recommended at this point since the they're going to be deprecated, and I'm not actually sure they'd be able to control the custom devices any better anyways since it looks like the restful apis are using the XML protocol to perform the actions anyways.

So I guess the root of the question is, is there a way to send custom actions to devices (for example set color of Hue bulb) remotely through a custom client. I don't need Indigo to provide a UI, I just need to be able to make the appropriate call to the server to trigger the action.

Thanks.

Re: XML Control Protocol

PostPosted: Wed Jul 08, 2015 2:48 pm
by RogueProeliator
So I guess the root of the question is, is there a way to send custom actions to devices (for example set color of Hue bulb) remotely through a custom client. I don't need Indigo to provide a UI, I just need to be able to make the appropriate call to the server to trigger the action.

Unfortunately, that is not currently possible - I have that as a feature request in to Matt & Jay for use in DomoPad (Android client) but currently you have to make use of a plugin and IWS plugin to do what you want.

HOWEVER, if you are interested in doing so you are welcome to load up the DomoPad Indigo Plugin and can execute those actions in the same way that DomoPad does from the Android client; I can send you the fairly simple format of the command if you wish (you pass in the plugin's ID, action name and a dictionary of the parameters appropriate for the action).

Adam

Re: XML Control Protocol

PostPosted: Wed Jul 08, 2015 3:29 pm
by nanobots
Hi Adam,

Yes, that would be extremely useful and much appreciated.

Matt/Jay +1 on that feature request! :)

Thanks!