Ejemplo n.º 1
0
    def get(self, id, pack_id):
        uphase = Uphase.model(motor_id=id)
        vphase = Vphase.model(motor_id=id)
        wphase = Wphase.model(motor_id=id)

        feature = Feature.model(motor_id=id)
        session = Session()

        data = session. \
            query(uphase.wave.label('u'), vphase.wave.label('v'), wphase.wave.label('w'),
                  feature.uharmonics, feature.uthd,
                  feature.vharmonics, feature.vthd,
                  feature.wharmonics, feature.wthd). \
            join(vphase, vphase.pack_id == uphase.pack_id). \
            join(wphase, wphase.pack_id == uphase.pack_id). \
            join(feature, feature.pack_id == uphase.pack_id). \
            filter_by(pack_id=pack_id).one()
        session.close()

        data = data._asdict()
        data['ufft'] = np.around(fftransform(
            np.fromstring(data['u'], dtype=np.float32)),
                                 decimals=3)
        data['vfft'] = np.around(fftransform(
            np.fromstring(data['v'], dtype=np.float32)),
                                 decimals=3)
        data['wfft'] = np.around(fftransform(
            np.fromstring(data['w'], dtype=np.float32)),
                                 decimals=3)

        return FeatureSchema().dump(data)
Ejemplo n.º 2
0
 def get(self, id):
     session = Session()
     bearings = session.query(Bearing.inner_race_diameter, Bearing.inner_race_width,
                              Bearing.outter_race_diameter,
                              Bearing.outter_race_width, Bearing.roller_diameter, Bearing.roller_number,
                              Bearing.contact_angle).filter_by(id=id).one()
     return BearingSchema().dump(bearings)
Ejemplo n.º 3
0
 def get(self, id):
     session = Session()
     data = session.query(Motor.name, WarningLog.cr_time, WarningLog.description, WarningLog.severity). \
         join(Motor). \
         filter(WarningLog.motor_id == id).all()
     session.close()
     return WarningSchema().dump(data, many=True).data
Ejemplo n.º 4
0
 def get(self, id):
     session = Session()
     rotors = session.query(Rotor.inner_diameter, Rotor.length,
                            Rotor.outer_diameter,
                            Rotor.slot_number).filter_by(id=id).one()
     session.close()
     return RotorSchema().dump(rotors)
Ejemplo n.º 5
0
    def get(self, id):
        args = trend_parser.parse_args()
        if args['timeafter'] is not None or args['timebefore'] is not None:
            args['timeafter'] = parse.unquote(args['timeafter'])
            args['timebefore'] = parse.unquote(args['timebefore'])

            result = retrieve_model.get_motor_trend(id, args)
            dic = {}
            for row in result:
                for key, value in row.items():
                    if key == 'time':
                        dic.setdefault(key, []).append(str(value))
                    else:
                        dic.setdefault(key, []).append(value)
            return dic
        elif args['newest'] is True:
            feature = Feature.model(motor_id=id)
            uphase = Uphase.model(motor_id=id)
            session = Session()
            data = session. \
                query(feature.urms, feature.vrms, feature.wrms, feature.n_rms, feature.p_rms, uphase.frequency). \
                join(uphase, feature.pack_id == uphase.pack_id). \
                order_by(feature.id.desc()).first()
            session.close()
            return FeatureSchema().dump(data).data

        else:
            return {'Error message': 'Unproper query'}, 400
Ejemplo n.º 6
0
 def get(self, id):
     args = pack_parser.parse_args()
     pack = CurrentsPack.model(motor_id=id)
     session = Session()
     data = session. \
         query(pack.id, pack.time, pack.rpm).filter(pack.time.between(args['timeafter'], args['timebefore'])). \
         all()
     session.close()
     return PackSchema(only=('id', 'time', 'rpm')).dump(data,
                                                        many=True).data
Ejemplo n.º 7
0
 def get(self, id):
     session = Session()
     motor = session.query(Motor). \
         options(joinedload(Motor.rotors),
                 joinedload(Motor.stators),
                 joinedload(Motor.bearings)). \
         filter_by(id=id). \
         one()
     session.close()
     return EquipGroupSchema().dump(motor)[0]
