Integration Mi Flora

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 « J'aime »

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 « J'aime »

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.

Je viens de recevoir mon RPI zero, du coup, je n’ai pas pu m’empêcher de tester le script :slight_smile: Cela fonctionne. Donc le problème vient bien de RPI3/4, après je ne m’y connais pas assez pour debugger les librairies plus en profondeur.

Je vais donc utiliser le pi zero comme passerelle et écrire les datas sur le serveur MQTT en ajoutant l’option du paramètre reporting_method = “Gladys” : une préférence sur la normalisation de la publication des données ?

Tu as le lien de la doc mqtt un peu plus haut

Intégration terminée.
J’ai update le script de Thom Dietrich, visible sur mon Git en attendant qu’il accepte la PR

Sur MQTT, ça donne ceci :

Sur Gladys :
image

Reste plus qu’à jouer avec les scènes :slight_smile:

Est ce que ça intéresserait un tuto sur le sujet ?

1 « J'aime »

Top tout ça, ça m’intéresse moi :slight_smile:

Cool ça, tu devrai inclure le lien de la doc gladys en anglais plutôt que le lien FR

C’est corrigé dans une nouvelle PR.

Je vais faire un draft rapidement.

1 « J'aime »

Voilà le tuto : [TUTORIEL] Monitorer ses plantes avec les capteurs Mi Flora

1 « J'aime »

j’ai commencer à regarder l’outil gladys-bluetooth-analyzer pour le parrot flower et le miflora qui remonte bien des mesures,
@AlexTrovato j’ai 2 questions:

  • si je veux intégrer ces 2 périphériques dans gladys je dois faire 1 fichier par périphérique comme ce qui est fait pour le zigbee ou il faut répartir le code autrement ?
  • est il nécessaire de réécrire le code de récupération des données intégralement ou peut on utiliser les lib npm qui existe déjà pour ces produits ?

C’est pas plutôt générique côté Bluetooth ?

C’est pas prévu encore :confused:
Il faut trouver l’endroit où (et comment) déterminer que tel périphérique Bluetooth est compatible avec telle manière de communiquer.
Ou creer un nouveau service qui réutilise le service Bluetooth si c’est vraiment spécifique.