Ankündigung

Einklappen
Keine Ankündigung bisher.

Delta-T-Schwellwertschalter?

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

    HS/FS Delta-T-Schwellwertschalter?

    Hi,
    ich habe in der Dusche und Badewanne Temperaturfühler und will aufgrund einer Temperaturveränderung entsprechende Szenen schalten (Lüftung / Licht / Musik).
    Erste versuche mit einer festen Temperaturgrenze waren zwar erfolgreich - funktionieren aber nicht mehr wenn das ganze Gebäude sich aufwärmt. Daher brauche ich entweder einen gleitenden Schwellwert (der auch nicht einfach zu ermitteln wäre) oder eben einen Trigger der auf eine Prozentuale Wertveränderung reagiert (der Sensor ist sonst eher träge - beim Duschen macht er aber einen erheblichen Sprung).
    Ich stelle mir vor >x Kelvin pro y minuten.

    Hat jemand dazu eine passende Logik schonmal aufgebaut?

    Grß
    Thorsten
    Angehängte Dateien

    #2
    Hallo

    ich würde auf den ersten Blick sagen, Du musst ein Startsignal senden ab wann die Berechnung anfangen soll inkl. mit Startwert (Temperatur)senden , dann läuft der Timer und ein Vergleicher wo die Differenz hinterlegt ist und bei Ablauf der Zeit errechnet ob Wahr oder nicht wahr und die entsprechenden Befehle (Szenen) aufruft.

    So würde ich das mal probieren. Alternativen oder Erweiterungen auf dieser Idee sind gerne gewünscht.

    Gruss Patrick

    Kommentar


      #3
      Zitat von ThorstenGehrig Beitrag anzeigen
      Hat jemand dazu eine passende Logik schonmal aufgebaut?
      Ja, als WireGate Plugin (ungesehen und ungeschönt herauskopiert):

      Code:
      # Eigenen Aufruf-Zyklus auf 300 Sekunden setzen
      $plugin_info{$plugname.'_cycle'} = 300;
      my $knx_adresse = '4/0/122';
      my $ergebnis_an_knx_adresse = '1/0/121';
      #my $schwellwert = 35;
      #my $luftfeuchte;
      #my $statistik_aufrufart;
      
      use Time::HiRes;
      
      # Plugin an Gruppenadresse "anmelden"
      $plugin_subscribe{$knx_adresse}{$plugname} = 1;
      
      my $temperatur =  knx_read($knx_adresse);
      my $delta_temp = $temperatur - $plugin_info{$plugname.'_oldtemp'};
      my $time = Time::HiRes::time();
      my $delta_time = $time - $plugin_info{$plugname.'_oldtime'};
      if( $delta_time < 0.001 ) { $delta_time = 0.001; } # protection
      
      my $gradient = $delta_temp / $delta_time;
      
      my $action = 'none';
      
      if( ( $gradient > 4.0/60.0 ) || ( $temperatur > 26.0 ) )
      {
        $action = 'positive slope';
         knx_write($ergebnis_an_knx_adresse,1,1);
      } else {
        $action = 'release';
      }
      
      $plugin_info{$plugname.'_oldtemp'} = $temperatur;
      $plugin_info{$plugname.'_oldtime'} = $time;
      
      return "dt: $delta_time, dT: $delta_temp, dT/dt: $gradient, T: $temperatur, action: $action";
      Wenn ich mir den Code so ansehe, schaltet der über 4K/Minute oder >26.0°C

      Die Temperatur an 4/0/122 hat einen Sende-Zyklus von 60 Sekunden - oder (wichtig!) bei geringer Wertänderung (2% - wie ich das Plugin geschrieben hatte, gab's noch nicht die absolute Wertänderung und seit dem hab ich's noch nicht gebraucht).

      In dieser Einstellung erkennt das Plugin, ob ich gerade bade (Sensor von unten an die Badewanne geklebt) - braucht aber schon mal gezählt 30 Sekunden (thermische Trägheiten, langsames 1wire auslesen)

      Gegen das langsame 1wire Auslesen, ist auf meinen besonderen Wunsch hin, ein extra Modus implementiert worden, wo ich zwingen kann, dass ein Fühler besonders oft ausgelesen wird. Die Idee dahinter wäre dann, wenn der PM Anwesendheit meldet, diesen Modus anzuschalten, bis entweder der PM Entwarnung meldet oder ein Gradient erkannt wurde.
      Asche über mein Haupt - die Implementierung dazu ist nur rudimentär begonnen, ich komme gerade nicht dazu...
      TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

      Kommentar

      Lädt...
      X