Ejemplo n.º 8
0
 def get(self, id):
     phase = self.model_factory.model(motor_id=id)
     args = phase_parser.parse_args()
     if args['newest'] == True:
         session = Session()
         data = session. \
             query(phase.frequency, phase.amplitude, phase.initial_phase). \
             order_by(phase.id.desc()). \
             first()
         session.close()
         return PhaseSchema(only=(
             'frequency',
             'amplitude',
             'initial_phase',
         )).dump(data)
     elif args['pack_id']:
         session = Session()
         data = session. \
             query(phase.frequency, phase.amplitude, phase.initial_phase). \
             filter_by(pack_id=args['pack_id']). \
             first()
         session.close()
         return PhaseSchema(only=(
             'frequency',
             'amplitude',
             'initial_phase',
         )).dump(data)
     else:
         return 400
Ejemplo n.º 9
0
    def get(self, id, pack_id):
        uphase = Uphase.model(motor_id=id)
        vphase = Vphase.model(motor_id=id)
        wphase = Wphase.model(motor_id=id)
        session = Session()
        data = session. \
            query(uphase.frequency.label('ufrequency'), vphase.frequency.label('vfrequency'),
                  wphase.frequency.label('wfrequency'),
                  uphase.amplitude.label('uamplitude'), vphase.amplitude.label('vamplitude'),
                  wphase.amplitude.label('wamplitude'),
                  uphase.initial_phase.label('uinitial_phase'), vphase.initial_phase.label('vinitial_phase'),
                  wphase.initial_phase.label('winitial_phase')). \
            join(vphase, vphase.pack_id == uphase.pack_id). \
            join(wphase, wphase.pack_id == uphase.pack_id). \
            filter_by(pack_id=pack_id).one()
        session.close()
        complex_list = []
        for item in ['u', 'v', 'w']:
            complex_phase, _ = make_phase(
                getattr(data, item + 'amplitude'),
                2 * np.pi * getattr(data, item + 'frequency'),
                getattr(data, item + 'initial_phase'),
                samples=1024,
                end_time=1024 / 20480)
            # Append to the list
            complex_list.append(complex_phase)

        (phaseA_pos, phaseB_pos, phaseC_pos, phaseA_neg, phaseB_neg,
         phaseC_neg, phaseZero) = cal_symm(complex_list[1], complex_list[0],
                                           complex_list[2])
        return {
            key: Array.static_serialize(value)
            for key, value in {
                'pAp_real': phaseA_pos.real,
                'pAp_imag': phaseA_pos.imag,
                'pBp_real': phaseB_pos.real,
                'pBp_imag': phaseB_pos.imag,
                'pCp_real': phaseC_pos.real,
                'pCp_imag': phaseC_pos.imag,
                'pAn_real': phaseA_neg.real,
                'pAn_imag': phaseA_neg.imag,
                'pBn_real': phaseB_neg.real,
                'pBn_imag': phaseB_neg.imag,
                'pCn_real': phaseC_neg.real,
                'pCn_imag': phaseC_neg.imag,
                'zero_real': phaseZero.real,
                'zero_imag': phaseZero.imag,
            }.items()
        }
Ejemplo n.º 10
0
    def patch(self, id):
        args = parser.parse_args()
        session = Session()
        session.query(Bearing).filter(Bearing.id == id).update({'lr_time': args['lr_time']})
        Session.commit()
        session.close()

        return {'message': 'Success'}
Ejemplo n.º 11
0
 def patch(self, id):
     args = motor_parser.parse_args()
     session = Session()
     session.query(Motor).filter(Motor.id == id).update(
         {'lr_time': args['lr_time']})
     session.commit()
     session.close()
     return {'message': 'Success'}
Ejemplo n.º 12
0
 def get(self):
     args = motor_parser.parse_args()
     if args['group_by'] == 'statu':
         data = retrieve_model.get_statu_statistic()
         return MotorStatuStatisticSchema().dump(data, many=False)
     elif args['group_by'] == 'comps':
         data = retrieve_model.get_comp_statistic()
         return MotorCompStatisticSchema().dump(data, many=True)
     else:
         session = Session()
         motors = session.query(Motor.name, Motor.sn, Motor.statu, Motor.lr_time, Motor.id, Motor.health_indicator,
                                User.name.label('admin')). \
             join(User).all()
         session.close()
         return MotorSchema().dump(motors, many=True)
Ejemplo n.º 13
0
    def get(self, id):
        uphase = Uphase.model(motor_id=id)
        vphase = Vphase.model(motor_id=id)
        wphase = Wphase.model(motor_id=id)

        args = phase_parser.parse_args()

        session = Session()
        data = \
            session.query(uphase.wave.label('u'), vphase.wave.label('v'), wphase.wave.label('w')). \
                join(vphase, vphase.pack_id == uphase.pack_id). \
                join(wphase, wphase.pack_id == uphase.pack_id). \
                filter_by(pack_id=args['pack_id']).first()
        session.close()

        return PhaseSchema(only=('u', 'v', 'w')).dump(data)
