Intro
J’utilise depuis longtemps des ESP32 ou ESP01 flashés avec ESP HOME. Ces petites bestioles sont très pratiques pour des petites conceptions DIY. Cependant celles-ci sont dépendantes du WIFI qui en terme de fiabilité et de disponibilité peut faire mieux.
Dernièrement j’ai utilisé un WT32-ETH01 qui permet de connecter l’ESP à un réseau ethernet câblé, pas en POE mais c’est déjà un premier pas vers la fiabilisation.
L’inconvénient, c’est qu’il n’embarque pas de port USB permettant de le flasher la première fois, il faut donc passer par un convertisseur USB/Port Série.
Autre inconvénient, le nom de pin utilisable est limité car beaucoup sont réservées au port Ethernet (en gris ci-dessous).
Premier Flashage
Il faut utiliser un convertisseur USB/Port série, perso j’utilise un FTDI232, le même que pour mes ESP01, je vous mets le lien vers Amazon ou Aliexpress mais Google peut vous aider: mot clef « FTDI232 ».
Il faut maintenant le raccorder au WT32.
- FTDI232 <—-> WT32
- GND <—-> GND
- VCC <—-> +5v
- TX <—-> RX0 la pin à coté de I00
- RX <—-> TX0 la pin à coté de RX0
- Faire un pont sur le WT32 entre I00 et un GND
- Positionner le cavalier du FDTI 232 sur 5V
Puis Il faut vous rendre sur ESPHOME et déclarer votre WT32.
Vous trouverez ci-après un code en exemple (mesure de niveau d’eau dans un puit).
J’utilise ce type de capteur à ultrason commandé sur Ali. Pas cher et efficace.
Voici le code.
A vous de le personnaliser « device_name, adresse ip,..). Ne pas modifier la partie « Ethernet »
substitutions:
device_name: esp144-test-wt32-eth01
adress_ip: "192.168.0.144"
friendly_name: esp144
time_timezone: "Europe/Paris"
esphome:
name: ${device_name}
platform: ESP32
board: esp-wrover-kit
# Enable logging
logger:
# Enable Home Assistant API
api:
web_server:
port: 80
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO0_IN
phy_addr: 1
power_pin: GPIO16
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.0.254
subnet: 255.255.255.0
sensor:
- platform: ultrasonic
trigger_pin: GPIO2
echo_pin: GPIO4
name: "niveau puit"
accuracy_decimals: 2
id: niveau_eau
update_interval: 60s
filters:
- lambda: return 3.5 - x;
- sliding_window_moving_average:
window_size: 5 # moyenne sur x lectures
send_every: 5 # envoi toutes les x lectures
send_first_at: 1 # envoi à la premiere lecture
# Calcul du niveau d'eau H total
# longueur du tube=2.3 m
# hauteur total puit=5.8 m
# d'ou 5.80-2.3=3.5
############### TEMPLATE ######################"
# Calcul volume eau
- platform: template
name: "volume_puit"
id: volume
icon: mdi:flash
unit_of_measurement: "m3"
accuracy_decimals: 2
lambda: |-
return (id(niveau_eau).state*0.6*0.6*3.14159);
#Etat de la connection
binary_sensor:
- platform: status
name: "${friendly_name} Status"
switch:
- platform: restart
name: "${friendly_name} Restart"
Apres avoir connecté votre FTDI232 à votre PC HA avec le cordon USB qui va bien, vous lancer « install »:
Dans mon cas je choisis l’option 3 « Plug into the computer running ESPHome Dashboard »:
Sélectionner le port USB correspondant à votre FDTI232, FT232R USB UART dans mon cas:
ESP HOME compile puis transfert vert le FTDI232:
Et voila c’est terminé.
Exploitation
Il suffit maintenant de débrancher le WT232, le connecter au réseau cablé et de l’alimenter en 5 ou 3.2 VCC.
Sur ESP HOME, si il est reconnu sur votre réseau, il est déclaré « ONLINE »:
Intégration dans HA
Normalement HA doit vous le proposer comme une nouvelle intégration
Cliquer sur configurer
Cliquer sur « Soumettre »
Choisir une pièce, c’est facultatif mais recommandé.
Vous le retrouver dans les intégrations/appareils.
Une fois intégré dans HA, vous pouvez visualiser les logs.
ou bien la page WEB embarquée
Si pas découvert automatiquement par HA, essayer de l’intégrer manuellement:
Cliquer sur « + Ajouter intégration« :
Chercher « ESPHOME », saisir l’adresse IP puis soumettre:
Cela devrait fonctionner, la cas échéant, vérifier votre adresse IP.
Mise à Jour
Une fois connecté à votre réseau, plus besoin d’utiliser le FTDI232, la mise à jour est à transférer comme d’habitude, via la « Wirelessly ».
Conclusion
J’en utilise un depuis quelque semaines et rien à signaler, il tourne comme une horloge.
N’hésitez par me faire part de vos commentaires.
Encore un super article! Pour ma part je n’ai jamais eu de soucis avec le wifi de mes modules ESP.
Merci Bob. Sur les installations éloignées, avec un wifi hors de portée, le câble reste une solution pérenne, ce qui est mon cas pour mon puit au fond du jardin. Encore merci pour ton soutient
hi,
i consulted your article to flash a WT32-ETH01. It wasnt straight forward to me (most probably cause my lack of experience) however i finally made it and it’s now connected to my LAN through ethernet.
I was wondering if you can help me on the following issue( only if it is easy enough for you, i mean dont spend your time)
for test purposes i connected a dht11 (sensor is onboard pullup resistor embeded) on the wt32-eth01. i wired it as follows: (DHT11/WT32) -> VCC/ 3v3 , GND/GND, DATA/GPIO36. (previously i tried GPIO2, GPIO4, GPIO35 unsuccessfully). But i get no values.
LOGS are :
[16:52:48][C][dht:017]: DHT:
[16:52:48][C][dht:018]: Pin: GPIO36
[16:52:48][C][dht:020]: Auto-detected model: DHT11
[16:52:48][C][dht:027]: Update Interval: 60.0s
[16:52:48][C][dht:029]: Temperature ‘DHT11_Temp_on_WT32’
[16:52:48][C][dht:029]: Device Class: ‘temperature’
[16:52:48][C][dht:029]: State Class: ‘measurement’
[16:52:48][C][dht:029]: Unit of Measurement: ‘°C’
[16:52:48][C][dht:029]: Accuracy Decimals: 1
[16:52:48][C][dht:030]: Humidity ‘DHT11_humi_on_WT32’
[16:52:48][C][dht:030]: Device Class: ‘humidity’
[16:52:48][C][dht:030]: State Class: ‘measurement’
[16:52:48][C][dht:030]: Unit of Measurement: ‘%’
[16:52:48][C][dht:030]: Accuracy Decimals: 0
….
E (705054) gpio: gpio_set_level(226): GPIO output gpio_num error
[16:53:31][D][esp-idf:000]: E (705056) gpio: io_num=36 can only be input
[16:53:31][D][esp-idf:000]: E (705067) gpio: gpio_set_level(226): GPIO output gpio_num error
[16:53:31][W][dht:169]: Requesting data from DHT failed!
[16:53:31][W][dht:060]: Invalid readings! Please check your wiring (pull-up resistor, pin number) and consider manually specifying the DHT model using the model option.
[16:53:31][D][sensor:127]: ‘DHT11_Temp_on_WT32’: Sending state nan °C with 1 decimals of accuracy
[16:53:31][D][sensor:127]: ‘DHT11_humi_on_WT32’: Sending state nan % with 0 decimals of accuracy
what am i missing?
can i use any gpio on wt32-eth01? reading wt32 pinout diagram is chinese to me
it seems that i cannot use any pins in grey area. not even power pins(3v3)?
thanks in advance
Elias
Bonjour
J’ai essayer avec un DHT22 et cela fonctionne (je n’ai pas de DHT11 sous la main)
La pin DATA est relièe à IO2 Le VCC au 3.3V, GND à GND. j’ai testé avec ou sans résistance de 4.7 k entre DATA et VCC, cela fonctionne.
Voici le code que j’utilise
***********************************
substitutions:
device_name: esp174-esp32-eth0-dimmer-ecs
adress_ip: « 192.168.0.174 »
friendly_name: esp174
time_timezone: « Europe/Paris »
esphome:
name: ${device_name}
platform: ESP32
board: wt32-eth01 #esp-wrover-kit
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
web_server:
port: 80
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO0_IN
phy_addr: 1
power_pin: GPIO16
manual_ip:
static_ip: ${adress_ip}
gateway: 192.168.0.254
subnet: 255.255.255.0
binary_sensor:
#Etat de la connection
– platform: status
name: « ${friendly_name}_Status »
sensor:
– platform: dht
pin: GPIO2
model: DHT22
temperature:
name: « ${friendly_name} Temperature »
humidity:
name: « ${friendly_name} Humidity »
update_interval: 5s
************************
et voici le log:
******************************
INFO Successfully connected to 192.168.0.174
[16:28:33][I][app:102]: ESPHome version 2023.2.4 compiled on Mar 13 2023, 16:16:13
[16:28:33][C][logger:293]: Logger:
[16:28:33][C][logger:294]: Level: DEBUG
[16:28:33][C][logger:295]: Log Baud Rate: 115200
[16:28:33][C][logger:296]: Hardware UART: UART0
[16:28:33][C][status:034]: Status Binary Sensor ‘esp174_Status’
[16:28:33][C][status:034]: Device Class: ‘connectivity’
[16:28:33][C][dht:017]: DHT:
[16:28:33][C][dht:018]: Pin: GPIO2
[16:28:33][C][dht:024]: Model: DHT22 (or equivalent)
[16:28:33][C][dht:027]: Update Interval: 5.0s
[16:28:33][C][dht:029]: Temperature ‘esp174 Temperature’
[16:28:33][C][dht:029]: Device Class: ‘temperature’
[16:28:33][C][dht:029]: State Class: ‘measurement’
[16:28:33][C][dht:029]: Unit of Measurement: ‘°C’
[16:28:33][C][dht:029]: Accuracy Decimals: 1
[16:28:33][C][dht:030]: Humidity ‘esp174 Humidity’
[16:28:33][C][dht:030]: Device Class: ‘humidity’
[16:28:33][C][dht:030]: State Class: ‘measurement’
[16:28:33][C][dht:030]: Unit of Measurement: ‘%’
[16:28:33][C][dht:030]: Accuracy Decimals: 0
[16:28:33][C][ethernet:167]: Ethernet:
[16:28:33][C][ethernet:285]: IP Address: 192.168.0.174
[16:28:33][C][ethernet:286]: Hostname: ‘esp174-esp32-eth0-dimmer-ecs’
[16:28:33][C][ethernet:287]: Subnet: 255.255.255.0
[16:28:33][C][ethernet:288]: Gateway: 192.168.0.254
[16:28:33][C][ethernet:293]: DNS1: 0.0.0.0
[16:28:33][C][ethernet:294]: DNS2: 0.0.0.0
[16:28:33][C][ethernet:301]: MAC Address: 0C:B8:15:4A:D8:83
[16:28:33][C][ethernet:306]: Is Full Duplex: YES
[16:28:33][C][ethernet:311]: Link Speed: 100
[16:28:33][C][ethernet:170]: Power Pin: 16
[16:28:33][C][ethernet:172]: MDC Pin: 23
[16:28:33][C][ethernet:173]: MDIO Pin: 18
[16:28:33][C][ethernet:174]: Type: LAN8720
[16:28:33][C][web_server:151]: Web Server:
[16:28:33][C][web_server:152]: Address: 192.168.0.174:80
[16:28:33][C][mdns:108]: mDNS:
[16:28:33][C][mdns:109]: Hostname: esp174-esp32-eth0-dimmer-ecs
[16:28:33][C][ota:093]: Over-The-Air Updates:
[16:28:33][C][ota:094]: Address: 192.168.0.174:3232
[16:28:33][C][api:138]: API Server:
[16:28:33][C][api:139]: Address: 192.168.0.174:6053
[16:28:33][C][api:143]: Using noise encryption: NO
[16:28:38][D][dht:048]: Got Temperature=24.1°C Humidity=50.8%
[16:28:38][D][sensor:127]: ‘esp174 Temperature’: Sending state 24.10000 °C with 1 decimals of accuracy
[16:28:38][D][sensor:127]: ‘esp174 Humidity’: Sending state 50.80000 % with 0 decimals of accuracy
[16:28:43][D][dht:048]: Got Temperature=24.1°C Humidity=50.3%
[16:28:43][D][sensor:127]: ‘esp174 Temperature’: Sending state 24.10000 °C with 1 decimals of accuracy
[16:28:43][D][sensor:127]: ‘esp174 Humidity’: Sending state 50.30000 % with 0 decimals of accuracy
[16:28:48][D][dht:048]: Got Temperature=24.1°C Humidity=50.7%
[16:28:48][D][sensor:127]: ‘esp174 Temperature’: Sending state 24.10000 °C with 1 decimals of accuracy
[16:28:48][D][sensor:127]: ‘esp174 Humidity’: Sending state 50.70000 % with 0 decimals of accuracy
************************
cela devrait fonctionner avec un DHT11
J’espère vous avoir aider
Cordialment