[TUTO] Ring avec Ring-mqtt et jmqtt

Deuxième partie du TUTO.

Notre config est normalement opérationnelle côté mqtt entre jmqtt et ring-mqtt donc ajoutons nos devices à Jeedom.

Dans le plugin, vous devriez avoir pour l’instant un broker avec un point vert donc il communique avec mosquitto.

image

Nous avons 2 possibilités pour nos devices:

  • la « rapide »: mais on aura un seul équipement qui comportera tout les topics de tout les devices ring, c’est ce que j’avais fait au début, je découvrais et mqtt et le plugin jmqtt qui n’avait pas encore toutes les fonctionnalités d’aujourd’hui. Vous noterez les guillemets autour de « rapide », car une fois dans ce super équipement vous aurez des dizaines de topics, et il sera un peu difficile de s’y retrouver entre tous les devices.
    Nous avons mis dans notre broker jmqtt l’option « topics souscrits en inclusion automatique »: ring/#
    Si je regarde dans mqttexplorer voilà notre fameux topic remonté par ring-mqtt (en jaune):

Donc si je lance l’inclusion auto alors j’aurai un équipement ring avec tout les topics. Ça fonctionne mais pas très gérable.

  • La plus propre: On va créer nos équipements un par un avec chacun leurs infos.
    Prenons dans MQTTExplorer l’exemple d’un capteur de mouvement de l’alarme:

image

Le topic pour souscrire à ce device sera:

ring/9dbxxxxxxxxxxx7e7e9/alarm/7658xxxxxxxxxxxxxx3bc11/#

Vous cliquez sur le topic du device dans la partie gauche de mqttexplorer et à droite dans Publish vous aurez votre topic prêt pour un copier/coller.

Vous ajouter alors un équipement dans jmqtt, vous lui donnez un nom puis on rempli les paramètres du device dont le topic que nous venons de récupérer:

Le broker de jmqtt est à sélectionner (si jamais vous en aviez plusieurs), cocher ajout automatique des commande ! puis insérer votre topic sans oublier de mettre /# à la fin.

Vous sauvegardez puis vous lancez l’inclusion.

Normalement vous devriez avoir des notifications de jmqtt comme quoi il a trouvé et créé des commandes info. Forcer la modification d"une info sur le device, par exemple en dansant devant le capteur devrait accélérer la récup des commandes.

TADA

NB: après la récup des infos vous pouvez décocher la case ajout automatique des commandes de votre équipement.

Regardez dans l’onglet commandes de l’équipement:

Bon on avance. Les infos sont regroupées par topic donc si on regarde par exemple le premier pour la battery on a:
{"batteryLevel":70,"batteryStatus":"ok"}
Pas exploitable en l’état.

Avec le bouton JSON en haut à droite on obtient les différentes infos bien séparées:

Vous voyez ici 2 commandes infos sans nom, qui correspondent aux 2 infos du topic battery/attibutes de notre capteur de mouvement. (batteryLevel et batteryStatus)

Pour garder ces 2 infos dans notre équipement, vous mettez un nom dans la case …nom et vous sauvegardez. On revient ensuite en vue classique:

Voilà. Ensuite la commande info battery:Attributes (2966 dans mes captures) peut être supprimée on en a plus besoin. (NB: si vous avez laissé cochée la case « ajout auto des commandes » elle reviendra).

Bon ben ensuite reste à passer aux différents devices.

Je n’ai pas abordé ici l’utilisation des templates qui permettrai de ne pas avoir à refaire la config pour chaque device identique. Je vais essayer de les créer et de les partager. Je n’ai pas encore testé. :sweat_smile:

Dès que je trouve un peu de temps je vous parlerai de la création des commandes action de l’alarme.

Et pour les templates, voici ceux de mes devices.

RING_Alarm.json.txt (10,0 Ko)
RING_Indoor_Cam.json.txt (8,8 Ko)
RING_Doorbell_Pro.json.txt (9,3 Ko)
RING_Doorbell_Chime.json.txt (4,9 Ko)
RING_Alarm_NumPad.json.txt (10,7 Ko)
RING_Alarm_Extender.json.txt (7,5 Ko)
RING_Alarm_Contact_Porte.json.txt (7,7 Ko)
RING_Alarm_Capteur_IR.json.txt (8,4 Ko)
RING_Alarm_BaseStation.json.txt (8,8 Ko)

en enlevant l’extension txt. :wink:

J’ai partagé ces derniers sur le git des dev. J’espère que cela servira :slightly_smiling_face:

Concernant les différents topics existants et gérés par ring-mqtt vous pouvez regarder la doc dédiée:

