Impossible de connecter ring-mqtt

Bonjour à tous,
Après avoir suivi le tuto de @ Nicoca-ine Ring-Mqtt et Jmqtt, je n’arrive pas à voir mon videodoorbell2.
Malgrè une 2FA qui a fonctionné, lorsque je lance la commande DEBUG=ring-mqtt ./ring-mqtt.js j’obtiens ce message.

ring-mqtt Detected runmode: standard +0ms
  ring-mqtt Configuration file: /home/ring-mqtt/config.json +5ms
  ring-mqtt MQTT URL: mqtt://192.168.1.9:1883 +4ms
  ring-mqtt Reading latest data from state file: /home/ring-mqtt/ring-state.json +0ms
  ring-mqtt ERROR - Uncaught Exception +0ms
Error: listen EADDRINUSE: address already in use 127.0.0.1:51883
    at Server.setupListenHandle [as _listen2] (node:net:1463:16)
    at listenInCluster (node:net:1511:12)
    at doListen (node:net:1660:7)
    at processTicksAndRejections (node:internal/process/task_queues:84:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '127.0.0.1',
  port: 51883
}
  ring-mqtt Attempting connection to Ring API using saved refresh token... +0ms
  ring-mqtt Successfully established connection to Ring API using saved token +698ms
  ring-mqtt Received updated refresh token +3ms
  ring-mqtt Saving updated refresh token to state file +820ms
  ring-mqtt The ring-mqtt process is shutting down... +1s
  ring-mqtt Failed to save updated state file: /home/ring-mqtt/ring-state.json +1s
  ring-mqtt EACCES: permission denied, open '/home/ring-mqtt/ring-state.json.1826691868' +1ms
  ring-mqtt Attempting connection to MQTT broker... +0ms
  ring-mqtt MQTT connection established, processing Ring locations... +2s
  ring-mqtt Exit code: 2 +2s

J’ai recommencé pusieurs fois la manip et rien n’y fait.
Biensûr rien ne remonte dans MQTT EXPLORER.
J’ai pourtant bien été chercher le TOKEN enregistré dans ring-state.json pour le placer dans config.json à la ligne « token:1234 ».

Est ce que quelqu’un aurait une idée ? Merci

Salut,

Quel version de ring-mqtt? Sous docker?

Je vois 2 erreurs dans le log

et

est-ce que les droits sur /home/ring-mqtt/ sont corrects?

Alors je m’etais mis en root et j’avais fait cd ring-mqtt chmod +x ring-mqtt.js

Peut-être est-ce le pb.

Il ne faut pas être en root. Mais lancer les commandes avec sudo

1 « J'aime »

Peux-tu montrer les droits sur le dossier ring-mqtt.

cela doit ressembler a ceci: (on ne doit pas voir root)


nico@linux:~/ring-mqtt$ ls -l
total 232
-rw-r--r--   1 nico nico   1776 Aug 22  2021 Dockerfile
-rw-r--r--   1 nico nico   1066 Aug 22  2021 LICENSE
-rw-r--r--   1 nico nico  23203 Aug 22  2021 README.md
-rw-r--r--   1 nico nico    200 Aug 22  2021 build.json
-rw-r--r--   1 nico nico   1185 Nov 11 14:03 config.json
drwxr-xr-x   2 nico nico   4096 Aug 22  2021 devices
drwxr-xr-x   2 nico nico   4096 Jul 22 19:49 docs
drwxr-xr-x   2 nico nico   4096 Aug 22  2021 images
drwxr-xr-x   2 nico nico   4096 Aug 22  2021 lib
drwxr-xr-x 335 nico nico  12288 Aug 22  2021 node_modules
-rw-r--r--   1 nico nico 120676 Aug 22  2021 package-lock.json
-rw-r--r--   1 nico nico    727 Aug 22  2021 package.json
-rwxr-xr-x   1 nico nico  27761 Aug 22  2021 ring-mqtt.js
-rw-r--r--   1 nico nico    474 Aug 22  2021 ring-mqtt.service
drwxr-xr-x   2 nico nico   4096 Aug 22  2021 scripts
drwxr-xr-x   2 nico nico   4096 Aug 22  2021 web

