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

Hi. Ich benutze die Scripte zusammen mit der Luxtronik-Software V3.88.0. Dort gibt es auch Variablen für die elektrische Energie:

Lassen sich diese auch durch das Script einlesen?

Top Info für mich.
Dann kann ich jetzt auch auf die 3.88.0 updaten

ich danke dir vielmals

Hallo,
ich habe eben erst deine Antwort und Fragen gelesen.
Ich habe eine Novelan-WP WS8.2H3M mit der Firmware 3.85.8.

wenn jemand so lieb ist, das Script dementsprechend anzupassen, dann wäre das denke ich kein Problem.

Ich kann das leider nicht :sleepy:

Gehe doch so vor wie ganz oben beschrieben. Du musst doch nichts mehr anpassen. Das Script ist doch dynamisch. Wenn die WP mehr Werte zurück liefert, hast du diese doch in dem Ordner alle Werte.

Danach musst du wie mit den anderen Werten, diese finden, eindeutig identifizieren und dann mit der ParentID in den Ordner identifizierte Werte verschieben.

Profile zuordnen, wenn du das möchtest - fertig.

Beste Grüße aus Cottbus
tomquenten

Ich habe das ja genau deswegen so entwickelt, damit es einfach zu erweitern geht. :slight_smile:

Traumhaft wäre ein Modul :heart_eyes:

vielleicht irgendwann mal ? #hope

Gehe doch so vor wie ganz oben beschrieben. Du musst doch nichts mehr anpassen. Das Script ist doch dynamisch. Wenn die WP mehr Werte zurück liefert, hast du diese doch in dem Ordner alle Werte.
Danach musst du wie mit den anderen Werten, diese finden, eindeutig identifizieren und dann mit der ParentID in den Ordner identifizierte Werte verschieben.

Also ich finde die Werte, die in der GUI unter „Eingesetzte Energie“ angezeigt werden, nicht im Ordner alle Werte.

Hallo,

erstmal danke für das tolle Modul.

Ich bekomme im Log noch bei jeder ausführung eine Info :

04.04.2023, 18:14:00 | ScriptEngine         | Result for Event 28682
OK - Verbunden mit WWC Java Console 192.168.0.22 Port: 8889
Notice: Undefined offset: 260 in /var/lib/symcon/scripts/51600.ips.php on line 50

Zeile 50 wäre folgende:

    $array[$i]->Name          = $dataSet[$i];

Hat jemand einen Tip wie ich das weg beekomme?

Grüße

Hi miteinander,
hat denn jemand evtl schon die ganzen Werte identifiziert und als Kommentar in die „wpValue“ geschrieben?
Wäre sehr hilfreich… Bin hier am verzweifeln.
Danke

Hallo @Conan79,

leider nicht. Soweit ich das bisher verstanden habe, sind die Werte auch nicht immer alle gleich, d.h. ein Temperaturwert von AlphaInnotec auf z.b. Pos 25 muss bei Vissmann nicht zwangsläufig auch auf der Pos 25 sein.

Identifizieren konnte ich viele Werte durch gleichzeitiges beobachten des Webinterfaces der WP und der Werte in der IPS. Das ist eigentlich nicht schwer, nur eben etwas zeitaufwändig.

Beste Grüße
tomquenten

Hi. Meine Wärmepumpe läuft aktuell im Kühlbetrieb. Die Variable WP_BZ_akt steht jedoch auf 5 (Keine Anforderung). Eine Idee, woran das liegen könnte?

Hallo zusammen,

ersteinmal vielen Dank für die Scripte und die Vorarbeit! Echt super übersichtlich beschrieben!
Hat hier wer schon Werte zurückgeschrieben?
Mein Anwendungsfall wäre der, wenn die PV zu viel produziert und es Sinn macht, dass dann der Heizstab das Warmwasser erwärmt.
Wir haben eine Novelan WSV 6.2K3M, falls es hilft.

Viele Grüße

Hallo @mambo1988,

ich bin sicher, das man dies auch realisieren könnte. Es ist jedoch notwendig die dafür verantwortliche Variable zu finden. Wir haben bei unserer WP zwar auch eine Zweitwärmeerzeuger, jedoch war der bisher noch nie in Betrieb. Weiter oben steht, wie ich Variablen über das GUI der WP gefunden und identifiziert habe.

Wie man Werte in die WP zurück schreibt, hatte ich letztes Jahr auch schon mal einen Ansatz gefunden, bisher aber noch nicht umgesetzt, da gerade die Gartenzeit ist. :slight_smile:

