Flash prise connectée Tuya - base KS-501

Bonjour à tous,

Depuis ma bascule de la plateforme Smartlife vers Home Assistant, il me reste encore quelques équipements wifi « Tuya » que je souhaiterai conserver mais à la condition de les détacher du cloud Tuya.

Je viens d’installer Ubuntu sur un PC afin d’installer Tuya-convert pour un flash en OTA (en exploitant un faille du firmware). J’arrive à générer le wifi « vtrust-flash », à m’y connecter avec un téléphone, mais impossible de flasher ma prise connectée KS-501 lorsque je la mets en appairage.
J’ai un message d’erreur sur le paquet « Cryptodome » qu’il n’arrive pas à charger (même en chargeant les paquets python3 dans un venv).
Soit ça vient de là, soit la prise a reçu la mise à jour corrective de Tuya qui comble la faille et donc plus possible de flasher en OTA.

Bref, je regarde maintenant du côté du flash via le serial.
J’ai ouvert la prise. J’arrive à identifier les pins TX, RX, GND et 3V3. En revanche, j’ai un doute sur le GPIO0.

Je n’ai accès qu’à un seul côté du circuit. Pour accéder à l’autre côté, il faut dessouder les fiches de la prise et j’ai pas vraiment envie de me lancer là dedans.

Est-ce que le flash pour être réalisé tel quel en soudant des connecteurs sur les pins entourés ou bien faut-il nécessairement atteindre l’autre côté du circuit imprimé ?

Merci à vous.

Bonjour,
le gpio00 c’est le bouton, d’après Tasmota:

1 « J'aime »

Merci pour cette précision !

Et ça fonctionne très bien ! J’ai pu flasher cette prise avec ESPhome en me servant d’un fichier de configuration d’une prise assez similaire (une Sonoff S20 dont les GPIO exposés sont identiques).

J’ai pu insérer des connecteurs Dupont mâle dans les trous TX, RX et V3V (ceux qu’on voit en haut à droite sur la photo). En revanche, pour le Gnd je me suis servi d’un bras articulé (celui d’un poste à souder) pour maintenir le fil du connecteur sur le port Gnd, car la flemme de souder !
Un peu sport, surtout pour brancher l’interface CH340 et maintenir le bouton (GPIO0) pour le reset avant le flash. Mais ça a fonctionné.

La prise est reconnue instantanément avec ESPhome sous Home Assistant. Les entités sont bien exposées et la latence lors de l’appui des boutons extrêmement faible. D’ailleurs, il y a une entité « appui sur bouton » qui permet de savoir lorsque la prise a été activée/désactivée via le bouton physique ! J’avais jamais vu ça sous Tuya/Smartlife.

Au final, je pense que le plus dur aura été le démontage plus que fastidieux de cette prise pour accéder aux composants électroniques… :sweat_smile:

Bravo !!!
J’avais même pas pensé à la passer en esphome :disguised_face:

je sais ce qu’il me reste à faire !!!


et voila la photo du connecteur par en dessous.
V=+3.3V

1 « J'aime »

Merci pour cette précision !
J’ai déjà flashé les 4 prises… Si j’avais su !
Ça rend l’opération encore plus facile, sans besoin de souder des fils, de savoir que la borne G était accessible à côté des autres TX RX et 3.3V.

et voila le fichier de configuration espHome
au boot, le voyant clignote en rouge et s’éteint quand le wifi est connecté.
le voyant vert s’allume quand la prise est activée.

La connexion est également possible en http sur la prise directement.
Update firmware via OTA.
n’utilise plus Tuya.

substitutions:
  long_devicename: Prise Ks-501

esphome:
  name: ks-501-02
  comment: Prise xxxxxxxx

esp8266:
  board: esp01_1m

# Enable logging
logger:

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

ota:
  password: !secret ota_password

captive_portal:

web_server:
  port: 80
    
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "$long_devicename Fallback Hotspot"
    password: !secret ap_password

# Device Specific Config
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    name: "$long_devicename Button"
    on_press:
      - switch.toggle: relay
  - platform: status
    name: "$long_devicename Status"

sensor:
  - platform: wifi_signal
    name: "$long_devicename WiFi Signal"
    update_interval: 60s

switch:
  - platform: gpio
    name: "$long_devicename Relay"
    pin: GPIO12
    id: relay

status_led:
  pin:
    number: GPIO13
    inverted: true

button:
  - platform: restart
    name: "$long_devicename Reboot"
1 « J'aime »