ESPHome - nouveau paramètrage OTA et http

Comme le dit @WarC0zes preneur de la solution car même si j’ai pas beaucoup de devices (juste 16) cela permet de faire autrement et d’apprendre autre chose aussi

Par contre sur mes BLE Proxy j’ai toujours des emmerdes sur la mise à jour OTA !! et je ne sais pas d’où cela vient ce petit caillou dans la chaussure :slight_smile:

Salut,
j’ai du ajouter le code:

ota:
  - platform: esphome

dans le YAML du bluetooth proxy. Car ca récupère pas sur le fichier source ( packages ) la configue du ota.

packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/m5stack-atom-lite.yaml@main
substitutions:
  name: atom-bluetooth-proxy-ad7a6c
  friendly_name: Bluetooth Proxy ad7a6c
packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/m5stack-atom-lite.yaml@main
esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0
  name_add_mac_suffix: false
  project:
    name: esphome.bluetooth-proxy
    version: "1.0"


api:
  encryption:
    key: in4/0Ffpxxxxxxxxxxxxxxx


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

ota:
  - platform: esphome

Un bug ???
pourtant c’est bien sur le fichier source du package:

J’ai un code similaire enfin je crois :slight_smile: :

substitutions:
  name: "ble-amis"
  friendly_name: "BLE Amis"
  board : "wemos_d1_mini32"

packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
  project:
    name: esphome.bluetooth-proxy
    version: "1.0"

esp32:
  board: ${board}
  framework:
    type: esp-idf

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption_key

# Allow Over-The-Air updates
ota:
  - platform: esphome
    password: !secret ota_password

Le password: est pas obligatoire.
essaye de supprimer la ligne du password et mets a jours.

Il est bien là le password !
Tu veux dire en claire mais c’est relou ça car sur les autres ESP (autre que BLE) ça passe

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0

rajoute min_version: 2024.6.0 pour les bluetooth proxy et teste avec un mot de pass configue pour le ota.

Toujours le même soucis de mot de pass !!

ERROR ESP requests password, but no password given!

ça fait Deux version en gros que je reflash un à un les ESP pour que cela passe :frowning:
Je sais pas où ça merde
Je vais tester sans mettre de MDP sur un et attendre la prochaine mise à jour

Bonjour,

Donc pour cette fois il faut bien passer dans tous les fichiers esphome_xyz.yaml pour ajouter cette ligne ?
Bob

1 « J'aime »

Bonjour,

Chez moi, suite à la maj et à la modif one-wire et donc dallas, je n’ai plus de remonté de température sur mes ESP32 équipé de sondes DS18B20.

one_wire:
  - platform: gpio
    pin: GPIO14

sensor:
  - platform: dallas_temp
    address: 0xbf7a6g181e72ff28
    name: "Sonde 1"
    id: sonde_1

Dans les logs leurs adresses remontent bien et n’ont pas changé, mais rien à faire, aucune info ne remonte depuis…

[15:24:53][C][dallas.temp.sensor:029]: Dallas Temperature Sensor:
[15:24:53][C][dallas.temp.sensor:034]: Address: 0xbf7a6g181e72ff28 (DS18B20)
[15:24:53][C][dallas.temp.sensor:035]: Resolution: 12 bits
[15:24:53][C][dallas.temp.sensor:036]: Update Interval: 60.0s

J’ai d’autre ESP (D1 Mini) avec les mêmes sondes et la modif est passée sans problème, seuls mes trois ESP32 WROOM Devkit ne veulent plus rien savoir. Un reboot n’a rien changé…

Après recherche, j’ai trouvé ce post sur github :

Et après avoir rajouté le composant externe tout refonctionne :hot_face: :hot_face: :hot_face:

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/esphome
      ref: onewire
    components: [ gpio ]
    refresh: 1min

Je pense que ça peut servir en attendant un MAJ qui corrige ce problème !

:wink:

Ha la oui au moins une fois.
Et ensuite dans ton common tu pourras faire d’autres includes pour les sensors ou Switch commun a tous tes esp histoire de ne jamais avoir plus deux choses répétés entre tes fichier yaml.
Perso si j’écris 3 fois la même choses, je fais un include.

Finalement, faut quand même soit rajouter la ligne include, soit celle pour le OTA c’est fois ci.
Je ferais un essai du include sur des esp que j’ai pas mis a jour encore :wink:

1 « J'aime »

une fois qu’on a validé qu’il n’y a pas d’erreur dans les .yaml, on peut lancer un script qui lance les mise à jour des esp, c’est un peu moins fastidieux …

J’en est que 6, je le fais tranquillement :wink:

1 « J'aime »

attention, le fichier a un « . » devant :slight_smile:

de mon coté, j’ai tout intégré au max dans des includes afin de ne pas faire 50 fois la même chose, un peu comme les déglutering card :slight_smile:
voici en image le fichier avec son « . » devant
image

et le contenu de celui ci (les liens, c’est si jamais une partie de la section ne fonctionne plus, pas la peine de passer 3 jours a chercher ) :slight_smile:

