MAX Wandthermostat: Invalid value bei weekProfile von Max!Cube

Begonnen von Schnup, 19 Oktober 2013, 21:39:57

Vorheriges Thema - Nächstes Thema

Schnup

Hallo,

nach einem Jahr voller Frust mit der eQ3-MAX-Software bin ich froh mit FHEM eine flexible Lösung für meine Heizungssteuerung gefunden zu haben, endlich ist es möglich die sinnlose Abgrenzung zwischen MAX! den anderen eQ3-Systemen zu überwinden.
Ein großes Lob und vielen Dank an die Entwickler!

Mir ist aufgefallen, dass das Wochenprofil des MAX-Wandthermostaten nicht korrekt aus dem MAX-Cube/MAXLAN übernommen wird.
Fhem.log für Wandthermostat:
5: MAX_Parse MAX,1,WallThermostatConfig,02a9dd,18,22,30.5,4.5, |Block von 370 Zeichen|
2: MAX: Invalid value |370 Zeichen| for READING .weekProfile. Forcing to |364 Zeichen|
5: Triggering WT_Bu (19 changes)

Bei den Heizkörper-Thermostaten ist es in Ordnung:
5: MAX_Parse MAX,1,HeatingThermostatConfig,014a0f,18.0,22.0,on,off,80,2,0,12.0,15,100,0,0,12, |Block von 364 Zeichen|
5: Triggering HT_BuTur (27 changes)

Anscheinend ist der Block von 370 Zeichen für das Wochenprofil beim Wandthermostaten zu lang, beim HK-Thermostat sind es nur 364 Zeichen, genau soviel werden auch bei "Forcing to" an den WT übergeben.
Wenn ich den Zahlenblock für das Wochenprofil richtig deute, besteht er aus (12 +40) Zeichen * 7 Tage = 364 Zeichen. Beim WT werden also zusätzlich noch sechs Zeichen übergeben, bei meinen Versuchen mit unterschiedlichen Profilen waren es immer die Zeichen "071830".

Gibt es dafür bereits schon eine Lösung, die ich eventuell übersehen habe?

Zum ersten Test läuft Perl bei mir unter Win XP.
FHEM Version 5.5: MAXLAN (2013-07-18 22:17:32) und MAX (2013-09-02 13:01:38)

Matthias Gehre

Hallo,

du hast ja schon viel herausgefunden. Stehen die zusätzlichen Bytes "071830" am Anfang oder am Ende des Blocks von 370 Zeichen?
Sobald ich das weiß, kann ich diese erst mal ignorieren lassen, sodass wenigstens das weekprofile richtig angezeigt und gesetzt werden kann.
Auf lange Sicht wäre es natürlich toll, wenn man herausfindet, was diese zusätzlichen Bytes bedeuten.

Viele Grüße
Matthias

Schnup

Hallo Matthias,

die sechs Bytes stehen hinter dem Block, habe meine "formatierte" Log-Datei angehängt.

Gruß

Jürgen

Matthias Gehre

Bitte probiere mal folgenden Patch aus (ich hab leider kein Wandthermostat und kann es nicht selbst testen):

diff --git a/FHEM/10_MAX.pm b/FHEM/10_MAX.pm
index 4cb09f7..e2299e9 100755
--- a/FHEM/10_MAX.pm
+++ b/FHEM/10_MAX.pm
@@ -742,7 +742,13 @@ MAX_Parse($$)
       readingsBulkUpdate($shash, "decalcification", "$decalcDays{$args[11]} $args[12]:00");
       readingsBulkUpdate($shash, ".weekProfile", $args[13]);
     } else {
-      readingsBulkUpdate($shash, ".weekProfile", $args[4]);
+      my ($weekProfile, $unknownBytes) = $args[4] =~ m/^(.{364})(.*)$/;
+      readingsBulkUpdate($shash, ".weekProfile", $weekProfile);
+      #We still have to find out what $unknownBytes mean, so hopefully
+      #we can observe some other values
+      if($unknownBytes ne "071830") {
+        Log GetLogLevel($shash->{NAME}, 2), "While parsing weekProfile of WallThermostat: Additional bytes $unknownBytes differ from 071830. Please report to http://forum.fhem.de/index.php?topic=15567";
+      }
     }

    MAX_ParseWeekProfile($shash);

Schnup

Hat funktioniert, das Wochenprofil wird richtig eingelesen, herzlichen Dank.
Werde später noch weiter testen, vorab die Log-Datei (ab 12:54 Uhr ist der neue Code aktiv).

Jürgen

Matthias Gehre


watz

Hallo,

habe das gerade mit meinem Wandthermostat auch getestet und zumindest bei mir sind die unknownBytes immer leer. Habe den neu hinzugekommen "Log-Teil" von 10_MAX bei mir leicht verändert um das besser nachvollziehen zu können:

   745       my ($weekProfile, $unknownBytes) = $args[4] =~ m/^(.{364})(.*)$/;
    746       readingsBulkUpdate($shash, ".weekProfile", $weekProfile);
    747       #We still have to find out what $unknownBytes mean, so hopefully
    748       #we can observe some other values
    749       if( $unknownBytes eq "" ) {
    750         Log GetLogLevel($shash->{NAME}, 2), "While parsing weekProfile of WallThermostat: Additional bytes are empty. Please report to http://forum.fhem.de/index.php?topic=15567";
    751       } elsif( $unknownBytes ne "071830") {
    752         Log GetLogLevel($shash->{NAME}, 2), "While parsing weekProfile of WallThermostat: Additional bytes $unknownBytes differ from 071830. Please report to http://forum.fhem.de/index.php?topic=15567";
    753       }
    754     }


