Vérifier si des devices ESP nécessitent une mise à jour

Bonsoir tout le monde,

Toujours dans l’idée d’avoir sur mon dashboard un encart avec toutes les mises à jour en attente, j’ai voulu me créer un sensor pour vérifier si l’un de mes devices ESP32/8266 nécessite une mise à jour.

J’ai l’impression que j’ai créé une usine à gaz pour pas grand chose et je suis sur qu’il y a une manière beaucoup plus simple pour le faire…

Pour autant, voici comment j’ai procédé.

Création d’un sensor avec la dernière version d’ESPhome avec un scrape…

- platform: scrape
  resource: https://github.com/esphome/esphome/releases/latest
  name: ESPHome latest version (Github)
  select: '#repo-content-pjax-container > div > div > div.Box-body > div.d-flex.flex-row.mb-3 > div.flex-1 > h1'

Puis, je compare par rapport à la version de l’ESP (récupérée via platform: version dans la configuration) en créant un binary sensor qui passe à « on » si l’un des ESP

- platform: template
  sensors:
    esp_device_update:
      friendly_name: Mise à jour ESP
      value_template: >-
          {{ states('sensor.esp32_mini_node1_esphome_version').split(" ")[0] != states('sensor.esphome_latest_version_github')
             or states('sensor.esp32_mini_node2_esphome_version').split(" ")[0] != states('sensor.esphome_latest_version_github')
             or states('sensor.esp32_mini_node3_esphome_version').split(" ")[0] != states('sensor.esphome_latest_version_github')
             or states('sensor.esp32_node2_esphome_version').split(" ")[0] != states('sensor.esphome_latest_version_github')
             or states('sensor.esp_linky_esphome_version').split(" ")[0] != states('sensor.esphome_latest_version_github')
          }}

Résultat dans mon dashboard (en vert quand mise à jour en attente, donc quand « binary_sensor.esp_device_update » = on).

type: custom:button-card
size: 60%
icon: mdi:chip
name: ESPHome
styles:
  card:
    - background-color: |
        [[[ 
          if (states['binary_sensor.esp_device_update'].state == 'on')
            return 'green';
          else
            return 'none';
        ]]]

Est-ce que vous voyez un moyen plus simple pour faire cela ou est-ce une solution « robuste » selon vous ? Merci

Salut.
La question est un peu hors sujet mais de ce que je vois avec esphome, la mise à jour n’en est pas une du point de vue du device. Si les fonctionnalités marchent avec la version X la version Y qui ajoute tel ou tel support n’à pas vraiment d’importance. Du coup est ce la bonne pratique de tout rebuilder et flasher à chaque fois ?
Additionnellement, il y a une fonction de flash all pour refaire d’un coup sur tous les devices. Ça vaut la peine de vérifier 1 à 1 dans ce cas ?

1 « J'aime »