Passerelle pour alarme RSI Videofied vers MQTT

From https://voiprovider.wordpress.com/2020/01/03/passerelle-pour-alarme-rsi-videofied-vers-mqtt/


 Ayant acheté une maison avec une alarme RSI Videofied (W250CTC), cette alarme est capable de se connecter en wifi et en ethernet.

RSI_alarm_image

J’ai donc cherché s’il y avait des APIs ou quelque chose me permettant de l’intégrer à ma domotique sous Home Assistant. Malheureusement, je n’ai rien trouvé. On peut juste la connecter à un télésurveilleur ou en télémaintenance. Toujours pas possible de la connecter à ma domotique.

Par curiosité, j’ai quand même tracé ce que l’alarme envoyait comme info (car il y avait déjà une configuration vers une télésurveillance). A ma grande surprise, j’ai pu voir des choses passées en clair sur le réseau.

J’ai donc démarré un simple serveur tcp en python et changer la configuration de mon alarme pour qu’elle puisse envoyer de l’info à ce serveur.

Au fil de mes recherches, je suis tombé sur le site cybergibbons.com expliquant qu’il y avait une faille de sécurité dans ce type d’alarme (en version 2.0 uniquement). En partant de leur script servant à « faussement » s’authentifier chez un télésurveilleur (chose qui est évidemment illégale), j’ai plutôt cherché à faire l’inverse, en créant un programme permettant de « simuler » un télésurveilleur.

Vous le trouverez ici: https://github.com/Mickaelh51/rsi-alarm-gateway

C’est sous forme d’un conteneur docker. Il démarre un serveur tcp, qui va ensuite envoyer les events reçus de l’alarme vers un serveur MQTT. Avec, en plus, l’intégration à Home Assistant (configuration automatique des sensors).

ATTENTION: en aucun cas je ne pourrais être tenu pour responsable de l’utilisation que vous allez faire de mon développement, ainsi que des modifications de votre alarme. Je vous conseille vivement de sauvegarder la configuration de votre alarme avant toutes modifications. Et ne surtout pas utiliser le code disponible sur cybergibbons pour envoyer n’importe quoi à un centre de télésurveillance.

Configuration de votre alarme:

Il faudra changer le serveur ainsi que le port pour que l’alarme puisse envoyer ses events vers le docker (doc dans le readme du github).

Configuration du docker:

Il y a tout un json de configuration pour y renseigner les events que l’on veut checker et passer en MQTT, les sensors à créer dans Home Assistant, ainsi que les zones et users (doc dans le readme du github).

Les events (reverse engineering):

Après pas mal de tests, j’ai pu extraire et comprendre quelques events, voici la liste ci-dessous.

Events ID Events Remarks
EVENT,1,2,1 Intrusions detected 1 = Events ID / 2 = Device Index / 1 = Detector Index
EVENT,3,62,0 autoprotection start 3 = Events ID / 62 = Device Index / 0 = ???
EVENT,4 autoprotection end 4 = Events ID
EVENT,5,1,0 Panic button 5 = Events ID / 1 = ?? / 0 = ??
EVENT,6 5 wrong codes 6 = Events ID
EVENT,7,1,3 disarmed with duress code +1 7 = Events ID / 1 = ?? / 3 = ??
EVENT,8,1,3 armed with duress code +2 8 = Events ID / 1 = ?? / 3 = ??
EVENT,19 AC power loss 19 = Events ID
EVENT,20 AC power recovery 20 = Events ID
EVENT,24,1,3 Arm 24 = Events ID / 1 = ?? / 3 = user ID
EVENT,25,0,3 Disarm 25 = Events ID / 0 = ?? / 3 = user ID
EVENT,27 After disarm confirmation of intrusion detected 27 = Events ID

PS: il doit en manquer pas mal, mais ça me suffit pour le moment.

Si certains souhaitent participer à cette recherche, ou mieux qui ont une documentation avec l’ensemble des events de cette alarme, j’en serais plus que ravi ;).

Firmwares testés:

– 07.03.19.03859C

– 09.01.49.0203809

Pour voir l’ensemble du trafic envoyé par l’alarme, il faut passer le docker en DEBUG.

docker run --rm -i -t -p 888:888 -e loglevel=DEBUG --name rsigwalarm mickaelh51/rsimqttgateway:latest

Event FILE:

L’alarme (si configurée pour envoyer des fichiers) est capable d’envoyer du json avec la liste des zones, détecteurs etc … Ce fichier n’est pas traité par le script, mais en mode DEBUG vous pourrez le voir.

Vous pouvez trouver un exemple ici:

https://github.com/Mickaelh51/rsi-alarm-gateway/blob/master/documentations/json_sended_by_alarm.json

Prochaines étapes:

  • Etre capable de récupérer le stream video des détecteurs de mouvements.
  • Etre capable de streamer et d’écouter du flux audio.
  • Etre capable d’envoyer des ordres à l’alarme (armer et désarmer) à distance.

Rendu Home Assistant:

Rendu rapide pour le moment, il faut que j’embellisse le tout.

On peut y voir:

  • Autoprotection: quel élément de l’alarme s’est mis en autoprotection.
  • Armement / désarement: qui a armé l’alarme.
  • Intrusion détectée: quel capteur a détecté l’intrusion.
  • Alarme alimentée.

Les logs:

[2020-01-02 20:59:08,282] - server - INFO - We received EVENT: EVENT,3,62,0
[2020-01-02 20:59:08,284] - server - INFO - Received update from alarm (autoprotection !) update MQTT / source of event (Panel) / zone of event (Living room)

On peut voir que l’event 3,62,0 correspond à une mise en autoprotection, provenant de la centrale elle-même, qui se trouve dans la zone du salon.

N’hésitez pas à revenir vers moi pour m’aider à améliorer ce dev, qui n’en est qu’au début. D’ailleurs, si certains ont une alarme RSI récente, je serais curieux de voir si leur protocole a évolué et si oui, si il y a de la rétro-compatibilité avec la version 2.0.

Comments

Popular posts from this blog

Add GitHub Repository to DBeaver CE Secured with SSH Protocol

Keyboard Shortcut to "Toggle Line Comments" in DBeaver

DBeaver Shortcuts