FHEM Forum

FHEM => Automatisierung => Thema gestartet von: stim am 08 Juni 2014, 09:03:25

Titel: Heizung Rücklauf - Vorlauf
Beitrag von: stim am 08 Juni 2014, 09:03:25
Hallo Zusammen,

ich habe es geschafft den Vorlauf in Rücklauf in das Logfile schreiben zu lassen.
Filelog_PoolHeizung
Dieses sieht so aus:

(http://img.tapatalk.com/d/14/06/08/arujeseh.jpg)

Wie kann ich die Differenz berechnen?

Ich habe an ein notify gedacht
PoolHeizung:*
{
   if(ReadingsVal("pool_ruecklauf>pool_vorlauf","temperature",99) < 5)
      { fhem("set DPool <pool_ruecklauf - pool_vorlauf>") }
   else
      { fhem("set DPool <pool_vorlauf - pool_ruecklauf>") }
}

Die Zeilen in Spitzen Klammern sind Pseudocode.

Habt ihr evt codeschnipsel für mich um dies umzusetzen?


Vielen Dank stim
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: hexenmeister am 08 Juni 2014, 09:16:22
Kannst z.b. eine userReading verwenden.
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: stim am 08 Juni 2014, 09:22:06
Wie subtrahiere ich die Werte dann? Kann ich Differenz auch auf zwei readings anwenden? Oder geht es nur auf den aktuellen zum vorherigen Wert?
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: epsrw1 am 08 Juni 2014, 09:48:12
beispiel:
#differenz vorlauf-rücklauf temp *faktor (aus attr) zur kesselerhöhung
my $zhkKesselActualVLRLdiff = 1;
my $zhkVorlaufVLTempFhemDev = AttrVal($name, "zhkVorlaufVLTempFhemDev", "1_17_Vorlauf_D1F798050000");
my $zhkVorlaufVLTempFhemDevReading = AttrVal($name, "zhkVorlaufVLTempFhemDevReading", "temperature");
if($now>(time_str2num(ReadingsTimestamp($zhkVorlaufVLTempFhemDev,$zhkVorlaufVLTempFhemDevReading,0))+$zhkKesselTempMaxReadingAge)){
$zhkKesselActualVLRLdiff=0;
Log3($name, 3, "ZHK $name KesselRegler unable to read VL Temp");
}
my $zhkVorlaufRLTempFhemDev = AttrVal($name, "zhkVorlaufRLTempFhemDev", "2_12_Ruecklauf_56B897050000");
my $zhkVorlaufRLTempFhemDevReading = AttrVal($name, "zhkVorlaufRLTempFhemDevReading", "temperature");
if($now>(time_str2num(ReadingsTimestamp($zhkVorlaufRLTempFhemDev,$zhkVorlaufRLTempFhemDevReading,0))+$zhkKesselTempMaxReadingAge)){
$zhkKesselActualVLRLdiff=0;
Log3($name, 3, "ZHK $name KesselRegler unable to read RL Temp");
}
if($zhkKesselActualVLRLdiff){
$zhkKesselActualVLRLdiff =
ReadingsVal($zhkVorlaufVLTempFhemDev,$zhkVorlaufVLTempFhemDevReading,0)
-ReadingsVal($zhkVorlaufRLTempFhemDev,$zhkVorlaufRLTempFhemDevReading,0);
readingsSingleUpdate($hash, "zhkKesselActualVLRLdiff", $zhkKesselActualVLRLdiff, 0);
}
my $zhkKesselActualVLRLAnhebung = int($zhkKesselActualVLRLdiff*AttrVal($name,"zhkKesselVLRLdiffErhFaktor",0));
$zhkKesselDesiredTemp+=$zhkKesselActualVLRLAnhebung;
readingsSingleUpdate($hash, "zhkKesselActualVLRLAnhebung", $zhkKesselActualVLRLAnhebung, 0);

(quelle: http://forum.fhem.de/index.php/topic,23933.0.html )

einfachere lösung: THRESHOLD
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: hexenmeister am 08 Juni 2014, 10:12:16
Zitat von: stim am 08 Juni 2014, 09:22:06
Wie subtrahiere ich die Werte dann? Kann ich Differenz auch auf zwei readings anwenden? Oder geht es nur auf den aktuellen zum vorherigen Wert?

klar, geht beides. Du gibst für UserReading eine Perl-Anweisung, die auf alle Attribute (auch von verschiedenen Geräten etc.) zugreifen kann. Die Rückgabe wird als neuer Wert Deiner UserReading übernommen.

Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: stim am 08 Juni 2014, 10:34:09
Wie sieht diese perl Anweisung aussieht
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: epsrw1 am 08 Juni 2014, 10:50:25
http://fhem.de/commandref_DE.html#THRESHOLD (http://fhem.de/commandref_DE.html#THRESHOLD)
ZitatBeispiele für die Steuerung der Warmwasserzirkulation:

Zeitgesteuerte Warmwasserzirkulation:

In der Hauptzeit soll die Wassertemperatur im Rücklauf mindestens 38 Grad betragen.

define TH_circ TRHESHOLD return_w:temperature:0 circ_pump
define HC_circ Heating_Control TH_circ 12345|05:30|38 67|07:00|38 23:00|15 set @ desired %

Alternative Steuerung mit Sollwert-Vorgabe durch einen weiteren Sensor des Warmwasserspeichers:

Die Rücklauftemperatur soll 5 Grad (offset) unter der Warmwasserspeichertemperatur liegen und bis zu 4 Grad (Hysterese) schwanken dürfen.

define TH_circ THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circ_pump

die frage mit dem perl-code hast Du ja schon weiter oben beantwortet. ich würde empfehlen, les Dich da etwas ein und probiere es. sollte Dein code unerwünschte ergebnisse bringen, poste das selbst geschriebene hier und ich helfe Dir gerne nochmal weiter.

grüße,florian
Titel: Antw:Heizung Rücklauf - Vorlauf
Beitrag von: hexenmeister am 08 Juni 2014, 10:54:55
Zitat von: stim am 08 Juni 2014, 10:34:09
Wie sieht diese perl Anweisung aussieht

Steht doch alles im Commandref...

also in etwa so:
attr <device> userReadings vorl_diff { ReadingsVal("vorlauf_messung","temperature",0)-ReadingsVal("ruecklauf_messung","temperature",0); }