Hallo liebe Community,
ich bin leider mit meinem Latein am Ende und drehe mich zur Zeit im Kreis.
Für meine NFT-Anlage (Hydroponischer Pflanzenanbau), möchte ich eine automatische Steuerung für Ph-Wert und EC-Wert basteln.
Meine Komponenten:
Hersteller: Atlas Scientific
Boards:
- Whitebox T1 MkII
- ESP32 ESP-WROOM-32
- EZO-RTD
- EZO-PH
- EZO-EC
Sensoren (passend zu EZO Boards):
- Temperatur
- Ph-Wert
- EC-Wert
- Wasserstandsensor
Pumpen:
2 x EZO-PMP ( Peristaltic Pump) 1x für Ph-Down und 1x für Düngekonzentrat
Aufbau:
EZO-RTD port 1
EZO-PH port 2
EZO-EC port 3
EZO-PMP (Ph-Down) port 6
EZO-PMP (Dünger) port 7
Wasserstandsensor habe ich noch nicht integriert, da ich leider noch nicht weiß wie (gerne Hilfe hierbei).
ESP32 Board ist über SCL, SDA, 3,3V und GND am T1 Board verbunden.
Strom kommt über 5 V Netzteil über Micro USB an das T1 Board
Strom kommt über USB C an ESP 32
Strom kommt über 12 V Netzteil direkt an beide Pumpen (Pumpen haben einen separaten Strom Anschluss, da 12 V.
Leider schaffe ich es nicht die Yaml-Datei so zu schreiben, dass er nicht meckert und ich finde den Fehler einfach nicht.
esphome:
name: esphome-nft
friendly_name: ESPHome_NFT
# ESP32 Konfiguration
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Esphome-Nft Fallback"
password: "fallbackpass"
captive_portal:
# Logging aktivieren
logger:
# Home Assistant API aktivieren
api:
encryption:
key:
# OTA Konfiguration
ota:
platform: esphome
password: # Dein OTA-Passwort
# I2C Konfiguration für Kommunikation mit Whitebox T1
i2c:
id: bus_a
sda: GPIO21
scl: GPIO22
scan: true
# Sensoren (pH, EC und Temperatur)
sensor:
- platform: ezo
address: 99
name: "pH Wert"
id: ph_wert
update_interval: 60s
- platform: ezo
address: 100
name: "EC Wert"
id: ec_wert
update_interval: 60s
- platform: ezo
address: 102
name: "Wassertemperatur"
id: wassertemp
update_interval: 60s
# Steuerung der Pumpen (PH-Down und Dünger)
switch:
- platform: ezo_pmp
id: ph_down_pump
name: "PH Down Pumpe"
address: 111
i2c_id: bus_a
- platform: ezo_pmp
id: duenger_pumpe
name: "Dünger Pumpe"
address: 112
i2c_id: bus_a
# Automatische pH-Korrektur mit 30 Minuten Wartezeit
interval:
- interval: 5min
then:
- lambda: |-
static bool wartezeit = false;
static unsigned long letzter_eingriff = 0;
float ph = id(ph_wert).state;
unsigned long jetzt = millis();
if (!wartezeit && ph > 6.5) {
ESP_LOGI("pH-Regelung", "pH ist %.2f – PH-Down wird aktiviert.", ph);
id(ph_down_pump).turn_on();
delay(1000); // 1 Sekunde Pumpenlaufzeit (anpassbar)
id(ph_down_pump).turn_off();
letzter_eingriff = jetzt;
wartezeit = true;
}
if (wartezeit && (jetzt - letzter_eingriff > 1800000)) { // 30 Minuten
ESP_LOGI("pH-Regelung", "30 Minuten vergangen – Wartezeit beendet.");
wartezeit = false;
} else if (wartezeit) {
ESP_LOGI("pH-Regelung", "Wartezeit aktiv. Noch %.0f Minuten.", (1800000 - (jetzt - letzter_eingriff)) / 60000.0);
}
Kann mir jemand helfen?
Entweder er frisst die ezo_pmp platform nicht oder er will die platform esphome beim ota nicht.
Hier die Fehlermeldung:
INFO ESPHome 2025.4.1
INFO Reading configuration /config/esphome/esphome-nft.yaml...
INFO Unable to import component ezo_pmp.switch: No module named 'esphome.components.ezo_pmp.switch'
INFO Unable to import component ezo_pmp.switch: No module named 'esphome.components.ezo_pmp.switch'
Failed config
switch.ezo_pmp: [source /config/esphome/esphome-nft.yaml:63]
Platform not found: 'switch.ezo_pmp'.
platform: ezo_pmp
id: ph_down_pump
name: PH Down Pumpe
address: 111
i2c_id: bus_a
switch.ezo_pmp: [source /config/esphome/esphome-nft.yaml:69]
Platform not found: 'switch.ezo_pmp'.
platform: ezo_pmp
id: duenger_pumpe
name: Dünger Pumpe
address: 112
i2c_id: bus_a
Ich verstehe das nicht, es wird eigentlich alles von ESPHome unterstützt, selbst die Pumpen: Atlas Scientific Peristaltic Pump — ESPHome
Benötige dringend Hilfe.
Dankeschön
Gruß
Oli