Anbindung Ochsner Wärmepumpe

Hallo zusammen,
bin ziemlich ratlos, wie ich meine Ochsner Wärmepumpe an IPS angebunden bekomme und es wäre toll wenn mir hier jemand etwas raten könnte.

Ausgangslage und Status

  • Die Wärmepumpe lässt sich via eines Moduls im LAN (Produktname: Web2Com/RC7000) steuern und Werte lassen sich auslesen mittels Zugriff über Webbrowser auf das Modul
  • Ochsner bietet ziemlich genau keine Dokumentation, wie man sonst an die Daten rankommt. Man muss also wahrscheinlich „reverse engineeren“.
  • Rausgefunden habe ich schon, dass das Modul wohl grundsätzlich die Daten über SOAP liefert.
  • Für andere Smarthome-Lösungen wie Edomi und Loxone gibt es auch Anbindungen die funktionieren. Da habe ich mir einiges „zusammengeklaut“.

Aktuell sehe ich wahrscheinlich drei unterschiedliche Möglichkeiten Daten zu bekommen und evtl. sogar wie IPS Änderungen an Parametern/Einstellungen der Wärmepumpe vorzunehmen:

  1. via CURL im Linux Terminal
    Ich habe mir ein CURL zusammengestümpert, dass grundsätzlich Werte abfragen kann. Das ist elend lang, funktioniert, aber wirklich verstehen tue ich das nicht im Detail. Wenn ich bspw. wissen will welchen Wert aktuell der Parameter „/1/2/1/125/7“ hat, sieht der CURL-Befehl wie folgt aus:
curl 'http://192.168.2.77/ws' --user "USER:123" -H 'Content-Type: text/xml; charset=UTF-8' -H 'SOAPAction: http://ws01.lom.ch/soap/getDP' --data-binary $'<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/7</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>'

Der abgefragte Parameter /1/2/1/125/7 steht ziemlich weit hinten im CURL zwischen „oid“ und „/oid“

Als Antwort bekomme ich dann folgendes zurück:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpResponse><ref><oid>/(1) EBusRoot/(2) 515200771 /(1) WAERMEPUMPE/(125) /(7) 02:81</oid><prop>-r-- StrctId = 2</prop></ref><dpCfg><index>7</index><name>02:81</name><prop>-r-- StrctId = 2</prop><desc>SStrct Var</desc><value>7605</value><unit></unit><type>29</type><step>0</step><minValue></minValue><maxValue></maxValue></dpCfg></ns:getDpResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

Hier wird der Wert „7605“ dann als Value an dieser Stelle zurückgeliefert zwischen „value“ und „value“

  1. Möglichkeit
    Für Loxone gibt es eine Lösung wie folgt:
    Es gibt ein PHP-Skript, dass man bspw. auf einen Apache mit installiertem PHP ablegen kann. Ruft man dann im Browser das Skript mit den richtigen Parametern auf, liefert es die aktuellen Werte im Browser zurück. Der Auftruf sieht dann bspw. so aus:
