Flasher un shelly (1) avec ESPHome

Article très rapide pour mettre ESPHome sur un Shelly 1 (s'applique aussi pour les autre Shelly, mais je n'ai que des 1).

Alors première étape: Sortez votre fer à souder, puis rangez le! On en aura pas besoin aujourd'hui. Donc la première étape, c'est de flasher Tasmota sur le Shelly. (Mais attend! tu nous parle de Tasmota alors que le titre parle d'ESPHome! Arnaque!) Non, on va juste se servir de Tasmota pour flasher ESPHome sur le shelly, car ils ont un superbe outil pour le faire :) .

Flash de Tasmota

Cela servira de plateforme pour mettre notre code ESPHome. Pour cela, allez sur le site: https://github.com/yaourdt/mgos-to-tasmota et trouvez le lien pour votre modèle de shelly (ici le 1):

Dans ce lien, remplacez shellyip par l'adresse ip de votre Shelly. Pour l'exemple:

http://192.168.1.25/ota?url=http://dl.dasker.eu/firmware/mg2tasmota-Shelly1.zip

Rentrez cette IP dans votre navigateur, cela lancera l'installation de tasmota sur le shelly. Attendez 2 minutes puis cherchez le réseau wifi généré par le shelly, il aura le nom: tasmota-xxxx . Entrez les informations de votre réseau wifi et laissez le redémarrer.

Flash d'ESPHome

Entrez l'adresse IP de votre shelly dans votre navigateur. Vous devriez tomber sur la page suivante:

Cliquez sur Firmware Upgrade.

Cliquez sur Choose File et sélectionnez le fichier ESPHome a flasher (voir chapitre suivant si vous n'en avez pas de prêt). Enfin, cliquez sur Start upgrade. Après un moment, le shelly sera a nouveau connecté a votre Wifi et ESPHome le verra. Vous verrez dans l'interface que votre shelly est vert:

Préparer son fichier ESPHome

Sur l'interface ESPHome, on crée un nouveau device en cliquant sur le + en bas a droite.

On lui donne un nom, un SSID (si possible le votre). Dans la fenêtre d'après, on sélectionne ESP8266. Et on fini la création du fichier.

Et maintenant on va modifier le fichier pour l'adapter au shelly 1. Ouvrez le fichier en appuyant sur le bouton EDIT puis remplacez le contenu par ce code:

# Basic Config
esphome:
  name: shelly_1
  platform: ESP8266
  board: esp01_1m

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

logger:
api:
ota:

# Device Specific Config
output:
  - platform: gpio
    pin: GPIO4
    id: shelly_1_relay

light:
  - platform: binary
    name: "Shelly 1 Light"
    output: shelly_1_relay
    id: lightid

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
      #mode: INPUT_PULLUP
      #inverted: True
    name: "Switch Shelly 1"
    on_state:
      then:
        - light.toggle: lightid
    internal: true
    id: switchid

Ce code est la base a utiliser.

D'autre sensors peuvent être ajoutés a ce code, pour exemple, mon shelly 1 pour mon imprimante 3D:

# Basic Config
substitutions:
  device_name: "Imprimante"
  
esphome:
  name: rostock_max
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Imprimante power Fallback Hotspot"
    password: !secret fallback_password

captive_portal:

logger:
api:
ota:

# Enable Web server (optional).
web_server:
  port: 80

# Device Specific Config
output:
  - platform: gpio
    pin: GPIO4
    id: shelly_1_relay

switch:
  - platform: output
    name: ${device_name} Switch
    output: shelly_1_relay
    id: lightid

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
      #mode: INPUT_PULLUP
      #inverted: True
    name: ${device_name} Switch
    on_state:
      then:
        - switch.toggle: lightid
    internal: true
    id: switchid
    
# Sensors with general information.
sensor:
  # Uptime sensor.
  - platform: uptime
    name: ${device_name} Uptime

  # WiFi Signal sensor.
  - platform: wifi_signal
    name: ${device_name} WiFi Signal
    update_interval: 60s

# Text sensors with general information.
text_sensor:
  - platform: wifi_info
    ip_address:
      name: ${device_name} IP

J'utilise des variables pour assigner les noms du device, et j'ai des sensors pour l'uptime, l'adresse IP et la force du signal wifi. J'ai aussi activé l'interface web pour pouvoir le contrôler directement si besoin.

Une fois le code prêt, il suffit de le télécharger pour l'uploader sur le shelly (seulement la première fois, après on pourra utiliser l'OTA pour les mises à jour).

On clic sur Install puis sur Manual Download qui permet d'obtenir le fichier .bin.

Et là on continue avec les instructions du chapitre précédent.

Quelques liens utiles:

Voilà, j'espère que cet article vous est utile. De mon côté j'ai flashé mes 3 shelly 1 avec ESPHome depuis maintenant 2 mois et je n'ai décelé aucun problème.

N'hésitez pas a me faire part de votre expérience :)

A bientôt!