Hallo, ich habe mir per ChatGPT eine ESPHome YAML für meine Wiegezellen erstellt.
Nun sagt mir aber der Editor des ESPHome den Fehler
Duplicate key “sensor”
in “/config/esphome/gasflaschenwaage.yaml”, line 107, column 1
NOTE: Previous declaration here:
in “/config/esphome/gasflaschenwaage.yaml”, line 50, column 1
Kann ich verstehen es gibt 2x “sensor:” aber lösche ich jetzt den 2. “sensor:” Bereich und setze alles was dort steht unter den 1. “sensor:” Bereich wir der gesamte Code als Falsch deklariert… Was mach ich da falsch? hier mal mein Code =)
esphome:
name: gasflaschenwaage
friendly_name: gasflaschenwaage
platform: ESP8266
board: d1
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: ""
ota:
password: ""
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Gasflaschenwaage"
password: ""
captive_portal:
# Aktiviere die Web-Oberfläche
web_server:
port: 80
# Nutze die Home Assistant Zeitquelle
time:
- platform: homeassistant
id: homeassistant_time
globals:
- id: gespeichertes_gewicht
type: float
restore_value: no
initial_value: '0'
- id: kalibrierung_niedrig_referenz
type: float
initial_value: '0.0'
- id: kalibrierung_hoch_referenz
type: float
initial_value: '10000.0' # Beispielwert
# Konfiguriere den HX711 Lastzellenverstärker
sensor:
- platform: hx711
dout_pin: D1
sck_pin: D2
gain: 128
update_interval: never
id: gasflaschen_gewicht
filters:
- lambda: |-
if (id(kalibrierung_hoch_referenz) - id(kalibrierung_niedrig_referenz) == 0) return 0;
float kalibrierungsfaktor = (x - id(kalibrierung_niedrig_referenz)) / (id(kalibrierung_hoch_referenz) - id(kalibrierung_niedrig_referenz));
return kalibrierungsfaktor * 10000; # Ersetze 10000 durch den Wert, der dem Gewicht in Gramm bei voller Kalibrierung entspricht.
# Einstellbare Werte über das Webinterface
number:
- platform: template
name: "Vollgewicht"
id: vollgewicht
min_value: 0
max_value: 30000
step: 100
initial_value: 21100
unit_of_measurement: "g"
- platform: template
name: "Tara Gewicht"
id: tara_gewicht
min_value: 0
max_value: 20000
step: 100
initial_value: 11000
unit_of_measurement: "g"
- platform: template
name: "Kalibrierung Niedrig Referenz"
id: num_kalibrierung_niedrig_referenz
min_value: 0
max_value: 5000
step: 1
initial_value: 0.0
on_value:
then:
- globals.set:
id: kalibrierung_niedrig_referenz
value: !lambda 'return x;'
- platform: template
name: "Kalibrierung Hoch Referenz"
id: num_kalibrierung_hoch_referenz
min_value: 5000
max_value: 50000
step: 1
initial_value: 10000.0
on_value:
then:
- globals.set:
id: kalibrierung_hoch_referenz
value: !lambda 'return x;'
# Template-Sensor zur Berechnung des prozentualen Anteils
sensor:
- platform: template
name: "Gasflasche Verbleibender Gasanteil"
id: gasflasche_verbleibender_gasanteil
lambda: |-
float vollgewicht = id(vollgewicht).state;
float tara = id(tara_gewicht).state;
float aktuelles_gewicht = id(gasflaschen_gewicht).state;
if (vollgewicht - tara <= 0) return 0.0; // Verhindert Division durch Null
float prozent = ((aktuelles_gewicht - tara) / (vollgewicht - tara)) * 100.0;
return prozent;
unit_of_measurement: "%"
accuracy_decimals: 2
update_interval: never # Aktualisiere nur bei expliziter Anforderung
# Stündliche Gewichtsaktualisierung
interval:
- interval: 1h
then:
- sensor.force_update: gasflaschen_gewicht
- sensor.force_update: gasflasche_verbleibender_gasanteil