Hallo fmac,
kannste da mal ein Raspberry Image zur Verfügung stellen?–
oder Terminalbefehle?..
Gruß Konny
IPS 3.5??
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…
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
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
Danke fmac,
ich hab’s mal installiert…
undefined function:
ComPort_SendText(
COMPort_GetDevices(… SCR_Startup.ips.php on line 10
EC_SetStartupScript( … SCR_ETA_install.ips.php on line 317
Da hab ich leider keine Ahnung und keine Doku…
Wie wurstel ich diese Befehle um? USB_SendText(…)???
oder hier:
RegVar_SendText — IP-Symcon :: Automatisierungssoftware
oder hier:
Migration (V3.2->V3.3) — IP-Symcon :: Automatisierungssoftware
-Neu: COMPort_* heißt jetzt SPRT_* und WWWReader_* heißt jetzt WWW_*
…test
Gibt es einen Unterschied zwischen COMPort_ und ComPort_ ?
Gruß Konny
WebFront darfst du selbst anpassen
Umlaute…vermutlich einfach nur das Skript neu abspeichern in UTF8. Oder den Text in ein IPS-Skript rein kopieren.
Doku > Befehlsreferenz — IP-Symcon :: Automatisierungssoftware
Grüße,
Chris
Danke,
yes we can…
Rückblickend:
installationscripts
Archive.zip (20.5 KB)
Gruß Konny
Hallo,
hat sich noch jemand mit der Displaysteuerung und Rückmeldung auseinandergesetzt?
Tastenprinzip:
<?
//__ __ __ __ __ xx __
//7B 49 54 01 31 02 7D {IT.1.} Auf
//7B 49 54 01 31 03 7D {IT.1.} Ab
//7B 49 54 01 31 01 7D {IT.1.} Ja
//7B 49 54 01 31 04 7D {IT.1.} Zurück
//7B 49 54 01 31 00 7D {IT.1.} Ändern
//7B 49 54 01 31 05 7D {IT.1.} Info
//7B 49 54 01 31 07 7D {IT.1.} Entaschen
//7B 49 54 01 31 06 7D {IT.1.} Kessel I/O
//7B 49 49 01 30 30 7D {II.00} Abfrage Aus
//7B 49 49 01 31 31 7D {II.11} Abfrage Ein
$Node = 01;
$Index_LByte = 31;
//SetValue(53351 /*[ETA steuern\Tasten Display\Tasten\AB]*/,1);
$Taste=03; // direkte Eingabe
//Prüfsummenberrechnung
$PS = $Node + $Index_LByte + $Taste;
//$PS = $Node + $Index_LByte + $HighWert + $LowWert;
$PS = $PS & 255; // Rest aus Division durch 256
//Prüfsummenberechnung Ende
$Daten ="{MT"; //Startzeichen und Servicekennung
$Daten .= chr(5); //Anzahl der Nutzdatenbytes
$Daten .= chr($PS); //Prüfsumme
$Daten .= chr(01);
$Daten .= chr(31);
$Daten .= chr(03); // TASTE ZURÜCK, direkte Eingabe
$Daten .= "}";
//Tastencode senden
SPRT_SendText(38947 /*[ETA_COM_Port]*/, $Daten);
//Kontrollstring
SetValueString(12354 /*[ETA steuern\Skripte\ EtaSendDaten]*/,$Daten);
sleep(0.5); //in sekunden
// Taster rücksetzen
SetValue(53351 /*[ETA steuern\Tasten Display\Tasten\AB]*/,0);
// Kontroll Notiz
WFC_SendNotification(37729 /*[WebFront]*/,"AB","",0,1);
?>
Mir fehlen noch die Rückmeldungen und der Handbetrieb.
Gruß Konny
Hallo
Das sieht ja geil aus
Respekt !!!
…ich wollte noch schnell 2015 die USB-Schnittstelle fixieren (udev).
ttyUSB_Eta statt ttyUSB*.
# Datei: /etc/udev/rules.d/20_ETA.rules
# Gerät EZA mit PL2303 Seriellwandler an USB
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="ttyUSB_ETA"
Das geht nicht?!
hier aus dem Terminal:
ein letzter Tip ?
@fmac … ist nur IPSView…
Guten Rutsch
Konny
Hallo,
wenn keine Meldungen von ETA reinkommen liegt das meistens daran, dass der ttyUSB-Port nicht mehr stimmt, deshalb:
Aktuelles Datum und Zeit der Livedaten prüfen (mit Minutenversatz) und dann Port-ttyUSB umschalten:
<?
// aktuelle Livedaten auslesen, letzter Satz
//String zerlegen da nicht parsebar
$String1=substr(getValueString(43250 /*[ETA\Meldungen\Live Daten]*/),0,11);
echo " LiveDaten ETA: $String1 ";
list ($tag, $monat, $jahr) = explode(" ",$String1);
// echo "$tag $monat $jahr
";
$String2=substr(getValueString(43250 /*[ETA\Meldungen\Live Daten]*/),11,6);
echo "$String2
";
list ($stunde, $minute) = explode(":",$String2,3);
// echo "Stunde: $stunde; Minuten: $minute; Sekunde: $sekunde
";
// AKtuelles Datum und Zeit
$timestamp = time();
$datum1 =date("d M Y h:i ",$timestamp); //heute
echo " Aktuelle Zeit: $datum1
";
//Versatz
$minutenVersatz=getValue(42255 /*[ETA steuern\Datenfluss\Minutenversatz]*/);
$datum_neu= date("d M Y h:i",$timestamp-60*$minutenVersatz);
echo "Versatzt: $minutenVersatz Minuten
";
echo "Sollzeit: $datum_neu
";
$datum2 = $tag." ".$monat." ".$jahr." ".$stunde.":".$minute ;
echo "Ausgelesen: $datum2
";
if (($timestamp = strtotime($datum2)) === false) {
echo "Die Zeichenkette ($datum2) ist nicht parsebar
.";
} else {
//echo "Kontrolle $datum2 == " . date('d M Y h:i ', $timestamp);
}
$ttyUSB=GEtValue(51196 /*[ETA steuern\Datenfluss tyUSB]*/);
echo "ttyUSB ist $ttyUSB
";
If ($datum_neu > $datum1)
{
echo "$datum1 Älter als $datum2
";
//SetValue(51196 /*[ETA steuern\Datenfluss tyUSB]*/,1);//ttyUSB umschalten
If ($ttyUSB==0)
{
SetValueFloat(51196 /*[ETA steuern\Datenfluss tyUSB]*/,1);
}
else
{
SetValueFloat(51196 /*[ETA steuern\Datenfluss tyUSB]*/,0);
}
}
else
{
echo "
Meldungen sind aktuell $datum2";
}
$ttyUSB=GEtValue(51196 /*[ETA steuern\Datenfluss tyUSB]*/);
echo "
ttyUSB ist $ttyUSB
";
?>
USB umschalten:
<?
// Comports tauschen
// Comport Status
$config1 = IPS_GetConfiguration(38947 /*[ETA_COM_Port]*/);
$config2 = IPS_GetConfiguration(33162 /*[M-Bus_Com_Port]*/);
echo " ETA-Com $config1
M-Bus-Com $config2
";
$ttyUSB=GEtValue(51196 /*[ETA steuern\Datenfluss tyUSB]*/);
echo "ttyUSB ist $ttyUSB
";
//ausschalten
SetValue(44980 /*[ETA\Setup\Datenabfrage]*/,0);
IPS_SetProperty ( 38947 /*[ETA_COM_Port]*/, "Open", 0 );
IPS_SetProperty ( 33162 /*[M-Bus_Com_Port]*/, "Open", 0 );
echo "Com-Ports werden ausgeschalten
";
//ETA auf USB0
switch ($ttyUSB) {
case 0:
IPS_SetProperty ( 38947 /*[ETA_COM_Port]*/, "Port", "/dev/ttyUSB0" );
IPS_SetProperty ( 33162 /*[M-Bus_Com_Port]*/, "Port", "/dev/ttyUSB1" );
echo "ETA auf USB0 gestellt
";
break;
case 1:
IPS_SetProperty ( 38947 /*[ETA_COM_Port]*/, "Port", "/dev/ttyUSB1" );
IPS_SetProperty ( 33162 /*[M-Bus_Com_Port]*/, "Port", "/dev/ttyUSB0" );
echo "ETA auf USB1 gestellt
";
break;
case 2:
//IPS_SetProperty ( 38947 /*[ETA_COM_Port]*/, "Port", "/dev/ttyUSB1" );
//IPS_SetProperty ( 33162 /*[M-Bus_Com_Port]*/, "Port", "/dev/ttyUSB0" );
echo "nicht erlaubt
";
break;
}
//Einschalten
IPS_SetProperty ( 38947 /*[ETA_COM_Port]*/, "Open", 1 );
IPS_SetProperty ( 33162 /*[M-Bus_Com_Port]*/, "Open", 1 );
SetValue(44980 /*[ETA\Setup\Datenabfrage]*/,1);
echo "Com-Ports wieder eingeschalten";
?>
ttyUSB als Float mit 0,1,2,3,4 und Text -Profil ttyUSB1,…
Minutenversatz für maximale Zeitverzögerung als Integer
EInstellungen ETA ttyUSB: 19200/8/1/keine
Gruß Konny
Hallo,
nach dem Update auf 4.0 musste ich bei den Skripten einiges anpassen.
Vielen Dank Konny! Deine Skripte für den ETA Ofen waren sehr hilfreich
Die Daten kommen jetzt auch wieder rein, nur beim Laden der Grunddaten kommt die Meldung (siehe Bild).
Habt Ihr eine Idee, was ich tun muss? Stehe grad auf dem Schlauch!
Vielen Dank!
Gruß
Christian
Hallo zusammen,
ich versuche seit geraumer Zeit erfolglos das Skript für meinen ETA zum laufen zu bringen. Ich nutze IPS 4.1 und einen Raspberry 2. Das Skript hier aus dem Forum zur Grundinstallation bekomme ich noch zum laufen, allerdings bricht mir das laden der Grunddaten jedesmal ab. Siehe dazu auch die Fehlermeldung:
Hab schon einiges Probiert, gerade was die Hardware angeht, aber an der Anbindung der ETA-Steuerung an den Raspi scheint es nicht zu liegen. Die Instanz 15541 ist der Script.Timer für Skript SCR_Cutter. Nachdem die Routine Grunddaten laden mit dem Fehler oben abgelaufen ist, erscheint auch das Skript SCR_COM_String zerlegen als fehlerhaft.
Kann mir hier jemand weiterhelfen? Hatte jemand schon mal ein ähnliches Problem.
Bin ziemlich ratlos.
Besten Dank im Voraus.
Gruß Markus
Nachdem mein Ofen seit langem so läuft,
habe ich es bisher vermieden die Grundaten neu einzulesen.
Nach einem Ansturz hatte ich auch mal ziemliche Mühe dies wieder up to date zu bringen.
Ich habe mit dem Einlesecript sehr lage herumexperimentiert, bis dies wieder klappte:
Darum:
Never change a running system…
Ist auch so lange her, ich kann auch nichts mehr zur Grundinstallation sagen
Schau mal Seite 13,14,…
Gruß Konny
Hallo zusammen,
so jetzt hab ich eine 2.te Erweiterung (AEH-23-0) auf den CAN-Bus integriert und möchte die Monitorwerte anpassen.
Can-Bus:
Der erste Versuch überhaupt etwas neu einzulesen hatte den Verlust des Gesamtsystemes zur Folge, da de Variablen gelöscht wurden…
Jetzt werd ich es mal händisch versuchen ohne das Gesamtsystem neu einzulesen.
Hat jemand einen Tip…
Gruß Konny
Hi,
wenn ich das richtig in der Erinnerung habe, können die halbwegs aktuellen ETAs alle ModbusTCP Master.
Ich werfe euch daher mal was über den Zaun… Anbindung ModbusTCP Master Devices an Symcon:
Howto: Technische Alternative per ModbusTCP über FHEM an Symcon anbinden
Viele Grüße
Predi
Hallo,
ich versuche gerade meinen ETA PE15 30KW auszulesen.
Ich habe alles wie am Thread-Anfang beschrieben durchgeführt und der Kessel scheint auch zu antworten. Zumindest bekomme ich alle 90sec folgende Meldung:
24.12.2017 07:29:24 | Register Variable | <br />
<b>Notice</b>: Undefined variable: IPS_VALUE in <b>/var/lib/symcon/scripts/22803.ips.php</b> on line <b>9</b><br />
Kann es sein das das Empfangs-Skript fehlerhaft ist, da sich mittlerweile einiges in IPS geändert hat?
<?
/*
File : COM_string_zerlegen.ips.php
Trigger : durch Registermodul bei Dateneingang
dieses Script dient dazu den Datenstring der von der "ETA" Heizung gesendet wird,
in einzelne Variablen zu zerlegen*/
$Anzahl = 20; // Anzahl der übertragenen Parameter
$COM_String = $IPS_VALUE; //übernahme des Datenstrings aus dem Registermodul!
/* ######## Einstellwerte ##############
Werte die z.b. am Bedienpult der Heizung eingestellt werden,
werden durch die Heizung mit der Kennung "MK" auf der Schnittstelle ausgegeben.
Hier werden diese in IPS Variablen abgespeichert.*/
if(substr($COM_String,0,2) == "MK") {
$Index = 256 * ord($COM_String{5}) + ord($COM_String{6});
$Value = 256 * ord($COM_String{7}) + ord($COM_String{8});
SetValueByName("ETA.Set.$Index", $Value);
}
/*######### Fehlermeldungen ###########
Fehlermeldungen werden durch die Kennung "IM" auf der Schnittstelle ausgegeben
*/
if(substr($COM_String,0,2) == "IM") { // Fehlermeldungen
IPS_LogMessage( "ETA PE 15", substr($COM_String,4) );
// Mail/SMS senden u.s.w
}
/*######### Messwerte############
Temperaturen und alle anderen Werte werden mit der Kennung "MD" ausgegeben
Abspeichern der Werte in IPS Variablen*/
if (strlen($COM_String) == $Anzahl *5 + 4 //kompletter Datensatz empfangen?
AND substr($COM_String,0,2) == "MD") //Kennung "MD"?
{
for ($i=01; $i<=$Anzahl; $i++){
$Index = ord($COM_String{$i*5+1});
$Value = 256 * ord($COM_String{$i*5+2}) + ord($COM_String{$i*5+3});
if($Value >= 30000) { //Temperatur unter 0 C ?
$Value = $Value - 65536;
}
switch ($Index) {
Case 86: //Pellettsvorrat
Case 67: //Restsauerstoffgehalt im Abgas in %
Case 68: //Gesamtverbrauch
$Value = $Value / 100;
break;
Case 63: //Behältervorrat
Case 19: //Abgastemperatur
Case 20: //Kesseltemperatur
Case 23: //Kesselvorlauf
Case 18: //Luftschieber
Case 21: //Warmwasser im Boiler
Case 22: //Aussentemperatur
Case 24: // Vorlauf MK0
$Value = $Value / 10;
break;
}
SetValueByName("ETA.$Index", $Value);
}
}
function SetValueByName($Variable,$Wert){
$id = IPS_GetVariableID($Variable);
if($id == 0) { // wenn Variable fehlt: anlegen
if (is_bool($Wert)) $typ = 0;
elseif (is_int($Wert)) $typ = 1;
elseif (is_float($Wert)) $typ = 2;
elseif (is_string($Wert)) $typ = 3;
$id = IPS_CreateVariable($typ);
IPS_SetName($id,$Variable);
}
SetValue($id,$Wert); // Ausgabe der Werte
}
?>
Viele Grüße
Torsten