[Résolu] PB pour flash un Sonoff via ESPHome

Mon problème → je suis débutant pas très doué :face_with_raised_eyebrow:

Je souhaite flasher mon Sonoff 4CH Pro R3 pour l’intégrer dans HA.

Coté matos : j’ai branché mon Sonoff,(après avoir soudé les pins) sur une carte UART et le tout sur le port USB du PC. J’ai suivi ce tuto pour qu’il passe en mode « maintenance » tuto flash (lien externe).

Ensuite les étapes que j’ai suivi dans le le tuto de @McFly Tuto ESPHome
Il y a sans doute eu qques évolutions car je ne retrouve pas exactement ce qui est écrit :
ex : il n’est pas proposé de mdp pour OTA (mais il y en a eu un par défaut dans le .yaml)

Ensuite je vais sur les « … » et je clique sur Validate (le fichier est bien créé : INFO Configuration is valid!
En bas je n’ai que ce choix :
image
Et quand je vais sur les « … », je n’ai pas « Compil » mais :
image

Je suis donc bloqué ici.

Testé 2x : en le branchant sur le PC puis directement sur le Rasberry

Ma configuration

___
## System Information

version | core-2022.10.1
-- | --
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
user | root
virtualenv | false
python_version | 3.10.5
os_name | Linux
os_version | 5.15.61-v8
arch | aarch64
timezone | Europe/Paris
config_dir | /config

<details><summary>Home Assistant Cloud</summary>

logged_in | false
-- | --
can_reach_cert_server | ok
can_reach_cloud_auth | ok
can_reach_cloud | ok

</details>

<details><summary>Home Assistant Supervisor</summary>

host_os | Home Assistant OS 9.0
-- | --
update_channel | stable
supervisor_version | supervisor-2022.09.1
agent_version | 1.3.0
docker_version | 20.10.17
disk_total | 27.8 GB
disk_used | 3.9 GB
healthy | true
supported | true
board | rpi4-64
supervisor_api | ok
version_api | ok
installed_addons | Duck DNS (1.15.0), File editor (5.4.1), NGINX Home Assistant SSL proxy (3.1.5), ESPHome (2022.9.4)

</details>

<details><summary>Dashboards</summary>

dashboards | 1
-- | --
resources | 0
views | 1
mode | storage

</details>

<details><summary>Recorder</summary>

oldest_recorder_run | 28 septembre 2022 à 19:52
-- | --
current_recorder_run | 7 octobre 2022 à 18:34
estimated_db_size | 62.95 MiB
database_engine | sqlite
database_version | 3.38.5

</details>

Il me semble que la compil se fait lors de install.
Pour ma part, je fais « validate » et si c’est ok je fais « install ».
La procédure de compil se fait pendant install, juste avant uploading sur mes esp32.

Suite à ton message j’ai testé.

Après un clic sur Install, j’ai ceci :
image

Donc je vais sur Plug on your computer. Ça tourne et j’ai ça :
image

Je peux DL un .bin quand je clique sur Dowload project.

Mais rien de plus malheureusement.

Es tu sur que tu as bien flashé ? Car je crois voir tx vers tx et rx vers rx sur ton image, normalement c’est tx vers rx et rx vers tx ?

En effet, j’ai donc inversé les branchements.

(je m’étais basé sur la photo de cette page à la base https://esphome.io/devices/sonoff_4ch.html )

J’ai donc utilisé ESPHome flasher
en fichier source, j’ai mis le .bin

Bref j’ai ceci :

Using 'COM5' as serial port.
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again.. %)Writing at 0x00071044... (100 %)Wrote 478624 bytes (337674 compressed) at 0x00000000 in 7.7 seconds (effective 495.7 kbit/s)...
Hash of data verified.

Leaving...
Hard Resetting...
Hard resetting via RTS pin...
Done! Flashing is complete!

Showing logs:

Quand je clique sur Views logs :

Using 'COM5' as serial port.
Unexpected error: could not open port 'COM5': PermissionError(13, 'Accès refusé.', None, 5)

J’ai banché mon ensemble sur le Raspberry via port USB.
Il apparait en "Online " dans ESPHome.

HA détecte un nouvel élément, c’est une avancée.
J’ai donc mis la clé de chiffrement visible dans le log

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sonoff-Cellier Fallback Hotspot"
    password: "xxx"

Il est donc reconnu.(mais est repassé en Offline quand je vais dans ESPHome, je ne sais pas si c’est normal).

J’ai retiré mon branchement et testé le Sonoff sur le 230V, et la aucune LED s’allume (je ne l’avais jamais branché avant…), je ne sais donc pas si il est opérationnel, ou vu que j’ai commencé qques manips, c’est normal qu’il ne s’allume plus…

Plus j’avance, moins je sais quoi faire.

Salut,
quand tu le branche sur le 230V, après 1 min, tu peux le trouver sur ton routeur avec une IP?

Le fait qu’il passe en offline dans ESPHome c’est normal, mais il aurait dû repasser en online après quelques secondes.

Pourquoi tu as fait un screenshot de la config du SSID de fallback?

A vrai dire je ne sais plus top …

Tu as raison , je l’ai rebranché et j’ai trouvé son adresse IP :sweat_smile: il est pas mort, c’est déjà ça !
Je ne sais pas quoi en faire, mais il est visible.

Ma question suivante : comment puis-je lui injecté du code ?
Je dois le rebrancher en direct sur mon PC, et j’aimerai lui filer le code du Step5 de cette page.https://esphome.io/devices/sonoff_4ch.html
(en espérant ne pas griller des étapes avant)

Salut,

une fois que tu as flashé un premier firmware EspHome, que tu as le module dans EspHome et qu’il est visible, tu peux charger une nouveau firmware sans fil, en utilisant l"option « Wirelessly » de install.
Tu n’as plus du tout besoin de le débrancher, ça marche assez bien.

Ah , ça c’est une bonne nouvelle.

Ça a fonctionné

...
[23:23:21][D][api.connection:861]: Home Assistant 2022.10.2 (192.168.0.10): Connected successfully

Citation
Rendez vous dans ESPHome, vérifier que votre matériel est bien connecté puis faites EDIT. Coller votre code ou celui qui vous est donné dans les articles, remplacer bien les infos de connexion Wifi par les vôtres au besoin.
Valider votre configuration, si elle est OK alors cliquer sur UPLOAD,

Maintenant si je suis le tuto, je peux faire ceci avec le bout de code du Step 5 donné plus haut j’imagine ?
De ce que je comprend, j’édite le fichier sonoff-cellier.yaml
Et je colle tout mon code à la suite ?

Désolé de mes questions de débutant.

Dans l’interface de EspHome tu vois toute tes modules, j’imagine que t’en vois qu’un seul qui s’appelle sonoff-cellier.
Tu vas sur edit et c’est le code de ton sonoff.
Si tu le change, que tu sauve et clique sur Install>wirelessly, ça v le compiler et l’envoyer sur ton esp.
Faut bien s’assurer de garder les parties principales du début pour gérer le nom les mots de passe et le wifi…
mais toute la partie du bas qui contient la config des plateformes, les entités et la logique, tu la changer comme tu veux.

1 « J'aime »

Je pensais que c’était ça mais j’avais des doutes alors je n’osais pas.
C’est donc opérationnel de ce coté là, je peux le gérer via HA. :champagne:
Merci !

Pour être parfait pour moi, je souhaiterais pouvoir activer les boutons manuellement (comme à l’origine) en plus de HA.
(car les boutons sont inopérant maintenant).
Vu que moi et Python, ça fait 2 je ne sais pas quel code est à rajouter.

Ca tombe bien, EspHome c’est absolument pas du python :rofl: c’est du yaml et du C

Il va falloir regarder la doc des binary_sensor de esphome.
Les boutons sont définis dans le code de ton « step 5 ».
Il faut rajouter des actions sur les boutons pour qu’ils changent l’état des relais.

Y’a un exemple de « on_press » dans la doc:

Ah oui… merci de l’info ^^

Bon j’ai repiqué un autre bout de code puis modifié le mien, et ça loupe pas, il y a 2 erreurs que je ne pige pas.

Il ne veux plus de la 1ère ligne, que je n’ai pas touché et un tiret ligne 33 c’est là :
image

Message d’erreur en voulant faire l’installation :

INFO Reading configuration /config/esphome/sonoff-cellier.yaml...
ERROR Error while reading config: Invalid YAML syntax:

while parsing a block collection
  in "/config/esphome/sonoff-cellier.yaml", line 32, column 3:
      -  platform: gpio
      ^
expected <block end>, but found '<block mapping start>'
  in "/config/esphome/sonoff-cellier.yaml", line 33, column 5:
        pin:
        ^

Et mon fichier entier:

esphome:
 name: sonoff-cellier

esp8266:
 board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
 encryption:
   key: "fFIRtDaYvrdPobL8W/9+5sJ1louWLA5fjbBaCUZeN54="

ota:
 password: "73095fa31f6f491eb6ba51d22166cff9"

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

 # Enable fallback hotspot (captive portal) in case wifi connection fails
 ap:
   ssid: "Sonoff-Cellier Fallback Hotspot"
   password: "dqa3R09lImHB"

captive_portal:


binary_sensor: 
 -  platform: gpio
   pin:
     number: GPIO0
     mode: INPUT_PULLUP
     inverted: True
   on_press:
     - switch.toggle: "relay_1"
 - platform: gpio
   pin:
     number: GPIO9
     mode: INPUT_PULLUP
     inverted: True
   on_press:
     - switch.toggle: "relay_2"
 - platform: gpio
   pin:
     number: GPIO10
     mode: INPUT_PULLUP
     inverted: True
   on_press:
     - switch.toggle: "relay_3"
 - platform: gpio
   pin:
     number: GPIO14
     mode: INPUT_PULLUP
     inverted: True
   on_press:
     - switch.toggle: "relay_4"


 - platform: gpio
   pin:
     number: GPIO0
     mode:
       input: true
       pullup: true
     inverted: true
   name: "Bouton 1 Sonoff Cellier"
 - platform: gpio
   pin:
     number: GPIO9
     mode:
       input: true
       pullup: true
     inverted: true
   name: "Bouton 2 Sonoff Cellier"
 - platform: gpio
   pin:
     number: GPIO10
     mode:
       input: true
       pullup: true
     inverted: true
   name: "Bouton 3 Sonoff Cellier"
 - platform: gpio
   pin:
     number: GPIO14
     mode:
       input: true
       pullup: true
     inverted: true
   name: "Bouton 4 Sonoff Cellier"
 - platform: status
   name: "Statut Sonoff Cellier"

switch:
 - platform: gpio
   name: "Relay 1"
   pin: GPIO12
   id: "relay_1"
 - platform: gpio
   name: "Relay 2"
   pin: GPIO5
   id: "relay_2"
 - platform: gpio
   name: "Relay 3"
   pin: GPIO4
   id: "relay_3"
 - platform: gpio
   name: "Relay 4"
   pin: GPIO15
   id: "relay_4"

output:
 # Register the blue LED as a dimmable output ....
 - platform: esp8266_pwm
   id: blue_led
   pin: GPIO13
   inverted: true

light:
 # ... and then make a light out of it.
 - platform: monochromatic
   name: "LED bleu Sonoff Cellier"
   output: blue_led

Je dirais que ça vient de l’indentation de ton premier - platform: gpio
Un espace en trop ça change tout en yaml

corrigé, mais maintenant toute cette section est rouge.

image

J’ai piqué le code ici https://www.esphome-devices.com/devices/Sonoff-4CH-Pro-R2

à partir de `

# Device Specific Config

Ca te le dit ans le message d’erreur… des binary_sensor doivent avoir au moins un nom ou un ID pour gérer les event type on_press (je ne sais pas pour quelle raison)

Moi non plus, et dans la page d’explication que tu m’as donné, le on_press n’en a pas non plus.

binary_sensor:
  - platform: gpio
    # ...
    on_press:
      then:
        - switch.turn_on: relay_1

En fait c’est écrit dans la doc générale des sensor, qu’il faut l’un ou l’autre au minimum

Bonsoir

Il faut ajouter

name: nomduswitch

entre - platform: gpio et pin:

C’est ce que j’ai sur le code de mon shelly esp