Integration Mi Flora

Bonjour.
Je cherche à intégrer un appareil Mi Flora dans Gladys via MQQT.
Le MQQT de mon instance est installé depuis Gladys.

J’utilise ce script pour pouvoir poster sur le serveur MQQT : GitHub - ThomDietrich/miflora-mqtt-daemon: Linux service to collect and transfer Xiaomi Mi Flora plant sensor data via MQTT to your smart home system, with cluster support 🌱🌼🥀🏡🌳
J’obtiens ceci en local sur mon instance Gladys (RPI3) :
[2021-03-13 14:50:23] Connecting to MQTT broker …
[2021-03-13 14:50:23] Connection error with result code 5 - Connection Refused: not authorised.

Or, j’arrive bien à me connecter depuis un client MQQT depuis une autre machine via MQQT Explorer

Possible que le problème vienne du script, mais par hasard, est-ce qu’il y aurait une config du serveur MQQT qui pourrait bloquer ? Dans MQQT Explorer, je ne vois pas topic « Gladys », juste $Sys, est-ce normal ?

Merci pour votre aide. :slight_smile:

Sinon, autre question : le script propose des préconfigurations de topic pour SmartHome, HomeAssistant, … Je voudrais voir pour créer une préconfiguration pour Gladys, mais quels seraient les paramètres de topic à mettre en place ?

Hello!

Par curiosité, tu es en quelle version de Gladys ?

En fait il y a eu un changement dans les permissions mosquito qui faisait apparaître ce bug, et on a corrigé Gladys dans la dernière version :slight_smile:

Tu devrais être en Gladys v4.1.0 au moins, tu peux le voir dans “paramètres” => “système” !

Edit: cf Gladys v4.1.0 est disponible!

Salut.
Je suis en v 4.1.1

Capture

Ok, bon j’avais mal compris, en fait ton erreur vient du script pas de Gladys!

Tu es sûr d’avoir lancé le script avec les bons paramètres? Peut tu décrire exactement ce que tu fais ?

Pour mieux comprendre le MQTT dans Gladys, je te conseille de lire ce tutoriel :

En gros, dans Gladys l’API MQTT est très simple: chaque capteur a son topic MQTT et écoute sur ce topic. Dès qu’une nouvelle valeur est envoyée à ce topic, Gladys stocke la valeur. Tout simple :slight_smile:

Comme tu dis, dans le cas de ce script, ce script a été codé pour home assistant, et donc il ne respecte pas les mêmes conventions de topic/format de message que Gladys.

Donc il va falloir modifier le script pour changer les topics et le format de message sur lequel publier :slight_smile:

@AlexTrovato Petite question, on gère pas les MiFlora dans Gladys 4 avec le service bluetooth?

J’avais commencé à tenter une migration de la v3 à la v4. Mais rien de très avancé.
Je peux reprendre le sujet et proposer son intégration, ou si quelqu’un veut essayer, je peux rester en support.

Comme tu veux, c’était surtout pour savoir si c’était pas déjà le cas :slight_smile: ça dépend si c’est un gros dev ou pas

Merci pour vos retours, je vais regarder tout ça et essayer d’avancer sur le sujet de mon côté.

Si je peux aider pour la migration de l’intégration sur v4 je suis dispo pour faire des tests.

C’est un équivalent du Parrot Flower Power mais beaucoup moins cher en fait ? ça m’interesse beaucoup du coup

Je ne l’ai pas trop utilisé pour le moment, je sais juste qu’il marche :slight_smile:
Le seul inconvénient que je lui trouve pour le moment est qu’il fonctionne en bluetooh et donc il faut qu’il ne soit pas trop loin de ta gladys box. Après on peux imaginer un pi zero qui servirait de relais sur lequel tu ferais tourner le script. J’essayerais quand l’intégration à Gladys sera ok.

Tu abandonne le script du coup ? Parce que pour le coup si tu utilise le script ça marche avec l’intégration MQTT actuelle, il faut juste modifier le script pour mettre les topics Gladys mais sinon ça devrait marcher :slight_smile:

Non, je le garde, mais le Mi Flora communique en bluetooth, je ne sais pas si la portée est suffisante - pour ma part je suis en appartement, plantes sur le balcon ou dans le salon, ça peut passer, mais quelqu’un en maison avec jardin, pas sûr que cela fonctionne.

