# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import os import struct import time import arrow from bson import ObjectId from base import init_env os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.production") init_env(interactive = False) from mongoengine import StringField,DateField,IntField from django.db.models.fields import FloatField, DateTimeField from apps.web.device.models import Device from apps.web.core.db import Searchable from apps.web.core.helpers import ActionDeviceBuilder from apps.web.constant import Const class TesterLog(Searchable): devNo = StringField(verbose_name = 'devNo',default = '') port = IntField(verbose_name = 'port',default = 1) dateTimeAdded = DateTimeField(verbose_name = 'datetime',default = datetime.datetime.now) power = IntField(verbose_name = 'power',default = 1.0) ampere = IntField(verbose_name = 'ampere',default = 1.0) voltage = IntField(verbose_name = 'voltage',default = 1.0) meta = {'collection': 'tester_log', 'db_alias': 'logdata'} devNos = ['862167056729985','862167056665890','862167056722444','862167056665593'] ii = 0 portDict = {} while True: try: if ii > 100000: ii = 0 for devNo in devNos: dev = Device.get_dev(devNo) box = ActionDeviceBuilder.create_action_device(dev) if ii % 40 == 0: portDict = box.get_port_status() print portDict for port,info in portDict.items(): if info['status'] == Const.DEV_WORK_STATUS_WORKING: detail = box.get_port_info(port) if detail['status'] == Const.DEV_WORK_STATUS_IDLE: continue newRcd = TesterLog(devNo = devNo,port=port,dateTimeAdded = time.time(),power = detail['power'],ampere=detail['ampere']*1000,voltage=detail['voltage']) newRcd.save() else: continue time.sleep(5) except Exception,e: continue print 'a'