Kaminofen Holz nachlegen

Hallo zusammen,

ich habe hierein schon etwas in die Jahre gekommenes Skript gefunden.

Generell bin ich genau nach so etwas auf der Suche, wir besitzen einen wassergeführten Kaminofen, der natürlich um möglichst effizient zu sein regelmäßig bestückt werden muss, leider wird dies aber immer wieder mal vergessen.

Daher meine Frage, hat jemand so etwas aktuell in Nutzung und würde mir das Skript evtl. zur Verfügung stellen?

Würde auch versuchen das Skript aus oben genannten Thread zu benutzen:

 <? 
/* 
******************************* 
 IP-SYMCON Event Scripting 
******************************* 
File     : Kamin.ips.php 
Trigger  : Kamin (Temperatur) // 5 Minuten 
Interval :  
*/ 

$t_kamin = GetValueFloat("Kamin");                 // Kamin-Temp. 
$t_flur = GetValueFloat("IN_FS10_Temp_Flur");      // Umgebungs-Temp. 
$t_nachlegen = GetValueFloat("Kamin_T_nachlegen"); // Temp. bei Meldung 
$betrieb = GetValueInteger("Kamin_Betrieb");       // Kaminm-Status 
$schlafen = GetValueBoolean("Flag_Schlafen"); 

//echo "Temp: $t_kamin
"; 
//echo "Betrieb: $betrieb
"; 

// Kamin wurde angezündet, wenn Kamin-Temp über Umgebungs-Temp. 
if (($betrieb == 0) and ($t_kamin > $t_flur + 3) and ($schlafen == False) ){   // 3 Grad über Umgebungstemp. 
   SetValueInteger("Kamin_Betrieb", 1); 
   SetValueFloat("Kamin_T_nachlegen", $t_kamin); // Temp. Minimal setzen 
   DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\kamin_an.mp3"); 
   DXMedia_SetVolume(62704, 30); 
   DXMedia_Play(62704); 
} 

// Kamin brennt nun richtig (ab 45 Grad) 
if ((($betrieb == 1) or ($betrieb == 3)) and ($t_kamin >= 45)){ 
   SetValueFloat("Kamin_T_nachlegen", 45); // Temp. Minimal setzen 
   SetValueInteger("Kamin_Betrieb", 2); 
} 

// Kamin droht während der Aufheizphase auszugehen 
if (($betrieb == 1) and ($t_kamin  < $t_nachlegen)){ 
   SetValueFloat("Kamin_T_nachlegen", $t_kamin);  // Temp. merken, wann nachgelegt 
   DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\kamin_nicht_an.mp3"); 
   DXMedia_SetVolume(62704, 30); 
   DXMedia_Play(62704); 
} 

// Kamin droht auszugehen / Meldung, wenn er weiter abkühlt 
if ((($betrieb == 2) or ($betrieb == 3)) and ($t_kamin  < $t_nachlegen)){ 
   //echo "Holz nachlegen"; 
   SetValueInteger("Kamin_Betrieb", 3); 
   SetValueFloat("Kamin_T_nachlegen", $t_kamin);  // Temp. merken, wann nachgelegt 
   DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\holz_nachlegen.mp3"); 
   DXMedia_SetVolume(62704, 30); 
   DXMedia_Play(62704); 
} 

// Kamin ausgebrannt / unter 40 Grad ist nur noch wenig Glut 
if (($betrieb == 3 ) and ($t_kamin < 40)){ 
  SetValueInteger("Kamin_Betrieb", 4); 
} 

// Kamin abgekühlt / wenn fast Umgebungs-Temp erreicht 
if (($betrieb == 4 ) and ($t_kamin <=  $t_flur + 3)){ 
  SetValueInteger("Kamin_Betrieb", 0); 
} 

?>  

Danke und Grüße

Stephan

Da hast Du ein Skript ausgegraben, welches noch von IP-Symcon 1.0 stammt. Damals kannte Symcon noch keine IDs, so vermute ich. Das war vor meiner Zeit. Grundsätzlich sollte es aber möglich sein, etwas ähnliches zu entwerfen. Einen Temperaturfühler, der die Temperatur des Kamins misst, hast Du?

Dann zeig mal her, inwiefern Du das Skript bisher modifiziert hast. Ich denke, das kriegen wir hin. Das Skript ist auf jeden Fall eine gute Grundlage.

Grüße,
Christoph

Guten Morgen Christop,

ja das dieses Skript schon recht alt ist, ist mir auch aufgefallen :D. Leider habe ich nichts aktuelleres gefunden.

Bisher habe ich es so modifiziert.


  <?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Kamin.ips.php
Trigger  : Kamin (Temperatur) // 5 Minuten
Interval : 
*/

$t_kamin = GetValueFloat(55063);                 // Kamin-Temp.
$t_flur = GetValueFloat(36158);      // Umgebungs-Temp.
$t_nachlegen = GetValueFloat(35541); // Temp. bei Meldung
$betrieb = GetValueInteger(56008);       // Kaminm-Status
$schlafen = GetValueBoolean(10526);
$ps_vorlauf = GetValueFloat(31069);
$ps_oben = GetValueFloat(40991);



