示例#1
0
def test_i2c(host):
    try:
        api = METFClient(host)

        api.pinMode(D2, INPUT)

        # Сигнал о пробуждении устройства
        assert api.wait_digital(D2, HIGH, 5.0)

        api.delay(20)

        # Поехали общаться
        api.i2c_begin(0, 2)
        api.i2c_setClock(100000)
        api.i2c_setClockStretchLimit(1500)

        addr = 10

        ret = api.i2c_ask(addr, 'M', 1)  # 'M'  mode

        ret = api.i2c_ask(addr, 'B', 10)  # 'B'  get data

    except HTTPError as err:
        log.error(err.response.text)
        raise Exception(err.response.text)
示例#2
0
class TestGetHeader(unittest.TestCase):

    def setUp(self):
        self.api = METFClient(ESP_HOST)
        self.w = WateriusClassic(self.api)

        self.w.start_i2c()

    def test_header(self):
        try:
            # имитируем нажатие кнопки, ждем HIGH
            self.w.wake_up()

            assert self.w.get_mode() == self.w.TRANSMIT_MODE

            header = self.w.get_header()

            #self.assertEqual(self.w.ATTINY_VER, header.version)
            self.assertGreater(header.voltage, 2700)
            self.assertLess(header.voltage, 3500)

            self.w.send_sleep()
            self.w.wait_off()

        finally:
            self.w.manual_turn_off()

    def test_counter(self):
        try:
            self.w.wake_up()

            self.w.start_i2c()

            assert self.w.get_mode() == self.w.TRANSMIT_MODE

            header = self.w.get_header()

            self.w.send_sleep()

            log.info('ESP: impules0={}'.format(header.impulses0))
            log.info('ESP: impules1={}'.format(header.impulses1))

            # Ждем когда снимет питание
            self.w.wait_off()

            log.info('ESP -- impulses --- ')

            self.w.impulse()

            self.w.wake_up()

            self.api.i2c_begin(self.w.sda, self.w.sdl)

            assert self.w.get_mode() == self.w.TRANSMIT_MODE

            header2 = self.w.get_header()

            self.w.send_sleep()
            self.w.wait_off()

            log.info('ESP: header 2')
            log.info('ESP: impules0={}'.format(header2.impulses0))
            log.info('ESP: impules1={}'.format(header2.impulses1))

            assert header2.impulses0 == header.impulses0 + 1
            #assert header2.impulses1 == header.impulses1 + 1

        finally:
            self.w.manual_turn_off()

    def test_counter_while_transmitting(self):
        """
        Включаем, запоминаем текущие показания
        Делаем 10 импульсов
        Выключаем
        Включаем, смотрим, увеличились ли на 10
        :return:
        """
        try:
            self.w.wake_up()

            self.w.start_i2c()

            header = self.w.get_header()

            log.info('ESP: impules0={}'.format(header.impulses0))
            log.info('ESP: impules1={}'.format(header.impulses1))

            log.info('ESP -- impulses --- ')

            impulses = 5
            for i in range(0, impulses):
                self.w.impulse()

            self.w.send_sleep()

            # Ждем когда снимет питание
            self.w.wait_off()

            self.api.delay(2000)

            self.w.wake_up()

            self.api.i2c_begin(self.w.sda, self.w.sdl)

            assert self.w.get_mode() == self.w.TRANSMIT_MODE

            header2 = self.w.get_header()

            self.w.send_sleep()
            self.w.wait_off()

            log.info('ESP: header 2')
            log.info('ESP: impules0={}'.format(header2.impulses0))
            log.info('ESP: impules1={}'.format(header2.impulses1))

            assert header2.impulses0 == header.impulses0 + impulses
            if not LOG_ON:
                assert header2.impulses1 == header.impulses1 + impulses

        finally:
            self.w.manual_turn_off()