Exemple #1
0
    def init(self):
        super().init()

        #if self._i2c and self.param['InitVal']:
        self._i2c.write_byte(0)

        Variable.set_meta(self.param['RespVar'], '°C', '{:.1f}')
Exemple #2
0
    def variables(self, news: dict):

        trigger_key = self.param['trigger_key']
        if not trigger_key: return

        if trigger_key not in news: return

        new_val = news[trigger_key]
        trigger_val = self.param['trigger_val']
        if trigger_val and trigger_val != new_val: return

        #TODO if..

        out_time = int(float(self.param['out_time']) * 1000)  #TODO
        if self.triggered:
            trigger_re = self.param['trigger_re']
            #TODO retrigger
            self.timer_next = Timer.clock() + out_time

        else:
            self.triggered = True
            self.timer_next = Timer.clock() + out_time

            Variable.set(self.param['out_key'], self.param['out_val_1'])
            log(LOG_DEBUG, 'TimeSwitch for trigger {}', trigger_key)
Exemple #3
0
 def timer(self, prepare: bool):
     name = self.param['RespVarCode']
     if name:
         val = touched()
         print(val)
         if val != self._last_val:
             self._last_val = val
             Variable.set(name, val)
    def init(self):
        super().init()

        #if self._i2c and self.param['InitVal']:
        self._i2c.write_reg_buffer(1, [0xCE, 0x10])
        self._i2c.write_byte(0)

        Variable.set_meta(self.param['RespVar'], 'Lux', '{:.2f}')
 def timer(self, prepare: bool):
     name = self.param['RespVar']
     if name:
         val = self._i2c.read_byte()
         print(val)
         if val != self._last_val:
             self._last_val = val
             Variable.set(name, val)
Exemple #6
0
 def timer(self, prepare: bool):
     while self.process():
         print(self.value, self.unit, self.form)
         key = self.param['RespVar']
         source = self.param['NAME']
         Variable.set(key, self.value, source)
     if self._ser:
         self._ser.write(COMMAND_READ)
Exemple #7
0
    def init(self):
        super().init()

        # set to cyclic measurement
        self._i2c.write_buffer([0x22, 0x36])

        Variable.set_meta(self.param['RespVarT'], '°C', '{:.1f}')
        Variable.set_meta(self.param['RespVarH'], '%', '{:.1f}')
Exemple #8
0
def main():
    """ Entry point for ezPiC """
    #test.main()

    log(LOG_DEBUG, '# Starting main init')
    if CNF['useIoT']:
        Timer.init()
        Cmd.init()
        Machine.init()
        Gadget.init()
        Gateway.init()
        Rule.init()
        Device.init()
        Variable.init()
        if CNF['useCLI']:
            CLI.init()
        if CNF['useTelnet']:
            TelnetServer.init(port=CNF['portTelnet'])
    if CNF['useWeb']:
        Web.init(port=CNF['portWeb'])

    log(LOG_INFO, '# Starting main run')
    if CNF['useIoT']:
        Timer.run()
        Cmd.run()
        Machine.run()
        Gadget.run()
        Gateway.run()
        Rule.run()
        Device.run()
        Variable.run()

        # DEBUG
        if not MICROPYTHON:
            Cmd.excecute(
                'vs Lorem_ {"e": 2, "d": 756, "c": 234, "b": 12313, "a": 123}')
            Cmd.excecute('vs Lörém_ [0, 8, 15]')
            Cmd.excecute('vs Lorem {"e":2,"d":756,"c":234,"b":12313,"a":123}')
            Cmd.excecute('vs Lörém [0,8,15]')

        log(LOG_DEBUG, '# Load settings')
        Cmd.excecute("load")

    if CNF['useWeb']:
        log(LOG_DEBUG, '# Starting web server')
        Web.run(
            threaded=CNF['useIoT'])  # this call never comes back .. normally

    if CNF['useIoT']:
        if CNF['useCLI']:
            log(LOG_DEBUG, '# Starting CLI')
            CLI.run(threaded=CNF['useTelnet'])
        if CNF['useTelnet']:
            log(LOG_DEBUG, '# Starting telnet server')
            TelnetServer.run()  # this call never comes back .. normally

    log(LOG_ERROR, 'PANIC! Server terminated')
    RUN = False
