Contenido
export_to_csv.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #!/usr/bin/env python3 import csv from datetime import datetime import requests import json # URL base de la API de Home Assistant HA_URL = 'http://localhost:8123/api/states/' # Encabezados para la autenticación (reemplaza TU_TOKEN_AQUI con tu token real) HEADERS = { "Authorization": "Bearer TU_TOKEN_AQUI", "content-type": "application/json", } # Definir las entidades y los ficheros CSV entities = [ ('sensor.i_9psl_dioxido_de_<wbr />carbono', 'sensor.apollo_air_1_88bea4_<wbr />co2', 'sensor.air_monitor_co2', '/config/co2.csv'), ('sensor.i_9psl_pm2_5', 'sensor.apollo_air_1_88bea4_<wbr />pm_2_5_m_weight_concentration'<wbr />, 'sensor.air_monitor_pm25', '/config/pm25.csv') ] # Obtener la hora actual now = datetime.now() for entity_group in entities: entity1, entity2, entity3, file_name = entity_group print (file_name) # Función para obtener el estado de una entidad def get_entity_state(entity_id): response = requests.get(HA_URL + entity_id, headers=HEADERS) if response.status_code == 200: try: return response.json()['state'] except json.JSONDecodeError as e: print(f"Error decoding JSON for {entity_id}: {e}") return None else: print(f"Error fetching state for {entity_id}: {response.status_code}") return None # Obtener los estados de las entidades state1 = get_entity_state(entity1) state2 = get_entity_state(entity2) state3 = get_entity_state(entity3) print(f"States retrieved: {state1}, {state2}, {state3}") # Escribir los datos en el fichero CSV if state1 is not None and state2 is not None and state3 is not None: with open(file_name, mode='a', newline='') as file: writer = csv.writer(file, delimiter=';') writer.writerow([now.strftime(<wbr />"%d-%m-%Y %H:%M:%S"), state1.replace('.', ','), state2.replace('.', ','), state3.replace('.', ',')]) else: print(f"Failed to retrieve states for one or more entities in group: {entity_group}") |

Adelantando la próxima revisión con el tercer (y mejor a nuestro gusto) medidor os dejamos los gráficos de la última semana.
En el gráfico de CO2 se ve muy, muy claro
También en el gráfico de PM25 se aprecia lo comentado en la revisión
Se nos había olvidado comentar que la grabación de los datos cada minuto se puede detener en cualquier momento desde las AUTOMATIZACIONES del propio HA, claro
Esta investigación ha revelado una relación directa entre la contaminación atmosférica y la pérdida de productividad agrícola en diversas regiones del mundo. En particular, se ha observado que los altos niveles de contaminantes como el ozono y las partículas finas (PM2.5) afectan negativamente la productividad primaria en áreas agrícolas y forestales.
Estos contaminantes reducen la capacidad fotosintética de las plantas, lo que disminuye su crecimiento y rendimiento. Por ejemplo, un aumento de 10 partes por billón de ozono puede reducir la productividad de los cultivos en un 5,5%, mientras que un incremento de 5 microgramos por metro cúbico de PM2.5 puede disminuir la producción en un 3%.
Estos hallazgos subrayan la importancia de controlar y reducir la contaminación para preservar la productividad y la salud de los ecosistemas.
Air-1 es uno de los tres dispositivos de Apollo “certificados” en el programa “FUNCIONA CON HOME ASSISTANT” mostrando así su compromiso de seguir apostando por este increíble plataforma,