Der Eintrag nach einem "shutdown restart" sagt bei mir nun eindeutig:

2013.10.24 14:59:07 3: maxcube device opened
2013.10.24 14:59:07 2: While parsing weekProfile of WallThermostat: Additional bytes are empty. Please report to http://forum.fhem.de/index.php?topic=15567


Es bleibt also rätselhaft...

jisleib

Hallo,

ich hab das bei mir auch mal nachgeschaut. Kein Problem auch ohne den Patch. Ich hab 3 Wandthermostate.

@schnup

schau mal bitte in dem log nach so einer Zeile für einen WallMountedThermostat:

2013.10.24 16:33:19 5: MAXLAN_Parse: len 203, addr 06a290, devicetype 3, firmware 16, testresult 0, groupid 1, serial KEQ0005815

hier erkennt man die Länge des Config-Telegramms (203), den Devicetype (3) und die Firmware (1.6)

Grüß Jürgen

Schnup

Hallo Jürge I.,

bei mir sieht die Zeile so aus:

2013.10.23 12:57:44 5: MAXLAN_Parse: len 206, addr 02a9dd, devicetype 3, firmware 18, testresult 255, groupid 2, serial IEQ0494104

Der Unterschied von len 203 bei firmware 16 zu 206 bei fw 18 wären ja die 6 Zeichen / 3 Byte.

Nach dem Patch kann ich jetzt auch ein neues Wochenprofil an das Wandthermostat senden, es wird richtig ausgeführt und auch wohl vom Cube angenommen.
In der MAX!-Software (1.4) wird die Änderung nicht angezeigt, wahrscheinlich wird dort nur das Profil eine HK-Thermostaten ausgewertet, beim WT stehen die neuen Werte auch in der eQ3-Log!

Jürgen S.

Mr.Heat


jisleib

Hallo,

von ELV gibt´s jetzt auch eine neue MAX!-Software Version 1.3.10. Der Cube bekommt ein Update. Danacht wird die Isttemperatur der Wandthermostate mit angezeigt (auch ohne Update der Firmware des Wandthermostaten). Jetzt kann zusätzlich über die Software ein Offset für die Wandthermostate eingegeben werden. Das Wandthermostat sendet jetzt 206 statt 203 Bytes, die 3 Bytes mehr sind 1. Offset 2. WindowopenTemperatur 3. Boost

Das 071830 bedeutet in dem Fall Offset von 0°C (07), Temperatureinstellung bei Fenster offen von 12°C (18h=>24/2) und Boost von 5 Minuten mit 80% Ventilstellung (30).

Grüße Jürgen

juergen012

Hallo, seit kurzem habe ich auch fhem mit dem MAX! System an der FB in Betrieb. Leider bekomme ich folgende Fehlermeldung:

2013.12.02 17:53:47 3: Opening ml device 192.168.1.106:62910
2013.12.02 17:53:47 3: ml device opened
2013.12.02 17:53:48 2: MAX: Invalid value 44605c7e54b45d0e44004520452045204520452045204520452044605c7e5cb4650e44004520452045204520452045204520452044485c6c54b45d0e44004520452045204520452045204520452044485c6c54b45d0e44004520452045204520452045204520452044485c6c54b45d0e44004520452045204520452045204520452044485c6c54b45d0e44004520452045204520452045204520452044485c6c54b45d0e440045204520452045204520452045204520071430 for READING .weekProfile. Forcing to 444855084520452045204520452045204520452045204520452044485508452045204520452045204520452045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc5514452045204520452045204520452045204520

Ich habe versucht, dies mit demo.a. Patch zu fixen, aber ohne Erfolg. Was mache falsch??
Fhem unter Proxmox

muschelschubser

Hallo juergen012,

das Problem hatte ich bis gerade auch.
Falls Du einen "set max_device weekprofile <weekprofile>" Befehl nutzt, musst Du mit Leerzeichen und Zeilenumbrüchen aufpassen, die werden nicht richtig "geparsed". (Oder es ist so gewollt, das weiss ich nicht)
Also, wenn Dein weekprofile so aussieht (als Beispiel):
set WZ_Wandthermostat weekProfile Mon 17,17:30,20,23:00,17 Tue 17,17:30,20,23:00,17 Wed 17,17:30,20,23:00,17 Thu 17,17:30,20,23:00,17 Fri 17,15:00,20,23:00,17 Sat 17,11:00,20,23:00,17 Sun 17,11:00,20,23:00,17

wird es funktionieren. Machst Du es so wie im Wiki http://www.fhemwiki.de/wiki/MAX beschrieben, kommt besagte Fehlermeldung.

muschelschubser

juergen012

Hallo muschelschubser,
Danke für den Tipp. Das werde ich dann nachehr gleich mal testen, wenn ich wieder im Hause bin. Ich werde dann berichten.
Beste Grüße
Jürgen K.
Fhem unter Proxmox

juergen012

Hallo, habe soeben das fhem neu aufgesetzt und alle Komponenten neu installiert. Leider funktioniert das MAX! immer noch nicht. Der Fehler besteht immer noch. Jetzt werde ich den Cube mal auf Firmware zurücksetzten und dann nochmals mit fhem verbinden..
Beste Grüße
Jürgen K.
Fhem unter Proxmox