ESPHome windsnelheid- en richtings sensor via bedraad netwerk met een WT32-ETH01
Ik ga (proberen) een tutorial schrijven voor een bedrade ESP32-windsensor.
Ik gebruik voor onze zonweringen windsnelheidsmetingen via een internet API zodat het dichtgaat als de windsnelheid te hoog is, dit gebruik al jaren maar meestal kwam de informatie te laat of verkeerd.
Om dit te elimineren heb ik besloten om mijn eigen sensor te plaatsen.
Eerste doel was om een ESP32 te gebruiken zonder wifi-verbinding, dan kom je gauw op een WT-32ETH01 terecht (of vele varianten daarvan).
Onderdelen die nodig zijn:
1x
ESP32 WT32-ETH01
1x
USB TO TTL CH340G
1x
RS485 windsnelheid en richting sensor set
1x
TTL naar RS485-modulebord
1x 5VDC voeding
1x 10 tot 30VDC voeding
Optioneel:
1x
USB naar RS485 converter
1x
Misol sensor arm om sensoren op te monteren
1x
RVS buizen arm voor muur montage
3D STL-bestanden die ik heb getekend om sensoren te monteren
Eerst gaan we WT32-ETH01 verbinden met ESPHome via ethernet.
Omdat WT32-ETH01 geen USB aansluiting heeft, heb je een USB naar TTL adapter nodig.
Voeg een nieuw apparaat toe aan ESPHome, kies hiervoor ESP32 skip de rest, zodat je een lege yaml hebt met benodigde codering.
Verbind WT32-ETH01 via USB naar TTL adapter op je Home Assistant-server. Bedrading ziet er als volgt uit:
:strip_exif()/f/image/v09Fj7IBNf3Kmf8hOqUmgftZ.png?f=user_large)
LET OP: op ESP32 sluit je TX0 en RX0 aan, geen RXD en TXD
Via ESPHome builder voeg volgende YAML-code toe:
YAML:
1
2
3
4
5
6
7
8
9
| ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk:
pin: GPIO0
mode: CLK_EXT_IN
phy_addr: 1
power_pin: GPIO16 |
Installeer de code via:
Nadat de installatie klaar is, haal de USB-TTL adapter uit je Home Assistant server en sluit de WT32-ETH01 aan op je router/switch/modem met een netwerkkabel en verbind het weer met je Home Assistant server.
Als ESP32 opgestart is, check of de netwerklampen knipperen op je WT32-ETH01
Kijk nu in je router/modem welke IP adres WT32-ETH01 heeft gekregen. Terwijl je daar toch bent, maak dat IP-adres vast (static) op je router/modem.
Bij mij werkt localhost bijna nooit, dus ik doe het volgende:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| esphome:
name: weer-station
friendly_name: weer_station
esp32:
board: esp32dev
framework:
type: arduino
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk:
pin: GPIO0
mode: CLK_EXT_IN
phy_addr: 1
power_pin: GPIO16
manual_ip:
static_ip: 192.168.1.41
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
- platform: esphome
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
web_server:
port: 80 |
Dit is de kop YAML-code van mijn WT32-ETH01. Heeft het vaste IP-adres 192.168.1.41 gekregen en die heb ik hier toegevoegd, samen met poort 80. Hiermee kan ik zonder problemen via netwerk code installeren. Als jouw systeem werkt via localhost, dan is dit waarschijnlijk niet nodig. Let op: gateway en subnet kan anders zijn op jouw netwerk.
Haal WT32-ETH01 weer los van je Home Assistant-server. Haal tevens de verbindingsbrug tussen GND en IO0 weg, blauw getekend in mijn tekening hierboven. Ik ben het wel eens vergeten en kon via Netwerk niets doen.
Sluit nu je ET32-ETH01 aan een USB voeding via USB-TTL adapter, je mag ook direct een 5V-voeding aansluiten zonder USB-TTL adapter.
Als goed is kan je nu in je ESPHome builder net toegevoegde WT32-ETH01 online zien, zonder sensoren nog.
Als jij via WIFI wil verbinden, werkt ook een ESP32 C3 mini met deze sensoren, dit heb ik zelf gecontroleerd.
Nu komt het leuke gedeelte, eerste avond heb ik de sensoren niet werkend gekregen, beide gaven geen response.
Modbus-adressen zijn fabrieksaf al goed ingesteld, daarom is een USB-naar-RS485-adapter optioneel. Ik had het wel gekocht, omdat dit nergens vermeld was,
Snelheid meter heeft adres 1 en richting meter adres 2.
Omdat ik eerst niet werkend kreeg heb ik het op mijn PC aangesloten met de USB naar RS485 adapter en met
deze software heb ik kunnen zien dat sensoren inderdaad adres 1 en 2 heeft en data verstuurt.
Probleem was dat ik de code van ESPHome documents gebruik van Renke sensoren:
https://devices.esphome.i...e-rs-fsjt-n01-wind-speed/
Op zich was alles goed, behalve
register_type: read moest
register_type: holding zijn voor mijn sensoren.
Eerst een foto van mijn WT32-ETH01:
:no_upscale():strip_icc():strip_exif()/f/image/6w12KkPYmDCFKNnsfBlsDB0Y.jpg?f=user_large)
Dit laat ik zien omdat het soms verschillende modellen zijn en GPIO's anders kunnen zijn.
Documentatie van de sensoren is te vinden via QR-code op het pakje van de sensorenkabels.
Nu gaan we sensoren aansluiten op WT32-ETH01 via een TTL-naar-RS485-module. Kijk goed naar mijn tekening en controleer alles dubbel tijdens aansluiten. Haal de voedingen niet door elkaar!
Dit is mijn volledige YAML:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
| esphome:
name: weer-station
friendly_name: weer_station
esp32:
board: esp32dev
framework:
type: arduino
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk:
pin: GPIO0
mode: CLK_EXT_IN
phy_addr: 1
power_pin: GPIO16
manual_ip:
static_ip: 192.168.1.41
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
- platform: esphome
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
web_server:
port: 80
uart:
rx_pin: 5
tx_pin: 17
baud_rate: 9600
modbus:
id: modbus1
modbus_controller:
- id: wind_speed_meter
address: 1
modbus_id: modbus1
setup_priority: -10
command_throttle: 200ms
update_interval: 15s #or whatever you need
- id: wind_direction_meter
address: 2
modbus_id: modbus1
setup_priority: -10
command_throttle: 200ms
update_interval: 15s #or whatever you need
sensor:
- platform: modbus_controller
modbus_controller_id: wind_speed_meter
name: "Wind Speed"
device_class: wind_speed
id: wind_speed
register_type: holding
address: 0
unit_of_measurement: "m/s"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: wind_direction_meter
name: "Wind direction gear"
device_class: wind_direction
internal: true
register_type: holding
address: 0
value_type: U_WORD
accuracy_decimals: 0
on_value:
- lambda: |-
switch (int(x)) {
case 0:
id(wind_direction_cardinal).publish_state("N"); //North
break;
case 1:
id(wind_direction_cardinal).publish_state("NE"); //North-East
break;
case 2:
id(wind_direction_cardinal).publish_state("E"); //East
break;
case 3:
id(wind_direction_cardinal).publish_state("SE"); //South-East
break;
case 4:
id(wind_direction_cardinal).publish_state("S"); //South
break;
case 5:
id(wind_direction_cardinal).publish_state("SW"); //South-West
break;
case 6:
id(wind_direction_cardinal).publish_state("W"); //West
break;
case 7:
id(wind_direction_cardinal).publish_state("NW"); //North-West
break;
default:
id(wind_direction_cardinal).publish_state(""); //invalid
}
- platform: modbus_controller
modbus_controller_id: wind_direction_meter
name: "Wind direction degree"
icon: mdi:compass-rose
register_type: holding
address: 1
value_type: U_WORD
accuracy_decimals: 0
unit_of_measurement: "°"
text_sensor:
- platform: template
name: "Wind direction cardinal"
id: wind_direction_cardinal
icon: mdi:compass-rose |
Nogmaals: gebruik het juiste IP, de juiste gateway en het juiste subnet voor jouw eigen installatie,
Aangepaste YAML kan je via netwerk installeren:
Nu heb je een werkende windsnelheids- en richtingssensor, die aan Home Assisntant toegevoegd kan worden:
In de eptioneel benodigheden lijst heb ik ook STL toegevoegd om behuizing en deksel te printen voor WT32-ETH01 en TTL naar RS485 module, ik heb hierbij ook een wartel gebruikt en twee barrel jacks, een met 2.5mm plus kern en een met 2.1mm plus kern zodat ik per ongeluk geen 12V op de WT32-ETH01 zet.
Hier paar foto's van de behuizing:
Wind meter is op mijn schuur muur gemonteerd, ik had al een netwerkswitch in mijn schuur dus daar heb ik de netwerkkabel van WT32-ETH01 aangesloten.
Ik hoop dat ik geen stappen ben vergeten, zo ja hoor ik het graag.
Volgende stap is om een Misol regenmeter en regensensor toevogen aan dit installatie, ik moet het wel goed uitzoeken hoe ik dat allemaal ga doen, want regensensor heeft een output nodig die als voeding geschakeld wordt, of dit mogelijk is op WT32-ETH01 weet ik nog niet.
[
Voor 0% gewijzigd door
Reptile-X op 09-02-2026 12:37
. Reden: device_class: wind_direction toegevoegd aan yaml ]