Wärmepumpen mit Luxtronik 2 auslesen, verarbeiten und erweitern - AlphaInnotec, Novelan und andere

Hi Tomquenten1
Die Skriptreihenfolge habe ich im Skript WPWorking geprüft, die passt.

Ich bin aber trotzdem ein Schritt weitergekommen :slight_smile:
Nach eingabe von
var_dump(count($daten_raw));
var_dump($valueCount);
im der WP Communication Skript habe ich gesehen das ein ARRAY mit 232 Werten übergeben wird
bei dir ist das Array 259 groß

Das hat mich etwas stuzig gemacht und habe mal in der WPValue die ‚Namen‘ ab 233 auskommentiert und in der WP Communication bei Arrays[ ] → SetParentid auch.
→ Es werden jetzt Variablen angelegt und auch Werte in IPS geschrieben.
→ Die wichtigsten Werte sind plausibel und matchen auch mit der Luxtronic manche Werte sind nichtausagend zum Bsp IP adresse Subnetmask (ist aber erstmal nicht so wichtig)

Warum auch immer habe ich aber immernoch die Fehlermeldung im Skript WPValueConfiguration

Kannst du Dir das noch erklären?
Muss die Array Größe vielleicht woanderst noch angepasst werden ? Oder hat das garnichts miteinander zu tun?

Vielen Danke für deine Hilfe

Hi tomquenten1,

danke, starke Leistung.
Ich werds mal testen, ich lese meine Novelan momentan anders aus, deine Vorgehensweise ist aber besser.

Ich wurde damals vom Installateuer auch verarscht, die Aussage war: Klar kann die WP in eine andere Steuerung eingbunden werden;))

Was mich brennend interessieren würde:
Kannst du die Wärmepumpe auch von IPS auch Steuern? Ich scheiterte mehrmals kläglich.

Folgende Ideen hätte ich.
Die Heizkurve für die FBH bei gutem PV Ertrag nach oben verschieben, und Nachts wieder nach unten, genau so die WW Temperatur erhöhen.

Man könnte auch mit weather-forecast Diensten arbeiten, oder den windchill betrachten um die Behaglichkeit zu steigern.

Ich habs halt bis jetzt immer gelassen, weill ich die Werte nicht wirklich zieführend steuern kann.

Hallo tomquenten1,

ich lese meine AlphaInnotec Wärmepumpe SWC 142H3 bereits über mehrere Jahre mit einem „einfachen“ Skript aus.

Aus meiner Sicht bietet mein Skript bei weitem nicht die Funktionen und übersichtliche Struktur im Vergleich zu Deiner Programmierung, die ich sofort übernommen habe. Deine Programmierung funktioniert in meinem Fall absolut fehlerfrei.

Ich warte schon lange auf einen Nutzer wie Dich, der so ein fantastisches Produkt für die Luxtronik 2.0 zur Verfügung stellt. Aus diesem Grund sage ich danke und zwei Daumen nach oben.

Ich würde mich freuen, wenn Du auch das Skript für die Fehlermeldungen online stellen würdest.

Gruß schulzenman

1 „Gefällt mir“

Ich habe das jetzt mal nachgestellt und bin dahinter gekommen! Also LESEN ist sehr wichtig! Du startest offensichtlich das Script wpValueConfiguration. Das erzeugt bei mir die gleichen Fehler. Das Script sollst du aber gar nicht starten sondern nur wpWorking! wpValueConfiguration wird lediglich eingebunden in wpWorking! Wenn du wpWorking startest, dürften keine Fehlermeldungen kommen.

Wenn du das Script wpValueConfiguration startest ist die Fehlermeldung logisch, da die Variable valueCount in der wpCommunication erstellt wird. Sie fehlt also. Stutzig bin ich bei Zeile 49 geworden. Wie kann das sein? wpClass ist eingebunden in wpWorking nicht in wpValueConfiguration! Voila.

tomquenten

1 „Gefällt mir“

@goifalracer, das steuern wäre der nächste Schritt. Auch dazu habe ich bereits was im Forum gefunden, jedoch teils widersprüchlich. Auch in anderen Foren hatte ich schon was gefunden dazu. Das wird aber auf jeden Fall noch eine Weile dauern. Ich werde hier noch so einiges mit der WP anstellen. Sowie es (Arsch)kalt wird, sitze ich wieder am Rechner.

tomquenten

2 „Gefällt mir“

@schulzenman, danke für die Daumen. :slight_smile:

Hallo tomquenten1,

ich nutze folgende, ein wenig geänderte Funktion, in der „WPClass“ zum Auslesen der eingestellten Uhrzeit in der Wärmepumpe. Leider ergibt sich eine Differenz von exakt 2 Stunden.

