Exemplo n.º 1
0
def list_units():
    fmt = "%-25s %-25s %s"
    print(fmt % ("Device Name", "Device Number", "URL Address"))
    print(fmt % ("-" * 20, "-" * 20, "-" * 20))

    # wait upto 5 seconds or after you have discovered two unit
    r = isy_discover(timeout=5, count=2)
    for key, unit in r.items():
        print(fmt % (unit['friendlyName'], unit['UDN'], unit['URLBase']))
Exemplo n.º 2
0
def list_units():
    fmt = "%-25s %-25s %s"
    print(fmt % ("Device Name", "Device Number", "URL Address" ))
    print(fmt % ("-" * 20, "-" * 20, "-" * 20 ))

    # wait upto 5 seconds or after you have discovered two unit
    r = isy_discover(timeout=5, count=2)
    for key, unit in r.items():
        print(fmt % ( unit['friendlyName'], unit['UDN'], unit['URLBase']  ))
Exemplo n.º 3
0
    def load_config(self):
        try:
            config_fp = open(os.path.join(self._config_path, 'HueISY.json'))
            config = json.load(config_fp)
            config_fp.close()
        except IOError:
            config = {}

        secret_key = config.get("SecretKey")

        if secret_key is not None:
            self._secret_key = base64.b64decode(secret_key)
        else:
            self._secret_key = None

        self._Hue_IP = config.get("HueIP", "")
        if self._Hue_IP == "":
            self._Hue_IP = phue.Bridge.get_ip_address()
        self._Hue_Username = config.get("HueUsername", "")

        self._Isy_IP = config.get("IsyIP", "")
        if self._Isy_IP == "":
            from ISY.IsyDiscover import isy_discover
            result = isy_discover(timeout=30, count=1)
            if len(result) == 1:
                import urlparse
                self._Isy_IP = urlparse.urlparse(
                    result.values()[0]['URLBase']).netloc

        self._Isy_User = config.get("IsyUser", "")
        self._Isy_Pass = config.get("IsyPass", "")

        for action_cfg in config.get("actions", {}):
            action = Action.Action(settings=action_cfg)
            self._actions[action.name] = action
            for trigger_id in action.triggers:
                self._trigger_actions[trigger_id] = action

        for scene_cfg in config.get("scenes", {}):
            scene = Scene.Scene(settings=scene_cfg)
            self._scenes[scene.name] = scene
Exemplo n.º 4
0
    def load_config(self):
        try:
            config_fp = open(os.path.join(self._config_path, 'HueISY.json'))
            config = json.load(config_fp)
            config_fp.close()
        except IOError:
            config = {}

        secret_key = config.get("SecretKey")

        if secret_key is not None:
            self._secret_key = base64.b64decode(secret_key)
        else:
            self._secret_key = None

        self._Hue_IP = config.get("HueIP", "")
        if self._Hue_IP == "":
            self._Hue_IP = phue.Bridge.get_ip_address()
        self._Hue_Username = config.get("HueUsername", "")

        self._Isy_IP = config.get("IsyIP", "")
        if self._Isy_IP == "":
            from ISY.IsyDiscover import isy_discover
            result = isy_discover(timeout=30, count=1)
            if len(result) == 1:
                import urlparse
                self._Isy_IP = urlparse.urlparse(result.values()[0]['URLBase']).netloc

        self._Isy_User = config.get("IsyUser", "")
        self._Isy_Pass = config.get("IsyPass", "")

        for action_cfg in config.get("actions", {}):
            action = Action.Action(settings=action_cfg)
            self._actions[action.name] = action
            for trigger_id in action.triggers:
                self._trigger_actions[trigger_id] = action

        for scene_cfg in config.get("scenes", {}):
            scene = Scene.Scene(settings=scene_cfg)
            self._scenes[scene.name] = scene
Exemplo n.º 5
0
    def __init__(self, **kwargs):
        #
        # Keyword args
        #
	self.userl = kwargs.get("userl", os.getenv('ISY_USER', "admin"))
	self.userp = kwargs.get("userp", os.getenv('ISY_PASS', "admin"))
        self.addr = kwargs.get("addr", os.getenv('ISY_ADDR', None))

	# (self.userl, self.userp, self.addr) = authtuple

	# print "AUTH: ", self.addr, self.userl, self.userp

        self.debug = kwargs.get("debug", 0)
        self.cachetime = kwargs.get("cachetime", 0)
        self.faststart = kwargs.get("faststart", 1)
        self.eventupdates = kwargs.get("eventupdates", 0)
	self._isy_event = None
	self.error_str = ""
	self.callbacks = dict ()
        self._is_pro = True


	# data dictionaries for ISY state
	self.controls = None
	self.name2control = None
	self._folderlist = None
	self._folder2addr = None
	self._progdict = None      
	self._nodedict = None
	self._nodegroups = None
	self._groups2addr = None
	self._node2addr = None
	self._nodeCategory = None
	self._vardict = None        
	self._wolinfo = None
	self._net_resource = None
	self.climateinfo  = None

        if self.addr == None :
            from ISY.IsyDiscover import isy_discover

            units = isy_discover(count=1) 
            for device in units.values() :
                self.addr = device['URLBase'][7:]
                self.baseurl = device['URLBase']
        else :
            self.baseurl = "http://" + self.addr

        if self.addr == None :
	    warn("No ISY address : guessing \"isy\"")
	    self.addr = "isy"

#	print "\n\taddr", "=>", self.addr, "\n\n"


#	if ( not self.userl or not self.userp ) :
#	    netrc_info = netrc.netrc()
#	    login, account, password = netrc_info.authenticators(self.addr)
#	    print "login", "=>", repr(login)
#	    print "account", "=>", repr(account)
#	    print "password", "=>", repr(password)
#	    self.userl = "admin"
#	    self.userp = "admin"

        if self.debug & 0x01 :
            print("class Isy __init__")
            print("debug ", self.debug)
            print("cachetime ", self.cachetime)
            print("faststart ", self.faststart)

        # parse   ISY_AUTH as   LOGIN:PASS

        #
        # general setup logic
        #
        Isy._handler.add_password(None, self.addr, self.userl, self.userp)
        # self._opener = URL.build_opener(Isy._handler, URL.HTTPHandler(debuglevel=1))
        # self._opener = URL.build_opener(Isy._handler)
        if self.debug & 0x02:
            print("baseurl: " + self.baseurl + " : " + self.userl + " : " + self.userp)

	if self.faststart < 2 :
	    try:
		self.load_conf()
	    except URL.URLError as e:
		print("Unexpected error:", sys.exc_info()[0])
		print 'Problem connecting with ISY device :', self.addr
		print e
		raise IsyCommunicationError(e)


        if not self.faststart :
            self.load_nodes()

        # There for id's to Node/Var/Prog objects
        self.nodeCdict = dict ()
        self.varCdict = dict ()
        self.progCdict = dict ()
        self.folderCdict = dict ()

        if self.eventupdates :
            self.start_event_thread()