Effectivement tout est en Root
Comment puis je changer cela?

ok donc après un chown -R pi /home/ring-mqtt
jai en résultat propriétaire pi (je n’ai que ca comme user et root en groupe.
Relance de la commande DEBUG=ring-mqtt ./ring-mqtt.js
résultat identique.
Autre chose me chagrine,je ne comprends pas pourquoi il me parle du port 51883.

Je me corrigé, il n’y a plus l’erreur EACCES
Reste l’EADDR seulement

ok déjà 1 pb réglé

tu n’as pas répondu à toutes mes questions

Alors pas de docker, installation comme celle de ton tuto et pour la version je n’en sait rien, si ce n’est que je l’ai installée avant hier depuis la commande que tu fournis

tu peux remettre le log depuis la correction des droits?

Je regarde demain dès que possible

et donner le retour de la commande sudo ss -tunlp | grep ":51883"

pour moi a priori c’est un pb sur la conf mqtt.

ring-mqtt cherche la connection vers mosquitto sur 192.168.1.9:1883

mosquitto et ring-mqtt sont sur la même machine?

est-ce que mosquitto écoute sur 127.0.0.1 ou sur l’ip 192.168.1.9? (voir sa propre conf)

quel port d’ecoute pour mosquitto?

il faut dans la conf ring-mqtt les même paramètre que ceux de mosquitto poir le port et l’ip d’ecoute

pour le proccess ecoutant 51883 la commande précédente va nous dire qui l’occupe

pi@jeedomPi:/home/ring-mqtt $ sudo DEBUG=ring-mqtt ./ring-mqtt.js
  ring-mqtt Detected runmode: standard +0ms
  ring-mqtt Configuration file: /home/ring-mqtt/config.json +4ms
  ring-mqtt MQTT URL: mqtt://192.168.1.9:1883 +3ms
  ring-mqtt Reading latest data from state file: /home/ring-mqtt/ring-state.json +0ms
  ring-mqtt ERROR - Uncaught Exception +0ms
Error: listen EADDRINUSE: address already in use 127.0.0.1:51883
    at Server.setupListenHandle [as _listen2] (node:net:1463:16)
    at listenInCluster (node:net:1511:12)
    at doListen (node:net:1660:7)
    at processTicksAndRejections (node:internal/process/task_queues:84:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '127.0.0.1',
  port: 51883
}
  ring-mqtt Attempting connection to Ring API using saved refresh token... +0ms
  ring-mqtt Refresh token is not valid.  Unable to authenticate with Ring servers.  See https://github.com/dgreif/ring/wiki/Refresh-Tokens +227ms
  ring-mqtt Failed to establish connection to Ring API using saved refresh token +0ms
  ring-mqtt Failed to connect to Ring API using saved token, generate a new token using the Web UI +0ms
  ring-mqtt or wait 60 seconds to automatically retry authentication using the existing token +1ms
  ring-mqtt ERROR - Uncaught Exception +346ms
Error: listen EADDRINUSE: address already in use :::55123
    at Server.setupListenHandle [as _listen2] (node:net:1463:16)
    at listenInCluster (node:net:1511:12)
    at Server.listen (node:net:1599:7)
    at Function.listen (/home/ring-mqtt/node_modules/express/lib/application.js:635:24)
    at TokenApp.start (/home/ring-mqtt/lib/tokenapp.js:40:34)
    at Main.init (/home/ring-mqtt/lib/main.js:46:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 55123
}
  ring-mqtt The ring-mqtt process is shutting down... +666ms
  ring-mqtt The ring-mqtt process is shutting down... +336ms
  ring-mqtt Exit code: 2 +2s

pi@jeedomPi:~ $ sudo ss -tunlp | grep ":51883"
tcp    LISTEN   0        511                                   127.0.0.1:51883                                       0.0.0.0:*                                   users:(("node",pid=10499,fd=18))

Sur tes interrogation j ai entrepris localhost et 127.0.0.1 suivi d’un systemctl restart mosquitto.
Le log d’erreur reste le meme que le dernier fourni.

1 « J'aime »

Pour les conf et le reste je ne sais pas comment faire.
C’est sur 1883 effectivement mais le réglage, jmqtt a en adresse broker localhost donc je déduis 127.0.0.1
Pour les param je te transmet donc ceux de ring;mqtt config.json

il faut mettre .txt a la fin des fichiers a transmettre sur le forum

retire le token du fichier transmit😉

si mosquitto et jmqtt fonctionnent et sont sur 127.0.0.1 (ou localhost), et que ring-mqtt est sur la même machine alors dans conf.json tu dois mettre localhost pour host

dans le log que tu m’as redonné, le token n’est plus valide. en fait si la connection avec les serveurs ring n’est pas quasi permanente le token n’est plus renouvelé et ils refusent la connection.

il faudra donc lors du prochain essai supprimer le token de conf.json et relancer la commande ring debug qui relancera le mini serveur pour obtenir un nouveau token.

Mini serveur qui écoute sur le port 55123

autre question: tu n’as pas encore activé le service ring-mqtt.service a cette étape ? il ne doit pas l’être tant que la conf n’est pas ok.

ok mais impossible de trouver mon fichier conf en fait

Alors grosse avancée. Dès le reveil ce matin (je suis en guyane donc c’est 4h après pour vous)

pi@jeedomPi:/home/ring-mqtt $ systemctl stop ring-mqtt
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentification requise pour arrêter « ring-mqtt.service ».
Authenticating as: ,,, (pi)
Password:
==== AUTHENTICATION COMPLETE ===

suivi du delete ring token dans config.json et rm state.json

pi@jeedomPi:/home/ring-mqtt $ nano config.json
pi@jeedomPi:/home/ring-mqtt $ rm ring-state.json

J’ai relancé la procédure de génération du token que j’ai tout de suite repris dans state.json pour la coller dans config.json et relancé la commande :

pi@jeedomPi:/home/ring-mqtt $ DEBUG=ring-mqtt ./ring-mqtt.js
  ring-mqtt Detected runmode: standard +0ms
  ring-mqtt Configuration file: /home/ring-mqtt/config.json +4ms
  ring-mqtt MQTT URL: mqtt://127.0.0.1:1883 +3ms
  ring-mqtt Reading latest data from state file: /home/ring-mqtt/ring-state.json +0ms
  ring-mqtt Attempting connection to Ring API using saved refresh token... +0ms
  ring-mqtt Successfully established connection to Ring API using saved token +810ms
  ring-mqtt Received updated refresh token +2ms
  ring-mqtt Saving updated refresh token to state file +920ms
  ring-mqtt Successfully saved updated state file: /home/ring-mqtt/ring-state.json +1s
  ring-mqtt Attempting connection to MQTT broker... +0ms
  ring-mqtt MQTT connection established, processing Ring locations... +2s
  ring-mqtt ------------------------------------------------------------------------------------------ +2s
  ring-mqtt This account has access to the following locations: +0ms
  ring-mqtt            Bar-le-Duc (2051XXXXXXXX51c) +1ms
  ring-mqtt                                                                                            +0ms
  ring-mqtt IMPORTANT: If *ANY* alarm or smart lighting hubs at these locations are *OFFLINE*  +0ms
  ring-mqtt            the device discovery process below will hang and no devices will be     +0ms
  ring-mqtt            published!                                                              +0ms
  ring-mqtt                                                                                            +1ms
  ring-mqtt            If the message "Device Discovery Complete!" is not logged below, please +0ms
  ring-mqtt            carefully check the Ring app for any hubs or smart lighting devices     +0ms
  ring-mqtt            that are in offline state and either remove them from the location or   +1ms
  ring-mqtt            bring them back online prior to restarting ring-mqtt.                   +0ms
  ring-mqtt                                                                                            +0ms
  ring-mqtt            If desired, the "location_ids" config option can be used to restrict    +0ms
  ring-mqtt            discovery to specific locations. See the documentation for details.     +0ms
  ring-mqtt                                                                                            +0ms
  ring-mqtt ------------------------------------------------------------------------------------------ +1ms
  ring-mqtt Starting Device Discovery... +0ms
  ring-mqtt                                                                                            +0ms
  ring-mqtt New location: Bar-le-Duc (205XXXXXXX51c) +0ms
  ring-mqtt   New device: Porte d'entrée (4c2XXXXX254) +6ms
  ring-mqtt               doorbell_v4 +0ms
  ring-mqtt                                                                                            +0ms
  ring-mqtt Device Discovery Complete! +0ms
  ring-mqtt ------------------------------------------------------------------------------------------ +0ms
  ring-mqtt Successfully saved updated state file: /home/ring-mqtt/ring-state.json +4s
  ring-mqtt Detected 4 CPU cores, starting 3 live stream workers +0ms
  ring-mqtt ERROR - Uncaught Exception +0ms
Error: spawn rtsp-simple-server ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:285:19)
    at onErrorNT (node:internal/child_process:485:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn rtsp-simple-server',
  path: 'rtsp-simple-server',
  spawnargs: [ '/home/ring-mqtt/lib/../config/rtsp-simple-server.yml' ]
}
  ring-mqtt The ring-mqtt process is shutting down... +1s
  ring-mqtt Setting all devices offline... +2ms
  ring-mqtt Exit code: 2 +3s

