Domotiga/XML-RPC

Development

Since version 0.1.163 there is a minimal XML-RPC server included. The methods described below are the first ones I have defined, I use them in a web client I have build. More will follow soon.

DomotiGa XML-RPC API Documentation Version 0.01

Method Description

system.listMethods returns list of methods. param: none

Example response:

<methodResponse> 
<params> 
<param> 
<value><array> 
<data> 
<value><string>system.listMethods</string></value> 
<value><string>system.methodHelp</string></value> 
<value><string>system.methodSignature</string></value> 
<value><string>system.program_version</string></value> 
<value><string>system.pid</string></value> 
<value><string>system.hostname</string></value> 
<value><string>data.newmessages</string></value> 
<value><string>data.sunmoon</string></value> 
<value><string>mode.get_housemode</string></value> 
<value><string>mode.get_mutemode</string></value> 
<value><string>globalvar.list</string></value> 
<value><string>device.list</string></value> 
<value><string>device.listswitch</string></value> 
<value><string>device.listdim</string></value> 
</data> 
</array></value> 
</param> 
</params> 
</methodResponse>

system.methodHelp returns help for method. param: method (string)

system.methodSignature no function

system.program_version returns version of domotiga param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><string>0.1.163</string></value> 
</param> 
</params> 
</methodResponse>

system.pid returns process id of domotiga param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><string>6876</string></value> 
</param> 
</params> 
</methodResponse>

system.hostname returns hostname of domotiga server param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><string>server</string></value> 
</param> 
</params> 
</methodResponse>

api.version returns version of api param: null

Example response:

<methodResponse>
<params> 
<param> 
<value><string>0.01</string></value> 
</param> 
</params> 
</methodResponse>

data.newmessages returns new mails, calls and voicemails param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><array> 
<data> 
<value><string>0</string></value> 
<value><string>0</string></value> 
<value><string>0</string></value> 
</data> 
</array></value> 
</param> 
</params> 
</methodResponse>

data.sunmoon returns sun and moon data param:null

Note: currently only reports sunrise and sunset

Example response:

<methodResponse> 
<params> 
<param> 
<value><array> 
<data> 
<value><string>6:49</string></value> 
<value><string>18:50</string></value> 
</data> 
</array></value> 
</param> 
</params> 
</methodResponse>

mode.get_housemode returns the house mode param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><string>vacation</string></value> 
</param> 
</params> 
</methodResponse>

mode.get_mutemode returns the mute mode param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><boolean>1</boolean></value> 
</param> 
</params> 
</methodResponse>

globalvar.list returns a list of global variables param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><array> 
<data> 
<value><string>Second</string></value> 
<value><string>Minute</string></value> 
<value><string>Hour</string></value> 
<value><string>Day</string></value> 
<value><string>Month</string></value> 
<value><string>Weekday</string></value> 
<value><string>Time_Of_Day</string></value> 
<value><string>Year</string></value> 
<value><string>Sunrise</string></value> 
<value><string>Sunset</string></value> 
<value><string>Sunrise_Twilight</string></value> 
<value><string>Sunset_Twilight</string></value> 
<value><string>Season</string></value> 
<value><string>House_Mode</string></value> 
<value><string>Mode_Set</string></value> 
<value><string>Last_User</string></value> 
<value><string>Mute</string></value> 
<value><string>Dark</string></value> 
<value><string>Weekend</string></value> 
</data> 
</array></value> 
</param> 
</params> 
</methodResponse>

device.list returns a list of devices param: null

Only devices which are enabled and have hide flag unset are displayed. Returns select set of their fields. Format is a struct with a string for each device, fields are separated with ';;'

Fields are returned in this order:
Device id
Icon (with current status)
Name
Location
Value1
Label1
Value2
Label2
Value3
Label3
Value4
Label4
Last seen

Example response:

<methodResponse> 
<params> 
<param> 
<value><struct> 
<member><name>Porch Light</name> 
<value><string>1;;light-off.png;;Porch Light;;Frontdoor;;Off;;;;;;;;;;;;;;;;13:05:40</string></value> 
</member> 
<member><name>Power Usage</name> 
<value><string>2;;energy.png;;Power Usage;;MeterCabinet;;5145563;;kWh;;120;;Watt;;;;;;;;;;15:22:27</string></value> 
</member> 
<member><name>Laundryroom Light</name> 
<value><string>3;;light-off.png;;Laundryroom Light;;Laundryroom;;Off;;;;;;;;;;;;;;;;2008-10-16 20:04:51</string></value> 
</member> 
</struct></value> 
</param> 
</params> 
</methodResponse>

device.listswitch returns a list of devices which can be switched param: null

Returns select set of values, will change for sure in the future! Format is a struct with a string for each device, fields separated with ';;'

Fields are returned in this order:
Device id
Icon (with current status)
Name
Value1

Example response:

<methodResponse> 
<params> 
<param> 
<value><struct> 
<member><name>Porch Light</name> 
<value><string>1;;light-off.png;;Porch Light;;Off</string></value> 
</member> 
<member><name>DomotiGa Server</name> 
<value><string>34;;light-on.png;;DomotiGa Server;;On</string></value> 
</member> 
<member><name>Close-in Boiler</name> 
<value><string>35;;light-on.png;;Close-in Boiler;;On</string></value> 
</member> 
</struct></value> 
</param> 
</params> 
</methodResponse>

device.listdim returns a list of devices which can be dimmed param: null

Same as device.listswitch response.

V0.02 Changes

Added:

system.program_uptime returns the program uptime param: null

Example response:

<methodResponse> 
<params> 
<param> 
<value><string>6 days, 12 hrs, 1 min, and 28 secs.</string></value> 
</param> 
</params> 
</methodResponse>

V0.03 Changes

Added:

module.restart reload config and restart module modulename param: modulename (string)

Returns TRUE or FALSE.

Example response:

<methodResponse> 
<params> 
<param> 
<value><boolean>TRUE</boolean></value> 
</param> 
</params> 
</methodResponse>

send.email send e-mail to address param1, with subject param2 and body param3

Returns TRUE or FALSE.

Example response:

<methodResponse> 
<params> 
<param> 
<value><boolean>TRUE</boolean></value> 
</param> 
</params> 
</methodResponse>

send.tweet send tweet with param1 as contents

send.sms send sms to param1, with param2 as contents

set.housemode set house mode to param1

set.mutemode set mute mode to param1

device.setdevice "set device param1 with value param2

set.alarmpin set alarm pin to param1

set.alarmmode set alarm mode to param1

play.sound play sound param1 with volume param2

voicetext.speak speak text param1 with voice param2

pachube.list get pachube device list in eeml

V0.04 Changes

rrdtool.listgraphs get list of rrdtool graph images in group param1

rrdtool.updategraphs update rrdtool graph images in group param1

Debug XML-RPC

XML-RPC responses can be debugged with -for example- the xml-rpc php debugger found here:  http://gggeek.raprap.it/debugger/ Download and use it in your on lan, because the public version will log the traffic.