[http:](http://apache.local/web2com.php?host=192.168.2.77?&user=USER&pass=123&getoid=1/2/1/125/13;1/2/1/125/12;1/2/1/125/10;1/2/1/125/11;1/2/1/125/6;1/2/1/125/6;1/2/7/121/2;1/2/7/121/1)

„apache.local“ ist dabei der lokale Webserver auf dem ich das Script aus dem Loxone-Forum abgelegt habe.
Im Beispiele frage ich mehrere Parameter ab.
Zurück kommt dann im Browser folgendes:

{ "1/2/1/125/13": 27, "1/2/1/125/12": 75.5, "1/2/1/125/10": 816.7, "1/2/1/125/11": 46, "1/2/1/125/6": 13121, "1/2/1/125/6": 13121, "1/2/7/121/2": 53.0, "1/2/7/121/1": 53.3, "": composite }

Also alle abgefragten Parameter mit den jeweils aktuellen Werten in einer Art minimalistischem JSON.
Kann man damit was anfangen? Das web2com-Skript findet sich auch in Github =>Link
Mit dem entsprechende Aufruf kann man mit dem Script sogar Parameter der Wärmepumpe ändern. Das wäre natürlich riesig.
Allerdings brauche ich dann ja noch einen Webserver und ich habe keine Ahnung wie ich das in IPS nutzen könnte.

3, Nutzung des nativen SOAP-Clients von PHP
Das wäre wahrscheinlich die eleganteste Lösung, oder? Allerdings habe ich leider auch hier keine Idee wie ich das in einem PHP-SOAP-Client umsetzen könnte. Gibt es da eine einfache Lösung bspw. aus dem CURL einen PHP-SOAP-Code zu machen. Mit den Konvertern im Web bin ich da nicht weit gekommen und ich bin auch kein Programmierer.

Wäre toll, wenn der eine oder andere mir hier evtl. etwas raten könnte.

Danke und viele Grüße

Rainer

Hallo,

habe eine AirHawk518 im Einsatz und die WP problemlos in IPS eingebunden. Ochsner Anleitung siehe Anhang.

Gruß
zkra
ZBH-Modbus OTS-DE02.pdf (378,8 KB)

1 „Gefällt mir“

Hi zkra,
danke für die Info. Wenn ich das richtig verstehe, gehst Du da ja direkt auf die Modbus-Schnittstelle mit entsprechender Hardware. Ich würde ja lieber die vorhandene web2com-Box nutzen. Zumal meine Ochsner mit Baujahr 2015 ein paar Jahre mehr als Deine Airhawk auf dem Buckel hat und nicht so schöne Schnittstellen hat wie Deine WP.
Viele Grüße
Rainer

Hallo repoman!

Dann hast du doch deine Anbindung. Genau so mache ich es auch. Dann noch die richtigen Skripte und Adressen und schon kannst du lesen und schreiben auf deiner Ochsner.

Wird wahrscheinlich nicht gern gesehen, aber ich habe die Skripte aus diesen Beitrag auf meine Ochsner angepasst und es läuft seit Jahren problemlos.

Hier wirst du fündig:

Web2Com PHP

Und hier die perfekte Doku dazu:

Web2Com PHP Doku

Dieser Christian Frenzl hat nicht umsonst seinen Forentitel :slight_smile:

Wenn du noch Fragen hast melde dich.

lg
hagi

Hi hagi01,
schön zu hören, dass es mit der Ochsner-Box geht bei Dir. Das Script und die Doku hatte ich schon. Da ich allerdings ein ziemlicher PHP-Noop bin, bin ich ratlos was ich ich wo und wie umsetzen/adaptieren muss. Würdest du denn ein Beispiel für deine Anbindung mit mir teilen?
Das wäre echt super.
Viele Grüße
Rainer

Hallo Rainer,

ich befürchte das wird Dir nur bedingt helfen. Da ich nur bestimmte (und evt. für Dich nicht gewünschte) Registeradressen abfrage. Genauso ist es von Deiner Version der Steuerung abhängig.

Das müssten wir uns mal gemeinsam (remote) ansehen, sag woher kommst du eigentlich?

lg
hagi

1 „Gefällt mir“

Hi Hagi,
wir können gerne gemeinsam (remote) draufschauen. Ich versuche mich aber auch erstmal gerne daran deine Lösung auf mein System umzumodeln, denn ich will dich ja auch nicht strapazieren. Ich bin aber natürlich für jede Hilfe sehr dankbar. Bin wirklich noch PHP-Anfänger was Programmierung angeht, aber ein paar 3-5 Zeilen-Scripte habe ich schon hinbekommen, von daher wäre es vielleicht einen Versuch wert, deine Lösung zu adaptieren. Mit „Registeradressen“ meinst du die OIDs der Ochsner-Box, oder? Da kenne ich natürlich alle, die da interessant wären.
Version meiner Box aus dem Jahr 2015 ist:


Seite: 2.08
Gerät: 2.07
Zugriff auf die Box mit dem unveränderten Web2com.php von Christian Frenzl via separatem Webserver funktioniert wie in der Doku von Christian beschrieben. Ich habe halt nur keinen Plan wie das mit IPS verheirate.

Ich lebe tief im Westen von Deutschland in der schönen Nordeifel, fast an der Grenze zu Belgien.

Viele Grüße
Rainer

Na dann wird das mit einem persönlichen Treffen schwierig, da ich im Herzen Österreichs beheimatet bin. Bin zwar oft in D unterwegs, aber deine Ecke eher weniger.

Na dann machen wir mal einen Versuch. So habe ich es bei mir gelöst und es funktioniert. Evt. hat es wer anderer eleganter gelöst. Da ich auch nicht in der Lage bin ein Modul daraus zu machen, eben der Umweg über Skripte. Es würde sich hier ein Modul sicher mehr als anbieten.

So aber nun zu meiner Lösung.

Als erstes legst du dir all die Variablen an die du abfragen oder ändern möchtest.

z.B.

Als nächstes ein Abfrageskript, nennen wir es web2com_soap_getoid

<?php

$Aussentemperatur = "1/2/5/119/1";
$Vorlauftemp_Sollwert_WP = "1/2/1/125/2";
$Heizenergie_kWh = "1/2/1/125/7";
$Heizenergie_MWh = "1/2/1/125/8";
$Kuehlenergie_kWh = "1/2/1/125/9";
$Kuehlenergie_MWh = "1/2/1/125/10";
$Relative_Feuchte_HWR = "1/2/5/119/7";
$Raumtemperatur_HWR  = "1/2/5/119/3";
$Status = "1/2/1/125/0";
$Vorlauftemperatur = "1/2/4/119/4";
$Warmwassertemperatur = "1/2/7/121/1";
$Betriebsart = "1/2/1/97/0";
$Sollwert_HeizkreisVorlauftemperatur_FH = "1/2/4/119/5";
$Sollwert_HeizkreisVorlauftemperatur_DK = "1/2/5/119/6";
$Mittelwert_Aussentemperatur = "1/2/5/119/2";
$Heizgrenze_FBH = "1/2/4/99/5";
$Heizgrenze_DH = "1/2/5/99/5";
$Kuehlgrenze_DH = "1/2/5/99/6";
$Sollwert_Raumtemperatur_HWR = "1/2/5/119/4";
$Betriebswahl_FBH = "1/2/4/3/50/0";
$Betriebswahl_DHZ = "1/2/4/3/50/1";

$getoidvalue = "$Aussentemperatur,$Vorlauftemp_Sollwert_WP,$Heizenergie_kWh,$Heizenergie_MWh,$Kuehlenergie_kWh,$Kuehlenergie_MWh,$Relative_Feuchte_HWR,$Raumtemperatur_HWR,$Status,$Vorlauftemperatur,$Warmwassertemperatur,$Betriebsart,$Sollwert_HeizkreisVorlauftemperatur_FH,$Sollwert_HeizkreisVorlauftemperatur_DK,$Mittelwert_Aussentemperatur,$Heizgrenze_FBH,$Heizgrenze_DH,$Kuehlgrenze_DH,$Sollwert_Raumtemperatur_HWR,$Betriebswahl_FBH,$Betriebswahl_DHZ";

IPS_RunScriptEx (13507,array("getoidvalue" => $getoidvalue));


OID’s nach deinen Web2Com anpassen, Var’s nach deinen eigenen Vorgaben nehmen. Und die ID des Runscriptes entsprechend der ID des folgenden Skriptes anpassen.

Nun das Funktionsskript:

<?php
$host = "IP:Port"; //Web2Com
$user = "username";
$pass = "passwort";


if (empty($_IPS['getoidvalue']) && empty($_IPS['setoid']))
{ 
//hier habe ich eine Meldung per Telegramm dass der ebus Probleme macht eingefügt
}


if (!empty($_IPS['getoidvalue']))
{ 
$getoid = $_IPS['getoidvalue'];

$befehl = get_oidvalues($host,$user,$pass,$getoid);

$array = (json_decode($befehl,true));
//print_r($array);
//IPS_LogMessage($_IPS['SELF'],$array);

foreach($array as $keys => $werte)
    {

    switch ($keys) {
                    case "1/2/5/119/1":
                            SetValue(44386, $werte);
                        break;

                    case "1/2/1/125/7":
                            SetValue(47211, $werte);
                        break;

                    case "1/2/1/125/8":
                            SetValue(10387, $werte);
                        break;

                    case "1/2/1/125/9":
                            SetValue(51484, $werte);
                        break;

                    case "1/2/1/125/10":
                            SetValue(28287, $werte);
                        break;

                    case "1/2/5/119/7":
                            SetValue(18999, $werte);
                        break;

                    case "1/2/5/119/3":
                            SetValue(55395, $werte);
                        break;

                    case "1/2/1/125/0":
                            SetValue(38957, $werte);
                        break;

                    case "1/2/4/119/4":
                            SetValue(18785, $werte);
                        break;

                    case "1/2/7/121/1":
                            SetValue(38542, $werte);
                        break;
                    
                    case "1/2/1/97/0":
                            SetValue(23786, $werte);
                        break;

                    case "1/2/4/119/5":
                            SetValue(52623, $werte);
                        break;

                    case "1/2/5/119/6":
                            SetValue(28532, $werte);
                        break;

                    case "1/2/5/119/2":
                            SetValue(20907, $werte);
                        break; 

                    case "1/2/4/99/5":
                            SetValue(18810, $werte);
                        break; 

                    case "1/2/5/99/5":
                            SetValue(53307, $werte);
                        break; 

                    case "1/2/5/99/6":
                            SetValue(33293, $werte);
                        break; 

                     case "1/2/5/119/4":
                            SetValue(45937, $werte);
                        break;    

                     case "1/2/1/125/2":
                            SetValue(19577, $werte);
                        break;  
                  
                    case "1/2/4/3/50/0":
                            SetValue(38647, $werte);
                        break; 

                     case "1/2/4/3/50/1":
                            SetValue(59637, $werte);
                        break; 


                        
                  

                    default:
                    // do nothing
                    break;        
                    }
    }
 

}


if (!empty($_IPS['setoid']))
{
$setoid = $_IPS['setoid'];
$value =$_IPS['value'];
set_oidvalue($host, $user, $pass, $setoid, $value);
}

 
function get_oidvalues($host, $user, $pass, $getoid)
{
    $oids = explode(";", str_replace(",", ";", $getoid ));
	
    $url = "http://$host/ws";
	
    $jsonresponse = "{";

    $ch = curl_init();
    $curlverbose = fopen('php://temp', 'w+');
	
    foreach ($oids as $oid) {
		    $xml_post_string  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
			$xml_post_string .= "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:ns=\"http://ws01.lom.ch/soap/\">";
			$xml_post_string .= "<SOAP-ENV:Body><ns:getDpRequest><ref><oid>$oid</oid><prop/></ref><startIndex>0</startIndex><count>-1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>";
			
			$headers = array(
                        "Content-Type: text/xml; charset=utf-8",
                        "Accept: text/xml",
                        "Cache-Control: no-cache",
                        "Pragma: no-cache",
                        "SOAPAction: http://ws01.lom.ch/soap/listDP", 
                        "Content-length: " . strlen($xml_post_string)
                    ); 

            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); 
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
            curl_setopt($ch, CURLOPT_TIMEOUT, 20);
            curl_setopt($ch, CURLOPT_VERBOSE, true);
            curl_setopt($ch, CURLOPT_STDERR, $curlverbose);
            $response = curl_exec($ch);
			
			if ($response === FALSE) {
            IPS_LogMessage($_IPS['SELF'],"Keine Daten empfangen"); 
           
			return;
            //	printf("cUrl error (#%d): %s<br>\n", curl_errno($ch),
			//	htmlspecialchars(curl_error($ch)));
			//	rewind($verbose);
			//	$verboseLog = stream_get_contents($verbose);
			//	echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
			}
			
		$value = get_string_between($response, "<value>", "</value>"); 
        $jsonresponse .= "\n \"$oid\": $value,";
    }
    //IPS_LogMessage($_IPS['SELF'],"Daten empfangen"); 
    curl_close($ch);
	$json = rtrim($jsonresponse, ",") . "\n}";

    return $json;
} 

function set_oidvalue($host, $user, $pass, $setoid, $value)
{
    $value = str_replace(",", ".", $value);
	
	$url = "http://$host/ws";
	$index = substr($setoid, -1, strrpos($setoid, '/')-1);
 
	
	$ch = curl_init();
    $curlverbose = fopen('php://temp', 'w+');
	
	$xml_post_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" .
					"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:ns=\"http://ws01.lom.ch/soap/\">" .
					"<SOAP-ENV:Body><ns:writeDpRequest><ref><oid>$setoid</oid><prop/></ref>" .
					"<dp><index>$index</index><name/><prop/><desc/><value>$value</value><unit/><timestamp>0</timestamp></dp>" .
					"</ns:writeDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>";
	
	$headers = array(
                "Content-Type: text/xml; charset=UTF-8",
				"Accept: text/xml",
				"Cache-Control: no-cache",
				"Pragma: no-cache",
				"SOAPAction: http://ws01.lom.ch/soap/writeDP", 
				"Content-length: " . strlen($xml_post_string)
    ); 

	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, false);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); 
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
	curl_setopt($ch, CURLOPT_TIMEOUT, 10);
	curl_setopt($ch, CURLOPT_VERBOSE, true);
	curl_setopt($ch, CURLOPT_STDERR, $curlverbose);
	$response = curl_exec($ch);
	
	
     If($setoid == "1/2/4/3/50/0" || $setoid == "1/2/5/99/6" || $setoid == "1/2/5/99/5" || $setoid == "1/2/4/99/5")
     {
     IPS_RunScriptEx (24061,array("setoid" => $setoid, "value" => $value));
     }

    return;
    //	printf("Response: %s<br>\n", $response);
	//	printf("cUrl error (#%d): %s<br>\n", curl_errno($ch),
	//	htmlspecialchars(curl_error($ch)));
	//	rewind($verbose);
	//	$verboseLog = stream_get_contents($verbose);
	//	echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
	}
 
	curl_close($ch);

} 

