Hello,
I’m new to all of this. I’m building a weather station with my students. I have a weather vane that has four hall sensors in it to measure wind direction. I have no issues with the binary_sensor code to get the weather vane to measure the four cardinal directions. It works perfectly.
However, I have another portion of code that is supposed to allow the weather vane to also measure NW, SW, NE, and SE (When the North and West hall sensors are both triggered, it will read NW for the direction), but I cannot get this code to work. I am borrowing this code from someone else and it appears to be correct. I run it through a yaml checker and it says the code is good. ChatGBT says it’s good. I’ve seen several people on this forum who have the exact same code, with the same indentation in the same blocks.
When I validate the code in ESP Home, it says, “[sensors] is an invalid option for [sensor.template]. Please check the indentation.” If I adjust the indentation to make the red line go away, it says “mapping values are not allowed here.” It does not like the “sensors” line.
I have tried to put this file in my main yaml file. I have tried to put it in the configuration.yaml file, like most people say to do and I don’t get any errors, but it doesn’t work. It shows the dash in red though. I’ve tried to put the code under binary_sensor and I’ve tried every other possible option, but it still doesn’t work.
Oddly enough, I do see the Wind Direction Sensor listed under Sensor now, but there is no reading.
I must be missing something. Am I supposed to create something for the “platform: template” somewhere else? Do I need to create something for “sensors” somewhere else? Is there some other process about creating a template that I’m not doing?
I have been trying to fix this issue for weeks. Any help will be greatly appreciated, but please talk to me like a child. This is not my area of expertise. Thank you for reading all of this! Also, if this should be posted in another topic, please let me know.
Here is my yaml file:
esphome:
name: dht22
friendly_name: DHT22
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: !secret api_encryption_key
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "bla bla"
password: "555555"
manual_ip:
static_ip: 555.555.5.555
gateway: 555.555.5.5
subnet: 555.555.555.5
captive_portal:
i2c:
id: bus_a
sda: 21
scl: 22
scan: true
sensor:
- platform: bmp085
i2c_id: bus_a
address: 0x77
temperature:
filters:
- lambda: return x * (9.0/5.0) + 32.0;
unit_of_measurement: "°F"
name: "Outside Temperature"
pressure:
name: "Outside Pressure"
unit_of_measurement: "mmHg"
filters:
- multiply: 0.75006375541921
update_interval: 60s
- platform: dht
pin: 4
temperature:
filters:
- lambda: return x * (9.0/5.0) + 32.0;
unit_of_measurement: "°F"
name: "Outside Temperature"
humidity:
name: "Outside Humidity"
update_interval: 60s
model: DHT22
- platform: pulse_counter
pin: 19
unit_of_measurement: 'mph'
name: 'Wind Speed'
filters:
- multiply: 0.18
update_interval: 5s
- platform: pulse_counter
pin: 23
count_mode:
rising_edge: INCREMENT
falling_edge: INCREMENT
unit_of_measurement: 'in'
name: 'Instant Rain'
filters:
- multiply: 0.173
total:
unit_of_measurement: 'in'
name: 'Rain'
accuracy_decimals: 3
filters:
- multiply: 0.173
update_interval: 5s
- platform: uptime
name: Uptime
- platform: ina219
i2c_id: bus_a
address: 0x40
current:
name: "Solar Panel Current"
power:
name: "Solar Panel Power"
bus_voltage:
name: "Solar Panel Bus Voltage"
shunt_voltage:
name: "Solar Panel Shunt Voltage"
max_voltage: 32.0V
max_current: 3.2A
update_interval: 60s
- platform: ina219
i2c_id: bus_a
address: 0x41
current:
name: "Battery Current"
power:
name: "Battery Power"
bus_voltage:
name: "Battery Bus Voltage"
shunt_voltage:
name: "Battery Shunt Voltage"
max_voltage: 32.0V
max_current: 3.2A
update_interval: 60s
- platform: template
sensors:
wind_direction:
friendly_name: Wind Direction
value_template: >-
{% if states('binary_sensor.vento_direzione_ovest') == 'off' and states('binary_sensor.vento_direzione_nord') == 'off' %}
NORTH-WEST
{% elif states('binary_sensor.vento_direzione_est') == 'off' and states('binary_sensor.vento_direzione_nord') == 'off' %}
NORTH-EAST
{% elif states('binary_sensor.vento_direzione_ovest') == 'off' and states('binary_sensor.vento_direzione_sud') == 'off' %}
SOUTH-WEST
{% elif states('binary_sensor.vento_direzione_est') == 'off' and states('binary_sensor.vento_direzione_sud') == 'off' %}
SOUTH-EAST
{% elif states('binary_sensor.vento_direzione_nord') == 'off' %}
NORTH
{% elif states('binary_sensor.vento_direzione_est') == 'off' %}
EAST
{% elif states('binary_sensor.vento_direzione_sud') == 'off' %}
SOUTH
{% elif states('binary_sensor.vento_direzione_ovest') == 'off' %}
WEST
{% endif %}
binary_sensor:
- platform: gpio
pin: 33
name: "Wind Direction North"
- platform: gpio
pin: 25
name: "Wind Direction East"
- platform: gpio
pin: 26
name: "Wind Direction West"
- platform: gpio
pin: 27
name: "Wind Direction South"
- platform: status
name: "Wind Direction"