In meinem letzten Beitrag zu diesem Thema, habe ich die Koppelung ohne Script, mit dem WWW-Reader und dem Textparser erledigt. Nachteil war, dass diese Konstellation nicht stabil funktioniert hat und dass nicht alles, was ich mir vorgestellt habe machbar war.
Ich habe dabei festgestellt, dass PHP- und IPS-Programmierung nicht schwierig ist. Daher habe ich die Koppelung per Script gelöst.
Die Funktionsweise ist identisch, aber funktioniert nun seit Wochen stabil.
Kurz zur Funktion des Scripts:
- HTTP Anfrage an den Kessel schicken
- Antwort empfangen
- Antwort auf relevante Daten Filtern
- Gefilterte Daten in IPS-Variablen schreiben
- (Das läuft nicht mehr im Script) Scriptaufruf alle 30 Sekunden
/*
***********************************
ETA-SH20 -Script
(c) by Markus Hasenfuß / 05.2013
***********************************
Mit diesem Script werden die Werte des ET-SH20 Touch-Kessels ausgelesen und an IPS übergeben.
Zudem wird nach Anzahl x-Volllaststunden autom. eine Mail generiert, die an die Ascheentleerung erinnert.
*/
//****************************************
//Auslesen Volllaststunden
//****************************************
$url8 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12153";
$Ausgabe8 = file_get_contents("$url8");
$Volllaststunden_in_Sekunden = strip_tags($Ausgabe8);
$Volllaststunden_Dezimal = $Volllaststunden_in_Sekunden/3600;
$Volllaststunden_Array = explode('.',$Volllaststunden_Dezimal); //In Array umwandeln
//echo $Volllaststunden_Array[0]; //Ausgabe der Stunden
//echo"
";
//echo $Volllaststunden_Array[1]; //Ausgabe der Minuten
$Minuten = $Volllaststunden_Array[1]/100*60;
$Minuten_auf_zwei_Zeichen_gekuertzt = substr ($Minuten, 0, 2);
$Volllast_Std = $Volllaststunden_Array[0];
$Volllaststunden = ($Volllaststunden_Array[0]+($Minuten_auf_zwei_Zeichen_gekuertzt/100));
SetValue(19971/*[ETA-SH20\Volllaststunden]*/,(float)$Volllaststunden);
//****************************************
//Mailversand bezüglich Ascheentleerung
//****************************************
// echo"
"; Zeilenumbruch
$Naechste_Zeit_bis_Aschereinigung=GetValue(58088 /*[ETA-SH20\Zeitschwelle Aschereinigung bei...]*/);
if ($Naechste_Zeit_bis_Aschereinigung==0) { //Neusetzten des Asche-Timers
$Naechste_Zeit_bis_Aschereinigung=$Volllast_Std+10; //Timer für Aschereinugung neu setzten
setValue(58088 /*[ETA-SH20\Zeitschwelle Aschereinigung bei...]*/,(float)$Naechste_Zeit_bis_Aschereinigung);
print_R($Naechste_Zeit_bis_Aschereinigung);
} else {
$Verbleibende_Std_bis_Aschereinigung=GetValue(58088 /*[ETA-SH20\Zeitschwelle Aschereinigung bei...]*/)-$Volllast_Std;
// print_R($Verbleibende_Std_bis_Aschereinigung);
SetValue(35579 /*[ETA-SH20\Verbleibende Stunden bis Aschereinigung]*/,(float)$Verbleibende_Std_bis_Aschereinigung);
}
if ($Verbleibende_Std_bis_Aschereinigung <= 0) {
//SMTP_SendMail(52568 /*[Mail-Module\Mailversand Aschereinigung ETA-SH20]*/,"ETA-SH20 - Aschereinigung","Hallo, bitte Aschekasten leeren. Die letzte Reinigung ist 10 Volllaststunden her.");
$Naechste_Zeit_bis_Aschereinigung=0;
}
//****************************************
//Auslesen der Solar-Kollektortemperatur
//****************************************
$url1 = "http://192.168.100.53:8080/user/var/120/10221/0/0/12275"; //URL der Solar_Kollektortemperatur
$Ausgabe1 = file_get_contents("$url1");
$Solar_Kollektor_Temp_1 = strip_tags($Ausgabe1);
$Solar_Kollektor_Temp = $Solar_Kollektor_Temp_1/10;
//$Solar_Kollektor_Temp = substr($Ausgabe1, -83,2);
// print_R($Solar_Kollektor_Temp);
SetValue(16984 /*[ETA-SH20\Kollektor Temperatur]*/,(float)$Solar_Kollektor_Temp);
//****************************************
//Auslesen der Pufferladung
//****************************************
$url2 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12528";
$Ausgabe2 = file_get_contents("$url2");
$Pufferladung_1 = strip_tags($Ausgabe2);
$Pufferladung = $Pufferladung_1/10;
// print_R($Ausgabe2);
//$Pufferladung = substr($Ausgabe2, -81,2);
//print_R($Pufferladung);
SetValue(14107/*[ETA-SH20\Pufferladung]*/,(float)$Pufferladung);
//****************************************
//Umrechnen der Pufferladung in % in KW
//****************************************
$Pufferladung_in_KW=GetValue(14107 /*[ETA-SH20\Pufferladung]*/)*20/100;
SetValue(57577 /*ETA-SH20\Pufferladung_inKW*/,(float)$Pufferladung_in_KW);
//****************************************
//Auslesen der Abgassolltemperatur
//****************************************
$url3 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12002";
$Ausgabe3 = file_get_contents("$url3");
// print_R($Ausgabe3);
//$Abgassolltemperatur = substr($Ausgabe3, -81,3);
$Abgassolltemperatur_1 = strip_tags($Ausgabe3);
$Abgassolltemperatur = $Abgassolltemperatur_1/10;
//print_R($Abgassolltemperatur);
SetValue(55298/*[ETA-SH20\Abgassolltemperatur]*/,(float)$Abgassolltemperatur);
//****************************************
//Auslesen UPM-Abgasgebläse
//****************************************
$url4 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12165";
$Ausgabe4 = file_get_contents("$url4");
$Abgasgeblaese = strip_tags($Ausgabe4);
//echo"
";
//print_R($Abgasgeblaese);
SetValue(12009/*[ETA-SH20\Abgasgeblaese]*/,(float)$Abgasgeblaese);
//****************************************
//Auslesen Abgastemperatur
//****************************************
$url5 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12162";
$Ausgabe5 = file_get_contents("$url5");
$Abgastemperatur_1 = strip_tags($Ausgabe5);
$Abgastemperatur = $Abgastemperatur_1/10;
SetValue(48903/*[ETA-SH20\Abgastemperatur]*/,(float)$Abgastemperatur);
//****************************************
//Auslesen Kesselpumpe
//****************************************
$url6 = "http://192.168.100.53:8080/user/var/48/10391/0/11123/0";
$Ausgabe6 = file_get_contents("$url6");
$Kesselpumpe_1 = strip_tags($Ausgabe6);
$Kesselpumpe = $Kesselpumpe_1/10;
SetValue(54068/*[ETA-SH20\Kesselpumpe]*/,(float)$Kesselpumpe);
//****************************************
//Auslesen Restsauerstoff
//****************************************
$url7 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12164";
$Ausgabe7 = file_get_contents("$url7");
$Restsauerstoff_1 = strip_tags($Ausgabe7);
$Restsauerstoff = $Restsauerstoff_1/100;
//print_R($Restsauerstoff);
SetValue(16064/*[ETA-SH20\Restsauerstoff]*/,(float)$Restsauerstoff);
//***********************************************
//Auslesen Volllaststunden_seit_letzter_Wartung
//***********************************************
$url9 = "http://192.168.100.53:8080/user/var/48/10391/0/0/12404";
$Ausgabe9 = file_get_contents("$url9");
$Volllaststunden_Wartung_in_Sekunden = strip_tags($Ausgabe9);
$Volllaststunden_Dezimal_Wartung = $Volllaststunden_Wartung_in_Sekunden/3600;
$Volllaststunden_Wartung_Array = explode('.',$Volllaststunden_Dezimal_Wartung); //In Array umwandeln
$Minuten_Wartung = $Volllaststunden_Wartung_Array[1]/100*60;
$Minuten_auf_zwei_Zeichen_gekuertzt_Wartung = substr ($Minuten_Wartung, 0, 2);
$Volllaststunden_Wartung = ($Volllaststunden_Wartung_Array[0]+($Minuten_auf_zwei_Zeichen_gekuertzt_Wartung/100));
SetValue(48726/*[ETA-SH20\Volllaststunden_seit_letzter_Wartung]*/,(float)$Volllaststunden_Wartung);
//*********************************************************************
//Berechnung Verbleibende Stunden bei derzeitiger Last
//*********************************************************************
$Restzeit_KW = $Pufferladung_in_KW/(GetValue(51644/*[HX-Control\Leistung Gesamt]*/)+0.5);
SetValue(44715 /*ETA-SH20\Verbleibende Stunden bei derzeitiger Last*/,(float)$Restzeit_KW);
Hier ein Bild des Ergebnis:
Bei Fragen hierzu, einfach melden.