Du coup, j’imaginais des relais qui feraient tourner le script toutes les X heures (des pi zero sur batterie par exemple) qui collecteraient les infos et les enverrais via Wifi sur le serveur MQQT). Si on voit plus loin, le relais peut aussi servir à actionner des pompes pour arroser les plantes, etc il y a pas mal d’idées sur le smart farm.

Enfin c’est une idée, tout ça reste nouveau pour moi. ^^ si je peux récupérer les infos et envoyer un message sur Telegram pour me rappeler d’arroser mon basilic ou faire un farm dash board, ça sera déjà énorme ! :slight_smile:

1 Like

Petit up, j’ai fini par comprendre comment fonctionne MQTT/Gladys en lisant correctement la doc :slight_smile:

Capture

Qui remonte bien dans le dashboard

Capture

En ce qui concerne le script python de miflora, j’ai résolu le problème de connexion mqtt, il faut retirer les espaces apres le « = » pour le username et password.

Par contre, je n’arrive pas à me connecter au MiFloa, en tout cas je ne récupère pas les données, ça semble tourner dans le vide :

pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo python3 miflora-mqtt-daemon.py

Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon
Source: https://github.com/ThomDietrich/miflora-mqtt-daemon

[2021-03-16 21:12:41] Connecting to MQTT broker ...
[2021-03-16 21:12:41] MQTT connection established

Adding sensor to device list and testing connection ...
Name:          "Basilic"
[2021-03-16 21:12:42] Attempting initial connection to Mi Flora sensor "Basilic" (C4:7C:8D:6A:E1:31)
^Cpi@raspberrypi:/opt/miflora-mqtt-daemon $ ^C
pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX Mi Smart Band 4
C4:7C:8D:6A:E1:31 (unknown)
C4:7C:8D:6A:E1:31 Flower care
XX:XX:XX:XX:XX (unknown)

Je n’y connais rien en python, mais je vais voir du côté du dev du script si il peut me donner une piste pour debugger.

@+

1 Like

Génial :clap::clap: bravo, ca rend super :slightly_smiling_face:

y a t’il eu une avancé sur l’intégration du miflora directement par le service bluetooth ?
ou y a t’il une pr ou je peux aider dessus ?

