Skip to content

Interface to the ISY994 device with V5 firmware.

License

Notifications You must be signed in to change notification settings

jspeckman/ISY994v5

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ISY994v5

Class based interface to the ISY994 device with V5 firmware.

Provides a common interface to all devices, variables, programs, and scenes on an ISY controller.

After connecting to the ISY, the 4 types (device, scenes, programs, and variables) of items on the ISY are enumerated. The event handler generates 'add' events are items are discovered. Each item has properties that generate 'property' events as they are changed.

Currently supports Insteon dimmers, switches, keypadlincs, fanlincs, and contact devices.

Designed to be easy to expand support to other device types and technologies such as zWave.

Requires 5.xx firmware. Tested against 5.12

An event handler is supplied when the controller is started. All device events (add, remove, property) can be captured through the event handler for processing as needed.

This library is used in IYS994-Homie-Bridge, an MQTT Client to serve ISY devices to a MQTT broker using the Homie 3 protocol.

Supports Insteon switch, dimmers, contact, and templinc devices and scenes

Example usage: The program below connects to the ISY and enumerates all items. If it finds a device with the address specified, it will flash that device on and off every 2 seconds

import time

from isy994.controller import Controller

url = '192.168.1.213'
#url = None # use autodiscovery

dimmer_address = '42 C8 99 1' # dimmer to flash on/off

dimmer = None

def isy_event_handler(container,item,event,*args):
    print ('Event {} from {}: {} {}'.format(event,container.container_type,item.name,*args))

    if container.container_type == 'Device' and event == 'add' and item.address == dimmer_address:
        global dimmer
        dimmer = item


try:
    c = Controller(url,username='admin',password='admin',use_https=False,event_handler=isy_event_handler)

    while True:
        if dimmer is not None:
            dimmer.set_level (0)

        time.sleep(2)
        
        if dimmer is not None:
            dimmer.set_level (100)


except KeyboardInterrupt:
    print("KeyboardInterrupt has been caught.")

This package requires further development and testing.

About

Interface to the ISY994 device with V5 firmware.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%