Nouvelle intégration : AtmoFrance - Qualité de l'air

Salut à tous,
Suite à ce sujet et plus particulièrement, j’ai finalement attteri sur le dev d’une intégration pour récupérer les données Atmo France (ie prévision de qualité d’air pour une commune). Le tuto sur le dev m’a également était très utile et ce n’est qu’un « juste » retour :wink:
L’intégration n’est pas (encore) officiellement dans HACS, mais utilisable en utilisant les dépôts personnalisés : GitHub - sebcaps/atmofrance: About Home assistant component to get air quality for french cities


image

Je pense la doc assez explicite pour l’installation - utilisation, en espérant que cela vous soit utile / plaise. Dispo en cas de soucis (que j’espère pas trop nombreux…) ou de demandes d’évolutions

Geekement votre

14 « J'aime »

Super ! Marche très bien ! Merci pour ce travail.

Fonctionne très bien merci :kissing_closed_eyes:

Super boulot, merci a toi

Bonjour,

J’ai installé la version 1.0.1
Je ne trouve pas où configurer cette intégration
image

@Pyroaction paramètres / appareils et services / intégrations puis ajouter une intégration et chercher Atmo France

Merci pour ce dev… sitôt lu, sitôt en place :wink:

1 « J'aime »

Merci @SebCaps pour l’intégration et pour l’aide @Krull56

1 « J'aime »

Hello,

Effectivement l’intégration fonctionne bien.
Par contre (c’est pas lié à l’intégration) mais Ozone / CO2 restent constant … Je ne sais pas si ça bouge beaucoup dans des villes comme Paris/Borbeaux/Lyon mais ici à Orléans, c’est pas super pertinent au quotidien

Voici ma carte « Qualité de l’air »:
image

type: horizontal-stack
title: Qualité de l'air
cards:
  - type: custom:button-card
    color_type: card
    entity: sensor.dioxyde_de_souffre_toussieu
    name: SO2
    state:
      - value: 1
        color: lightgreen
      - value: 2
        color: green
      - value: 3
        color: yellow
      - value: 4
        color: red
      - value: 5
        color: darkred
      - value: 6
        color: darkviolet
    styles:
      card:
        - height: 90px
        - font-size: 15px
  - type: custom:button-card
    color_type: card
    entity: sensor.ozone_toussieu
    name: Ozone
    state:
      - value: 1
        color: lightgreen
      - value: 2
        color: green
      - value: 3
        color: yellow
      - value: 4
        color: red
      - value: 5
        color: darkred
      - value: 6
        color: darkviolet
    styles:
      card:
        - height: 90px
        - font-size: 15px
  - type: custom:button-card
    color_type: card
    entity: sensor.pm10_toussieu
    name: PM < 10µm
    state:
      - value: 1
        color: lightgreen
      - value: 2
        color: green
      - value: 3
        color: yellow
      - value: 4
        color: red
      - value: 5
        color: darkred
      - value: 6
        color: darkviolet
    styles:
      card:
        - height: 90px
        - font-size: 15px
  - type: custom:button-card
    color_type: card
    entity: sensor.pm25_toussieu
    name: PM < 2.5µm
    state:
      - value: 1
        color: lightgreen
      - value: 2
        color: green
      - value: 3
        color: yellow
      - value: 4
        color: red
      - value: 5
        color: darkred
      - value: 6
        color: darkviolet
    styles:
      card:
        - height: 90px
        - font-size: 15px
5 « J'aime »

@Pyroaction merci pour la belle intégration. Chacun ses compétences et je suis perso plu a l’aise en back qu’en front …
Deux questions :

  • est ce que récupérer les alertes sur les polluants peut intéresser des personnes ?
  • est ce que si j’étais l’information couleur de l’API on pourrait l’utiliser dans une belle visualisation ?

Thx

Malette

Oui, ça peut être intéressent mais pourrais tu fournir un exemple si tu as

Salut,
Les données fournies sont pour les polluants SO2, PM10, O3 et NO2 un seuil d’alerte pour la veille, le jour courant et le lendemain sous forme d’un texte ( PAS DE DEPASSEMENT, INFORMATION ET RECOMMANDATION, ALERTE et ALERTE SUR PERSISTANCE). Les données sont fournies au niveau du département.
Mon idée est de fournir le niveau pour le jour courant et le lendemain pour les 4 polluants (AlerteNO2J ; AlerteNO2J+1…) =>8 sensors donc.
L’activation de ces sensors serait optionnelle.
Mon seul hic, c’est le chgt de date à minuit, les données sont mises à jour vers 13h => à minuit l’alerte à J+1 se « transforme » en alerte J mais le J+1 n’est plus dispo…
Dans le détails le JSON renvoyé pour info.

{
    "type": "FeatureCollection",
    "name": "national_data.national_alrt3j",
    "crs": {
        "type": "name",
        "properties": {
            "name": "urn:ogc:def:crs:EPSG::3857"
        }
    },
    "features": [
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169287,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde de soufre",
                "date_ech": "2023-05-25",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "1"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169297,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Particules fines, diamètre < 10 µm",
                "date_ech": "2023-05-25",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "5"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169307,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Ozone",
                "date_ech": "2023-05-25",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "7"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169317,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde d'azote",
                "date_ech": "2023-05-25",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "8"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169327,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde de soufre",
                "date_ech": "2023-05-26",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "1"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169337,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Particules fines, diamètre < 10 µm",
                "date_ech": "2023-05-26",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "5"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169347,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Ozone",
                "date_ech": "2023-05-26",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "7"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169357,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde d'azote",
                "date_ech": "2023-05-26",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "8"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169367,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde de soufre",
                "date_ech": "2023-05-27",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "1"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169377,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Particules fines, diamètre < 10 µm",
                "date_ech": "2023-05-27",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "5"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169387,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Ozone",
                "date_ech": "2023-05-27",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "7"
            },
            "geometry": null
        },
        {
            "type": "Feature",
            "properties": {
                "gml_id": 4169397,
                "aasqa": "44",
                "date_maj": "2023/05/26 17:00:42.488+02",
                "partition_field": "442023w21",
                "etat": "PAS DE DEPASSEMENT",
                "lib_zone": "Meurthe-et-Moselle",
                "lib_pol": "Dioxyde d'azote",
                "date_ech": "2023-05-27",
                "date_dif": "2023/05/26",
                "code_zone": "54",
                "code_pol": "8"
            },
            "geometry": null
        }
    ]
}

Hello,
Cela dépend « fortement » des localisations (et des périodes également je pense).
Je ne suis pas à Paris, mais pour le ‹ fun ›, voici l’index O3 pour Paris

1 « J'aime »

Si on reprend le modèle de home assistant ne peux t’on pas faire un input number si servirai de sauvegarde de la valeur pour le jour J et que l’intégration mettrai a jour si heure est de 23h59 sauf si nouvelle variation de la valeur durant la journée.
Puis un deuxième pour j+1