echo "Temp: $t_kamin
";
echo "Betrieb: $betrieb
";

// Kamin wurde angezündet, wenn Kamin-Temp über Umgebungs-Temp.
if (($betrieb == 0) and ($t_kamin > $t_flur + 3) and ($schlafen == False) ){   // 3 Grad über Umgebungstemp.
   SetValueInteger(56008, 1);
   SetValueFloat(35541, $t_kamin); // Temp. Minimal setzen
   //DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\kamin_an.mp3");
   //DXMedia_SetVolume(62704, 30);
   //DXMedia_Play(62704);
}

// Kamin brennt nun richtig (ab 45 Grad)
if ((($betrieb == 1) or ($betrieb == 3)) and ($t_kamin >= 45)){
   SetValueFloat(35541, 45); // Temp. Minimal setzen
   SetValueInteger(56008, 2);
}

// Kamin droht während der Aufheizphase auszugehen
if (($betrieb == 1) and ($t_kamin  < $t_nachlegen)){
   SetValueFloat(35541, $t_kamin);  // Temp. merken, wann nachgelegt
   //DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\kamin_nicht_an.mp3");
   //DXMedia_SetVolume(62704, 30);
   //DXMedia_Play(62704);
}
//Minimaltemperatur errechnen
if ( $ps_vorlauf < $ps_oben+5) {
    SetValueFloat(35541, $ps_oben+5); // Temp. Minimal setzen
}
// Kamin droht auszugehen / Meldung, wenn er weiter abkühlt
if ((($betrieb == 2) or ($betrieb == 3)) and ($t_kamin  < $t_nachlegen)){
   //echo "Holz nachlegen";
   SetValueInteger(56008, 3);
   SetValueFloat(35541, $t_kamin);  // Temp. merken, wann nachgelegt
   //DXMedia_Open(62704, IPS_GetKernelDir()."sounds\\holz_nachlegen.mp3");
   echo "Holz nachlegen";
   //DXMedia_SetVolume(62704, 30);
   //DXMedia_Play(62704);
}

// Kamin ausgebrannt / unter 40 Grad ist nur noch wenig Glut
if (($betrieb == 3 ) and ($t_kamin < 40)){
  SetValueInteger(56008, 4);
}

// Kamin abgekühlt / wenn fast Umgebungs-Temp erreicht
if (($betrieb == 4 ) and ($t_kamin <=  $t_flur + 3)){
  SetValueInteger(56008, 0);
}

?> 


Das läuft soweit ich es gesehen habe auch ganz gut.

Eine Sache hatte ich geändert, allerdings bin ich mir nicht sicher ob es an der Stelle wo ich es eingefügt habe richig ist.
Es geht mir um die Temperatur wann nachgelegt werden soll.
Die ist ja im Skript auf 45 Grad gesetzt… da ich ja einen Pufferspeicher heize, ändert sich diese Temperatur ja mit zunehmender Brenndauer.

Bedeutet die Vorlauftemperatur des Pufferspeichers sollte höher sein als der Pufferspeicher. Wenn der allerdings mal 80 Grad erreicht hat, geht nicht mehr so viel, dann macht es keinen Sinn mehr immer volle Pulle zu heizen.
Das die Mindesttemperatur angepasst wird habe ich mal notdürftig erreicht. Allerdings bin ich mir nicht sicher ob die Stelle an der ich das eingebaut habe die beste Wahl ist?

//Minimaltemperatur ermitteln
if ( $ps_vorlauf < $ps_oben+5) {
    SetValueFloat(35541, $ps_oben+5); // Temp. Minimal setzen
}

Danke schon mal.

Gruß
Stephan

Fast Offtopic:

Wie baut man den Temperaturfühler in den Kamin ein? Wo hast du Ihn sitzen?
Mit steht das noch bevor, und ich weiß auch nicht ob es ein „Wassergeführter“ werden soll…

lg

Hallo Stephan,
bei meinen Kaminofen hab ich einen 1-wire Temperatursensor von außen an das Abgasrohr angelegt.
Gruß Thorsten

Gesendet von meinem SM-A505FN mit Tapatalk

Die Anpassung mit den IDs in den ersten Zeilen scheint geklappt zu haben - super.

Ich habe mich thematisch jetzt nicht 100%ig mit dem Skript auseinandergesetzt, das nur als Anmerkung. Eins ist mir jedoch aufgefallen:

Im folgenden Bereich schreibst Du den berechneten Wert in die Variable 35541.