Also die in der Wärmepumpe eingestellte Zeit ist auch die reale Zeit. Aber leider geht aus der STRING Variable eine Differenz von zwei Stunden hervor.

Kannst Du bitte mal bei Deiner Wärmepumpe prüfen, ob Du auch eine Differenz angezeigt bekommst?

Vielen Dank im Voraus.

Gruß schulzenman


function uProfileMDHis2($time){                                                                                         //umformatierung zeit in 00:00
        $days = floor($time / (60 * 60 * 24));
        $time -= $days * (60 * 60 * 24);
        $hours = floor($time / (60 * 60));
        $time -= $hours * (60 * 60);
        $minutes = floor($time / 60);
        $time -= $minutes * 60;
        $seconds = floor($time);
        $time -= $seconds;
        return sprintf("%'.02d", $hours).":".sprintf("%'.02d", $minutes);
    }

Hallo @schulzenman,

hab ich bei mir geprüft, passt. Ich habe keine Differenz.

ABER

Wieso nimmst du Zeit von der WP??? Wenn du die Zeit brauchst, gibt Dir doch PHP die exakte Zeit zurück, vorausgesetzt die NTP Server sind aktuell. 2 Lösungsansätze…

Möglichkeit 1
Reiche Deinen String in die Funktion

function uProfileMDHis2($time){
	return date("d.m.Y H:i:s", $time());
}

Möglichkeit 2
Verzichte auf den String von der WP, nutze die time Funktion von PHP

function uProfileMDHis2(){
	return date("d.m.Y H:i:s", time());
}

Probier das mal aus, da brauchst du nichts in die Funktion reinreichen, es kommt die korrekte Zeit zurück, sofern der Rechner auf dem der Code ausgeführt wird die korrekte Zeit hat. Prüfe dahingehend mal die NTP Server des System - SOLLTE die Zeit auch nicht richtig sein.

Ansonsten war mein erster Gedanke, das die Differenz eventuell auch noch von den Zeitzonen stammen könnte.

Beste Grüße aus Cottbus
tomquenten

Hallo tomquenten,

vielen Dank für die schnelle und umfangreiche Antwort.

Die Uhrzeit der Wärmepumpe (WP) möchte ich für einen ganz bestimmten Zweck auslesen. Um die exakte Uhrzeit auf den BUS zu senden nehme ich bereits die time Funktion von PHP.

Hintergrund ist, dass meine WP nicht automatisch von Sommerzeit auf Winterzeit und umgekehrt die Uhrzeit verändert. Ich muss das immer händisch an der WP machen und vergesse das natürlich oft.

Mit der ausgelesenen Zeit der WP könnte ich mit Hilfe eines Skriptes die Uhrzeit der WP und die Uhrzeit gemäß Zeitserver vergleichen und bei Abweichung z.B. größer gleich 10 Minuten mich mit einer Push Nachricht informieren lassen.

Aber ich muss erst einmal den Fehler finden, warum die WP eine Differenz von 2 Stunden in der Variable anzeigt, aber die Systemzeit der WP korrekt ist.

Ich würde Dich aber bitten, folgende Funktion zum Auslesen der IP Adressen zu berichtigen. Ich habe mit der Funktion long2ip ein wenig probiert, bekomme es aber nicht hin.


function uProfilelong2ip($ip){ 
        $ip = long2ip((int)$string)); 
        return sprintf("%u", long2ip($ip));
    } 

Aus der 10-stelligen Stringvariable 3232236187 soll folgende IP herauskommen: 192.168.2.155

Diese Funktion möchte ich gerne in die WPClass einfügen.

Gruß schulzenman

Das wandeln von long2ip funktioniert aber grundsätzlich. Da hast du nur eine Klammer zuviel.

$string = '3232236187';
$ip = long2ip((int)$string); 
echo $ip;

Jetzt klappt es. Habe folgende PHP Funktion in die wpclass eingefügt.


function uProfilelong2ip($string){                                                                                 //erzeugt eine ip-adresse im punktformat
        return long2ip($string);
    }

Hast hier jemand eine Lösung für das Phänomen der unsinnigen Werte der Außentemperatur sowie es in den Minusbereich geht? Ich bekomme Werte jenseits der Sonnentemperatur.

Die Werte die mir die Wärmepumpe übermittelt scheinen korrekt zu sein, das mir die dortige GUI auch einen ordentlichen Wert liefert.

Screenshot 2022-11-18 215114

Es scheint eine andere Umrechnung zu sein, sowie es in den Minusbereich geht. Hat da schon jemand irgendwo was brauchbares gefunden? Wäre echt toll.