Exemple #9
0
 def timer(self, prepare:bool):
     for key, reg in (('RespVarA', MCP23017_GPIOA), ('RespVarB', MCP23017_GPIOB)):
         name = self.param[key]
         if name:
             val = self._i2c.read_reg_byte(reg)
             print(val)
             if val != self._last_val:
                 self._last_val = val
                 Variable.set(name, val)
Exemple #10
0
 def timer(self, prepare: bool):
     name = self.param['RespVar']
     if name:
         data = self._i2c.read_buffer(2)
         val = (data[1] << 8) | data[0]
         #print(val)
         if val != self._last_val:
             self._last_val = val
             Variable.set(name, val)
Exemple #11
0
 def timer(self, prepare: bool):
     name = self.param['RespVar']
     if name:
         data = self._i2c.read_buffer(2)
         val = ((data[0] & 0xFF) << 3) | ((data[1] & 0x01) >> 5)
         if val >= 0x400:
             val -= 0x800
         val /= 8
         print(val)
         Variable.set(name, val)
 def timer(self, prepare: bool):
     name = self.param['RespVar']
     if name:
         #data = self._i2c.read_reg_buffer(0, 2)
         data = self._i2c.read_buffer(2)
         e = (data[0] >> 4) & 0x0F
         m = ((data[0] & 0x0F) << 8) | data[1]
         val = 0.01 * (1 << e) * m
         print(val)
         Variable.set(name, val)
Exemple #13
0
    def init(self):
        super().init()

        if self._ser:
            self._ser.init(9600, 8, None,
                           1)  # baud=9600 databits=8 parity=none stopbits=1
        Variable.set_meta(self.param['RespVar'], 'ppm', '{:.0f}')
        if self.timer_period < 1000:
            self.timer_period = 1000
            self.timer_next = 1
    def timer(self, prepare:bool):
        if self.sum_count:
            source = self.param['NAME']
            pm100 = self.sum_pm100 / self.sum_count
            print(pm100)

            key = self.param['RespVarPM100']
            Variable.set(key, pm100, source)

            self.sum_pm100 = 0
            self.sum_count = 0
    def init(self):
        super().init()

        if self._ser:
            self._ser.init(9600, 8, None, 1) # baud=9600 databits=8 parity=none stopbits=1
            #self._ser.set_dtr(True)    # DTR-pin to +
            #self._ser.set_rts(False)   # RTS-pin to -
        Variable.set_meta(self.param['RespVarPM100'], UNIT, '{:.1f}')

        self.sum_pm100 = 0
        self.sum_count = 0
Exemple #16
0
 def timer(self, prepare: bool):
     name = self.param['RespVar']
     if name:
         val = self._i2c.read_reg_word(0, little_endian=False, signed=True)
         #print(val)
         if self._map_adc_0 != self._map_adc_1:
             val = (val - self._map_adc_0) \
                 / (self._map_adc_1 - self._map_adc_0) \
                 * (self._map_val_1 - self._map_val_0) \
                 + self._map_val_0
             #print(val)
         Variable.set(name, val)
Exemple #17
0
 def timer(self, prepare:bool):
     name_t = self.param['RespVarT']
     name_h = self.param['RespVarH']
     if name_t or name_h:
         data = self._i2c.read_reg_buffer(self, 0, 5)
         #TODO Checksum data[4]
         print(data)
         if name_t:
             t = data[2] + data[3]/10
             Variable.set(name_t, t)
         if name_h:
             h = data[0] + data[1]/10
             Variable.set(name_h, h)
 def timer(self, prepare: bool):
     data = self._i2c.read_reg_buffer(self._ctrl_reg, 5)
     for i, key in enumerate(
         ['RespVar0', 'RespVar1', 'RespVar2', 'RespVar3'], 1):
         name = self.param[key]
         if name:
             val = data[i]
             if self._map_adc_0 != self._map_adc_1:
                 val = (val - self._map_adc_0) \
                     / (self._map_adc_1 - self._map_adc_0) \
                     * (self._map_val_1 - self._map_val_0) \
                     + self._map_val_0
                 print(val)
             Variable.set(name, val)
