Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei der Erstellung einer rule (mit Berechnung)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hilfe bei der Erstellung einer rule (mit Berechnung)

    Hallo,
    ich hab mal wieder ein kleines Projekt vor, an deren Umsetzung ich monentan ein wenig ratlos bin.

    Und zwar kann ich in meiner Wärmepumpe Freigabezeiten fürs Warmwasser einstellen, je Tag geht ein Zeitraum. In diesen Zeiten kann ich dann insgesamt 2x einen Zeitraum definieren, in dem die Soll-WW-Temp angehoben oder abgesenkt werden soll.

    Aktuell hab ich folgendes:

    Norm-Soll-WW-Temp: 42°C
    Freigabe von 6:30-20 Uhr
    Absenkung um 32 K von 7:30-11:30 und 12:30-19 Uhr
    (in den Zeiträumen dann also eine Soll-WW-Temp von 10°C)

    Also habe ich 3 Freigabezeiten am Tag, an denen WW bereitet werden darf, falls die Temp im Speicher zu gering ist. Im Regelfall wird 1x am Tag WW bereitet, je nachdem, wenn 2 Personen hintereinander duschen und der Speicher ausgekühlt ist, auch 2x.

    Ich habe in der Wärmepumpe leider keine Möglichkeit, manuell auf die Schnelle einen Warmwassertakt zu erzeugen. Daher möchte ich das mit einer Rule in Openhab erledigen. Also KNX-Taster drücken --> Rule startet sofort einen WW-Takt, wenn der Speicher nicht entsprechend gefüllt ist. Im Gegenzug möchte ich die Freigabezeiten auf den ganzen Tag ausdehnen und dauerhaft (bis auf 1 Freigabe am Tag) auf 10°C absenken.


    Ich hab mir das so vorgestellt (grob skizziert):

    Code:
    when switch-ww changed or soll-ww-temp changed
        then
        überprüfe aktuelle WW-Ist-Temp
           if WW-Ist-Temp ist kleiner als 38°C
                  überprüfe aktuelle Soll-WW-Temp --> erhöhe die Norm-Soll-WW-Temp um die Differenz aus (Norm-Soll-WW-Temp - Soll-WW-Temp)
                  warte 30 Minuten und Stelle Norm-Soll-WW-Temp wieder auf den Ausgangswert (42°C) zurück
           else if
                  end

    Ich hab leider keine Ahnung, wie man Rules mit Variablen erstellt oder wie man innerhalb einer Rule Berechnungen durchführen lässt. Kann mir hier jemand auf die Sprünge helfen?


    1x am Tag soll auf jeden Fall automatisch von der Wärmepumpe (ohne Eingreifen von Openhab) WW bereitet werden, falls Openhab mal aufällt, dass ein normaler WW-Betrieb sichergestellt ist.
    Zuletzt geändert von halloween; 25.02.2016, 16:13.

    #2
    Code:
    rule "warmwasser"
    when
        Item switch-ww changed or
        Item soll-ww-temp changed
    then
        if(WW-Ist-Temp.state as DecimalType < 38) {
            Norm-Soll-WW-Temp.sendCommand(2*(Norm-Soll-WW-Temp.state as DecimalType) - Soll-WW-Temp.state as DecimalType)
            myTimer=createTimer(now.plusMinutes(30)) [|
                Norm-Soll-WW-Temp.sendCommand(42)
            ]
        }
    end
    Ohne jegliche Garantie vermutlich habe ich auch entweder etwas falsch verstanden oder Du hast einen Denkfehler, weil ja, wie in der Formel zu sehen Norm-Soll-WW-Temp verdoppelt wird, wenn Soll-WW-Temp 0 ist. Eventuell meinst Du Norm-Soll-WW-Temp=2*Soll-WW-Temp - Norm-Soll-WW-Temp

    Das Prinzip sollte aber klar sein. Ansonsten kannst Du natürlich auch Variablen oder Konstanten inner- oder außerhalb der Rule definieren und mit Werten aus Items füllen, um nach einer Berechnung das Ergebnis wieder in einem Item zu speichern.

    Vermutlich wäre es auch ganz gut, den möglichen Wertebereich zu überprüfen und Maximal- und Minimalwerte zu definieren, damit Du nicht wegen eines Fehlers in der Rule Verbrühungen oder Erfrierungen erleidest
    Weiterhin kannst Du den erzeugten Timer mit myTimer.cancel vorzeitig abbrechen.
    Wenn Du nicht anderweitig sicherstellst, dass die Rule nicht mehrfach ausgelöst wird, wäre es auch sinnvoll, zu verhindern, dass der Timer mehrfach angelegt wird.

    Ach ja... Groß/Kleinschreibung beachten! soll-ww-temp ist ein anderes Item als Soll-WW-Temp!!!

    Kommentar

    Lädt...
    X