Nouveau projet mi flora

Méa culpa, désolé. Je vais relire tout ça. En effet je suis au taf là, j’ai pas tout regardé précisement !
En fait il y a des liens, mais pas de procédure pas à pas sur comment installer les ESP32, installer ESP Home, dans quel ordre, etc.
Je vais regarder tous les fils de messages tranquillement ce soir.

Installer, utiliser ESPHome:

Firmware Bluetooth Proxy:

Tu installe ESPHome, puis flash ton esp avec le firmware bluetooth proxy , puis tu intègre les mii flora avec l’intégration Xiaomi BLE.

Bon c’est le bordel !
Je suis le tuto, je crée un Mi Flower 1 et je me retrouve avec un truc comme ça !

J’ai recommencé, c’est bon.
Impossible de me connecter sur mon Wifi, il a fallu que j’en choisisse un autre.

Bon, ça me soule !
Je suis le tuto, je crée un Mi Flower 1 puis, je crée. Il me détecte ensuite un ESPHome Web 52d110 puis j’installe Bluetooth Proxy et il trouve un troisième truc !
Bref…

J’avais un peu peur que ce soit imbitable… Et ben ça l’est !

Pourquoi il faut faire INSTALL puis PREPARE FOR FIRST USE sinon pas de wifi sans la préparation ?
Pourquoi on crée un ESP device mais lorsque l’on flash tout, le premier créé est perdu et on a le nom que le système crée (on n’a pas le chois, il s’appelle Bluetooth Proxy 52d110)

En fait j’ai l’impression qu’il suffit juste d’aller sur cette page et de flasher le bluetooth proxy :

1> En fait je me prend la tête car j’aimerais nommer correctement ce périphérique et je n’y arrive pas, il s’appelle toujours esphome-web-52d110 et esp32-bluetooth-proxy-52d110 avec des fichiers yaml qui portent ces noms. Tant que j’en ai qu’un seul ça va, imagine si j’en ai 5 quel bordel pour s’y retrouver !
2> On ne peut pas avoir juste le bluetooth proxy ? On voit aussi systématiquement le ESP Home ? Donc deux périphériques à chaque fois ?

Autre question : ESP Home est l’OS de l’ESP32 et bluetooth proxy est un service qui tourne dessus et il peut y en avoir plusieurs (genre capteur de proximité par exemple) ? Ou j’ai pas compris un truc ?

Oui, tu as cette solution. Mais le firmware utilisé sur cette page est un ancien, mais n’empêche pas le fonctionnement. Puis de c’est manière tu n’auras pas ton esp dans le dashboard ESPHome.

Le mieux , tu installe ton esp dans le dashboard ESPHome et choisir le esp approprier dans les popositions avec la clé api créer et fait skip a la fin.

Tu vas dans secret en haut à droite et ajoute :

wifi_ssid: "SSID de ta box"
wifi_password: "ton mot de passe wifi"

Et sauvegarde.

Tu édites ton esp et vérifie, qu’il y a bien :

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Après tu le flash, avec le esp connecté en USB sur ton HA.

Après le flash, tu édites l’esp et modifie le code par celui du bluetooth proxy et tu reflash ton esp en OTA maintenant.

  - type: custom:card-templater
    entities:
      - counter.greenup_graph_day_offset_value
      - sensor.consommation_de_la_greenup
      - sensor.cout_de_la_consommation_de_la_greenup
    card:
      type: custom:apexcharts-card
      graph_span: 1d1
      span:

Quand je passais par la page de flash direct du Bluetooth proxy, alors je voyais quand même l’ESPHome. Mais je l’ai flashé de cette manière APRES avoir installé avec la procédure que tu donnes alors peut-être qu’il restait quelque chose sur la carte ? Normalement quand on flash on efface tout non ?
Mon système marchait mais je ne suis pas assez satisfait du résultat donc je n’ai pas été plus loin : je ne suis pas content du nom (celui du fichier yaml) que je ne peux pas choisir. Toi aussi t’as un nom de fichier yaml à la con comme celui que j’ai (esphome-web-52d110.yaml) ?
Visiblement oui, on ne doit pas pouvoir faire autrement (ton device s’appelle atom-bluetooth-proxy-ad7a6c), c’est ce nom qui est utilisé dans le yaml (sous /config/esphome) ?
Ce soir, je vais créer un nouveau sujet et faire un tuto pas à pas avec des captures d’écran, ça pourra aider tout le monde.
T’en pense quoi ?
Parce que là ce que j’ai fais en suivant le tuto : je crée un nouveau device, je le configure, je suis le tuto quoi !
Je vais jusque → 3.2 Flasher l’ESP (première fois)
Cliquer sur les 3 points, puis install, manual download, modern format. La compilation démarre.
Déjà là, ça commence à diverger, l’IHM n’est plus la même, le modern format est affiché (old). Après ça part en sucette, j’ai essayé plein de trucs, je ne pourrais pas te dire quoi, il faut que je reprenne tout ça avec des captures d’écran.
D’ailleurs dans le tuto, rien sur le Bluetooth proxy, c’est quand on édite qu’il faut ajouter un truc en yaml je pense, non ?

C’est quoi tu édites l’esp ? Comment ? On récupère quoi ?

Je suppose que cette dernière étape permet de mettre dans l’ESP le code esp modifié. A priori de ce que je comprend : le bluetooth proxy.
D’ailleurs le code ajouté par le tuto peut-être intéressant aussi : allumé / qualité du signal / restart / etc.

Problèmes rencontrés :

  1. Impossible de se connecter sur ma Freebox pop, je pense que c’est du Wifi 6 ou un truc du genre et l’esp ne peux pas s’y connecter. J’ai réussi à me connecter à un hotspot CPL (j’ai 2 CPL qui génèrent un hotspot wifi qui ne doit pas être en wifi 6). Je vais aller voir dans les paramètres de la Freebox s’il y a une case genre « compatibility ».
  2. Le nom du fichier yaml associé ne semble pas être modifiable (et donc pas celui que l’on choisi lorsque l’on crée un nouveau device). Voir plus haut, ça parait normal.
  3. Dans le tuto ce n’est pas noté et ici non plus : on install ESPHome mais comment installer Blutooth Proxy ? Visiblement voir le code ci-dessous.

A priori écrit dans la page (esp32_ble_tracker important ?)

esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms
    window: 1100ms
    active: true
bluetooth_proxy:
  active: true

Ajouter ? A quoi ça sert ? (j’ai vu ça dans une vidéo).

web_server:
  port: 80

Et aussi pour pouvoir le redémarrer et lire la qualité du signal :

binary_sensor:
    # statut
      - platform: status
        name: "Statut"

    sensor:
    # Qualité du signal
      - platform: wifi_signal
        name: "Signal Wifi"
        update_interval: 60s
    # Temps de fonctionnement
      - platform: uptime
        name: "Allumé depuis (s)"
        id: uptime_sec
       
    switch:
    # Bouton de redémarrage
      - platform: restart
        name: "Redémarrage"

    # Transformation des secondes en jours
    text_sensor:
      - platform: template
        name: "Allumé depuis (j)"
        lambda: |-
          int seconds = (id(uptime_sec).state);
          int days = seconds / (24 * 3600);
          seconds = seconds % (24 * 3600); 
          int hours = seconds / 3600;
          seconds = seconds % 3600;
          int minutes = seconds /  60;
          seconds = seconds % 60;
          return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };          
        icon: mdi:clock-start
        update_interval: 60s

Ces fichiers sont à mettre dans le yaml côté HA (accessible via Studio Code Server) ou c’est à mettre dans l’ESP32, ou en fait c’est la même chose et l’un est copié dans l’autre ?
Je commence à comprendre des trucs, pas tout encore.

dans le dashboard ESPHome, sur le ESP en question, le bouton édit.


Modifier le fichier YAML, par ce bouton edite et y mettre le code du firmware bluetooth proxy.

j’utilise package qui récupère le code du firmware bluetooth proxy sur le github directement.

exemple pour mon atom lite:

substitutions:
  name: m5stack-atom-lite-854638
  friendly_name: Bluetooth Proxy 854638
packages:
  esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/m5stack/m5stack-atom-lite.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: ekgwcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