Ejemplo n.º 14
0
 def get(self, id):
     phase = self.model_factory.model(motor_id=id)
     args = phase_parser.parse_args()
     if args['newest'] == True:
         session = Session()
         data = session.query(phase.wave).order_by(phase.id.desc()).first()
         session.close()
         return PhaseSchema(only=('wave', )).dump(data)
     elif args['pack_id']:
         session = Session()
         data = session.query(
             phase.wave).filter_by(pack_id=args['pack_id']).first()
         session.close()
         return PhaseSchema(only=('wave', )).dump(data)
     else:
         return 400
Ejemplo n.º 15
0
    def get(self, id, pack_id):
        uphase = Uphase.model(motor_id=id)
        vphase = Vphase.model(motor_id=id)
        wphase = Wphase.model(motor_id=id)
        session = Session()
        data = session. \
            query(uphase.wave.label('u'), vphase.wave.label('v'), wphase.wave.label('w')). \
            join(vphase, vphase.pack_id == uphase.pack_id). \
            join(wphase, wphase.pack_id == uphase.pack_id). \
            filter_by(pack_id=pack_id).one()
        session.close()
        u, v, w = threephase_deserialize(data.u, data.v, data.w)

        d, q = dq0_transform(u, v, w)
        return {
            'd': Blob.myserialize(d),
            'q': Blob.myserialize(q),
            'd_rms': float(np.sqrt(np.dot(d, d) / d.size)),
            'q_rms': float(np.sqrt(np.dot(q, q) / d.size))
        }
Ejemplo n.º 16
0
 def get(self, id, pack_id):
     uphase = Uphase.model(motor_id=id)
     vphase = Vphase.model(motor_id=id)
     wphase = Wphase.model(motor_id=id)
     session = Session()
     data = session.query(uphase.wave.label('u'), vphase.wave.label('v'), wphase.wave.label('w')). \
         join(vphase, vphase.pack_id == uphase.pack_id). \
         join(wphase, wphase.pack_id == uphase.pack_id). \
         filter_by(pack_id=pack_id).one()
     session.close()
     data = data._asdict()
     for key in ['u', 'v', 'w']:
         data[key] = np.fromstring(data[key], dtype=np.float32)
         data[key + 'envelope'] = np.abs(
             signal.hilbert(data[key])[1024:1024 + 4096])
         data[key + 'fft'] = np.around(fftransform(
             signal.detrend(data[key + 'envelope'])),
                                       decimals=3)
         data[key] = data[key][1024:1024 + 4096]
     return EnvelopeSchema().dump(data)
Ejemplo n.º 17
0
 def get(self, id):
     args = parser.parse_args()
     if args['info']:
         session = Session()
         rotors = session.query(
             Rotor.inner_diameter, Rotor.length, Rotor.outer_diameter,
             Rotor.slot_number).filter_by(motor_id=id).all()
         return RotorSchema().dump(rotors, many=True)
     else:
         session = Session()
         rotors = Session.query(Rotor).filter_by(motor_id=id).all()
         session.close()
         return RotorSchema().dump(rotors, many=True)
Ejemplo n.º 18
0
    def get(self, id):
        args = parser.parse_args()
        if args['info']:
            session = Session()
            bearings = session.query(Bearing.inner_race_diameter, Bearing.inner_race_width,
                                     Bearing.outter_race_diameter,
                                     Bearing.outter_race_width, Bearing.roller_diameter, Bearing.roller_number,
                                     Bearing.contact_angle).filter_by(motor_id=id).all()
            return BearingSchema().dump(bearings, many=True)
        else:
            session = Session()
            bearings = session.query(Bearing).filter_by(motor_id=id).all()
            session.close()

            return BearingSchema().dump(bearings, many=True)
Ejemplo n.º 19
0
 def get(self, id):
     args = motor_parser.parse_args()
     if args['info']:
         session = Session()
         motor = session.query(Motor.phase_number, Motor.pole_pairs_number,
                               Motor.turn_number, Motor.rated_voltage,
                               Motor.rated_speed).filter_by(id=id).one()
         return MotorSchema().dump(motor)
     else:
         session = Session()
         motor = session.query(Motor.id, Motor.name, Motor.health_indicator,
                               Motor.lr_time, Motor.sn, Motor.memo,
                               Motor.statu).filter_by(id=id).one()
         session.close()
         return MotorSchema().dump(motor)
