Leistungsabhängiges schalten von Geräten

Begonnen von der-Lolo, 16 April 2023, 18:38:18

Vorheriges Thema - Nächstes Thema

der-Lolo

Hallo Zusammen,
ich würde gerne in abhängigkeit des Lastverlaufes vom Geschirrspüler einen Trigger generieren um ein weiteres Gerät zu schalten.

Unsere Spülmaschine bezieht Warmwasser aus unserem WW-Tank. Deswegen können sie 2kW peaks die man sehen kann in ihrer ausprägung variieren... Ich würde nun gerne nach dem ersten 2kW Peak einen Trigger generieren der mir das nächste Gerät - die Waschmaschine einschaltet.

Zuerst habe ich gedacht ich setze einen watchdog darauf an - ich las dann aber das der watchdog eigentlich eher für on/off als für numerische Werte gedacht ist.

Gedanklich habe ich ein bisschen damit gespielt ein DOIF-Reading darauf anzusetzen.

Was denkt ihr wie ich am besten auf die fallende flanke des ersten 2kW-peaks triggern kann..?



Per

Wo ist der Unterschied zwischen on ja/nein und >2000 ja/nein? Zur Not über einen Dummy.

Aber DOIF kann das natürlich auch.

DL8EI Ralph

#2
Die Optik zeigt ja den Übergang von ca. 2000 auf "wenig".

Aber mit "was" oder mittels welchen Sensors weiß FHEM das ?

Hier mal ein Beispiel zum Umbauen aus der Abteilung Heizung:
# ein DOIF
([TH_Kueche:temperature] or [Kuechefenster:Window]) {
  my $akt = ReadingsVal("TH_Kueche","temp",0);
  my $old = ReadingsVal("TH_Kueche","tempbefore",0);
  if (Value("Kuechefenster") eq "Open"){
    {fhem("set FHT8Vtest valve 0")} }
  else {
    if ( $akt ne $old ) {
      if ($akt >= 16) {fhem("set FHT8Vtest valve  0")}
      if ($akt <  16) {fhem("set FHT8Vtest valve 30")}
      if ($akt <  15) {fhem("set FHT8Vtest valve 40")}
      if ($akt <  14) {fhem("set FHT8Vtest valve 50")}
      if ($akt <  13) {fhem("set FHT8Vtest valve 99")}
    }
  }
{fhem("setreading TH_Kueche tempbefore $akt")}
}

Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.

der-Lolo

Es ist ein Shellyplug-S eingesetzt. Die Daten kommen via mqtt in FHEM an.

RalfRog

Der Code von DL8EI zeigt doch schon nen Ansatz.
Der Trigger ist das Event welches die Änderung des Powerwertes vom Shelly auslöst.
Das lässt sich vermutlich gut in ein DOIF im Perl-Mode packen.
Ich denke der Vorteil DOIF ist, dass es Zustandsbasiert arbeitet.
Einmal Highpower >1000 Watt (oder welche Grenze auch immer) und einmal Lowpower < 100 Watt.

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

daedalus0815

TIPP....commandref-Beispiel: Da sollte man auf die fallende Flanke reagieren können.


Differenz

Es wird die Differenz zwischen dem letzten und dem x-ten zurückliegenden Wert berechnet.

Funktion: diff

Bsp.:

define temp_abfall DOIF ([outdoor:temperature:diff5] < -3) (set temp fall in temperature)

Wenn die Temperaturdifferenz zwischen dem letzten und dem fünftletzten Wert um mindestens drei Grad fällt, dann Anweisung ausführen.

der-Lolo

Danke daedalus0815 -
mit diff funktioniert es ausgezeichnet!

Das ist für mich eine saubere Lösung - die Dauer des Peaks zum Wasseraufheizen der Spülmaschine hängt ja davon ab wie warm das Wasser ist was sie bekommt, irgendwelche krücken mit Zeiten wollte ich gerne umgehen. Um meine Lastkurve weiter hochfahren zu können brauche ich jedenfalls einen Trigger für die Waschmaschine ;) den habe ich jetzt Dank Dir!