sensor:
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    internal: true

  - platform: copy
    source_id: wifi_signal_db
    name: WiFi Signal
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "%"
    entity_category: "diagnostic"
    device_class: ""

  - platform: uptime
    id: uptime_sec
    update_interval: 60s
    internal: true

  - platform: internal_temperature
    name: "Internal Temperature"
    entity_category: "diagnostic"

switch:
  - platform: restart
    name: Restart
    entity_category: "diagnostic"

binary_sensor:
  - platform: status
    name: Statut
    entity_category: "diagnostic"

  - platform: gpio
    pin:
      number: 39
      inverted: true
    name: Button

text_sensor:
  - platform: template
    id: lite_uptime
    name: Uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

Les sensor et binary_sensor, je les ai ajoutés pour avoir des informations en plus qui ne sont pas fournies dans le code du firmware bluetooth proxy. À toi de voir si tu les veux ou pas.

il faut du wifi 2.4Ghz.

Si sur les 3 points puis rename hostname.

c’est à mettre dans le YAML du ESP, par le bouton édite dans le dashboard ESPHome.
Le fichier YAML, du ESP, c’est la configuration du firmware pour le compilé.

Super intéressant !!!
Je vais essayer tout ça ce soir.

A quoi ça sert ?
Est-ce pour les boutons ?
J’ai imprimé ça :


Ils servent à quoi ces boutons ?
C’est ça qu’on programme dans le yaml ? Ce que font les boutons si on appuie dessus ?

Oui, c’est pour un bouton, que dispose le atom lite.

Les boutons du tien, sont pour le RESET et BOOT. Ça sert pour RESET le ESP ou pour le passer en mode flash.
Tu dois pouvoir les utiliser.

Oui, tu peux les programmer dans le code du firmware pour t’en servir.

Comme quoi les logos sont bien foutus !

Bon, aller je commence le tuto.

Je vois bien le grand sur HA, mais il se déconnecte tout le temps !
Est-ce que c’est parce que je ne l’ai pas ajouté via l’application Flower Care ? Si tel est le cas, il va falloir encore ajouter des trucs sur le tuto qui n’est pas encore remis complètement en forme encore.

Je ne peux te confirmer, mais comme je te l’ai déjà dit. Sans l’ajouter à l’application flower care, mon HA ne le voyait pas. Donc, je l’ai ajouté à l’application et de suite après HA me la détecter.
Ensuite pas eu de problème de déconnexion.
Après, je ne m’en servais jamais de l’application.

Moi, je le vois dans HA. Mais beaucoup de déconnexion.
D’un autre côté il n’est assigné à aucune plante !

Tu as peut-être le signal faible. De mémoire, on a un sensor RSSI. En dessous de -90 rssi , c’est juste.

Dis moi, toi aussi tu as souvent (tout le temps) des capteurs qui ne répondent pas et affichent des erreurs ? Problème de cache ?

Jamais eu de soucis. Je n’utilise plus les mii flora, je les ai utilisés 1 an 1/2 et jamais eu de problème.
J’avais un bluetooth proxy a 3m max, des mii flora.

j’utilisais la carte MiFlora card

Disons que parfois tout est bon et puis parfois j’ai pas d’information.
Et parfois sur une partie seulement des mesures d’un capteur (genre la conductivité par exemple).
Le grand a l’air de moins bien répondre.
J’ai une évolution pour toi sur le code :

# Transformation de la durée d'utilisation en texte
text_sensor:
  - platform: template
    id: lite_uptime
    name: "Allumé depuis"
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days > 3650 ) {
        return { "Démarrage" };
      } else if ( days ) {
        return { (to_string(days) +"d " + to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( hours ) {
        return { (to_string(hours) +"h " + to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else if ( minutes ) {
        return { (to_string(minutes) +"m "+ to_string(seconds) +"s ").c_str() };
      } else {
        return { (to_string(seconds) +"s ").c_str() };
      }
    icon: mdi:clock-start
    update_interval: 60s
    entity_category: "diagnostic"

Avec if ( days > 3650 ) on vérifie le démarrage parce qu’il affiche un nombre de jour ahurissant au démarrage. Ceci évite des affichages farfelus.