Ejemplo n.º 1
0
 def changeStatus(self, status='ready'):
     if self.status == status:
         return
     oldStatus = self.status
     session = Glob.dbSession()
     self.setStatus(status)
     session.add(self)
     session.commit()
     session.close()
     Glob.logger.info("zone %s  %s -> %s" %
                      (self.zone_name, oldStatus, status))
Ejemplo n.º 2
0
 def setStatusRecursively(self, status='armed'):
     session = Glob.dbSession()
     self.setStatus(status)
     exploredSubzones = set()
     for subzone in self._subzones:
         if subzone not in exploredSubzones:
             zoneObj = Glob.zones.getZone(subzone)
             session.add(zoneObj)
             zoneObj.setStatus(status)
             exploredSubzones.update(subzone)
     session.commit()
     session.close()
Ejemplo n.º 3
0
 def noSensor(self, interval=30):
     '''
         return boolean - true if there is no sensor event in previous "interval" in minutes
     '''
     session = Glob.dbSession()
     for deviceName in self.getDevices():
         device = Glob.devices.getDevice(deviceName)
         if device is not None:
             session.add(device)
             if device.hasSensorEvent(interval):
                 session.close()
                 return False
     session.close()
     return True
Ejemplo n.º 4
0
 def createDeviceInstance(self, unit, deviceId, deviceType, deviceName):
     '''
         initialize device driver and store it in self.devices dictionary
     '''
     deviceClass = self.oasisDeviceDriverClass(deviceType)
     module = importlib.import_module('drivers.' + deviceClass.lower())
     class_ = getattr(module, deviceClass)
     # get_or_create driver object
     session = Glob.dbSession()
     driverObj = turhousedb.get_or_create(
         session, class_, device_name=deviceName)
     driverObj.init()
     driverObj.setUnit(self.units[unit])
     driverObj.setOptions(Glob.config.getDeviceOptions(unit, deviceName))
     session.commit()
     session.close()
     # create lookup records
     self.devices[deviceId] = driverObj
     Glob.devices.registerDevice(deviceName, driverObj)
     if deviceType == 'RC-86K':
         id2 = deviceId ^ 1 << 20
         self.devices[id2] = driverObj
     return driverObj
Ejemplo n.º 5
0
    def __init__(self):
        BaseManager.__init__(self)
        # init alarm zones
        session = Glob.dbSession()
        zones = Glob.config.getAlarmZones()
        for zoneName in zones:
            zone = turhousedb.get_or_create(session,
                                            AlarmZone,
                                            zone_name=zoneName)
            zone.init()
            session.add(zone)
            Glob.zones.registerZone(zoneName, zone)
            if 'status' in zones[zoneName]:
                zone.setStatus(zones[zoneName]['status'])
            if 'devices' in zones[zoneName]:
                for device in zones[zoneName]['devices']:
                    zone.addDevice(device)
            if 'subzones' in zones[zoneName]:
                for subzoneName in zones[zoneName]['subzones']:
                    if subzoneName in zones:
                        zone.addSubzone(subzoneName)
                    else:
                        Glob.logger.error("Unknown subzone %s -> %s " %
                                          (zoneName, subzoneName))
        session.commit()
        session.close()
        # atach event handlers
        self.sensorEvent += self.sensorEventHandler
        self.tamperEvent += self.tamperEventHandler
        self.controllerEvent += self.controllerEventHandler
        self.buttonEvent += self.buttonEventHandler

        for zoneName in zones:
            zone = Glob.zones.getZone(zoneName)
            Glob.logger.info("Zone %s devices: %s " %
                             (zoneName, zone.getDevices()))
Ejemplo n.º 6
0
 def processMessageSession(self, msgDict):
     session = Glob.dbSession()
     session.add(self)
     self.processMessage(msgDict)
     session.commit()
     session.close()
Ejemplo n.º 7
0
 def processMessageSession(self, msgDict):
     session = Glob.dbSession()
     session.add(self)
     self.processMessage(msgDict)
     session.commit()
     session.close()