[Tuto] Intégration compteur Geiger GMC dans MQTT et Home Assistant

Bonjour à tous,

Je partage ici mon expérience dans l’installation d’un compteur Geiger derrière MQTT et Home Assistant avec publication des données sur la carte GMC Counter World map.

1 ) Choix du matériel

Mon choix s’est porté sur la matériel de la société CQ Electronics dont les produits sont disponibles en ligne sur les grandes plates-formes, sont réputés fiables, bien intégrés à MQTT, bien documentés (par RFC) et sont très bons marchés. Il existe deux produits phares :

Le GMC-320S doté d’une interface série. Compter environ 100€.

Le GMC-500+ doté de deux tubes, d’une interface série et d’une connexion WIFI pour publier les informations directement sur la carte mondiale GMC. Compter environ 160€.

Mon choix s’est porté sur le GMC-320S car je n’utilise pas le WIFI et je voulais une solution 24h/24 derrière Home Assistant et MQTT. Quand j’ai fait mon choix, je ne savais pas que le GMC-500+ comportait deux tubes et qu’il avait un spectre de détection plus élevé. Mais je suis satisfait de mon achat.

2 ) Mise en service du compteur Geiger

Pour la mise en service, il faut simplement connecter le compteur Geiger via le câble USB fourni à la Raspberry Pi (mon cas) ou à l’ordinateur qui héberge MQTT/Home Assistant. Le compteur Geiger se recharge (une batterie lui permet de tenir plusieurs jours en autonomie) et surtout il compte les premières radiations en CPM (count per minute). Il faut un certain nombre minimum de CPM pour que le compteur Geiger les affiche. Cela prend plusieurs heures et c’est normal.

3 ) Acquisition des données via MQTT

J’ai fait le choix d’acquérir les données via MQTT. Il existe plusieurs projets d’acquisition de matériel GMC, pas toujours à jour. Mon choix s’est porté sur gqmqtt, un projet écrit en GO :

J’ai publié un Dockerfile et un fichier docker-compose sous forme d’une pull-request pour ceux que cela intéresse. Notez que je suis dans Docker et pas dans HA-OS en mode supervisé.

Pour HA-OS en mode supervisé, il existe ce projet d’acquisition, qui semble maintenu, mais je ne l’ai pas testé vu que je n’utilise pas HA-OS :

4 ) Configuration Home Assistant

Dans Home Assistant, j’ai créé les entités suivantes :

mqtt:
  sensor:
    - name: "GMC320.cpm"
      state_topic: "tele/geiger/cpm"
      unit_of_measurement: "cpm"

sensor:
  - platform: template
    sensors:
      gmc320_usvh:
        friendly_name: "GMC320.uSvh"
        value_template: "{{ ((states('sensor.gmc320_cpm') | float) / 157) | round(2) }}"
        unit_of_measurement: "uSv/h"

Dans l’interface de Home Assistant, j’ai créé l’agrégat statistique sensor.gmc320_acpm, qui est la moyenne des CPM sur une semaine.

5 ) Publication des données sur la GMC World map

J’ai créé un compte sur la GMC Counter World map (userID), et ajouté mon compteur Geiger (counterID).

Ensuite, j’ai ajouté la configuration suivante pour publier un relevé toutes les 5 minutes :

rest_command:
  publier_capteur_gmc:
    url: 'http://www.GMCmap.com/log2.asp?AID=XXXX&GID=YYYY&CPM={{ states("sensor.gmc320_cpm") }}&ACPM={{ states("sensor.gmc320_acpm") }}&uSV={{ states("sensor.gmc320_usvh") }}'
    method: 'GET'

automation:
  - alias: Publier la valeur du capteur Geiger sur GMC
    trigger:
      platform: time_pattern
      minutes: '/5'  # Toutes les 5 minutes
      seconds: '12'
    action:
      service: rest_command.publier_capteur_gmc

Et voilà tout est en ligne !

6 ) Récupération des données depuis GMC World map

Pour ceux qui utilisent un GMC-500+ publiant directement les données sur la GMC Counter World map ou ceux qui souhaitent récupérer les données d’un compter Geiger publié sur la GMC Counter World map.

D’abord il faut aller sur la carte et cliquer sur le compteur Geiger qui vous intéresse et afficher les données historique. Dans l’URL, vous lirez l’identifiant PARAM_ID du compteur Geiger :

Muni de l’identifiant du compteur Geiger, l’intégration suivante fonctionne parfaitement :

template:
  - sensor:
      - name: geiger_meter_cpm
        icon: mdi:radioactive-circle-outline
        unique_id: geiger_meter_cpm
        unit_of_measurement: "CPM"
        state: >
          {{ state_attr('sensor.geiger_meter', 'CPM') }}
      - name: geiger_meter_acpm
        icon: mdi:radioactive-circle-outline
        unique_id: geiger_meter_acpm
        unit_of_measurement: "ACPM"
        state: >
          {{ state_attr('sensor.geiger_meter', 'ACPM') }}
      - name: geiger_meter_usv
        icon: mdi:radioactive-circle-outline
        unique_id: geiger_meter_usv
        unit_of_measurement: "uSv"
        state: >
          {{ state_attr('sensor.geiger_meter', 'uSv') }}
sensor:
  - platform: rest
    icon: mdi:radioactive-circle-outline
    name: geiger_meter
    unique_id: geiger_meter
    scan_interval: 60
    value_template: "OK"
    resource: http://www.gmcmap.com/historyData-plain.asp?Param_ID=XXXXXX
    json_attributes:
      - CPM
      - ACPM
      - uSv
      - time

J’espère que cet article vous aura été utile.

Cordialement,
Kellogs

2 « J'aime »