le fichier .common.yaml :

---
esphome:
  name: ${name_device}

# WiFi Component: https://esphome.io/components/wifi.html
wifi:
  networks:
      ssid: ${name_ssid}
      password: ${password_ssid}
      hidden: false
  manual_ip:
    static_ip: ${value_static_ip}
    gateway: !secret manual_ip_gateway
    subnet: !secret manual_ip_subnet
    dns1: !secret manual_ip_dns1
  ap:
    ssid: FB_${name_device} 
    password: !secret fallback_password

# Logger Component: https://esphome.io/components/logger.html
logger:
  level: ${logger_level}

# Web Server: https://esphome.io/components/web_server.html
web_server:
  local: true
  port: 80

# Native API Component: https://esphome.io/components/api.html
api:
  encryption:
    key: !secret api_key

# OTA Update Component: https://esphome.io/components/ota.html
ota:
  - platform: esphome
    password: !secret ota_password

# Time: https://esphome.io/components/time.html
time:
  - platform: homeassistant
    id: homeassistant_time

# Status Binary Sensor: https://esphome.io/components/binary_sensor/status.html
binary_sensor:
  - platform: status
    name: "${name_device}_Status"

# Restart Button: https://esphome.io/components/button/restart.html
button:
  - platform: restart
    name: "${name_device}_Restart"

sensor:
  - platform: wifi_signal
    name: ${name_wifi_signal}
    id: wifi_signal_db
    update_interval: 60s
  - platform: uptime
    name: ${name_uptime}

et le fichier d’une prise Sonoff par exemple :

substitutions:
# ne pas modifier
  logger_level: DEBUG
  value_manual_ip: !secret value_manual_ip
  name_wifi_signal: ${name_device}_WiFi_Signal
  name_uptime: ${name_device}_Uptime

# a modifier
  name_device: sonoff_prise_tele
  name_ssid: !secret wifi_automation
  password_ssid: !secret wifi_automation_password
  value_static_ip: ${value_manual_ip}46

##################################### special a la carte
  name_switch: ${name_device}_Switch
  name_binary_sensor: ${name_device}_Binary_Sensor
  name_led: ${name_device}_Led
  name_status: ${name_device}_Status
##################################### special a la carte

<<: !include .common.yaml

esp8266:
  board: esp01_1m
  board_flash_mode: dout

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    name: ${name_binary_sensor}
    on_press:
      - switch.toggle: button_1
  - platform: status
    name: ${name_status}

switch:
  - platform: template
    name: ${name_switch}
    optimistic: true
    id: button_1
    turn_on_action:
    - switch.turn_on: relay_1
    - light.turn_on: led_1
    turn_off_action:
    - switch.turn_off: relay_1
    - light.turn_off: led_1
  - platform: gpio
    id: relay_1
    pin: GPIO12

output:
  - platform: esp8266_pwm
    id: basic_green_led
    pin:
      number: GPIO13
      inverted: True

light:
  - platform: monochromatic
    name: ${name_led}
    output: basic_green_led
    id: led_1

avec ça, tu n’as que la conf spécial a ta carte a faire, le reste, c’est deja fait :slight_smile:

4 « J'aime »

ah oui, c’est pour cacher le fichier. J’avais pas vu le tip dans la doc.

Tip

To hide these base files from the dashboard, you can

  • Place them in a subdirectory (dashboard only shows files in top-level directory)
  • Prepend a dot to the filename, like .base.yaml

oh, futé le lapin !!!

:slight_smile:
c’est comme le secret de ESP… pourquoi avoir 2 fichiers secret…

un simple include suffit

<<: !include ../secrets.yaml
1 « J'aime »

Aujourd’hui l’OTA, hier le sensor reset_reason, avant hier le switch reboot_safe (que j’utilise souvent quand une esp refuse une maj ota par exemple).
Tu y verras tellement d’avantages :two_hearts:

1 « J'aime »

Je viens de mettre en place le common.yaml pour l’instant sur 2 ESP et c’est top.
Un grand Merci, cela me fait progresser dans la simplification au quotidien.
J’ai mis quelques minutes à comprendre qu’il fait mettre les variables communes dans le fichier secrets.yaml.
Edit : oups sur le 2ème forcément le password OTA n’est pas le bon, puisque j’ai mis en variable celui du 1er, il va falloir le gérer individuellement car j’ai pas accès à tous mes ESP pour les reprogrammer en usb :sweat_smile:
Edit 2 : Vive les sauvegardes de config :grinning: , j’ai retrouvé l’ancien password et grâce à ceci, une partie dans le common.yaml, l’autre dans le ymal du device, cela fonctionne
https://esphome.io/components/ota/esphome.html#updating-the-password

esphome:
  on_boot:
    - lambda: |-
        id(my_ota).set_auth_password("New password");

ota:
  - platform: esphome
    id: my_ota
    password: "Old password"
1 « J'aime »

je t’en prie, c’est fait pour :slight_smile: