Subversion Repositories HomeAutomation

Rev

Rev 856 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
856 migan 1
 
2
import os
3
import sys
4
import ControllerBase
5
import Settings
6
 
7
gControllerMan = False
8
 
9
def GetControllerManager():
10
    global gControllerMan
11
    if gControllerMan == False:
12
        gControllerMan = ControllerManager()
13
    return gControllerMan
14
 
857 migan 15
class ControllerManager:
856 migan 16
    modules = {}
17
    controllers = {}
18
 
19
    def __init__(self):
20
        self.ImportAvailableController()
21
 
22
    def ImportAvailableController(self):
23
        controllersPath = Settings.Settings["PATH"] + "/Controllers"
24
        sys.path.append(controllersPath)
25
 
26
        for controllerName in os.listdir(controllersPath):
27
            if controllerName[0] != '.' and controllerName.endswith(".py"):
28
                controllerName = controllerName[:controllerName.find(".")]
29
                self.modules[controllerName] = __import__(controllerName)
30
                print "Loaded controller: " + controllerName
31
 
32
        print ""
33
 
34
    def StartConfiguredControllers(self):
35
        configPath = Settings.Settings["PATH"] + "/Config"
36
        sys.path.append(configPath)
37
 
38
        for configFile in os.listdir(configPath):
39
            if configFile[0] != '.' and configFile.endswith(".controller"):
40
 
41
                name = configFile[:configFile.find(".")]
42
 
43
                settingsFile = open(configPath + "/" + configFile, 'r')
44
                lines = settingsFile.readlines()
45
                settingsFile.close()
46
 
47
                settings = {}
48
 
49
                for line in lines:
50
                    line = line.strip("\n").strip(" ")
51
                    if len(line) > 0:
52
                        if line[0] != '#':
53
                            settingName = line[:line.find("=")]
54
                            settingValue = line[line.find("=")+1:]
55
 
56
                            settings[settingName] = settingValue
57
 
58
                if not settings.has_key("CONTROLLER"):
59
                    print configFile + " has no CONTROLLER defined, skipping"
60
                elif not self.modules.has_key(settings["CONTROLLER"]):
61
                    print settings["CONTROLLER"] + " is not a recognized controller name, skipping"
62
                else:
63
                    self.controllers[name] = self.modules[settings["CONTROLLER"]].Controller(settings)
64
                    print "Started controller: " + settings["CONTROLLER"] + " with Config/" + configFile
65
 
857 migan 66
        print ""