Récupérer les informations de pollens.fr dans HomeAssistant

Cet article a pour objectif de combler un petit manque de HomeAssistant par rapport à Jeedom : l’affichage des valeurs de pollens.fr pour les afficher dans une carte et permettre de réaliser des alertes personnalisées.

Comme pour Jeedom, les données sont issues du site pollens.fr. Je me suis également imposé comme contrainte d’éviter de faire 20 appels au site et surcharger inutilement.

La méthode est de créer un ensemble de sensors en une seule fois.

Première action : récupérer l’adresse du JSON de pollens.fr adapté à votre département en remplaçant XX par le numéro du département:

https://www.pollens.fr/risks/thea/counties/XX

Ensuite, il faut créer les sensors en YAML dans le fichier configuration.yaml … ou autre fichier .yaml, cela dépend de votre configuration. A noter que la mise à jour ne sera faite que toutes les 43 200 secondes, soit … 12h. On peut augmenter si on le souhaite pour ne le faire qu’une fois par jour.

J’ai positionné une icône de fleur qui vient de material design. Elle devrait fonctionner dans toutes les dernières versions de HomeAssistant. https://pictogrammers.github.io/@mdi/font/5.3.45/

sensor:
  - platform: rest
    name: Pollens
    resource: https://www.pollens.fr/risks/thea/counties/XXXX
    json_attributes:
      - risks
      - riskLevel
    value_template: '{{ value_json.riskLevel }}'
  - platform: template
    sensors:
      pollens_risks_tilleul:
        friendly_name: Tilleul
        value_template: '{{ states.sensor.Pollens.attributes["risks"][0]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_ambroisie:
        friendly_name: Ambroisie
        value_template: '{{ states.sensor.Pollens.attributes["risks"][1]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_olivier:
        friendly_name: Olivier
        value_template: '{{ states.sensor.Pollens.attributes["risks"][2]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_plantain:
        friendly_name: Plantain
        value_template: '{{ states.sensor.Pollens.attributes["risks"][3]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_noisetier:
        friendly_name: Noisetier
        value_template: '{{ states.sensor.Pollens.attributes["risks"][4]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_aulne:
        friendly_name: Aulne
        value_template: '{{ states.sensor.Pollens.attributes["risks"][5]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_armoise:
        friendly_name: Armoise
        value_template: '{{ states.sensor.Pollens.attributes["risks"][6]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_chataignier:
        friendly_name: Châtaignier
        value_template: '{{ states.sensor.Pollens.attributes["risks"][7]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_urticacees:
        friendly_name: Urticacées
        value_template: '{{ states.sensor.Pollens.attributes["risks"][8]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_oseille:
        friendly_name: Oseille
        value_template: '{{ states.sensor.Pollens.attributes["risks"][9]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_graminees:
        friendly_name: Graminées
        value_template: '{{ states.sensor.Pollens.attributes["risks"][10]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_chene:
        friendly_name: Chêne
        value_template: '{{ states.sensor.Pollens.attributes["risks"][11]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_platane:
        friendly_name: Platane
        value_template: '{{ states.sensor.Pollens.attributes["risks"][12]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_bouleau:
        friendly_name: Bouleau
        value_template: '{{ states.sensor.Pollens.attributes["risks"][13]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_charme:
        friendly_name: Charme
        value_template: '{{ states.sensor.Pollens.attributes["risks"][14]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_peuplier:
        friendly_name: Peuplier
        value_template: '{{ states.sensor.Pollens.attributes["risks"][15]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_frene:
        friendly_name: Frêne
        value_template: '{{ states.sensor.Pollens.attributes["risks"][16]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_saule:
        friendly_name: Saule
        value_template: '{{ states.sensor.Pollens.attributes["risks"][17]["level"] }}'
        icon_template: mdi:flower
      pollens_risks_cypres:
        friendly_name: Cyprès
        value_template: '{{ states.sensor.Pollens.attributes["risks"][18]["level"] }}'
        icon_template: mdi:flower
    # Request every 12 hours
    scan_interval: 43200

Bien penser à redémarrer après la modification du fichier YAML pour que HomeAssistant ajoutent les nouveaux sensors .

Ensuite, il faut créer une carte spéciale de type entity-filter pour n’afficher que les valeurs de pollens non vide.