Beste Grüße

tomquenten

Hallo, kurze Frage.
Bei mir kommt im Status immer folgende Warnmeldung:

24.10.2023, 10:33:20 | ScriptEngine | Result for Event 44794
OK - Verbunden mit WWC Java Console 192.168.148.9 Port: 8889
Warning: Undefined array key 268 in /var/lib/symcon/scripts/31054.ips.php on line 50

Es handelt sich hierbei um das Skript wpValueConfiguration
dabei gehts um diese Zeile: $array[$i]->Name = $dataSet[$i];

Kann mir jemand sagen was das bedeutet und wie ich das weg bekomm?
Danke schon mal

Ich habe dir hier drei Beispiele wie du die Werte in di LUX zurück schreibst…
Wenn du noch weiter herausfindest immer her damit, habe schon ewig nichts mehr gemacht daran…

Auswahl Betriebsart Heizung:

<?php

//includes
include "39064.ips.php";

// connecten
$socket = socket_create(AF_INET, SOCK_STREAM,0);
$connect = socket_connect($socket, $IpWwc, $WwcJavaPort) || exit("socket_connect fehlgeschlagen");


//if ($connect == 1)
//    echo "PASS: Verbunden mit WWC Java Console $IpWwc Port: $WwcJavaPort <br>";
//else
//    echo "ERROR: Nicht verbunden mit WWC Java Console  <br>";


// Daten senden
$msg = pack('N*',3002); //3002 senden aktivieren
$send=socket_write($socket, $msg, 4);

//SetParameter senden;
$msg = pack('N*',3); //Parameter: 3: Heizung Betriebsart
$send=socket_write($socket, $msg, 4);

