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.
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
Post a Comment