type: entity-filter
entities:
  - sensor.pollens_risks_tilleul
  - sensor.pollens_risks_ambroisie
  - sensor.pollens_risks_olivier
  - sensor.pollens_risks_plantain
  - sensor.pollens_risks_noisetier
  - sensor.pollens_risks_aulne
  - sensor.pollens_risks_armoise
  - sensor.pollens_risks_chataignier
  - sensor.pollens_risks_urticacees
  - sensor.pollens_risks_oseille
  - sensor.pollens_risks_graminees
  - sensor.pollens_risks_chene
  - sensor.pollens_risks_platane
  - sensor.pollens_risks_bouleau
  - sensor.pollens_risks_charme
  - sensor.pollens_risks_peuplier
  - sensor.pollens_risks_frene
  - sensor.pollens_risks_saule
  - sensor.pollens_risks_cypres
state_filter:
  - operator: '>'
    value: 0
card:
  type: glance
  title: Pollens

Et voilà une jolie carte

Une amélioration possible serait de rajouter un code couleur pour que l’icône soit jaune ou rouge selon le niveau, mais il faudrait prendre en compte le thème pour que cela reste “lisible”.

Installer Marlin 2.0.7.2 sur la Creality CR-10

Je possède une Creality CR-10 depuis plusieurs années, suite à des problèmes techniques et diverses pannes j’y ai fais de nombreuses modifications.

Ma Creality CR-10 possède entre autre une carte mère et un écran de CR-10S. Lors de l’installation de la carte mère j’avais flashé Marlin 1.9. Récemment j’ai voulu reflasher le firmware pour faire quelques modifs mais impossible de retrouver le fichier source que j’avais utilisé, alors me voilà partie pour flasher Marlin 2.0.7.2 sur ma CR-10.

Première étape : Télécharger Marlin 2.0.x. Ca se passe ici. Ensuite dézipper à l’endroit de sont choix.

Deuxième étape modifier et compiler Marlin. J’ai d’abord testé avec le logiciel Arduino mais un bug m’a empêchée d’aller plus loin. Je me suis donc tournée vers Visual Studio Code.

J’ai utilisé le tutoriel suivant (sans l’installation de Git)

On commence par installer Visual Studio Code (ici)

Une fois VSC installé aller dans les plugins et installer PlatformIO IDE. Surtout bien attendre que PlatformIO soit complètement installé et redémarrer le logiciel.

Dans VSC choisir “Import Arduino Project”, choisir le dossier Marlin précédemment téléchargé et choisir l’environnement “Arduino Mega or Mege 2560 or ATMega 2560 (Mega 2560)”.

Dans le projet aller dans “config” et ouvrir le fichier readme.

Marlin met a disposition tout un tas d’exemple de fichiers de configuration en fonction des machines sur le marché. Il faut aller les télécharger à part. L’adresse est dans ce fichier readme.

Fermer VSC.

Une fois le zip contenant les configs téléchargé, le dézipper dans le dossier Marlin / config. Chercher le dossier Creality, puis CR10S et copier les fichier de configuration.

Coller ces fichiers dans Marlin / Marlin

Ouvrir VSC puis se rendre dans le dossier Marlin / Marlin. Le fichier de configuration fourni par Marlin est quasi parfait pour ma CR10.

J’ai seulement modifié les points suivants dans Configuration.h :

  1. Activer “//#define PIDTEMPBED” en supprimant les //
  2. #define DEFAULT_MAX_FEEDRATE { 500, 500, 100, 25 } au lieu de { 2500, 2500, 100, 25 }
  3. Désactiver #define FILAMENT_RUNOUT_SENSOR (je n’en ai pas)

J’ai fais les modifications suivantes dans Configuration_adv.h :

  1. #define WATCH_BED_TEMP_PERIOD 120// Seconds

Une fois les modifications faites on lance le build en appuyant sur l’icone build dans la barre bleue en bas de VSC. L’opération se fait et le firmware est disponible dans le dossier Marlin sous .pio/build/mega2560/. C’est le fichier firmware.hex

Reste ensuite à le flasher sur la CR-10. Pour cela j’ai utilisé octoprint et le plugin Firmware update. Les explications pour configurer Firmware Update sont ici.

Une fois que tout est prêt, connecter la CR-10 à Octoprint pour s’assurer que tout va bien. La déconnecter. Se rendre dans le menu du plugin Firmware Update. Choisir le fichier firmware.hex et flasher.

Après quelques minutes, le firmware est flashé dans la machine et il n’y a plus qu’à l’utiliser.

Je conseille une fois le firmware modifié de calibrer l’extrudeur, le pid, le débit du filament puis les mouvements des axes pour que tous les paramètres soient adaptés à l’imprimante.

Le site Aide et ressources en français pour imprimantes 3D Artillery (docarti.fr) explique tout ça très bien. C’est un site dédié à mon autre imprimante la Sidewinder X1 mais ces explications sont parfaitement adaptables à la Creality CR-10.

Une fois que l’étape de calibration est faite il n’y a plus qu’à s’amuser.