Ich habe hier eine Alpha Innotec. Gibt es das Problem auch mit anderen Herstellern die den Luxtronik 2 Controller verwenden? Jeder Hinweis ist willkommen.

Zum zwischenzeitlichen Behelf, hab ich gerade einen OWD Sensor an die IPS angeschlossen.

Beste Grüße aus dem eisigen Cottbus
tomquenten

Welches Profil hast du für die Temperatur? Probiere mal ~Temperature

Hallo tomquenten1,

es gibt noch ein weitere Beitrag hier im Form, bei dem dieses Problem mit folgendem Codeschnipsel gelöst wurde. Auf Grund fehlender PHP Kenntnisse kann ich diesen Codeschnipsel nur posten, aber nicht beschreiben, wie und wo er in Deine Skripte integriert wird.

Da ich Deine ganzen Skripte übernommen habe, würde ich mich freuen, wenn Du eine Lösung hier ins Forum stellst. Ich habe ja jetzt das gleiche Problem mit der Temperatur, sofern diese in den Minusbereich geht.

if ($i >= 10 & $i <= 28) // Temperaturen	
{
		//echo	printf($i.":".$daten_raw[$i]." ");
		$minusTest = $daten_raw[$i]*0.1;
		if($minusTest > 429496000){
			$daten_raw[$i] = $daten_raw[$i]-=4294967296;
			$daten_raw[$i] = $daten_raw[$i]*0.1;
		}else{
			$daten_raw[$i] = $daten_raw[$i]*0.1;
		}
			//printf('(%d)%s : %.1f &#176C<br>',$i,$java_dataset[$i],$daten_raw[$i]);
		  	$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "Temperatur_200_C", $i);//float
		  setValueFloat($varid,$daten_raw[$i]);
	}

Gruß schulzenman

So jetzt schnell…
Tausche die Methode uProfileTemp in der wpClass durch folgenden Code aus.

    /* umrechnungsprofile beginnen mit dem suffix uProfile... */
    function uProfileTemp($data){                                                                                       //umrechnung temperaturen
        if($data > 429496000)
            $data = bcsub($data, 429496000, 2);
        return bcmul($data, 0.1, 2);
    }

Zur Zeit kann ich es nicht testen, da wir im Plusbereich sind heute. Aber ich denke es sollte gehen. Kommende Woche gehen wir wieder in den Minusbereich laut Vorhersage, dann werde wir es sehen.

Beste Grüße aus Cottbus
und einen schönen 1. Advent

tomquenten

Ja, habe ich jetzt eingefügt. Mal schauen, was in den kommenden Tagen bei Minustemperaturen passiert.

Danke.

Gruß schulzenman

Hat jemand herausgefunden, ob die LUX die Eingangsleistung ausgibt, um den COP zu berechnen? Bis jetzt mache ich das extern mit eine Shelly.

Ich habe ein ähnliches Script für die LUX am Laufen, habe aber zusätzlich noch Steuerungsfunktionen für Warmwasser, Heizung und Kühlung integriert (Automatik, Elektrisch, Party. Ferien, Aus).

Hier die für mich relevanten Daten im FrontEnd, Leistungsaufnahme wie erwähnt über noch über einen Shelly:

Meines Wissens nicht.
Es sind jedoch noch sehr viele unidentifizierte Werte. Möglich das da noch was brauchbares bei wäre. Wenn du das mit der Shelly machst, logge doch mal die unidentifizierten Werte und schaue dann, ob es Ähnlichkeiten mit dem Log der Shelly gibt.

Beste Grüße aus Cottbus

tomquenten

Nochmalige Korrektur!
Soeben hatte ich eine Überhitzung im negativen Bereich, wodurch die falsche Darstellung sichtbar wurde. Die folgenden Methoden der Klasse wpClass bitte durch folgenden Code ersetzen. Nachdem ersetzen wird es funktionieren. Soeben selbst getestet.

    /* umrechnungsprofile beginnen mit dem suffix uProfile... */
    function uProfileTemp($data){                                                                                       //umrechnung temperaturen
        if($data > 429496000)
            $data = bcsub($data, 4294967296, 2);
        return bcmul($data, 0.1, 2);
    }
    function uProfileWPKelvin($data){                                                                                    //umformatierung druck in kelvin
        if($data > 429496000)
            $data = bcsub($data, 4294967296, 2);
        return bcdiv($data,10, 2);
    }

Beste Grüße aus Cottbus

tomquenten

Der o.g. Funktionen liefern jetzt ordentliche Minus-Werte.

wpMinusgrade

Beste Grüße aus Cottbus

tomquenten