Branches
public_dev : public commits
dev : developer branch ( unstable )
master : Main branch ( mostly stable )
by: Peter Shipley
Simple Python lib for the ISY home automation netapp Supporting a Simple and OO interface
The Goal / design concept is to provide a fast and simple to use interface supporting both object oriented and procedural methods
Also Supports real time cache updating by optionally running a sub-thread subscribing to event stream )
Note: This Lib has grown to the point it needs to be restructured / split up
This is a work in progress ( so expect new features )
see /bin for more examples
nodes, programs and iay vars can be controlled via objects or call methods.
Get and print the status for the node called "Garage Light"
import ISY
myisy = ISY.Isy(addr="admin", userp="admin, userl="isy")
garage_light = myisy.get_node("Garage Light")
print "Node {:} is {:}".format(garage_light.name, garage_light.formatted)
--
Get an object that represents the node called "Garage Light" and turn it off if it is on
import ISY
myisy = ISY.Isy()
garage_light = myisy.get_node("Garage Light")
if garage_light :
garage_light.off()
--
Alternately you can obtain a Node's object by indexing a Isy obj my the node name or address
import ISY
myisy = ISY.Isy()
myisy["16 3F E5 1"].off()
or myisy["Garage Light"].off()
on 50% :
garage_light = myisy["Garage Light"]
garage_light.on(128)
or without node device objs
myisy.node_comm("Garage Light", "on", 128)
list all nodes and scenes and their status :
pfmt = "{:<22} {:>12}\t{:<12}{!s:<12}"
print(pfmt.format("Node Name", "Address", "Status", "Enabled"))
print(pfmt.format("---------", "-------", "------", "------"))
for nod in isy :
if nod.objtype == "scene" :
print(pfmt.format(nod.name, nod.address, "-", "-", ))
else :
print(pfmt.format(nod.name, nod.address, nod.formatted, nod.enabled, ))
--
Callbacks can be set up as easy as
def mycall(*args):
print "mycall called: "
for i in args :
print "arg : ", type(i), i
myisy = ISY.Isy(addr="10.1.1.3", eventupdates=1)
myisy.callback_set("Garage Light", mycall, "my extra args")
or
garage_light = myisy["Garage Light"]
garage_light.set_callback(mycall, "my extra args")
or if your not passing extra arguments you can just :
garage_light = myisy["Garage Light"]
garage_light.set_callback = mycall
Callback will be call for all events relating to the node it is registared to
Callbacks are executed as a part of the event subthread
--
see also : http://www.universal-devices.com/residential/ and/or http://wiki.universal-devices.com/index.php?title=Main_Page
NOTE: This Libaray is not written by or supported by universal devices
[This needs to be updated]
-
Using_Isy_Class This is the main class that used to represent the ISY device iitself
-
Using_IsyNode_Class This class is used to represent and control individual Nodes ( aka: sensors and light switches )
-
Using_IsyVar_Class This class is used to represent varabibles internal to the ISY