12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # coding=utf-8
- import logging
- import struct
- from collections import namedtuple
- import typing
- from apps.web.core.helpers import ActionDeviceBuilder
- from script.eventer.handlers import Handler
- if typing.TYPE_CHECKING:
- from apps.web.core.adapter.base import SmartBox
- logger = logging.getLogger(__name__)
- class ChargeDataFormater(object):
- def __init__(self):
- pass
- class ChargeDataHandler(Handler):
- """
- 处理充电数据中的 上报数据 将模块从桥梁变成容器
- """
- ServiceData = namedtuple("ServiceData", ["ts", "buff"])
- def parse(self):
- logger.error("receive orgianl charge data len <{}> from <{}>".format(len(self.payload), self.dev.devNo))
- # 先将模块发送的时间拆出来
- ts, buff = struct.unpack("<I4s", self.payload)
- box = ActionDeviceBuilder.create_action_device(dev=self.dev) # type: SmartBox
- if not box:
- return
- serviceData = self.ServiceData(ts=ts, buff=buff)
- rv = box.parse_service_upload_data(serviceData)
- return rv
- def do(self):
- rv = self.parse()
|