MQTT - Permettre l'intégration d'un "device" externe (smartphone)

,

+1 pour la feature via Gladys +

Ok noté, j’ai créé une “feature request”:

C’est une bonne idée et c’est pas très compliqué, je vais regarder!

3 Likes

Hop c’est bon, j’ai codé la nouvelle route sur l’Open API, ça arrive bientôt sur une PR dans Gladys :slight_smile:

Le call API ressemble à ça:

Et hop dans Gladys (et Gladys Plus), j’ai bien la nouvelle valeur:

Bien-sûr du coup cette fonctionnalité peut-être utilisé avec n’importe quel type de device, y compris un device de présence !

La PR est prête:

Je viens de merger la PR, c’est dispo sur master!

Je viens de lancer un build Docker dev intégrant les derniers correctifs de bug, ainsi que cette fonctionnalité :slight_smile:

Le gateway en prod a été re-deployé lui aussi avec cette nouvelle feature :partying_face:

1 Like

C’est live dans Gladys v4.3.1 :slight_smile:

Bonjour à tous,

Je débute sur Gladys, je me permet d’intervenir sur ce poste par rapport à la demande initiale pour la détection de présence j’utilise dans mon Systeme actuel (je ne citerais pas de nom, mais il tourne sur un PI4) la détection par Nut et aussi la détection par Ping des téléphonez (l’adresse mac), cela fonctionne parfaitement bien. Cela ne serait-il pas possible de faire de mêle dans Gladys un module permettant de pinger des adresses IP ou Mac ? Je trouve ça plus pratique que de passer par une application Tiers

Salut et bienvenu, ta demande a déjà été évoquée :wink:

Le soucis c’est que si la box redémarre, tu changeras d’ip, et je n’ai plus le souvenir de cette discussion mais il y avait aussi quelque chose qui mentionnait l’adresse Mac qui change aussi… Lis la discussion et tu seras fixé

Hello!

De ce qu’on s’est dit sur plusieurs sujets, cette fonctionnalité fonctionne déjà (@VonOx a fait un poc sur Android fonctionnelle il me semble)

Est-ce c’est bon de ton côté @lmilcent ?

Si oui, est-ce qu’on peut fermer la demande de fonctionnalité ?

Oui ça marche super bien, faut que je trouve un peu de temps pour la doc

2 Likes

Je n’ai pas encore testé, car n’ayant pas Gladys Plus je me connecte à mon instance chez moi via VPN. Donc c’est plus restrictif, mais je vais réfléchir à nouveau au sujet pour mon cas particulier.

Salut @spenceur

Peux-tu m’aider dans la configuration de l’application ?
Lorsque je clique sur “Check Connection” j’ai toujours une erreur “Connection Failed”.

Quel port as-tu configuré ? TLS ou pas ?

Merci pour ton aide :slight_smile:

Hello

Pas de tls

Merci pour ta réponse :slight_smile:

Je comprends pas, mais impossible de se connecter avec le “test connection”. A chaque fois j’ai une erreur “Timeout”.

Pourtant j’ai même vérifié le pare feu dans mon Raspberry Pi, le port 1883 est ouvert, le mdp Gladys est correct, je n’ai plus d’idée pour debugguer…

Je me demande s’il n’y a pas de restriction sur le serveur MQTT par défaut au localhost.

[EDIT]

$ sudo cat /var/lib/gladysassistant/mosquitto/mosquitto.conf

allow_anonymous false
connection_messages true
password_file /mosquitto/config/mosquitto.passwd
listener 1883

Les ports sont ouverts en entrée et en sortie sur iptables, donc je ne vois pas ce qui marche pas.

Niveau logs mosquitto, il n’y a que les connexions de Gladys :

0: mosquitto version 2.0.12 starting
0: Config loaded from /mosquitto/config/mosquitto.conf.
0: Opening ipv4 listen socket on port 1884.
0: Opening ipv6 listen socket on port 1884.
0: mosquitto version 2.0.12 running
0: New connection from 127.0.0.1:32768 on port 1884.
0: New client connected from 127.0.0.1:32768 as mqttjs_cb088900 (p2, c1, k60, u'z2m').
0: New connection from 127.0.0.1:32770 on port 1884.
0: New client connected from 127.0.0.1:32770 as gladys-main-instance-473225 (p2, c1, k60, u'gladys').