switch($_IPS['VALUE']) {
 
    case 0:
	$msg = pack('N*',0); // Auto                    Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
	        
    break;
 
    case 1:
    $msg = pack('N*',1); // Zus. Wärmeerzeugung     Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    break;
 
    case 2:
    $msg = pack('N*',2); // Party                   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    break;
 
    case 3:
    $msg = pack('N*',3); // Ferien                  Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
   
    break;
 
    case 4:
    $msg = pack('N*',4); // Off                     Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    }

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

$send=socket_write($socket, $msg, 4);


/*
gefunden bei:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/23_LUXTRONIK2.pm

Parameter:
1: Temperatur SetBack
	Value: -5 bis +5
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

2: Brauchwasser Soll Temperatur
	Value 30 - 65
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

3: Heizung Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

4: Warmwasser Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
*/

socket_recv($socket,$Test,4,MSG_WAITALL);  // lesen, sollte 3002 zurückkommen
$Test = unpack('N*',$Test);
//printf('read:%s <br>',implode($Test));

socket_recv($socket,$Test,4,MSG_WAITALL); // lesen, sollte Status zurückkommen
$Test = unpack('N*',$Test);
//printf('Status:%s <br>',implode($Test));


socket_close($socket);


?>

Auswahl Betriebsart Kühlung:

<?php

//includes
include "39064.ips.php";

// connecten
$socket = socket_create(AF_INET, SOCK_STREAM,0);
$connect = socket_connect($socket, $IpWwc, $WwcJavaPort) || exit("socket_connect fehlgeschlagen");


//if ($connect == 1)
//    echo "PASS: Verbunden mit WWC Java Console $IpWwc Port: $WwcJavaPort <br>";
//else
//    echo "ERROR: Nicht verbunden mit WWC Java Console  <br>";


// Daten senden
$msg = pack('N*',3002); //3002 senden aktivieren
$send=socket_write($socket, $msg, 4);

//SetParameter senden;
$msg = pack('N*',108); //Parameter: 108: Kühlung Betriebsart
$send=socket_write($socket, $msg, 4);

switch($_IPS['VALUE']) {
 
    case 0:
	$msg = pack('N*',0); // Off                   0:Off - Value: 1:Auto
	        
   
    break;
 
    case 1:
    $msg = pack('N*',1); // Auto                     0:Off - Value: 1:Auto

    }

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

$send=socket_write($socket, $msg, 4);


/*
gefunden bei:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/23_LUXTRONIK2.pm

Parameter:
1: Temperatur SetBack
	Value: -5 bis +5
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

2: Brauchwasser Soll Temperatur
	Value 30 - 65
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

3: Heizung Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

4: Warmwasser Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
*/

socket_recv($socket,$Test,4,MSG_WAITALL);  // lesen, sollte 3002 zurückkommen
$Test = unpack('N*',$Test);
//printf('read:%s <br>',implode($Test));

socket_recv($socket,$Test,4,MSG_WAITALL); // lesen, sollte Status zurückkommen
$Test = unpack('N*',$Test);
//printf('Status:%s <br>',implode($Test));


socket_close($socket);


?>

Auswahl Betriebsart Warmwasser

<?php

//includes
include "39064.ips.php";

// connecten
$socket = socket_create(AF_INET, SOCK_STREAM,0);
$connect = socket_connect($socket, $IpWwc, $WwcJavaPort) || exit("socket_connect fehlgeschlagen");


//if ($connect == 1)
//    echo "PASS: Verbunden mit WWC Java Console $IpWwc Port: $WwcJavaPort <br>";
//else
//    echo "ERROR: Nicht verbunden mit WWC Java Console  <br>";


// Daten senden
$msg = pack('N*',3002); //3002 senden aktivieren
$send=socket_write($socket, $msg, 4);

//SetParameter senden;
$msg = pack('N*',4); //Parameter: 4: Warmwasser Betriebsart
$send=socket_write($socket, $msg, 4);

switch($_IPS['VALUE']) {
 
    case 0:
	$msg = pack('N*',0); // Auto                    Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
	        
    break;
 
    case 1:
    $msg = pack('N*',1); // Zus. Wärmeerzeugung     Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    break;
 
    case 2:
    $msg = pack('N*',2); // Party                   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    break;
 
    case 3:
    $msg = pack('N*',3); // Ferien                  Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
   
    break;
 
    case 4:
    $msg = pack('N*',4); // Off                     Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

    }

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

$send=socket_write($socket, $msg, 4);


/*
gefunden bei:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/23_LUXTRONIK2.pm

Parameter:
1: Temperatur SetBack
	Value: -5 bis +5
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

2: Brauchwasser Soll Temperatur
	Value 30 - 65
   Allow only integer temperature or with decimal .5
	$setValue = int($realValue * 2) * 5;

3: Heizung Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off

4: Warmwasser Betriebsart
   Value: 0:Auto - 1: Zus. Wärmeerzeugung - 2:Party - 3:Ferien - 4:Off
*/

socket_recv($socket,$Test,4,MSG_WAITALL);  // lesen, sollte 3002 zurückkommen
$Test = unpack('N*',$Test);
//printf('read:%s <br>',implode($Test));

socket_recv($socket,$Test,4,MSG_WAITALL); // lesen, sollte Status zurückkommen
$Test = unpack('N*',$Test);
//printf('Status:%s <br>',implode($Test));


socket_close($socket);


?>

Ich würde mal sagen dir fehlt der Wert 268, hat eher nichts mit der Zeile zu tun…

Wenn du den Wert nicht vermisst oder findest, kannst du mal Versuchen, ob du die Fehlermeldung so weg kriegst, indem du diese Funktion danach einfügst…

if (array_key_exists('268', $array)) {
    $wert = $array['268'];
} else {
}

OK, ich hab den Code am ende des Skript wpValueConfiguration eingefügt. Hat aber nicht geholfen.

Hallo @Conan79,

„Undefined array key 268“ sagt aus, das im Array der Schlüssel 268 nicht existiert. Hier wäre zuerst einmal zu prüfen, welche Anzahl an Schlüsseln in dem Array von deiner WP geliefert werden.

In dem Script WPCommunication gibt es am Ende

//zur fehlersuche kommentiere folgende zeile einfach aus
/*
var_dump(count($daten_raw));
var_dump($daten_raw);
var_dump($valueCount);
*/

Entferne hier mal die am Anfang /* und am Ende */. Starte das Script EINZELN! Schicke mir dann mal das Ergebnis per PN.

Außerdem sehe ich gerade noch, das meine ursprüngliche Definitionen in der WPValueConfiguration nur bis zum Schlüssel 259 definiert wurde.

Eine weitere Idee … ich weiß das Windows bei 1 anfängt zu zählen, Unix Systeme bei 0. Auf welchem System läuft dein IPS?

Beste Grüße
tomquenten

Okay, danke für die Info. Deine WP liefert noch mehr Werte. Schaue nun mal in der WPValueConfiguration, ob soviel bei Dir überhaupt definiert wurde. Wenn Nicht, schreibe die fehlenden Zeilen unten dran, das Schema erkennst du weiter oben!

OK, hab jetzt unten einfach
$array[268]->SetParent = 41072;
ergänzt.
Fehler bleibt aber bestehen.