コード例 #1
0
    async def process_integral_month(self, last_date):
        """
        Запрос интегральных показаний за месяц
        """

        narc = self.get_narc(last_date)
        num_page = self.eval_num_page(narc)

        total_reponse = []

        for i in range(num_page // 10):
            int_months = await self.read_metrics(
                3, narc & 255, narc >> 8, 10, type_metrics='read_arch_month')
            narc += 10

            for int_month in int_months:
                tmp_response = {
                    'metric_type': INTEGRAL_MONTH,
                    'event_time': now(),
                    'metrics': {}
                }
                tmp_response['metrics']['1'] = {
                    key: int_month.get(key)
                    for key in self.int_archive_keys
                }

                if tmp_response['metrics']['1']['wN_arc'] != 0:
                    total_reponse.append(tmp_response)

        remainder = num_page % 10

        if remainder:
            int_months = await self.read_metrics(
                3,
                narc & 255,
                narc >> 8,
                remainder,
                type_metrics='read_arch_month')

            for int_month in int_months:
                tmp_response = {
                    'metric_type': INTEGRAL_MONTH,
                    'event_time': now(),
                    'metrics': {}
                }
                tmp_response['metrics']['1'] = {
                    key: int_month.get(key)
                    for key in self.int_archive_keys
                }

                if tmp_response['metrics']['1']['wN_arc'] != 0:
                    total_reponse.append(tmp_response)

        return total_reponse
コード例 #2
0
    def eval_num_page(self, last_num_page):
        now_num_page = self.get_narc(now())

        if now_num_page - last_num_page < 0:
            raise IncorrectArchDate('eval_num_page: Incorrect las_date')

        return now_num_page - last_num_page
コード例 #3
0
    async def wrapper(self, metric_type, last_date):
        if last_date and CURRENT not in metric_type:
            next_date = last_date + delta(metric_type)

            if MONTH in metric_type:
                scheme = await self.get_scheme()
                report_day = scheme.get('report_day', 31)
                next_date = get_report_date(next_date, report_day)

            if next_date > now():
                return

        return await func(self, metric_type, last_date)
コード例 #4
0
    async def process_period_current(self):
        """
        Запрос переодических текущих показаний
        """
        per_current = await self.read_metrics(0, type_metrics='read_current')

        response = {
            'metric_type': PERIOD_CURRENT,
            'event_time': now(),
            'metrics': {
                '1': {
                    key: per_current[0].get(key)
                    for key in self.per_current_keys
                }
            }
        }

        return [response]
コード例 #5
0
    async def process_integral_current(self):
        """
        Запрос интегральных текущих показаний
        """
        int_current = await self.read_metrics(0, type_metrics='read_current')

        response = {
            'metric_type': INTEGRAL_CURRENT,
            'event_time': now(),
            'metrics': {
                '1': {
                    key: int_current[1].get(key)
                    for key in self.int_current_keys
                }
            }
        }

        return [response]
コード例 #6
0
    async def process_integral_hour(self, last_date):
        """
        Запрос интегральных показаний за час
        """
        int_hours = await self.read_metrics(3,
                                            0,
                                            1,
                                            3,
                                            type_metrics='read_arch_hour')
        response = {
            'metric_type': INTEGRAL_HOUR,
            'event_time': now(),
            'metrics': {}
        }

        for i, int_hour in enumerate(int_hours):
            response['metrics'][str(i + 1)] = {
                key: int_hour.get(key)
                for key in self.int_archive_keys
            }

        return [response]