voila déja mon log du soft gladys-bluetooth-analyzer concernant mes mi flora (mode generic):

    ✔ Select device you want to analyse: › c4:7c:8d:63:27:12 - Flower care
     -> Device:
        - Name: Flower care
        - Model: undefined
        - 0 features
        - 0 params
    ✔ Select the service you want to test › Generic
    Now executing Generic steps...
    ✔ This mode will try to scan your peripheral to get maximum information, continue? … yes
     -> Peripheral:
       -> Address type: public
       -> Connectable: true
       -> Advertisement:
         -> Local name: Flower care
         -> Manufacturer data: undefined
         -> Services: fe95
         -> Service data (1):
           [0] fe95 / undefined / 31029800031227638d7cc40d / undefined
       -> Services (6):
         -> 1800 (Generic Access)
           -> Characteristics (4):
             -> 2a00 (Device Name): read
             -> 2a01 (Appearance): read
             -> 2a02 (Peripheral Privacy Flag): read,write
             -> 2a04 (Peripheral Preferred Connection Parameters): read
         -> 1801 (Generic Attribute)
           -> Characteristics (1):
             -> 2a05 (Service Changed): read,indicate
         -> fe95 (null)
           -> Characteristics (8):
             -> 1 (null): read,write,notify
             -> 2 (null): read
             -> 4 (null): read,notify
             -> 7 (null): write
             -> 10 (null): write
             -> 13 (null): read,write
             -> 14 (null): read
             -> 1001 (null): notify
         -> fef5 (null)
           -> Characteristics (6):
             -> 8082caa841a6402191c656f9b954cc34 (null): read,write
             -> 724249f05ec34b5f880442345af08651 (null): read,write
             -> 6c53db2547a145fea0227c92fb334fd4 (null): read
             -> 9d84b9a3000c49d89183855b673fda31 (null): read,write
             -> 457871e8d5164ca1911657d0b17b9cb2 (null): read,writeWithoutResponse,write
             -> 5f78df94798c46f5990ab3eb6a065c88 (null): read,notify
         -> 0000120400001000800000805f9b34fb (null)
           -> Characteristics (3):
             -> 00001a0000001000800000805f9b34fb (null): read,write
             -> 00001a0100001000800000805f9b34fb (null): read,write,notify
             -> 00001a0200001000800000805f9b34fb (null): read
         -> 0000120600001000800000805f9b34fb (null)
           -> Characteristics (3):
             -> 00001a1100001000800000805f9b34fb (null): read
             -> 00001a1000001000800000805f9b34fb (null): read,write,notify
             -> 00001a1200001000800000805f9b34fb (null): read


    ✔ Select device you want to analyse: › c4:7c:8d:61:07:bc - Flower care
     -> Device:
        - Name: Flower care
        - Model: undefined
        - 0 features
        - 0 params
    ✔ Select the service you want to test › Generic
    Now executing Generic steps...
    ✔ This mode will try to scan your peripheral to get maximum information, continue? … yes
     -> Peripheral:
       -> Address type: public
       -> Connectable: true
       -> Advertisement:
         -> Local name: Flower care
         -> Manufacturer data: undefined
         -> Services: fe95
         -> Service data (1):
           [0] fe95 / undefined / 7120980001bc07618d7cc40d041002a900 / undefined
       -> Services (6):
         -> 1800 (Generic Access)
           -> Characteristics (4):
             -> 2a00 (Device Name): read
             -> 2a01 (Appearance): read
             -> 2a02 (Peripheral Privacy Flag): read,write
             -> 2a04 (Peripheral Preferred Connection Parameters): read
         -> 1801 (Generic Attribute)
           -> Characteristics (1):
             -> 2a05 (Service Changed): read,indicate
         -> fe95 (null)
           -> Characteristics (8):
             -> 1 (null): write,notify
             -> 2 (null): read
             -> 4 (null): read,notify
             -> 7 (null): write
             -> 10 (null): write
             -> 13 (null): read,write
             -> 14 (null): read
             -> 1001 (null): notify
         -> fef5 (null)
           -> Characteristics (6):
             -> 8082caa841a6402191c656f9b954cc34 (null): read,write
             -> 724249f05ec34b5f880442345af08651 (null): read,write
             -> 6c53db2547a145fea0227c92fb334fd4 (null): read
             -> 9d84b9a3000c49d89183855b673fda31 (null): read,write
             -> 457871e8d5164ca1911657d0b17b9cb2 (null): read,writeWithoutResponse,write
             -> 5f78df94798c46f5990ab3eb6a065c88 (null): read,notify
         -> 0000120400001000800000805f9b34fb (null)
           -> Characteristics (3):
             -> 00001a0000001000800000805f9b34fb (null): read,write
             -> 00001a0100001000800000805f9b34fb (null): read,write,notify
             -> 00001a0200001000800000805f9b34fb (null): read
         -> 0000120600001000800000805f9b34fb (null)
           -> Characteristics (3):
             -> 00001a1100001000800000805f9b34fb (null): read
             -> 00001a1000001000800000805f9b34fb (null): read,write,notify
             -> 00001a1200001000800000805f9b34fb (null): read

en mode XIAOMI > MiFlora il me remonte l’erreur :

    ReferenceError: colors is not defined
        at printValues (/home/euguuu/Workspace/gladys-bluetooth-analyzer/services/xiaomi/MiFlora.js:9:15)

@euguuu je pense pas qu’il y ait eu d’avancés donc n’hésite pas :slight_smile:

ok, @AlexTrovato tu peux me donner quelque piste sur quel fonction il faut que je regarde pur integrer un peripherique particulier ?

Du coup j’ai vu passé le mot parrot, et je crois que c’était sur ça que j’avais bossé, pour migrer les restes de la v3.
Je regarde et je te dis ce qu’il en est réellement.

ok; je peux regarder pour le parrot flower et le mi flora si tu veux car j’ai les 2 équipements pour tester

1 Like

Oups j’ai oublié de revenir vers toi.
Pour “faciliter” l’intégration, au moins des tests, des périphériques Bluetooth, j’ai créé un petit outils “d’analyse” Bluetooth, et de test d’implémentation.
J’avais commencé cet outils pour un capteur Xiaomi, mais n’ayant pas le device, c’est assez compliqué de valider que tout fonctionne (bien que la communauté à fait tout son possible pour m’aider).
Je l’utilise actuellement pour tester mes devices AwoX et améliorer le futur service.

Voici l’outils :

Pour info, j’ai contacté le dev du script et il n’a pas su me donner des pistes pour le problème de récupération de données. Il a retesté sur un RPI zero W fraichement installé et tout fonctionne.
Il y a un moment que je voulais m’en prendre un, donc j’ai sauté le pas, réception mardi normalement. Je testerais et vous tiens au courant.

@euguu : Au top si tu arrives à intégrer directement le service dans Gladys, je testerais aussi.