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.
Bonjour,
Je viens d’emménager dans un appartement disposant de ce type d’alarme, ton travail va beaucoup m’aider à l’intégrer dans ma domotique. Merci beaucoup.
Si j’ai des RETEX ou si j’arrive à développer des améliorations je reviendrai les partager.
Camille
Merci pour ton message. N’hésites pas a en parler a d’autres.
Hello,
Sorry I don’t speak french.
Great work but seems that is not compatible with newer versions of pyton.
This error is reported in the degug mode:
AttributeError: module ‘time’ has no attribute ‘clock’
Additionally homeassistant does not recognize the new mqtt sensors, I use mosquitto server and in configuration.yalm I have:
mqtt:
discovery: true
discovery_prefix: homeassistant
broker: localhost
port: 1883
username: mosquitto
password: passw
Any clue? I’ve seen in config.json that no username/password is set for mqtt connection. Maybe is related.
Regards,
Hi,
What is your python version ?
If you have username and pwd on HA (server) and not in client ( my code) it can’t work. You can change code to add username feature.
++
Merci pour ce travail, j ai une vieille alarme de 2012 que j aimerais domotiser, je vais regarder tout ça.
Je me demande si il est techniquement possible de faire sonner la sirène depuis home assistant, je pense qu il est compliqué d envoyer des ordres sans API..
Bonsoir, il y a des pseudo api sur l’alarme pour l’activer et autres, mais je n’ai jamais regardé de ce côté là.
Salut, beau travail, as tu réussi à récupérer les flux vidéos et audio car c’est un peu l’intéret de cette centrale de pouvoir effectuer une levée de doute ?
Non je n’ai pas pu encore décoder ce flux. Pas vraiment eu le temps. C’est du base64 mais ensuite je ne sais pas quel format. Bon après une levée de doute avec un dev perso je doute que ça marche, il faut plutôt un véritable organisme référencé.
C’est plutôt pour enregistrer les images et vidéos sur un hébergement externe pour les garder dans le cadre d’une éventuelle enquête et également vérifier si il s’agit d’une fausse alarme ou non à distance. La vidéo prise par le détecteur est au format H264 avec un framerate de 5 images par seconde.
Aurais tu le format des photos par hasard ? Un moyen de forcer l’enregistrement vidéo ou la prise de photo afin de tester ?
les photos sont au format JPG, la commande est GETCAM,01,1,80 (le dernier nombre correspond à un facteur de qualité de l’image qui va de 21 à 91)
Bonsoir,
J’ai aussi une alarme WIP210 et j’ai contacté le support RSI, ils m’ont créé un compte toolbox (télémaintenance dans le cloud). j’ai aussi demandé le lien pour télécharger le logiciel du télésurveilleur : Frontel, je peux le fournir , avec ca je reçois bien toutes les alarmes , les photos, vidéos.
J’aurais aimé faire de l’autosurveillance mais mon firmware n’est pas assez récent pour envoyer les détections d’intrusion dans l’appli videofied sur smartphone.
Pensez vous que l’on pourrait l’intégrer aussi dans Jeedom ?
Bonjour, mon application est faite pour être compatible avec un maximum de chose car c’est du mqtt. Je suis preneur de toutes informations, soft, Doc, etc… Merci