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
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()))
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()
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')
def test_get_float_number_from_text(self): self.assertEqual(dom_utils.get_float_number_from_text('2.1 kB'), '2.1')
def get_cpu_temp_as_number() -> float: return float(dom_utils.get_float_number_from_text(get_cpu_temp()))