Hallo,
wie ich schon mal geschrieben habe, versuche ich gerade meine Balkonbewässerungssteuerung von einem Atmega, der mal mit Bascom programmiert wurde, auf einen ESP 8266 D1 Mini pro mit esphome umzustellen. Kurze Beschreibung: Wasserspeicher ist ein KG Rohr, dass in Wandfarbe gestrichen in einer Ecke steht. Da gehen inzwischen ca. 70l Wasser rein, das reicht für 3 Wochen Urlaub. Das hat 2 Schwimmerschalter, Säule oben und Säule unten. Der Abstand der beiden ist ca 20cm, die sollen nur eine Hysterese erzeugen zwischen voll und nachfüllen nötig. Dann gibt es unten einen kleinen Behälter, den ich mit der Giesskanne nachfülle. Der hat einen Schwimmerschalter nachfüllen leer als Trockenlaufschutz für die Pumpe, die aus dem Nachfüllbehälter das Wasser in die Säule hochpumpt. Dazu gehört dann noch die (primitive) Ladesteuerung. Ein 10W Solarpanel lädt einen 12,8V/7Ah LiFePo4 Akku mit eigenem BMS, der das ganze versorgt. Ich überwache da nur, dass er nicht überladen wird und nicht in die Unterspannung läuft. Dann gibt es noch ein LC-Display, dass einige grobe Werte anzeigt, wie Solarspannung, Batteriespannung, Laden ein/aus und den Zustand der Schwimmerschalter. Das alles ist auf dem Balkon.
Diverse Sensoren und Aktoren habe ich schon definiert. Die funktionieren auch. Wenn ich die Automationen in Home Asisstant anlege, geht das auch. Ich möchte aber, dass das Ganze auch autark auf dem ESP ohne WIFI/WLAN- Verbindung funktioniert. Da habe ich ernsthafte Schwierigkeiten. So Dinge wie alias: condition: trigger: scheint der ESP ohne Unterstützung von Homeassistant nicht zu verstehen, oder ich mache noch was falsch. Hier mal mein biheriges Machwerk:
captive_portal:
# i²c Businitialisierung
i2c:
sda: 4
scl: 5
scan: true
frequency: 100kHz
#sensor Strom und Spannung
sensor:
- platform: ina3221
address: 0x40
channel_1:
shunt_resistance: 0.1 ohm
current:
name: "Solarstrom"
id: solar_cur
power:
name: "Solarleistung"
id: solar_pow
bus_voltage:
name: "Solarspannung"
id: solar_volt
shunt_voltage:
name: "INA3221 Channel 1 Shunt Voltage"
channel_2:
shunt_resistance: 0.1 ohm
current:
name: "Batteriestrom"
id: bat_cur
power:
name: "Batterieleistung"
id: bat_pow
bus_voltage:
name: "Batteriespannung"
id: bat_voltage
shunt_voltage:
name: "INA3221 Channel 2 Shunt Voltage"
channel_3:
shunt_resistance: 0.1 ohm
current:
name: "Steuerungsstrom"
id: cont_cur
power:
name: "Steuerungsleistung"
id: cont_pow
bus_voltage:
name: "Steuerungsspannung"
id: cont_volt
shunt_voltage:
name: "INA3221 Channel 3 Shunt Voltage"
update_interval: 1s
#Displayansteuerung
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.printf(8,0,"B:%0.2fV", id(bat_voltage).state);
it.printf(0,0,"S:%0.2fV", id(solar_volt).state);
it.print(0, 1, "L:");
it.printf(2, 1, "%s", id(laden).state ? "E" : "A");
it.print(5, 1, "NF");
it.printf(7, 1, "%s", id(nf_leer).state ? "V" : "L");
it.print(9, 1, "SU");
it.printf(11, 1, "%s", id(s_unten).state ? "V" : "L");
it.print(13, 1, "SO");
it.printf(15, 1, "%s", id(s_oben).state ? "V" : "L");
#Abfrage Schwimmerschalter
binary_sensor:
- platform: status
name: "Balkonbewässerung"
- platform: gpio
pin: D0
name: "Nachfüllen_leer"
id: nf_leer
filters:
- delayed_on_off: 4s
- platform: gpio
pin: D5
name: "Säule unten"
id: s_unten
filters:
- delayed_on_off: 20ms
- platform: gpio
pin: D6
name: "Säule oben"
id: s_oben
filters:
- delayed_on_off: 20ms
#Tag oder Nacht?
- platform: template
name: "tag"
id: tag
lambda: |-
if (id(solar_volt).state > 9.0) {
// es ist tag.
return true;
} else {
// es ist nacht.
return false;
}
#ist laden möglich?
- platform: template
name: "laden sinnvoll"
id: lad_sinn
lambda: |-
if (id(solar_volt).state > id(bat_voltage).state) {
// laden ist sinnvoll.
return true;
} else {
// vergiss es
return false;
}
# Entladegrenze der Batterie erreicht?
- platform: template
name: "battspannung reicht"
id: batvolt_ok
lambda: |-
if (id(bat_voltage).state > 12.0) {
//Batterie gut.
return true;
} else {
// Batterie an Untergrenze.
return false;
}
switch:
# Ansteuerung Laden
- platform: gpio
pin: 3
name: "Laden"
id: laden
# Ansteuerung Pumpe
- platform: gpio
pin: 15
name: "Pumpe"
id: pumpe
Ich möchte jetzt gern auf dem ESP, ohne WIFI/WLAN folgende Funktionen realisieren:
wenn laden sinnvoll ein ist und die Batteriespannung unter einem bestimmten Wert, laden ein
wenn die Batterie 14,50 Volt erreicht hat, laden aus
wenn Tag ist, die Batterie voll genug ist, nachfüllen voll und säule oben und unten aus, Pumpe ein
wenn batterie leer oder nachfüllen leer oder säule oben voll pumpe aus
Wie gesagt, ich habe schon mehrere Beispiele aus dem Netz durchsucht und auch versucht, die Automation aus HA auf den ESP zu übertragen, aber es gelingt mir einfach nicht.
Sorry für die lange Prosa, Gruß Micha