Ejemplo n.º 20
0
    def get(self, id):
        args = pack_parser.parse_args()
        pack = CurrentsPack.model(motor_id=id)
        uphase = Uphase.model(motor_id=id)
        vphase = Vphase.model(motor_id=id)
        wphase = Wphase.model(motor_id=id)

        if args['newest']:
            session = Session()

            q = session. \
                query(pack.id, pack.time, pack.rpm, pack.sampling_rate, pack.rpm, Motor.name, Motor.statu, Motor.sn,
                      uphase.wave.label('usignal'), vphase.wave.label('vsignal'), wphase.wave.label('wsignal'),
                      uphase.amplitude.label('uamp'), vphase.amplitude.label('vamp'), wphase.amplitude.label('wamp'),
                      uphase.frequency.label('ufreq'), vphase.frequency.label('vfreq'), wphase.frequency.label('wfreq'),
                      uphase.initial_phase.label('uip'), vphase.initial_phase.label('vip'),
                      wphase.initial_phase.label('wip')). \
                join(Motor, Motor.id == pack.motor_id). \
                join(uphase, uphase.pack_id == pack.id). \
                join(vphase, vphase.pack_id == pack.id). \
                join(wphase, wphase.pack_id == pack.id). \
                order_by(pack.id.desc()). \
                first()
            data = q._asdict()

            data['usignal'] = np.fromstring(data['usignal'], dtype=np.float32)
            data['vsignal'] = np.fromstring(data['vsignal'], dtype=np.float32)
            data['wsignal'] = np.fromstring(data['wsignal'], dtype=np.float32)
            data['ufft'] = np.around(fftransform(data['usignal']), decimals=3)
            data['vfft'] = np.around(fftransform(data['vsignal']), decimals=3)
            data['wfft'] = np.around(fftransform(data['wsignal']), decimals=3)
            session.close()

            return PackSchema().dump(data)

        elif args['pack_id']:
            session = Session()

            data = session. \
                query(pack.id, pack.time, pack.rpm, pack.sampling_rate, pack.rpm, Motor.name, Motor.statu, Motor.sn). \
                join(Motor, Motor.id == pack.motor_id). \
                filter(pack.id == args['pack_id']). \
                first()
            data = data._asdict()
            session.close()

            return PackSchema().dump(data)
Ejemplo n.º 21
0
    def get(self):
        args = warning_parser.parse_args()
        if args['group_by'] == 'motor':
            session = Session()
            data = session. \
                query(Motor.name, func.count(WarningLog.motor_id)). \
                join(Motor). \
                group_by(Motor.name).all()
            session.close()

            return [{'name': item[0], 'value': item[1]} for item in data]
        if args['group_by'] == 'date':
            data = retrieve_model.get_warning_calendar()
            return data
        else:
            session = Session()
            data = session. \
                query(Motor.name, WarningLog.cr_time, WarningLog.description, WarningLog.severity). \
                join(Motor). \
                order_by(WarningLog.cr_time.desc()). \
                slice(0, args['limit']).all()
            session.close()

            return WarningSchema().dump(data, many=True).data
Ejemplo n.º 22
0
 def get(self):
     args = equipgroup_parser.parse_args()
     session = Session()
     if args['iftree']:
         treejson = {'name': 'Induction Motor Monitoring Platform', 'children': []}
         for motor in session.query(Motor.id, Motor.name).all():
             treejson['children'].append({'name': motor.name,
                                          'children': []})
             for bearing in session.query(Bearing.name).filter_by(motor_id=motor.id).all():
                 treejson['children'][-1]['children'].append({'name': bearing.name})
             for rotor in session.query(Rotor.name).filter_by(motor_id=motor.id).all():
                 treejson['children'][-1]['children'].append({'name': rotor.name})
             for stator in session.query(Stator.name).filter_by(motor_id=motor.id).all():
                 treejson['children'][-1]['children'].append({'name': stator.name})
         session.close()
         return treejson, 200
     else:
         session = Session()
         motors = session. \
             query(Motor). \
             options(joinedload(Motor.rotors),
                     joinedload(Motor.stators),
                     joinedload(Motor.bearings)). \
             all()
         data = EquipGroupSchema().dump(motors, many=True)
         session.close()
         return data