Hauptmenü

Regensensor und Tau

Begonnen von Adimarantis, 26 August 2022, 08:02:38

Vorheriges Thema - Nächstes Thema

Adimarantis

Hallo,

Ich verwende einen Homematic Regensensor um u.A. auch meine Dachfenster zum Lüften zu öffnen (wenn es im Haus zu warm, aber draussen kühler ist), sie aber bei Regen wieder zu schliessen.
Der Homematic Sensor hat ja eine Heizung, aber irgendwie widerstrebt es mir die dauerhaft anzulassen, daher schalte ich die immer erst bei Regen ein, damit der Sensor schneller abtrocknet und damit das Regenende schneller meldet, schalte sie dann aber wieder aus.

Jetzt stellt sich aber aktuell das Problem zum Ende des Sommers, dass es bereits recht früh in der Nacht zu Taubildung kommt, der Regensensor auslöst, dann abgetrocknet wird aber dann nach einer Weile wieder anspringt. Das Spielchen wiederholt sich gut 5-6 mal und dementsprechend geht das Dachfenster zu und wieder auf (was leider mit Geräuschen verbunden ist, und damit meinen Schlaf stört).

Eine Taupunktberechnung bringt mich da jetzt auch nicht viel weiter, da ich diesen ja mit der Oberflächentemperatur des Regensensors vergleichen müsste, welche ich nicht messen kann.

Hat jemand eine Idee, nach welchen Kriterien ich die Heizung vom Sensor proaktiv einschalten könnte, ohne sie jede Nacht durchlaufen zu lassen?

Zur Verfügung habe ich aktuell eben Lufttemperatur und Feuchte mit Dewpoint, aber wenn ich mir meine Kurven so anschaue, sind diese Werte zum Zeitpunkt wenn der Regensensor auslöst sehr unterschiedlich. Insbesondere geht die Feuchtigkeit in den frühen Morgenstunden eher noch weiter rauf, ohne dass der Sensor auslöst - allerdings ist dann die Temperatur wieder relativ am Steigen.

Ich könnte mir also vorstellen, dass hier eher die Steigung der Temperatur und Feuchtigkeitskurve plus einem Feuchtigkeitsschwellwert zielführend wäre, aber wie implementiert man das? Oder andere Ideen?

Gruß
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

sash.sc

#1
Du sollstest nicht mit den Taupunkt arbeiten,  bzw nur indirekt. Arbeite mit der absoluten Feuchte, als Wasser in g/m3. Die Fähigkeit Wasser aufzunehmen ändert sich ja mit der Temperatur. Daraus ergibt sich die relative Luftfeuchtigkeit.

Also g/m3 vergleichen.

Da wirst du dir ein User reading ablehnen müssen und vergleichen.

Gruß Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Adimarantis

Danke.
Die kann das DEWPOINT Modul ja auch berechnen.
Dann trag ich die mal in meinen Plot ein und sehe ob ich daraus ein besseres Kriterium ablesen kann.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

sash.sc

Ich hatte seinerzeit mit dem Modul meine Probleme gehabt, bin dann auf die manuelle Berechnung umgestiegen !
Habe hier mal eine Definition von mir.



userReadings dewpoint:temperature.* {urDewpoint($name)},
absHumidity {(100000 * (18.016/8314.3) * (ReadingsVal("$name","dewpoint",0)) / (273.15 + (ReadingsVal("$name","temperature",20))))},
schimmelt {schimmelfreiMinTemp(ReadingsVal("$name","temperature",20),ReadingsVal("$name","humidity",100),70)}


urDewpoint die eine Subroutine in der 99_myutils

Hier auch nochmal die Routine.


## Routine fuer die Berechnung vom Taupunkt

sub urDewpoint
{
my ($dname,$tname,$hname) = @_;

#Pruefen, ob ueberhaupt ein Device(-name) als Parameter uebergeben wurde
if(!defined($dname)) {
Log3 undef,1,"Error: urDewpoint - No device specified!";
return 0;
}

#Pruefen, ob das angegebene Device ueberhaupt existiert
if(!$defs{$dname}) {
Log3 undef,1,"Error: urDewpoint - Device $dname is not defined!";
return 0;
}


#Wenn keine Readingsnamen fuer die Temperatur oder Luftfeuchtigkeit
#Uebergeben wurde wird per default temperature oder humidity verwendet
$tname='temperature' if(!defined($tname));
$hname='humidity' if(!defined($hname));

my $dp;

#Auslesen der Readingswerte fuerr Temperatur und Luftfeuchtigkeit aus den
#entsprechenden Readings des Device
my $temperature = ReadingsVal($dname,$tname,0);
my $humidity = ReadingsVal($dname,$hname,0);

#Magische Berechnung :)
my $A = 17.2694;
my $B = ($temperature > 0) ? 237.3 : 265.5;
my $es = 610.78 * exp( $A * $temperature / ($temperature + $B) );
my $e = $humidity/ 100 * $es;
if ($e == 0) {
Log3 undef,1, "Error: urDewpoint: $dname - e==0: temp=$temperature, hum=$humidity";
return 'ERR';
}
my $e1 = $e / 610.78;
my $f = log( $e1 ) / $A;
my $f1 = 1 - $f;
if ($f1 == 0) {
Log3 undef,1, "Error: urDewpoint: $dname - (1-f)==0: temp=$temperature, hum=$humidity";
return 'ERR';
}
$dp = $B * $f / $f1 ;

#Rueckgabe der Taupunkt-Temperatur
return sprintf "%.2f", $dp;
}
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb