Temperaturwerte aus einem Pelletkessel der FA. ETA auslesen

Hallo,
hallo mistljo,

ich bekommt die folgende nervende Meldung bei Rückstellung der Alarmmeldung (ohne Auswirkungen) schon länger:

bei drücken auf ok:

im script die funktion:

//Liefert die gesuchte Kategorie ID zurück, Bsp. des Übergabewertes: "ETA/Variablen/Allgemein"

function GetObjectID($ObjectsString)
{
$TempParentID = 0;
$ObjectArray = explode("/", $ObjectsString);
foreach($ObjectArray as $TempObjectID){
    $TempParentID = IPS_GetObjectIDByName($TempObjectID,$TempParentID);
	}
return $TempParentID;
}

was muss ich da anpassen?

Gruß Konny

Hallo,

ich interessiere mich sehr für dieses Thema. Wir haben uns ein Haus gekauft, wo auch ein SH-Kessel verbaut ist. Dieser ist zwar von der Fa. Froling (die alte Firma), aber die Steuerung ist von ETA und verfügt über eine serielle Schnittstelle.

Zur Kommunikation habe ich noch ein ipether232 gehabt, welcher mir über Netzwerk die serielle Schnittstelle zu Kessel bring. Soweit, so gut.

Bevor ich jetzt aber mir IPS zulege, würde ich gerne die Kommunikation testen. Sprich schauen, ob alles richtig verkabelt ist (seriell) und ob die Steuerung denn auch antwortet.

Soweit ich gelesen habe sendet man der Steuerung ein Datagramm, woraufhin dann in Intervallen eine Antwort kommt. Aber dieses Datagramm muss ja bezüglich des Inhalt genau stimmen (Prüfsumme usw.)

Gibt es eine einfache Möglichkeit per PC (Windows) die Kommunikation mit der Steuerung zu testen? Im Prinzip würde es mir schon reichen, wenn von der Steuerung irgendwas zurück kommt, und wenn es nur ein schlichtes „OK“ wäre.

Danke für eure Hilfe.

Gruß
Dieter

Jedes beliebige Terminal-Programm sollte das können.

Gruß,

Toni

Das ist mir schon klar.

Meine Frage zielte darauf ab, ob generell von der ETA eine Antwort kommt? Auch wenn z.B. die Prüfsumme des Datagramms nicht korrekt ist.

Der Punkt ist, ich kriege noch nichts zurück. Das kann mehrere Ursachen haben. Die Verkabelung ist ein Punkt. Obwohl ich jetzt mehrere Kabel ausprobiert habe.
Aber es kann ja auch sein, dass die ETA, wenn das Datagramm nicht korrekt ist, schlichtweg gar nichts antwortet. Das weiß ich halt nicht, und deswegen die Frage, ob man auf einfache Weise testen kann, ob die Verbindung besteht oder nicht.

So, ich hab nun fast alles verarbeitet, was zugänglich ist.
Mit Hife von IPSView ist mir auch so einiges klar geworden…

Gruß Konny

HI konny

Schaut ja ganz fein aus, gibst du auch deinen Code weiter?

lg Joachim

hi DieterWo
hier ein kleines windows tool zum generellen testen der Verbindung.
verwendeten „COM Port“ und „NodeNr“ eintragen und auf „send“ klicken.
Dann sollte der Kessel antworten.

grüsse

PS: natürlich ohne irgendwelche Garantie oder ähnliches.

ETAcom232Helper.zip (7.88 KB)

Hallo Joachim,

gerne,…
kannst du mir noch bei der Tastensteuerung weiter helfen…

Hab ich das richtig verstanden? z.B ab:

<?

// 7B 49 54 01 31 03 7D {IT.1.} Ab

//Prüfsummenberrechnung immer gleich?

$Daten ="{MT";      //Startzeichen und Servicekennung
$Daten .= chr(01);   //Anzahl der Nutzdatenbytes
$Daten .= chr(31);  //Prüfsumme
$Daten .= chr(03);   //AB
$Daten .= "}";


