示例#1
0
文件: relay.py 项目: nicciniamh/IoT
 def sendData(self,state):
     self.value = True if state else False
     self.age = 0
     cmd='on' if state else 'off'
     data = urlData.getData('{}?cmd={}'.format(self.url,cmd))
     self.value = data['state']
     return self
示例#2
0
 def sendData(self,state):
     ''' Set relay state low or high (0/1) Provides for debounce 
         on slow devices with 500ms delay for up to 2.5 seconds. 
     '''
     if state:
         state = '1'
     else:
         state = '0'
     if self.disabled:
         return self
     attempts = 5
     while attempts:
         try:
             self.status = 0
             self.tstamp = time.time()
             url = '{}?state={}'.format(self.url,state)
             data = urlData.getData(url)
             self.value = int(data['state'])
             return self
         except urlData.dataException:
             self.alarm = 'No data ({})'.format(e)
         except TypeError as e:
             self.alarm = 'Invalid data ({})'.format(e)
         except ValueError as e:
             self.alarm = 'Decode error ({})'.format(e)
         self.age = self.tstamp - self.stime
         if self.age >= self.maxAge:
             self.status = 2
             self.alarm = 'Stale data'
         time.sleep(.5)
         attempts = attempts - 1
     return self            
示例#3
0
 def getData(self):
     ''' retrieve state from device. Provides for debounce 
         on slow devices with 500ms delay for up to 2.5 seconds. 
       '''
     if self.disabled:
         return self
     attempts = 5
     while attempts:
         try:
             self.status = 0
             self.tstamp = time.time()
             url = self.url
             data = urlData.getData(url)
             self.value = int(data['state'])
             return self
         except urlData.dataException:
             self.alarm = 'No data ({})'.format(e)
         except TypeError as e:
             self.alarm = 'Invalid data ({})'.format(e)
         except ValueError as e:
             self.alarm = 'Decode error ({})'.format(e)
         self.age = self.tstamp - self.stime
         if self.age >= self.maxAge:
             self.status = 2
             self.alarm = 'Stale data'
         time.sleep(.5)
         attempts = attempts - 1
     return self            
示例#4
0
文件: dht.py 项目: nicciniamh/IoT
    def getData(self):
        ''' retrieve data from device raise dht_alarm on high or low
            value for temperature or hunidity. Provides for debounce 
            on slow devices with 500ms delay for up to 2.5 seconds. 
          '''
        if self.disabled:
            return self
        attempts = 5
        while attempts:
            try:
                self.alarm = ''
                self.value = 0.0
                self.status = 1
                url = self.url
                self.tstamp = time.time()
                if self.senstype == 'temperature':
                    url = '{}?units={}'.format(self.url,self.units)
                data = urlData.getData(url)
                self.value = float(data[self.senstype])
                if type(self.drift) == int or type(self.drift) == float:
                    self.value = self.value + self.drift
                else:
                    aeval.symtable['v'] = self.value
                    self.value = aeval(self.drift)
                self.stime = int(data["time"])
                self.alarm = ''
                self.status = 0
                if self.value >= self.high:
                    self.alarm = 'High {} {}'.format(self.senstype,self.value)
                    self.status = 1
                elif self.value <= self.low:
                    self.alarm = 'Low {} {}'.format(self.senstype,self.value)
                    self.status = -1
                self.age = self.tstamp - self.stime
                if self.age >= self.maxAge:
                    self.status = 2
                    self.alarm = 'Stale data'

                return self
            except urlData.dataException:
                self.alarm = 'No data ({})'.format(e)
            except TypeError as e:
                self.alarm = 'Invalid data ({})'.format(e)
            except ValueError as e:
                self.alarm = 'Decode error ({})'.format(e)
            self.age = self.tstamp - self.stime
            if self.age >= self.maxAge:
                self.status = 2
                self.alarm = 'Stale data'
            time.sleep(.5)
            attempts = attempts - 1
        return self            
示例#5
0
文件: relay.py 项目: nicciniamh/IoT
 def getData(self):
     now = time.time()
     self.age = 0
     data = urlData.getData(self.url)
     self.value = data['state']
     return self