function get_string_between($mystring, $start, $end)
{
    $string = " ".$mystring;
    $ini = strpos($mystring,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($mystring,$end,$ini) - $ini;
    return substr($mystring,$ini,$len);

}

Hier musst du natürlich alle ID’s an deine Var’s anpassen.

Probier mal soweit das ganze, wenn es läuft kümmern wir uns um die SetOID, damit du in deine WP schreiben kannst.

lg
hagi

1 „Gefällt mir“

Hallo Hagi,

vielen Dank für die Infos. Ich werde mich am Wochenende damit mal intensiv auseinandersetzen und mich an der Umsetzung versuchen.
Viele Grüße
Rainer

Hallo Hagi,
was soll ich sagen? Ich kann (viel schneller als erwartet) einen ersten Erfolg vermelden!!!
:smiley:
Ich denke, ich verstehe im ganz Groben und Ganzen die Vorgehensweise und Mimik Deiner Lösung. Allerdings ohne die Programmierung wirklich im Detail zu verstehen.
Und ich kann nach entsprechenden Anpassungen der OIDs, Variablen und IDs mit Deinen beiden Scripts Werte abfragen und mittels Symcon anzeigen.

Das ist großartig. Vielen, vielen Dank nochmals für Deine Hilfe.

Allerdings habe ich im zweiten Script die „function set_oidvalue“ komplett auskommentiert, da in dem Teil das Script immer auf einen Fehler läuft. Wenn ich die Fehlermeldung richtig verstehe, ist da in in Zeile 252 eine schließende geschweifte Klammer zu der es keine öffnennde gibt. Hier der Screenshot dazu:

Ich habe auch gesehen, dass du da offenbar noch ein weiteres Script aufrufst. Wahrscheinlich zum Setzen von Werten, richtig? Hängt die Fehlermeldung evtl. damit zusammen?

Nochmals vielen Dank und viele Grüße
Rainer

Das freut mich, wenn es bei Dir läuft.

Wegen der Funktion setoid lösche diese Zeilen aus meinen Skript raus, da dürfte was mit c&p passiert sein. Dann sollte die Fehlermeldung weg sein.

Wenn du soweit bist hier noch mein web2com_soap_setoid:

<?php

$value = $_IPS['VALUE'];

// Umwandlung 
$senderID = array (	
                    35222 => "1/2/1/97/0",
                    33798 => "1/2/4/99/5",
                    36927 => "1/2/5/99/5",
                    17645 => "1/2/5/99/6",
                    23614 => "1/2/4/3/50/0",
                    10202 => "1/2/4/3/50/1", 
                    // funktioniert nicht, weil nicht über web2com einstlellbar
                    //52418=> "1/2/1/125/2",
                    //41135 => "1/2/5/119/4",

				  );

$setoid = $senderID[$_IPS['VARIABLE']];


IPS_RunScriptEx (13507,array("setoid" => $setoid, "value" => $value));

Wieder nach deinen Gegebenheiten anpassen und im Runscript dein Funktionsskript aufrufen.

Die Var’s sind die die du bei deiner Ochsner verstellen möchtest. Alles geht nicht. Z.B. Kurzwahlmenü Urlaub, … habe ich keine OID rausgefunden.

Das getoid script rufe ich zyklisch auf , z.B. alle 5Minuten. Nach deinen Bedürfnissen anpassen. Das setoid script wird bei Änderung/Aktuallisierung der betroffenen Var’s angetriggert.

Viel Spass - lg hagi

1 „Gefällt mir“

Hi Hagi,
bin in den letzten Tagen zu nichts gekommen. Und werde wohl auch erst am kommenden Wochenende hier weitermachen können. Ich melde mich auf jeden Fall… und natürlich im Idealfall mit einer Erfolgsmeldung.
Viele Grüße
Rainer

Moin @hagi01,

baue doch lieber ein Modul für die Wärmepumpe.
Ev solltest du das mit Kai machen, wenn der wieder mal mehr Zeit hat.

lg Thomas

Hallo Thomas, da hast du vollkommen recht, dass das mit einem Modul super elegant wäre und Kai da der Richtige wär. Aber frag ihn lieber nicht wenn der wieder mal Zeit hat :smile: :see_no_evil: :rofl:

So 2025 oder später :rofl:

lg
hagi

Hallo Hagi,
bin jetzt endlich dazu gekommen, mir auch das Setzen von Parametern auf der Wärmepumpe anzusehen. Und auch das funktioniert ganz wunderbar mit deinen Scripts.
Nochmals tausend Dank dafür. :smiley:

Die aktuellen Werte hole ich mir per zyklischem Ereignis für das GET-Script alle 5 Minuten. Das reicht für meine Zwecke völlig.

Was ich jetzt noch optimieren muss, ist das Feedback bzw. die Aktualisierung von einem gesetztem Wert im Webfront. Das Setzen funktioniert zwar, allerdings wird der neue Wert im Webfront erst nach dem nächsten GET-Abruf, also Extremfall erst nach 5 Minuten, aktualisiert. Ich habe schon versucht das GET-Script auch mit einem zweiten Ereignis bei Änderung der entsprechenden Variable zu starten. Aber das hat nicht funktioniert.
Wie hast Du das bei Dir realisiert?
Viele Grüße
Rainer

Schön das es funktioniert!

Wegen dem Aktualisieren der Änderungen, habe ich keine Streß und habe halt die max. 5 Min. Verzögerung. Wenn du willst kannst du ja im SetScript bzw. im Funktionsskript bei Schreiben einen Timer für das Get anstossen, damit die Steuerung Zeit hat sich umzustellen und den neuen Wert zu senden.

lg
hagi

Hallo sorry wenn ich gegen die Forenregeln verstoße aber ich bräuchte dringend vom User zkra die Modbus Parameter die in diesem uralten Thread zitiert sind Modbus TCP - Archiv / Allgemeine Diskussion (2.x/3.x) - IP-Symcon Community. Hoffentlich wird mein Post nicht gelöscht und Zkra mag antworten…

Hallo akane,

… PM wurde gesendet.

Gruß
zkra

Hallo,
an welchen Anschlüssen hast du das Modbus Kabel an der Hawk angeschlossen?
Gab es an der Hawk noch irgendwas einzustellen? (Techniker Menü)?

Vielen Dank
Grüße Chewbacca

Hallo Chewbacca,

ModBus TCP, Anschluß Netzwerkkabel direkt am Steuergerät

Die eventuell notwendige Freigabe erfolgte bei IBS durch den Ochsner-Monteur.

Gruß
zkra