wjohn007 / Berry-DallasTemperature

A Berry-Driver for DS18B20 Sensors.
GNU General Public License v3.0
2 stars 1 forks source link

Baseline for "Circulating Hot Water Pump" Controller #4

Closed Noschvie closed 4 days ago

Noschvie commented 2 weeks ago

Hello John found your coding with Berry and Tasmota, looks amazing, congrats!

For my use case I want to control a circulating hot water pump connected to a device running Tasmota. There are also two DS18B20 connected to monitor the outgoing temperature and the return temperature. Please have a look to this code snippet: post-133815

Any idea how to start to convert this code to Berry ?

Thanks!

wjohn007 commented 2 weeks ago

Hallo Norbert, wenn es für dich OK ist, wechseln wir ins Deutsche. Das geht etwas leichter. Ich kann gerne Starthilfe leisten.

Ich gehe davon aus, dass du einen ESP32 mit Tasmota hast und auch die Berry-Console schon kennst.

Grüße Johann

Noschvie commented 1 week ago

Hallo Johann bin mit ESP32, Tasmota und Berry vertraut... das wird nicht das Problem sein. Also Testumgebung vorhanden, Screenshot kann ich nachliefern: ESP32 mit je einem DS18B20 am WW Vor- und Rücklauf, sowie eine Tasmota ESP32 Steckdose, an der die Pumpe angeschlossen bzw. umgesteckt werden kann. Derzeit läuft die Pumpe zeitgesteuert über die Wärmepumpe.

Dieser Make-Artikel: Warmwasser-Sparpumpe hat mich auch inspiriert, mich diesem Thema zu widmen. Wobei es mir nicht so sehr (aber doch auch) um das Einsparen von Energie geht, sondern um die techn. Herausforderung, dies mit Tasmota umzusetzen. Wie kann die Fragestellung "Erkennen einer Warmwasser-Anforderung" mit einem ESP32, DS18B20 Sensoren und Tasmota beantwortet werden, um in weiterer Folge eine Zirkulationspumpe zu steuern. Wenn der Grundstein gelegt ist: Zusätzlich sollte die Zirkulationspumpe täglich mind. einmal laufen (für eine bestimmte Dauer), um die Zirkulationsleitung zu spülen.

Danke für deine Unterstützung meines Vorhabens! Norbert

wjohn007 commented 1 week ago

Wo konkret brauchst du Unterstützung ?

Ich sehe zunächst folgende Themen, die du ja ggf. schon gelöst hast.

Es wäre hilfreich, wenn du noch ein Schaubild aller beteiligten Komponenten liefern könntest damit die Funktion deutlich wird.

Noschvie commented 1 week ago

Hier die Screenshots grafik grafik

grafik

Die beiden Temperature Values für Vor- und Rücklauf sind in Berry verfügbar. Sollen nun zwei verschiedene Functions definiert werden, um den post-133815 umzusetzen, also eine ansteigende Vorlauftemperatur zu erkennen?

wjohn007 commented 1 week ago

Ich hab das mal ergänzt mit einem Cron-Job. Im 'timerHandler()' kannst du deine Berechnungen durchführen.

# globale variable
T1="DS18B20-1"
T2="DS18B20-2"
vorlaufTemp=nil
nachlaufTemp=nil
diffTemp=nil
cnt=0

# rule handler fuer die messwerte
def tempHandler(value,trigger,data)
    var cproc="tempHandler"

    # print(f"{value=} {trigger=}")
    if trigger==T1
        vorlaufTemp=value['Temperature']
    end

    if trigger==T2
        nachlaufTemp=value['Temperature']
    end 

    cnt+=1
    # print(f"{cproc} - {vorlaufTemp=} {nachlaufTemp=} {cnt=} {trigger=}")
end

# wird alle 5 sekunden via timer aufgefufen, hier kann man die rechenoperationen ausführen
def timerHandler()
    var cproc="timerHandler"

    # differenz temperatur berechnen
    diffTemp = vorlaufTemp - nachlaufTemp
    print(f"{cproc} - {vorlaufTemp=} {nachlaufTemp=} {diffTemp=}")
end

# rules definieren
tasmota.remove_rule(T1)
tasmota.remove_rule(T2)

tasmota.add_rule(T1,tempHandler)
tasmota.add_rule(T2,tempHandler)

# cron job alle 5 Sekunden
tasmota.add_cron("0/5 * * * * *",  timerHandler, "timer")
Noschvie commented 4 days ago

Got it up and running, thanks again!