Exemple #19
0
 def timer(self, prepare: bool):
     name_t = self.param['RespVarT']
     name_h = self.param['RespVarH']
     if name_t or name_h:
         self._i2c.write_buffer([0xE0, 0x00])
         data = self._i2c.read_buffer(6)
         #TODO Checksum data[2] data[5]
         #print(data)
         if name_t:
             t = ((data[0] << 8) | data[1]) / (65535 / 175) - 45
             Variable.set(name_t, t)
         if name_h:
             h = ((data[3] << 8) | data[4]) / 655.35
             Variable.set(name_h, h)
Exemple #20
0
    def timer(self, prepare:bool):
        if self.sum_count:
            source = self.param['NAME']
            pm2_5 = self.sum_pm2_5 / self.sum_count * 0.1
            pm10 = self.sum_pm10 / self.sum_count * 0.1
            #print(pm2_5, pm10)

            key = self.param['RespVarPM2_5']
            Variable.set(key, pm2_5, source)
            key = self.param['RespVarPM10']
            Variable.set(key, pm10, source)

            self.sum_pm2_5 = 0
            self.sum_pm10 = 0
            self.sum_count = 0
 def variables(self, news: dict):
     for i, key in enumerate(
             'TrigVar0',
             'TrigVar1',
             'TrigVar2',
             'TrigVar3',
             'TrigVar4',
             'TrigVar5',
             'TrigVar6',
             'TrigVar7',
             'TrigVar8',
             'TrigVar9',
             'TrigVarA',
             'TrigVarB',
             'TrigVarC',
             'TrigVarD',
             'TrigVarE',
             'TrigVarF',
     ):
         name = self.param[key]
         if name and name in news:
             val = Variable.get(name)
             if type(val) == list:
                 for ii, subval in enumerate(val, i):
                     self._set_val(ii, subval)
             else:
                 self._set_val(i, val)
    def timer(self, prepare: bool):
        self.idle()

        counter = self._counter
        clock = Timer.clock()
        clock_diff = clock - self._last_clock
        self._counter = 0
        self._last_clock = clock
        counter *= 1000 / clock_diff
        scale_str = self.param['Scale']
        if scale_str:
            counter *= float(scale_str)

        key = self.param['RespVar']
        source = self.param['NAME']
        Variable.set(key, counter, source)
    def _is_variable_active(self, name):
        val = str(Variable.get(name))

        if self.param['TrigVals1'] and self.param['TrigVals1'].find(val) >= 0:
            return True

        return False
Exemple #24
0
    def _get_variable(self, key):
        val = str(Variable.get(key))

        if self.param['TrigVals1'] and self.param['TrigVals1'].find(val) >= 0:
            return True

        return False
Exemple #25
0
def cmd_variable_list(cmd: dict) -> tuple:
    """ gets a list of dics with variable key and formatted value """
    index = cmd['IDX']
    last_tick, variables = Variable.get_news(index)
    ret = {'tick': last_tick, 'variables': variables}

    return (0, ret)
Exemple #26
0
    def timer(self, prepare: bool):
        if not self._i2c:
            return

        try:
            name = self.param['RespVar']
            if name:
                val = self._i2c.read_byte()
                print(val)
                if val != self._last_val:
                    self._last_val = val
                    Variable.set(name, val)

        except Exception as e:
            print(str(e))
            self._last_error = str(e)
Exemple #27
0
def cmd_variable_full_list(cmd: dict) -> tuple:
    """ gets a list of dics with all variable parameters """
    index = cmd['IDX']
    last_tick, variables = Variable.get_news_full(index)
    ret = {'tick': last_tick, 'variables': variables}

    return (0, ret)
Exemple #28
0
 def variables(self, news: dict):
     name = self.param['TrigVar']
     if name and name in news:
         val = Variable.get(name)
         if type(val) == str:
             val = int(val, 0)
         if 0 <= val <= 0xFFFF:
             self._i2c.write_buffer([val & 0xFF, (val >> 8) & 0xFF])
 def variables(self, news: dict):
     name = self.param['TrigVar']
     if name and name in news:
         val = Variable.get(name)
         if type(val) == str:
             val = int(val, 0)
         if 0 <= val <= 255:
             self._i2c.write_byte(val)
Exemple #30
0
    def _process_inputs(self):
        if not self._i2c:
            return
        print('+', end='')

        try:
            name = self.param['RespVar']
            if name:
                val = self._read()
                print(val)
                if val != self._last_val:
                    self._last_val = val
                    Variable.set(name, val)

        except Exception as e:
            print(str(e))
            self._last_error = str(e)