https://github.com/tsightler/ring-mqtt/blob/main/docs/TOPICS.md

Cela m’a permis de trouver les commandes action a créer pour l’activation des modes de l’alarme, et la gestion du volume de la base (et du clavier).

Si je me réfère à la doc je trouve ceci:

Le topic /alarm/state me donne l’info du mode en cours de l’alarme qui peut être soit désarmée, armée à la maison et armée à l’extérieur. (disarmed, armed_home, armed_away). Le mode à l’extérieur active tous les capteurs, le mode à la maison permet de n’activer que certains capteurs (pour protéger contre une intrusion alors que nous dormons par ex => alarme plutôt en mode périmétrique)

Et le topic /alarm/command c’est pour les action => qui auront comme value disarm, arm_home et arm_away

Voilà ce que cela donne après création des 3 commandes associées à la commande info alarm/state.

NB: La commande pour le volume ne sera disponible que si le compte RING utilisé par ring-mqtt possède tout les droits. (ne concerne pas la sirène! pas de commande volume pour elle)

J’utilise un scénario qui active l’alarme en mode « armé à la maison » le soir via un scénario, et je coupe l’alarme un peu avant que nous nous levions (les jours de travail).

« L’inconvénient » de l’alarme c’est que l’activation/désactivation est par défaut accompagnée d’une voix qui annonce l’action en cours. Pratique en journée mais le soir et au réveil :sob:

J’utilise donc une commande action qui permet de modifier le volume sonore à 0 de cette voix juste avant l’action d’activation/désactivation de mon scénario et je remet le bon volume juste après. Comme çà on est pas réveillé par la petite voix avant le réveil :sweat_smile:.

Ça passera par ce topic sur la station de l’alarme (et éventuellement aussi sur le KeyPad, le clavier numérique qui cause aussi)

Si vous avez des questions, des corrections n’hésitez pas!!

1 « J'aime »

RING_Alarm_BaseStation.json.txt (8,2 Ko)

Suppression de la commande de modification du volume, lié à un virtuel (curseur) chez moi.

Bonjour @Nicoca-ine,

Très intéressant comme sujet et tuto… je vais le mettre en place (j’ai une ring pro doorbell), je ferai un retour !

As-tu réussi à avoir le flux en direct de la doorbell ?

@chris_77 merci!

Pour le stream non j’avoue n’avoir pas encore eu le temps d’installer le serveur rtsp mais cela fonctionne, d’autres l’on testé. Par ex @hgmorse, d’après son message sur ce post lors d’une de nos conversations sur ring et ring-mqtt:

Il devrait pouvoir t’en dire plus.

Hello @Nicoca-ine,

Les templates que tu proposes sont en voie d’intégration dans jMQTT :

Elles ont été légèrement modifiées pour correspondre à la norme que nous avons choisi (nom du fichier, du template, de l’équipement et un lien Commu vers ce post).

Si tu souhaites faire une modification avant intégration (ou qu’ils ne soient pas intégrés) n’hésite pas à me le dire ici ou sur Github.

Merci encore pour ton implication,
Bad

3 « J'aime »

Merci à vous surtout !

1 « J'aime »

Pas de modif à faire en particulier. :+1:

Bonjour @Nicoca-ine

Alors comme prévu je te fais un petit retour…
Ton tuto est super, instructif et fonctionnel, juste une déviance par rapport à toi j’utilise docker.
J’ai donc suivi les instructions du site de l’auteur (ça marche sans soucis) avec ton tuto en toile de fond :slight_smile:
NOTE:

  • Pour la génération du token prendre la première méthode.
  • Pour le stream, pas besoin de serveur rtsp en plus, il semblerait que l’auteur est mis à jour sa version en l’incluant !
    → Dans l’équipement jmqtt, on récupère le lien de stream :
    rtsp://livestreamuser:livestream_password:ip-du-container:port-container/id-camera_live
    livestreamuser et livestream_password étant défini dans les variables d’environnement du docker compose

Pour le moment, je n’ai pas encore testé les commandes ou intégrer la vidéo à jeedom n’étant pas chez moi actuellement… je ferais un retour plus tard.

2 « J'aime »

@chris_77

Merci pour ton message!

Docker me tente de plus en plus, il va falloir que je me monte un petit nuc ou pi en parallèle de mon jeedom​:thinking::wink:. entre jmqtt, le prochain plugin zwave…

Pour le docker oui le rtsp est déjà intégré. Pas dans la version standard où il faut l’installer manuellement en parallèle.

Bonjour,