[EDIT 2]

Via mon VPN Wireguard qui est sur le Raspberry Pi, j’arrive à connecter l’application à MQTT. C’est donc bien un pb de flux entrant.
Merci pour ta confirmation de la confi de l’application :slight_smile:

1 Like

Dans la partie “Schedule” de l’application, tu as configuré comment ?

J’ai mis ça dans l’application Android, ça part avec succès, mais Gladys ne semble pas comprendre les données (je ne vois rien dans Gladys, ou dans les logs) :

  • Presence Topic : oneplus7tpro/presence
  • Battery Topic : oneplus7tpro/battery

[EDIT]

En fait c’est indiqué dans Gladys, à savoir :

gladys/master/device/mqtt:oneplus7tpro/feature/mqtt:oneplus7tpro:presence/state

1 Like

Exactement :slight_smile:
Si tu as besoin de plus d’info hésite pas

Je viens de créer quelques scènes pour gérer ma présence mais ça marche pas comme voulu.

  1. En cas de changement d’état de mon téléphone, ça indique “Utilisateur vu a la maison”.

  2. Toutes les 16 minutes ça déclenche “Vérifier la présence sur les 15 dernières min” et me marque absent si c’est le cas.

Mon téléphone envoie toutes les 15 minutes un signal en wifi pour dire que je suis là. Si je coupe mon wifi, le signal n’est plus reçu et Gladys me marque absent, Parfait !

SAUF QUE lorsque je réactive le wifi, le signal est bien reçu par Gladys, mais identique aux précédents, il ne déclenche pas la scène 1, qui ne me marque jamais présent.

Or le bloc “Vérifier la présence” peut me marquer absent mais ne me marque pas présent s’il me détecte (c’est même explicité que Gladys ne fais rien si elle me détecte).

Comment gérer ce cas ? Pour moi c’est une problématique que l’on devrait pas avoir, soit il manque un déclencheur soit le bloc Vérifier la présence est à améliorer.
Soit j’ai raté un truc aussi :sweat_smile:

tu as bien setter dans l’application 1 lorsque tu te connecte au réseau ?
Voici mon device :


Pour information, j’envoie l’état de ma batterie aussi ça peut toujours servir :slight_smile:

Et côté application



J’en ai deux car j’ai plusieurs réseau à la maison :slight_smile:

Après niveau scène je check l’état de mon OnePlus (présence et absence) et zou

1 Like

La différence entre nos deux situations se situe sur le type de message.

Tout est identique de mon côté sauf que je n’envoie pas de messages d’absence.
Je veux plutôt que Gladys détecte le signal comme un “keepalive”.

  • Si le signal a moins de 16 minutes, je suis là
  • Sinon je suis absent

J’ai trouvé le problème, c’est le déclencheur “Détecter la présence” qui attend un signal qui change. Contrairement au déclencheur sur un device basique qui peut prendre en compte tous les évènements.
Et dans mon cas il n’y a qu’un signal de présence envoyé toutes les 15 minutes et aucun signal d’absence. Donc les nouveaux signaux sont pas pris en compte.
C’est voulu @pierre-gilles ?

Ma seule astuce c’est justement d’utiliser la valeur de la batterie de mon téléphone pour avoir une valeur de capteur qui permet d’utiliser le déclencheur standard pour tous les capteurs.

C’est bien le fonctionnement qui est prévu :slight_smile: L’intégration Bluetooth fonctionne de la même manière, elle s’attend à recevoir un “1” à chaque fois qu’un appareil bluetooth est vu, en revanche elle ne s’attend pas à ce qu’un appareil bluetooth envoie “0” quand il n’est pas vu, c’est justement son absence d’envoie de “1” qui créé une absence côté Gladys.

De même, quand tu reviens, normalement pas besoin d’être passé par un 0 pour que le 1 soit compatibilisé.

Cf tutoriel bluetooth:

Tu peux développer ? :slight_smile:

Tu peux nous faire des screenshots de tes scènes pour qu’on voit là où ça cloche ?