redémarrer le service avec

pi@jeedomPi:/home/ring-mqtt $ systemctl start ring-mqtt
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentification requise pour démarrer « ring-mqtt.service ».
Authenticating as: ,,, (pi)
Password:
==== AUTHENTICATION COMPLETE ===
pi@jeedomPi:/home/ring-mqtt $ systemctl status ring-mqtt
● ring-mqtt.service - ring-mqtt
   Loaded: loaded (/lib/systemd/system/ring-mqtt.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-11-13 13:27:32 CET; 3s ago
 Main PID: 1632 (node)
    Tasks: 11 (limit: 3839)
   CGroup: /system.slice/ring-mqtt.service
           └─1632 node /home/ring-mqtt/ring-mqtt.js

nov. 13 13:27:32 jeedomPi systemd[1]: Started ring-mqtt.

Là c’est bon !
MAIS
dans MQTT Explorer, je ne vois pas RING mais homeassistant

Alors que mon config.json est paramétré comme suit :

{
    "mqtt_url": "mqtt://127.0.0.1:1883",
    "mqtt_options": "",
    "livestream_user": "",
    "livestream_pass": "",
    "disarm_code": "",
    "enable_cameras": true,
    "enable_modes": false,
    "enable_panic": false,
    "hass_topic": "homeassistant/status",
    "ring_token": "Mon token fraichement acquis avec plein de caractères",
    "ring_topic": "ring",
    "location_ids": [
        ""
    ]
}

et mon ring-state.json comme suit :

{"ring_token":"Mon token fraichement acquis avec plein de caractères","systemId":"fedXXX026a8ad9fae90649ed9f88b2576bac2adbfac87abc44d757562687f238","devices":{"4c2XXX97e254":{"snapshot":{"mode":"Auto","autoInterval":true,"interval":600},"event_select":{"state":"Motion 1"}}}}

C’est juste des topic « ha discovery », ça permets à homeassistant de créer les équipements dynamiquement.
Dans les payload tu devrais avoir d’autres topics ou les données sont disponibles, tu peux nous donner le contenu d’un des payloads ?

Ca a l’air pas mal pourtant, non ?