In the directory /Library/Application Support/Perceptive Automation/Indigo 4/IndigoWebServer/indigopy
In the file devicesreqhandler.py:
Under the stanza:
- Code: Select all
#######
if device.typeSupportsOnOff:
isOn = kw.get('isOn', None)
if isOn is not None:
isOn = isOn.lower() in [kTrueStr, u"yes", u"1"]
if not onlyChanges or isOn != device.isOn:
if isOn:
cherrypy.server.indigoDb.DeviceTurnOn(cherrypy.server.indigoConn, elem_name, cherrypy.request.remote.better_ip)
else:
cherrypy.server.indigoDb.DeviceTurnOff(cherrypy.server.indigoConn, elem_name, cherrypy.request.remote.better_ip)
######
Add the modifed block:
- Code: Select all
## chris
if device.typeSupportsOnOff:
Toggle = kw.get('Toggle', None)
if Toggle is not None:
Toggle = Toggle.lower() in [kTrueStr, u"yes", u"1"]
if not onlyChanges or Toggle != device.Toggle:
if Toggle:
cherrypy.server.indigoDb.DeviceToggleOnOff(cherrypy.server.indigoConn, elem_name, cherrypy.request.remote.better_ip)
else:
cherrypy.server.indigoDb.DeviceToggleOnOff(cherrypy.server.indigoConn, elem_name, cherrypy.request.remote.better_ip)
######
## chris
and in indigodb.py:
After the stanza:
- Code: Select all
def DeviceTurnOff(self, indigoConn, device, requestOrigin = None):
if not self._allowControlPages:
raise ControlDisabled
indigoConn.CheckConnection()
logStr = "request to turn off device \"" + device + "\""
if requestOrigin:
logStr += " from " + requestOrigin
self._Log(logStr)
indigoConn.SendCommandPacket(u"TurnOff", dataVal=device)
Add the modified block:
- Code: Select all
#### chris
def DeviceToggleOnOff(self, indigoConn, device, requestOrigin = None):
if not self._allowControlPages:
raise ControlDisabled
indigoConn.CheckConnection()
logStr = "request to toggle device \"" + device + "\""
if requestOrigin:
logStr += " from " + requestOrigin
self._Log(logStr)
indigoConn.SendCommandPacket(u"ToggleOnOff", dataVal=device)
### chris
Then call it like:
- Code: Select all
# curl 'http://10.0.0.32:8176/devices/bedroom%20sparkly%20lights?Toggle=1&_method=put'
It would be really great to see this added to indigo. Most of the heavy lifting (SendCommandPacket(u"ToggleOnOff")) was already baked in, just not exposed to the restful API.
-Chris