// ComPort_SendText(38947 /*[ETA_COM_Port]*/, $Daten);
    echo " gesendet  $Daten an ETA";

?>

Logischerweise müsste dasnn die Empfangskennung „{MTu“ sein?
Wie meldet sich das Display?

Gruß Konny

Anbei Script für die interpolierte Solarleitung,
Ich komme mit einem Korrekturfaktor ziemlich genau an den Wärmemengenzähler hin.
Diese hatte leider keinen Datenausgang.

<?
 $BoiSol=GetValueFloat(56937 /*[ETA\Variablen\Aktuelle Werte\Boiler_untSolar Wert\Boiler_untSolar]*/);
 $PuSol=GetValueFloat(27807 /*[ETA\Variablen\Aktuelle Werte\Puffer_untSolar Wert\Puffer_untSolar]*/);
 
 $SolarPu1=GetValueFloat(11396 /*[ETA\Variablen\Aktuelle Werte\Koll.pumpe_1 Wert\Koll.pumpe_1]*/);
 $SolarPu2=GetValueFloat(56263 /*[ETA\Variablen\Aktuelle Werte\Koll.pumpe_2 Wert\Koll.pumpe_2]*/);

$Solar=getValue(32530 /*[ETA\Variablen\Aktuelle Werte\Kollektor Wert\Kollektor]*/);


 
 // Q=m*c*?? in Joule
 // Pumpenleistung
 // $1liter=0,95kg Glycol? Lösung ca 99%
 // http://www.heizungsfinder.de/forum/energie-ecke/2845-waermemengenmessung-mit-solarfluessigkeit.html
 //$Durchfluss=7x60=420Liter x 0,99, Viskosität,   $Cwasser=4,1868,   $Cglycol=3,65 KJ/Kg
$c=4.14; //misch
$Dpu=$Solar-$PuSol;
$Dbu=$Solar-$BoiSol;

$D=$Dpu*$SolarPu2/100+$Dbu*$SolarPu1/100;
$kor=GetValuefloat(52284 /*[Solar Wasser\Kollektor Solarthermie\Korrekturfaktor]*/);
$korrektur=$kor/100;

echo "$Dbu °x $SolarPu1% puffer $Dpu °x $SolarPu2%  boiler = $D 
";
$Q=round(420*$c*$D,0); //(Joule=Ws)
$Qkwh=round($Q/3600,2);
 $P=round($Q/3.6)*$korrektur;
 echo"$Q Joule(Watt s),$P Watt $Qkwh kWh, korrekturfaktor= $korrektur";

SetValue(36703 /*[Solar Wasser\Kollektor Solarthermie\akt.Leistung P]*/,$P);
  ?>

gruß Konny

Danke für das Programm. Mittlerweile habe ich die Kommunikation hinbekommen. Die Ursache war eine zu alte Softwareversion der Steuerung. Aber mit Hilfe von ETA war das schnell gelöst.
Nach ein paar anfänglichen Schwierigkeiten habe ich aber schließlich ein Programm schreiben können, was mir jetzt zuverlässig die Daten ausliest und mir auf dem Handy bereitstellt. Das ist schon mal ein super Sache :slight_smile:

Jetzt will ich noch die Steuerung der Heizkreise irgendwie lösen (dann bin ich schon am Ziel). Dazu muss ich, laut doku von ETA, den Parameter „SMS erlauben“ in den Heizkreisen auf Ja stellen. Nur leider habe ich diesen Parameter nicht. Weder als Kunde noch als Service.
Kann mir jemand sagen, wir ich da heran komme?

Gruß
Dieter

Hi,

hier mal ein kleiner Überblick, was ich mit eurer Hilfe (und der Hilfe dieses Threads) geschaffen haben.

  1. Ihr habt mich auf die Idee gebracht, was mit meine Kessel möglich ist.
  2. Ihr habt mir geholfen die Kommunikation einzurichten.
  3. ETA hat mir ein neues EPROM geschickt.
  4. In meiner gesammelten Hardware habe ich noch ein IPEther gefunden (IP<->RS232)
  5. Mit Hilfe der Dokumentation (hier im Thread und von ETA) habe ich mir ein Programm geschrieben.
  6. Ich erzeuge eine kleine HTML-Datei und mit einem MiniWebServer stelle ich die im LAN und über Router zu Verfügung

Ich habe mal die Screenshots meines Werkes angehängt.

Kostenfaktor für das ganze: ca. 20 € für die Eproms und ein paar Stunden Arbeit.

Ziel des ganzen war ursprünglich vom Wohnzimmer aus den Ladezustand des Pufferspeichers zu sehen.
Zur Information ich habe einen Fröling Euroturbo 30 (baugleich mit dem ETA SH 30), eine Scheitholzkessel.
Aber die Ziele verändern sich ja mit dem Möglichkeiten :slight_smile:
Und das ganze läuft richtig gut :slight_smile:

Was mir jetzt noch fehlt, bzw. was ich noch gerne machen möchte, ist die Heizkreise steuern. Also neben der Möglichkeit über Zeitprofile, die die Steuerung sowieso bietet, per App diese zu verändern. Wie ich das machen könnte, weiß ich noch nicht so ganz genau. Leider finde ich keine Möglichkeit die Funktion „SMS erlauben“ bei den Heizkreisen einzuschalten (der Menupunkt ist einfach nicht da).
Also habe ich mir überlegt, müßte es doch vlt. gehen, die Zeitprofile zu überschreiben?
Wenn dazu einer näheres weiß, würde ich freuen, wenn sich derjenige hier oder per PM bei mir melden würde.

Gruß Dieter

Programm.jpg

Hallo Dieter,

vielleicht ist es am einfachsten das Programm (1,1) von Joachim zu installieren…
Du erhältst eine XML-Parameter-Datei siehe Seite 12

Dann durchsortieren und ansteuern mit dem Muster:

{MJ…
Siehe Joachims Seite:Joko.at , rechts unter wiki / protokolle

<?
//Hier Heizkreisfreigabe PEK50 mit zusätzlicher Heizsteuerplatine
//FreigabeDifferenz (MK1 18,32 (std 18°), MK2 37,32)
$Node = 32; // gefundene Knotennummer
$Index_LByte = 18;  // beim PEK50 mit Erweiterung

//Angelegte Variable aus Webfront auslesen
$Wert = GetValue(15493 /*[ETA steuern\2 Parameter Heizkreise\Freigabe HK1]*/)*10; //Teiler da Zentelgrad!

//Umrechnung für Kessel 
$HighWert = ((int)($Wert/256));
$LowWert = $Wert % 256;

//Prüfsummenberrechnung wird als 3tes Byte gesendet
$PS = $Node + $Index_LByte + $HighWert + $LowWert;
$PS = $PS & 255;    // Rest aus Division durch 256
//Prüfsummenberechnung Ende


//String zusammenbauen
$Daten ="{MJ";                     //Startzeichen und Servicekennung
$Daten .= chr(5);                        //Anzahl der Nutzdatenbytes
$Daten .= chr($PS);                   //Prüfsumme
$Daten .= chr($Node);         //Knoten (Kesslplatine oder Heizerweiterung,24 oder 32 bei mir) 
$Daten .= chr(00);                   // Index Highwert "fast" immer Null
$Daten .= chr($Index_LByte);      // Index, Postfach für Wert
$Daten .= chr($HighWert);                //oberer Temperaturteilwert in HEX (Wert_HByte) 
$Daten .= chr($LowWert);                     //unterer Temperaturteiiwert in HEX (Wert_LByte)
$Daten .= "}";


//an Datenport senden
//
ComPort_SendText(38947 /*[ETA_COM_Port]*/, $Daten);

//Meine Sichtkontrolle im Script
$Anzeigewert=$Wert/10;  //wegen Teiler
    echo " gesendet für   ".$Wert."/10° ".$HighWert.$LowWert." an ETA";
?>

Gruß Konny

aktueller Stand

Hallo

habs jetzt endlich geschafft

ETA IPS 1.1 auf dem Raspi zu installieren

waren einige Anpassungen notwendig

aber jetzt läufts stabil

Geile Sache :loveips:

Hallo fmac,

kannste da mal ein Raspberry Image zur Verfügung stellen?–
oder Terminalbefehle?..

Gruß Konny

IPS 3.5??

Hallo

Hab das normale debian wheezy
siehe http://www.raspberrypi.org/downloads/

die Installationsanleitung gibts hier:
http://www.ip-symcon.de/forum/threads/24620-Installationsanleitung-(RaspberryPi)

dann hab ich mir ein Seriell-1wire-modul geleistet(bin kein freund von USB obwohl USB-seriell auch geht)
https://www.abelectronics.co.uk/products/3/Raspberry-Pi/26/Com-Pi
1wire läuft über i2c (mit ownet und http://tdressler.net/ipsymcon/ownet_reader.html )
Vielen dank dafür an Thomas Dreßler

Dann wars einiges an Zeit zu investieren, bis die Installation von EAT2IPS durchlief
die serielle Schnittstelle nennt sich auf Linux /dev/ttyAMA0 (das muss man mal wissen)
die Variablen-Profilerstellung braucht auch andere Parameter-Schreibweisen, und noch einige andere Anpassungen
auf Version 3.5

Wenn Yoko kein Problem damit hat kann ich die Script gern hochladen

Muss sagen bin echt schwer begeistert von der IPS version für Linux
mit Linux kannst du fast alles verbrechen.
Hab jetzt auch meine Wetterstation PCE 20 dank „fowsr“ direkt über USB dran
unter Windows hat die Easyweather Software immer Problem gemacht

Und Dank der „CyberDuck“ ist auch ein Zugriff auf das Rapsi Dateisystem kein Problem
noch fehlen einige Module, aber ist eben noch BETA.

Viel Spass damit

Hallo miteinander,

habe mal wieder zeit dieSteuerung zu verbessern.
Jetzt gehts an die Rückmeldungen „MK“ nach Umstellung von EInzelwerten.
Folgendes ist mit aufgefallen:

(Attain)script an ETA-Funktions (mistljo) hat nicht funktioniert, da die Klammer nich mit im COM-String gezählt wurde:

if(substr($COM_String,0,2) =="MK"){  //Einstellwerte

richtig

if(substr($COM_String,0,3) =="{MK"){  //Einstellwerte
 $Index = 256 * ord($COM_String{5}) + ord($COM_String{6});
    $Value = 256 * ord($COM_String{7}) + ord($COM_String{8});
    $Index = sprintf("%03s", $Index); // Auf 3 Stellen auffüllen mit Nullen
    IPS_LogMessage("Heizung Setwert Nr.: $Index"," Wert = : $Value Comstring $COM_String");
    SetValueString(55748 /*[ETA steuern\Eta Einstellung geändert]*/,"Heizung Setwert Nr.: $Index"," Wert = : $Value   Comstring $COM_String");
}

Wie bekomm ich jetzt die brauchbaren Werte?

Gruß Konny

Die Rückmeldung des Ofens ist wie die Steuerungsmeldung:

nur statt MJ eben MK
z.B
transmitted
{MJ"Datenstring"}
hex 7B 4D 4A 05 A4 20 00 25 01 5E 7D
received:
{MK"Datenstring"}

hex 7B 4D 4B 05 A4 20 00 25 01 5E 7D

ab Zeile 280:

/else {
write_error("Warning: Empfange Daten vom Ofen, obwohl die Abfrage ausgeschalten ist,
Einstellungen geändert?",1); // 2= General 1= ETA Alarm
SetValueBoolean(GetObjectID("ETA/Meldungen/ETA Status"),false);
				    
// Ergänzung Konny
	 if(substr($COM_String,0,3) =="{MK"){  //Einstellwerte
	$Index = ord($COM_String{7}); // Knoten der Steuerung
        $Value = (ord($COM_String{8})*256 + ord($COM_String{9}))/10;  // Celsiuswert
    	SetValueString(55748 /*[ETA steuern\Boiler\Eta Einstellung geändert]*/,"Einstellung $Value°"); //Kontrollstring
    	IPS_LogMessage("Heizung","Wert $Value ° empfangen für Knoten $Index"); //Ausgabe Meldungen

	}

Jetzt bräuchte ich noch eine Funktion wo ich auf meine Knotenliste zurückgreifen kann…
Bildschirmfoto 2015-03-27 um 16.06.03.png

Gruß Konny

mistljo,
ist ein bißchen alt. Bzgl.: Temperaturwerte aus einem Pelletkessel der FA. ETA auslesen - Seite 4
da ist anscheinend ein Fehler beim Monitorliste-Auslesen drin.

$MonitorListeEnde = "{MO";
         $MonitorListeEndeBytes = chr(01) . chr(01);
         $MonitorListeEndZeichen = "}";
         //Zusammensetzen
         $Daten = $MonitorListeEnde . $MonitorListeEndeBytes . $MonitorListeEndZeichen;

Das Ende-Senden kann so nicht stimmen. Als Anzahl Nutzbytes wird 1 angegeben (Prüfsumme dann auch 1), allerdings folgen keine Nutzbytes, sondern nur das abschließende }.
Irgendwas stimmt da nicht. Wie kommst du auf {MO#01#01} fürs Ende? Hab ich hier im thread irgendwas übersehen?

Hallo fmac,

kannst du mir mal
SCR_WebInterfaceUebergabe_ETA komplett anzeigen lassen
ich bekomm das nicht hin…

	elseif ($_IPS['VARIABLE']== GetObjectID("ETA/Setup/Einstellungen/Serial Port USB"))
		#elseif ($_IPS['VARIABLE']== GetObjectID("ETA/Setup/Einstellungen/Serial Port COM"))
		{
      	IPS_SetProperty(GetObjectID("ETA_COM_Port"),"Open",false)
			IPS_SetProperty(GetObjectID("ETA_COM_Port"),"Port","ttyUSB0");
			IPS_SetProperty(GetObjectID("ETA_COM_Port"),"Open",true);
			IPS_ApplyChanges(GetObjectID("ETA_COM_Port"));
			SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
		}

ebenso aus SCR_Etafunktion ab zeile 404

function GetObjectID($ObjectsString)
{
$TempParentID = 0;
$ObjectArray = explode("/", $ObjectsString);
foreach($ObjectArray as $TempObjectID){
    $TempParentID = IPS_GetObjectIDByName($TempObjectID,$TempParentID);
    #$TempParentID =37729
	}
return $TempParentID;
}

bekomm ich immer wieder Fehleranzeigen.

und das Neuaufsetzen hat wegen der Befehlsänderungen schon mehrfach nicht geklappt.

Gruß Konny

Hallo

Hab dir alle Scripte angehängt

Archiv.zip (25.1 KB)

Das mit der Schnittstelle hab ich auskommentiert
nach der Installation alles im ETA_COM_PORT manuell einstellen tuts auch

und das ist ab Zeile 44 wenn ich das richtig sehe, sieht bei mir gleich aus

Habs gerade nochmal installiert, bis auf ein paar Warnungen hat es geklappt :wink:

Ein wichtiger Hinweis noch : bei mir läuft die Kommunikation momentan über einen Comserver (W&T)
daher musst du alle diese Zeilen in der SCR_EtaFunctions.ips.php ändern(das nicht benötigte auskommentieren)


//ComPort_SendText($ETA_ComID, $Daten);
      CSCK_SendText($ETA_ComID, $Daten);
/PHP]



Mögen die Bytes mit dir sein :D