Heizung Rücklauf - Vorlauf

Begonnen von stim, 08 Juni 2014, 09:03:25

Vorheriges Thema - Nächstes Thema

stim

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

hexenmeister

Kannst z.b. eine userReading verwenden.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

stim

Wie subtrahiere ich die Werte dann? Kann ich Differenz auch auf zwei readings anwenden? Oder geht es nur auf den aktuellen zum vorherigen Wert?

epsrw1

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
Ich habe keine Ahnung, aber davon wenigstens ganz viel

hexenmeister

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.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

stim

Wie sieht diese perl Anweisung aussieht

epsrw1

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
Ich habe keine Ahnung, aber davon wenigstens ganz viel

hexenmeister

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); }
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy