A propos de Owntracks & MQTT

Bonjour à tous, je souhaite exploiter un broker MQTT hébergé sur mon jeedom afin d’y intégrer la localisation des téléphones Android de la maison. Je souhaite utiliser Owntracks.

J’ai lu la doc du plugin MQTT officiel ainsi que les quelques sujets qui traitent de la localisation.

Jusqu’à présent j’ai réussi à faire :

  • Installer l’application Owntracks sur un téléphone Android puis la faire communiquer mon broker MQTT de mon Jeedom (Communication en mode mqtt://IP_Publique:Port mais sans couche de sécurité). Lorsque j’utilise un client MQTT (MQTT Explorer.exe) pour me connecter à mon broker, je vois bien des messages arriver.

Mon problème se situe au niveau de Jeedom, j’ai tenté de créér un objet MQTT avec le topic racine owntracks/jeedom/j9210 et la case « Activer l’analyse des valeurs… »
Aucunes commandes ne s’est créé.

Je précise que mon broker MQTT fonctionne, car je reçois bien les informations de l’onduleur de mes panneaux solaires.

Mes questions :

  • Comment créer un autre couple identifiant/mdp pour chaque téléphone que je vais connecter ou bien est-ce que je suis obligé d’utiliser celui de jeedom jeedom:<LongueCLéAPI> ?
    Je suppose que si j’ai un autre utilisateur qui connecte à mon broker, le topic de mon téléphone sera : /owntracks/j9210 où j9210 sera le login du compte en question.

  • Comment créer les commandes qui vont bien pour récupérer les infos qui proviennent des messages MQTT ? Est-ce qu’il y a une méthode ou un modèle qqlq part ?

  • Comment sécuriser tout le bazar ? Est-ce que je dois installer sur mon téléphone le certificat MQTT proposé dans l’interface de config du plugin? j’ai réservé une IP full stack et un nom de domaine freebox : patate.freeboxos.fr Quid du certificat ?

Merci beaucoup pour votre aide,

Je dois concéder que la littérature sur le sujet n’est pas très aidante.

Version : 4.3.22
Source : default
Branche : V4-stable
Système : diy - NUC beelink

Extrait des logs en mode DEBUG : `

[2025-01-30 14:47:38]DEBUG : Message reçu sans prise en charge par un plugin : {"owntracks":{"jeedom":{"j9210":{"_type":"location","_id":"b6bbc4bc","acc":14,"alt":342,"batt":91,"bs":1,"cog":0,"conn":"m","created_at":1738244858,"lat":43.2509369,"lon":4.1815867,"m":2,"tid":"10","tst":1738244858,"vac":1,"vel":0}}}}

`

Bonjour,

On ne sait même pas de quel plugin vous parlez… délicat de critiquer la doc alors qu’on ne fourni pas les infos non plus…

  • déplacez le post dans la bonne catégorie, pas Discussions Générales
  • ajoutez l’étiquette du plugin concerné
  • fournir page santé jeedom
  • fournir page config du plugin

et vous êtes en v4.3 donc il faudra commencer par mettre tout à jour pour être sur d’avoir les dernières versions

Voici un extrait de mon plugin officiel MQTT (mqtt2)

Voici la page santé Jeedom

Voila les 9 erreurs :

Voici la config de l’équipement :

Ma remarque concernait essentiellement les 3 questions au dessus et non pas spécifiquement la documentation jeedom.

Je viens ici en paix, j’ai passé pas mal de temps à chercher des réponses çà et là. N’ayant pas trouvé mon bonheur, j’ai tenté ma chance en posant mes questions à la communauté, voilà tout.

si vous parlez bien d’user/pswd pour plugin-mqtt2 alors c’est expliqué dans la doc: https://doc.jeedom.com/fr_FR/plugins/programming/mqtt2/?theme=light#Configuration%20du%20plugin

vous devez le faire manuellement via la liste des commandes si c’est la question

user & pswd dédié (donc facile à supprimer) sur ssl me semble suffisant.

si vous parlez bien d’user/pswd pour plugin-mqtt2 alors c’est expliqué dans la doc: https://doc.jeedom.com/fr_FR/plugins/programming/mqtt2/?theme=light#Configuration%20du%20plugin

vous devez le faire manuellement via la liste des commandes si c’est la question

Oui c’est effectivement ce que j’ai lu. Mais dans quel fichier de configuration ajouter ces identifiants ?

il n’y a jamais de fichier de config à gérer sous jeedom, c’est dans la page config du plugin

image

Mon MQTTExplorer affichait bien les messages reçu avec le compte « jeedom ». J’ai changé pour le nouveau compte « j9210 » et depuis l’appli mobile n’arrive plus à se connecter au broker.

J’ai mis à jour mon Core et le plugin officiel mqtt2 également.

lorsque l’on ajoute un user il faut cliquer sur « réinstaller » pour que le nouveau fichier de config soit écrit de mémoire

Bien vu, merci beaucoup. Il fallait effectivement faire « Réinstaller ».
Si quelqu’un de l’équipe Jeedom passe par là, est-il possible de faire rajouter cette subtilité dans la doc ?

Voilà la doc, vous pouvez faire votre modification:

Merci Tonio, je viens de commit les changements sur GitHub.

1 « J'aime »

Rebonjour, je ne parviens toujours pas à récupérer les infos de MQTT dans Jeedom que ce soit avec la découverte des commandes ou en créant manuellement la commande.

Voici le message d’erreur pour la découverte automatique :

Basé sur ce que j’ai dans MQTT Explorer

J’ai testé plusieurs combinaisons de topic racine :

owntracks
owntracks/#
owntracks/jeedom/j9210
owntracks/jeedom/#
owntracks/jeedom/j9210/#
owntracks/j9210/j9210 (avec le nouvel utilisateur)

Au niveau création manuelle de la commande, j’ai tenté plusieurs variantes, sans succès.

Exemple pour la commande batterie :
owntracks/jeedom/j9210/batt
batt
jeedom/j9210/batt

Pour ce qui concerne les logs de mqtt2, j’ai beaucoup de log du genre avec des id de messages différents :

[2025-01-30 21:18:39] DEBUG : Message reçu sans prise en charge par un plugin : {"<mark>owntracks</mark>":{"jeedom":{"j9210":{"_type":"location","_id":"457***ca","acc":14,"alt":340,"batt":68,"bs":1,"cog":309,"conn":"m","created_at":1738268319,"lat":43.0009417,"lon":5.0004687,"m":2,"tid":"10","tst":1738268319,"vac":1,"vel":1}}}}

A part le log de MQTT, est-ce qu’il y a d’autres logs à regarder, notamment pour expliquer le message d’erreur de la non découverte des commandes ?
Si vous avez le code, qu’est ce qui conditionne l’apparition de ce message d’erreur ?

Merci pour votre aide,

Thibaut.

Edit : La recherche de commande a fini par fonctionner en rebootant le Jeedom et surtout en recréant un objet de 0.

Reste à voir comment exploiter tout cela.

Le JSON me semble mal formé. il devrait être sous la forme :

{"owntracks":{

L’élément HTML <mark> n’a rien à faire dans un JSON.

Bonjour

J’utilise aussi owntrack pour la geolocalisation de 3 smartphones. Je n’utilise pas du tout jmqtt qui me semble une grosse usine a gaz pour ce petit besoin.

Ce que j’ai fait :
3 virtuels (un par smartphone) avec dans chaque virtuel une info nommée coordonnées.
3 scripts php (un par smartphone) stockés dans /owntrack sur jeedom :

configuré chaque owntrack pour lancer leur URL dédiée :

https://urlexternemonjeedom.fr/owntracks/loic.php

chaque script PHP va mettre à jour son virtuel associé via son api:

<?php
    # Obtain the JSON payload from an OwnTracks app POSTed via HTTP
    # and insert into database table.

    header("Content-type: application/json");

    $payload = file_get_contents("php://input");
    $data =  @json_decode($payload, true);
	$lat = "0";
	$lon = "0";
    if ($data['_type'] == 'location') {

        $lat = $data['lat'];
        $lon = $data['lon'];
        
    }

	$coords = "$lat,$lon";
	$echo = json_encode($coords);
	$echo2 = str_replace('"', "", $echo);
	
    print $echo2;
	
	$url = "https://urlexternemonjeedom.fr/core/api/jeeApi.php?apikey=NH9gJ3u5g922r5kLfbuFUpQYuny7apqb&plugin=virtual&type=event&id=15808&value=" . $echo2;

	$response = file_get_contents($url);
?>

Tout ça n’est peut être pas académique, mais c’est simple et çà marche.

Merci à tous pour vos réponses.
Merci Loïc, c’est basé sur votre post que j’avais décidé de me lancer avec Owntracks.
Je vais étudier tout cela.
Je vais dans un premier temps tenter de sécuriser l’envoi des messages depuis Android vers le Broker.

Thibaut.

1 « J'aime »