Merci beaucoup pour le tuto. J’ai bien réussi à tout installer et configurer à une exception. Il me manque 2 choses, l’affichage des snapshot des camera et l’affichage du stream des camera en rtsp.

Je ne sais pas si j’utilise la bonne méthode pour y arriver. Je suis allé dans le plugin camera et j’ai indiqué les informations de la capture ci-dessous, mais aucun snapshot n’apparait (l’ip indiquée est celle de mon jeedom)

L’un de vous a-t-il réussi ?

Bonjour,

On va essayer de t’aider… :grin: pour le moment je n’ai toujours pas intégrer le video dans jeedom… faute de temps et d’autre soucis !

Arrives-tu à récupérer le flux de la doorbel ou de tes caméras via vlc ?

Note : je viens de tester, c’est good j’ai bien le flux et les snapshot

Malheureusement non, lorsque je tente de me connecter au flux d’une camera avec VLC (rtsp://xxx:yyy@192.168.1.175:8554/xxxxx_live) j’obtiens une erreur et le flux ne démarre pas. Il y a peut etre des subtilités que je n’ai pas compris concernant rtsp-simple-server…
Sans titre

Et dans /var/log/daemon j’ai ça au moment de la tentative de connexion depuis VLC:

Apr 25 21:19:21 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:21 INF [RTSP] [conn 192.168.1.84:62002] opened
Apr 25 21:19:21 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:21 INF [path xxxxx_live] runOnDemand command started
Apr 25 21:19:21 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:21 INF [path xxxxx_live] runOnDemand command exited with code 0
Apr 25 21:19:26 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:26 INF [RTSP] [conn 192.168.1.84:62008] opened
Apr 25 21:19:26 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:26 INF [RTSP] [session 637488687] created by 192.168.1.84:62008
Apr 25 21:19:26 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:26 INF [RTSP] [conn 192.168.1.84:62008] closed (path of a SETUP request must end with a slash. This typically happens when VLC fails a request, and then switches to an unsupported RTSP dialect)
Apr 25 21:19:26 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:26 INF [RTSP] [conn 192.168.1.84:62009] opened
Apr 25 21:19:26 raspberrypi rtsp-simple-server[26242]: 2022/04/25 21:19:26 INF [RTSP] [conn 192.168.1.84:62009] closed (EOF)

D’après ce que je comprends tu as installé directement sur ton jeedom le service ring-mqtt et le serveur rtsp, c’est bien ça ?

C’est bien ça tout est installé sur mon raspberry sur lequel j’ai installé Jeedom

Je ne t’ai pas oublié, j’ai regardé sur le github de l’auteur il semblerait que c’est une erreur qui apparaît après j’ai pas trop poussé…

Je suis en docker pour le ring-mqtt donc le serveur rtsp est intégré.

Dès que j’ai un peu de temps dans la journée, je tente une installe « basic » du serveur rtsp.
On va peut-être trouver de cette façon.

Merci, j’ai continué à chercher et en faisant apparaitre l’ensemble des log ring-mqtt en mode DEBUG j’ai ça lorsque j’essaye d’afficher le flux rtsp directement dans l’interface de Jeedom.

ring-rtsp INF [RTSP] [conn 192.168.1.175:37944] opened +3m
ring-rtsp INF [path 1234_live] runOnDemand command started +2ms
ring-rtsp INF [path 1234_live] runOnDemand command exited with code 0 +1ms
ring-rtsp INF [path 1234_live] runOnDemand command stopped +10s
ring-rtsp INF [RTSP] [conn 192.168.1.175:37944] closed (source of path '1234_live' has timed out) +1ms

Peut etre faut il modifier le fichier /ring-mqtt/config/rtsp-simple-server.yml par défaut ?

readTimeout: 5s
readBufferCount: 1024
rtspDisable: no
protocols: [tcp]
rtspAddress: 0.0.0.0:8554
rtmpDisable: yes
hlsDisable: yes
api: yes
apiAddress: 127.0.0.1:8880
paths:
  all:
    fallback:
    disablePublisherOverride: no

Par ailleurs, concernant la récupération du snapshot régulier des camera, comment est-ce que cela peut fonctionner avec une url de ce type ?
https://localhost:8123{{ states.camera.devant_snapshot.attributes.entity_picture }}
N’y a-t-il pas un séparateur à ajouter entre le numéro du port et l’accolade { ?

je dirais mettre l’adresse de ton pi 127.0.0.1

concernant les snapshots bonne question, je pensais les avoir sur ma doorbell mais que ni ni

Toujours la meme erreur en mettant 127.0.0.1 :cry:
[RTSP] [conn 127.0.0.1:41308] closed (source of path '1234_live' has timed out)