Example #1
0
def publish_print_power(pub_power_status):
    global POWER_TIME_RECV, POWER_STATUS

    if POWER_STATUS != None:
        ps = POWER_STATUS

        if POWER_TIME_RECV != None:
            time_ok = datetime.utcnow() - \
                POWER_TIME_RECV < timedelta(seconds=5)
        else:
            time_ok = False
    
    else:
        time_ok = False
        ps = PowerStatus()

    if time_ok:
        ps.error_timeout = False

    print_power_status(ps, POWER_TIME_RECV, 5)
    pub_power_status.publish(ps)
Example #2
0
def parse_power( string ):
    ps = PowerStatus()
    ps.error_crc = True
    ps.error_format = True
    ps.error_timeout = True

    #
    #   Check CRC
    #
    data = check_strip_crc( string )
    if data == None:
        print 'ERROR: CRC error'
        return ps
    ps.error_crc = False

    #
    #   Check format
    #
    data = split_string( data )
    if data[0][0] != 'APWR':
        print 'ERROR: Format error'
        return ps

    if len(data[1]) == 8 and \
            len(data[2]) == 4 and \
            len(data[3]) == 3 and \
            len(data[4]) == 2 and \
            len(data[5]) == 3:
        pass
    else:
        print 'ERROR: Format Error 2'
        return ps
    ps.error_format = False

    #
    #   Fill data
    #
    ps.relay_A_req   = data[1][0] != '_'
    ps.relay_A_state = data[1][1] != '_'
    ps.relay_B_req   = data[1][2] != '_'
    ps.relay_B_state = data[1][3] != '_'
    ps.relay_C_req   = data[1][4] != '_'
    ps.relay_C_state = data[1][5] != '_'
    ps.relay_D_req   = data[1][6] != '_'
    ps.relay_D_state = data[1][7] != '_'
        
    ps.regulator_A_req   = data[2][0] != '_'
    ps.regulator_A_state = data[2][1] != '_'
    ps.regulator_B_req   = data[2][2] != '_'
    ps.regulator_B_state = data[2][3] != '_'
        
    ps.vbatt_error = data[3][0] != '_'
    ps.regA_error  = data[3][1] != '_'
    ps.regB_error  = data[3][2] != '_'

    ps.comms_crc_error = data[4][0] != '_'
    ps.comms_format_error = data[4][0] != '_'
        
    ps.regA_voltage  = float(data[5][0]) / 1000
    ps.regB_voltage  = float(data[5][1]) / 1000
    ps.vbatt_voltage = float(data[5][2]) / 1000

    return ps