コード例 #1
0
ファイル: app_delight.py プロジェクト: pastorcmentarny/denva
def set_denva_status(cfg):
    # 1. DENVA
    state = status.Status()
    logger.info('Getting status for denva..')
    server_data = local_data_gateway.get_data_for('{}/system'.format(
        config_service.load_cfg()["urls"]['denva']))
    if 'error' in server_data:
        logger.warning('Unable to get Denva status due to {}'.format(
            server_data['error']))
        state.set_error()
    else:
        system_health_check_service.update_hc_for('denva', 'ui')
        if float(dom_utils.get_float_number_from_text(
                server_data['CPU Temp'])) > cfg['sensor']['cpu_temp_error']:
            logger.warning('status: RED due to very high cpu temp on Denva )')
            state.set_error()
        elif float(
                dom_utils.get_float_number_from_text(
                    server_data['CPU Temp'])) > cfg['sensor']['cpu_temp_warn']:
            logger.warning('status: ORANGE due to high cpu temp on Denva )')
            state.set_warn()

        if dom_utils.get_int_number_from_text(
                server_data['Memory Available']) < 384:
            logger.warning(
                'status: RED due to very low memory available on Denva')
            state.set_error()
        elif dom_utils.get_int_number_from_text(
                server_data['Memory Available']) < 512:
            logger.warning(
                'status: ORANGE due to low memory available on Denva')
            state.set_warn()

        if dom_utils.get_int_number_from_text(server_data['Free Space']) < 256:
            logger.warning('status: RED due to very low free space on Denva')
            state.set_error()
        elif dom_utils.get_int_number_from_text(
                server_data['Free Space']) < 1024:
            logger.warning('status: ORANGE due to low free space on Denva')
            state.set_warn()

        if dom_utils.get_int_number_from_text(
                server_data['Data Free Space']) < 256:
            logger.warning(
                'status: RED due to very low data free space on Denva')
            state.set_error()
        elif dom_utils.get_int_number_from_text(
                server_data['Data Free Space']) < 1024:
            logger.warning(
                'status: ORANGE due to low data free space on Denva')
            state.set_warn()
    color_red, color_green, color_blue = delight_utils.get_state_colour(state)
    update_blink(state.state)
    unicornhathd.set_pixel(ui_utils.to_x(1), 1, purple_r, purple_g, purple_b)
    set_status_for_device(1, 13, color_red, color_green, color_blue)
    logger.info('Denva: {}'.format(state.get_status_as_light_colour()))
    return blink
コード例 #2
0
ファイル: app_delight.py プロジェクト: pastorcmentarny/denva
def set_delight_status(cfg):
    # 4. DELIGHT
    state = status.Status()
    try:
        delight_data = delight_service.get_system_info()

        cpu_temp = str(delight_data['CPU Temp'])
        if float(dom_utils.get_float_number_from_text(
                cpu_temp)) > cfg['sensor']['cpu_temp_error']:
            logger.warning('status: RED due to very high cpu temp on Delight')
            state.set_error()
        elif float(dom_utils.get_float_number_from_text(
                cpu_temp)) > cfg['sensor']['cpu_temp_warn']:
            logger.warning('status: ORANGE due to high cpu temp on Delight')
            state.set_warn()
        if dom_utils.get_int_number_from_text(
                delight_data['Memory Available']) < 128:
            logger.warning(
                'status: RED due to very low memory available on Delight')
            state.set_error()
        elif dom_utils.get_int_number_from_text(
                delight_data['Memory Available']) < 256:
            logger.warning(
                'status: ORANGE due to low memory available on Delight')
            state.set_warn()
        if dom_utils.get_int_number_from_text(
                delight_data['Free Space']) < 128:
            logger.warning('status: RED due to very low free space on Delight')
            state.set_error()
        elif dom_utils.get_int_number_from_text(
                delight_data['Free Space']) < 512:
            logger.warning('status: ORANGE due to low free space on Delight')
            state.set_warn()
    except Exception as set_state_exception:
        logger.error(
            'Something went badly wrong\n{}'.format(set_state_exception),
            exc_info=True)
        state.set_error()
    delight_ui_response = local_data_gateway.get_data_for('{}/hc'.format(
        config_service.load_cfg()["urls"]['delight']))
    if not 'error' in delight_ui_response:
        system_health_check_service.update_hc_for('delight', 'ui')
    color_blue, color_green, color_red = delight_utils.get_state_colour(state)
    update_blink(state.state)
    unicornhathd.set_pixel(ui_utils.to_x(13), 1, purple_r, purple_g, purple_b)
    unicornhathd.set_pixel(ui_utils.to_x(15), 1, purple_r, purple_g, purple_b)
    unicornhathd.set_pixel(ui_utils.to_x(13), 2, purple_r, purple_g, purple_b)
    unicornhathd.set_pixel(ui_utils.to_x(15), 2, purple_r, purple_g, purple_b)
    set_status_for_device(13, 13, color_red, color_green, color_blue)
    logger.info('Delight: {}'.format(state.get_status_as_light_colour()))
コード例 #3
0
def add_measurement_to_file(file, data: dict, motion):
    timestamp = datetime.now()
    csv_writer = csv.writer(file)
    csv_writer.writerow([
        timestamp,
        data['temp'],
        data['pressure'],
        data['humidity'],
        data['gas_resistance'],
        data['colour'],
        data['aqi'],
        data['uva_index'],
        data['uvb_index'],
        data['motion'],
        motion['ax'],
        motion['ay'],
        motion['az'],
        motion['gx'],
        motion['gy'],
        motion['gz'],
        motion['mx'],
        motion['my'],
        motion['mz'],
        data['measurement_time'],
        dom_utils.get_float_number_from_text(data['cpu_temp']),
        data['eco2'],
        data['tvoc'],
    ])
    file.close()
コード例 #4
0
 def test_get_float_number_from_text_should_return_int_without_text(self):
     self.assertEqual(dom_utils.get_float_number_from_text('2.1'), '2.1')
コード例 #5
0
 def test_get_float_number_from_text(self):
     self.assertEqual(dom_utils.get_float_number_from_text('2.1 kB'), '2.1')
コード例 #6
0
def get_cpu_temp_as_number() -> float:
    return float(dom_utils.get_float_number_from_text(get_cpu_temp()))