Home Assistant & Visonic RF

Partager
Home Assistant & Visonic RF
Photo by Xingye Jiang / Unsplash

J'ai une centrale d'alarme Visonic vieillissante. Je l'ai intégrée à Home Assistant et j'en avais parlé ici, ça date et ça mériterais que je refasse l'interface série avec un ESP plus moderne sous espHome. Ca fonctionne globalement plutôt bien, mais il arrive que le lien soit perdu. Rarement, mais suffisamment pour ne pas rendre la solution fiable à 100%.

Par ailleurs j'utilise Alarmo et ce qui m'intéresse dans la partie Visonic c'est la remontée de capteurs que j'ai installé sur mes volets roulants qui sont des contacts filaires branchés sur les capteurs d'ouverture Visonic MC-302 des fenêtres.

J'avais essayé de remonter directement ces capteurs avec un RFLink ajusté en 868 Mhz, échec car il semblerait que Visonic utilise une modulation de fréquence spécifique (FSK), alors que le RFLink standard est conçu pour décoder la modulation la plus courante du marché (ASK/OOK, comme pour les prises Chacon ou les sondes Oregon). De plus, Visonic utilise des fréquences précises (868,95 MHz). A ce stade ça me dépasse et j'avais un peu lâché l'affaire. Hélas le seul capteur "double" qui aurait pu remplacer tout ça n'est plus disponible.