//Minimaltemperatur errechnen
if ( $ps_vorlauf < $ps_oben+5) {
    SetValueFloat(35541, $ps_oben+5); // Temp. Minimal setzen

Den Wert aus dieser Variable liest Du am Anfang des Skriptes in $t_nachlegen ein. Im Absatz „Kamin droht während der Aufheizphase auszugehen“ wird $t_nachlegen verwendet, direkt danach im Absatz „Minimaltemperatur errechnen“ berechnest Du dann ggf. eine neue Temperatur.

Du musst Dir nun die Frage stellen, ob das Skript beim Aufruf die Temperatur verwenden soll, die in 35541 gespeichert ist, oder die Temperatur, die ggf. neu berechnet wird. Falls letzteres, dann muss der Absatz „Minimaltemperatur errechnen“ vor den Absatz „Kamin droht während der Aufheizphase auszugehen“.

Hoffe, dass ich das halbwegs verständlich geschrieben habe. Falls nicht: fragen.

Grüße,
Christoph

Danke Thorsten, dazu muss ich einene eigenen Thread starten.

Wie baut man den Temperaturfühler in den Kamin ein? Wo hast du Ihn sitzen?
Ich muss dazu sagen das ich bei mir nicht die eigentliche Kamintemperatur messe, bei meinem Kaminofen gibt es oben, wo auch das Wasser durchlauft eine Öffnung für die Temperaturmessung, da habe ich ebenfalls einen 1-Wire Fühler reingesteckt. Somit habe ich hier dann die Wasssertemperatur (da ich damit ja den Pufferspeicher heize ist die für mich auch wichtiger). Das funktioniert schon seit Jahren sehr gut.

Die Anpassung mit den IDs in den ersten Zeilen scheint geklappt zu haben - super.

Stimmt, die Anpassung hat gut geklappt und das Skript tut so weit seinen Dienst.

Den Wert aus dieser Variable liest Du am Anfang des Skriptes in $t_nachlegen ein. Im Absatz „Kamin droht während der Aufheizphase auszugehen“ wird $t_nachlegen verwendet, direkt danach im Absatz „Minimaltemperatur errechnen“ berechnest Du dann ggf. eine neue Temperatur.

Ja stimmt, ich berechne die nachlege Temperatur neu, mein Problem ist das die ursprünglich verwendeten 45 Grad für mich im Betrieb zu niedrig werden. Ich passe den „Nachlege“-Zeitpunkt jetzt halt daran an wann die Temperatur des kommenden Wassers nicht mehr zum weiteren aufheizen des Pufferspeichers ausreicht. Dann wäre für mich in etwa der Zeitpunkt gekommen nachzulegen.

Besser konnte ich das bisher noch nicht lösen, denke ich muss da auch noch ein wenig testen, wie sich das dann im Betrieb verhält.

Aber für´s erste klappt es schon ganz gut. Die Position meines „Codeschnipsels“ werde ich nochmal überdenken.
Für Betrieb 0 und 1 reichen die 45 Grad, danach kommt dann die errechnete Temperatur zum Einsatz, ich glaube das passt so.

Danke jedenfalls frür die Hilfe.

Grüße
Stephan

Sehr gerne.

Das ist wieder ein sehr gutes Beispiel dafür, dass man perfekt helfen kann, wenn derjenige zeigt, was er bereits gemacht hat und wo es noch klemmt. Danke dafür!

Hallo Stefan,
nein, musst du nicht :wink:
Den Temperatursensor am Abgasrohr habe ich genau für den Zweck eine Ansage zum Holz nachlegen auszulösen.
Die Kesseltemperatur wäre bei meinem Kaminofen dafür nicht geeignet, da die je nach Temperaturen im Schichtenspeicher sehr stark variert. Aber über die Abgastemperatur kann ich sehr genau den Zeitpunkt festlegen wann Zeit ist zum nachlegen. Ich hab den Zeitpunkt so gewäht, dass noch ordentlich Glut im Ofen ist, aber die Flammen schon aus sind.
Hier mal mein Script welches die Ansage generiert. Ausgelöst wird dies durch ein Ereignis bei Unterschreitung der Abgastemperatur von in meinem Fall 73°C.


<?php

//Ansage Wenn möglich bitte Holz nachlegen

TTS_GenerateFile(23640, "Wenn möglich bitte Holz nachlegen!", "c:/IP-Symcon/media/TTS-File.wav", 16);

WAC_PlayFile(41330,"c:/IP-Symcon/media/TTS-File.wav");
WFC_AudioNotification ( 53992, "Holz nachlegen", 57993 ); //Auf Webfrontclients mit ID 57993 ausgeben	


Gruß Thorsten

Die Kesseltemperatur wäre bei meinem Kaminofen dafür nicht geeignet, da die je nach Temperaturen im Schichtenspeicher sehr stark variert. Aber über die Abgastemperatur kann ich sehr genau den Zeitpunkt festlegen wann Zeit ist zum nachlegen. Ich hab den Zeitpunkt so gewäht, dass noch ordentlich Glut im Ofen ist, aber die Flammen schon aus sind.

Ja das ist ein guter Hinweis, stimmt. Muss mir da auch noch gedanken machen…

Hier mal mein Script welches die Ansage generiert. Ausgelöst wird dies durch ein Ereignis bei Unterschreitung der Abgastemperatur von in meinem Fall 73°C.

Wenn ich fragen darf, wie sieht denn dein gesamtes Skript aus? Würdest du dieses mal hier posten, evtl. kann ich da ja was brauchen :).

Danke Grüße

Stephan

Hallo Stephan,
das ist das gesamte Script. Die Auslösung wird nur über das Ereignis gemacht.
Gruß Thorsten

Gesendet von meinem SM-A505FN mit Tapatalk