Et puis au fil de mes lectures j'ai fini par trouver une solution qui pourrait faire le job. Je parle du projet RTL 433 qui elle gère du 868 Mhz ! Un vieux projet remis au gout du jour ici, et capable de décoder et remonter à peu près tous les protocoles radio. Au départ c'est un truc de barbus, avec des GitHub à droite et gauche à assembler... mais le nouvel assemblage est en fait facile à installer, il se base sur une clé "SDR" (Radio logicielle).

  • Le matériel : Une simple clé USB RTL-SDR (avec puce RTL2832U, comme les clés pour capter la TNT à l'époque, qui coûtent environ 20-30 €). J'ai commandé celle ci. La clé Nooelec NESDR SMArt v5 fera parfaitement l'affaire. Elle est basée sur la même puce de décodage (RTL2832U) que la clé RTL-SDR Blog classique, mais dans un boitier en aluminium. Il faudra lui ajouter une antenne au format SMA, idéalement ajustée pour du 868 Mhz.
  • Le logiciel : il se décline en deux parties (mais on peu également configurer l'add-on pour qu'il communique avec un brooker MQTT et ainsi se passer de l'intégration).
    • Un add-on qui va gérer la clé, donc la radio.
    • Une intégration qui va récupérer les informations en fonction du protocole et de la fréquence que l'on aura choisit.

L'add-on reconnait la clé tout seul et on ajuste en créant un fichier de configuration et on lui indique le chemin rtl_433/rtl_433.conf :

frequency 868.95M

# Filtrage du protocole Visonic
protocol 151

# Sorties
output http:0.0.0.0:8433

Ensuite on installe l'intégration et on la configure pour la faire pointer sur l'add-on (que l'on peut installer ailleurs pour un meilleur placement). Si tout est bien configuré, les capteurs remontent comme par magie, enfin, il m'en reste deux (sur 16) qui sont toujours absents.

On remarque l'ouverture, mais également la batterie et le capteur d'auto protection. A propos de la batterie, d'après mes observations antérieures, je pense que c'est 100% ou zéro, zéro indiquant batterie à changer, mais qui fonctionne encore un certain temps (à la base on est sur un système de sécurité agréé et non sur de la domotique lowa coast...).

Attention toutefois, c'est de la radio et le last-changed ne sera pas la dernière ouverture, mais la dernière trame reçue. Donc si on veut suivre l'état réel ouverture / fermeture, il va falloir créer un petit template pour chaque capteur :

template:
  - binary_sensor:
      - unique_id: visonic_test
        name: "Visonic : Test"
        device_class: door
        state: >
          {{ states('binary_sensor.visonic_powercode_348269_test_alarm') }}

Et ainsi obtenir un état réel du capteur, par exemple :

Advanced

(Note : La fréquence exacte de Visonic est généralement 868.95 MHz. Si vous ne captez rien, vous pouvez tester 868.35 MHz selon la génération de vos capteurs).

S'agissant de trames radio j'ai remarqué quelques loupés, aussi il y a peut être quelques ajustements à faire sur les capteurs que je verrais à l'utilisation.

  • SW3 sur OFF (Restore events not reported) : Le capteur envoie un signal radio uniquement à l'ouverture (l'alarme). Quand on ferme il reste muet pour économiser sa pile. Home Assistant reste donc bloqué sur "Ouvert". Le passer à ON si ce n'est pas le cas.
  • SW4 sur OFF : Ici c'est plus délicat, mais ça peut permettre de palier au trames perdues. A voir à l'utilisation si ça ne draine pas trop la batterie.

MQTT

Il est possible d'utiliser les deux options de sortie en modifiant le fichier de configuration :

frequency 868.95M
sample_rate 1024k
protocol 151

output http:0.0.0.0:8433
output mqtt://core-mosquitto:1883,user=user,pass=password,retain=0

verbose 2  # option log
output kv  # option log détaillé

Et ensuite on crée les capteurs à la mano :

mqtt:
  binary_sensor:
    - name: "Porte / Fenêtre Visonic 340001"
      unique_id: visonic-340001-alarm
      state_topic: "rtl_433/+/devices/Visonic-Powercode/340001/alarm"
      payload_on: "1"
      payload_off: "0"
      device_class: window
      qos: 0

En fait j'ai fait ça car j'ai des capteurs qui ne remontent pas toujours et ça m'a permis de savoir si c'était l'intégration qui les loupait ou l'add-on qui ne recevait pas certaines trames. A noter qu'il existe également un add-on d'auto-discovery MQTT.

Log

En activant le log on peut voir les mise à jour des capteurs ce qui peut aider au debug :

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:05:54
Model     : Visonic-Powercode                      ID        : 005469
Tamper    : 0            Alarm     : 0             Battery   : 1             Else      : 1             Restore   : 1             Supervised: 1             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:06:25
Model     : Visonic-Powercode                      ID        : b7f869
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:06:25
Model     : Visonic-Powercode                      ID        : b95869
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:06:26
Model     : Visonic-Powercode                      ID        : b9f969
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:06:27
Model     : Visonic-Powercode                      ID        : a4fa49
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2026-07-21 15:06:28
Model     : Visonic-Powercode                      ID        : a4fa65
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

Gain manuel ou auto ?

Le gain automatique (AGC) ajuste la sensibilité en continu. Le souci, c'est qu'un capteur Visonic reste silencieux 99 % du temps puis envoie une rafale de données hyper rapide (quelques millisecondes). Quand la fermeture intervient, l'AGC met parfois un court instant à s'adapter... et la trame de fermeture est ratée.

Le Tuner Nooelec n'accepte que des paliers de gain précis exprimés en dixièmes de dB (de 0 à 49.6 dB) :

Valeurs de gain valides pour la Nooelec v5 : 0.0, 0.9, 1.4, 2.7, 3.7, 7.7, 8.7, 12.5, 14.4, 15.7, 16.6, 19.7, 20.7, 22.9, 25.4, 28.0, 29.7, 32.8, 33.8, 36.4, 37.2, 38.6, 40.2, 42.1, 43.4, 43.9, 44.5, 48.0, 49.6.

Ca se configure soit dans l'intégration, soit dans le fichier de configuration si on n'utilise pas celle-ci (ne pas oublier que l'intégration prends le dessus quand elle est active).

gain 40.2

Je ne suis pas certain de l'éfficassité de la méthode.

Plusieurs fréquences ?

Dans l'absolu il est tout à fait possible de scanner plusieurs fréquences avec rtl_433 (par exemple écouter à la fois vos capteurs Visonic à 868.95 MHz et d'autres capteurs météo ou prises à 433.92 MHz), mais c'est fortement déconseillé pour un système de sécurité.

Dans le fichier de configuration, il suffit de déclarer plusieurs lignes de fréquences et de définir un intervalle de bascule en secondes avec l'option -H (ou hop_interval). (info à véifier).

frequency 868.95M
frequency 433.92M
# Reste 15 secondes sur chaque fréquence avant de sauter à la suivante
hop_interval 15

La clé SDR possède un seul tuner physique. Elle ne peut donc écouter qu'une seule fréquence à la fois.

  • Si la clé est en train d'écouter la fréquence 433.92 MHz et que quelqu'un ouvre une porte équipée d'un capteur Visonic (868.95 MHz), la trame radio sera envoyée dans le vide.
  • La clé aura raté l'événement et Home Assistant ne saura jamais que la porte s'est ouverte.

Pour des capteurs de température (qui émettent toutes les minutes), rater une trame n'est pas grave. Pour une alarme de sécurité, c'est critique. Donc si on veut utiliser cette solution pour intégrer des appareils sur une autre fréquence (comme du 433 MHz), la solution idéale et fiable est d'acheter une deuxième clé, dans l'absolu une par fréquence, mais à minima une dédiée aux capteurs de sécurité.

Conclusion

J'ai d'ailleurs remarqué que quand j'ouvre tous les volets en même temps il y a quelques loupés, si ça persiste je vais devoir les temporiser ou ouvrir mes capteurs et utiliser SW4.

Une autre option qui peut aider, m'a aidé est d'élargir la fréquence d'échantillonnage (dans l'intégration qui communique avec l'add-on), de base on a 250 000,000414 Hz (250 kHz), mais en poussant à 1024 kHz j'ai pu récupérer 3 capteurs supplémentaires. Attention à la pollution que cela peut engendrer.

Je perd toujours des trames. Si je fais le tour tous les capteurs remontent, un peu plus tard une porte ou une fenêtre ouverte n'est pas détectée. Je pense que la zone ou est installé on serveur Home Assistant est trop polluée au niveau radio. Il faudrait que j'essaie de déporter la clé, rallonge USB blindée, ou un vieux Raspberry éloigné...

Je vais laisser tourner un peu et j'ajusterais cet article.

Edit 30/07/2026

Deux options peuvent aider dans le ficher de configuration de l'add-on :

pulse_detect autolevel
report_meta level

La seconde va nous permettre d'activer en option les niveau radio, indormations que l'ont peut également observer dans le log de l'add-on.

time      : 2026-07-30 11:59:56
Model     : Visonic-Powercode                      ID        : b48269
Tamper    : 0            Alarm     : 1             Battery   : 1             Else      : 0             Restore   : 1             Supervised: 0             Spidernet : 0             Repeater  : 0             Integrity : CHECKSUM
Modulation: ASK          Freq      : 869.2 MHz
RSSI      : 0.7 dB       SNR       : 29.8 dB       Noise     : -29.8 dB