Heizungssteuerung: Daten auslesen

  • Danke! Jetzt habe ich den richtigen Port. Mein Rechner empfängt jetzt die Daten per Script, leider sendet die Heizung nicht wirklich viele Infos. Das hier ist alles was in x.data drin ist. TCPDump zeigt auch immer nur 1090 Byte-Datenpakete:


    09:56 TAG 00
    09:56 TAG 00
    ...


    Die Daten in x.data müssten etwa so aussehen:


    Code
    11:27 TAG 00
    11:27 TAG 01
    11:27    . 365 360   .   .   . 357   .   . 223   .   . 363 362   .   .   .   .   .   .   .   .   .   . 406 406   .   .   .   .   .   .   .   . 406...
    11:27 TAG 02
    11:28 TAG 00
    11:28 TAG 01
    11:28    . 361 358 497   .   . 356   .   . 224   .   . 361   .   .   .   .   .   .   .   .   .   .   . 397 397   .   .   .   .   .   .   .   . 397...
    11:28 TAG 02


    Schickt denn das Script ein Antwortpaket an die Steuerung?
    Am besten, du schaust mal, was in Main() und Reply() genau passiert.


    Klaus

  • Das ist die Ausgabe (mehr im Anhang):


    00 97 BE 2C 42 38 A6 09
    09 09 0C 00 32 DA 00 00
    00 00 00 00 00 08 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 02 08 0C
    0A 02 08 00 00 20 00 00
    13 00 01 00 00 00 00 00
    A0 13 00 00 F8 02 00 00
    00 00 00 00 00 00 00 00
    80 27 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00
    00 00 00 00 BE E2 7B 55
    00 97 BE 2C 42 38 A6 09
    00 00 00 00 01 00 00 00
    40 A1 65 49


  • Ich vermute, daß der Steuerung das Reply-Paket nicht gefällt.
    Eventuell sind die Bytes, die in Reply() mit


    # Some mysterious code bytes:
    $a[12] = 0x01;
    $a[16] = 0x40;
    $a[17] = 0xA1;


    belegt werden, zwar für ein und dieselbe Steuerung konstant, aber für verschiedene Steuerungen nicht.


    Laß doch mal deine Steuerung wieder mit dem Hersteller-Server kommunizieren und schreibe mit tcpdump die Daten mit. Was ich bräuchte wäre das erste Antwortpaket, das vom Server kommt.


    Klaus

  • Hi,


    so man sieht allerdings nur das Return-Paket weil meine Fritzbox die andere Richtung nicht captured (der ganze tcpdump capture hängt an).


    Paradigma sendet 3 Pakete:


    00000000 00 97 be 2c 42 38 27 00 00 00 00 00 01 00 00 00 ...,B8'. ........
    00000010 c5 c6 e6 3f ...?
    00000014 00 97 be 2c 42 38 28 00 00 00 00 00 01 00 00 00 ...,B8(. ........
    00000024 c5 c6 e7 3f ...?
    00000028 00 97 be 2c 42 38 29 00 00 00 00 00 01 00 00 00 ...,B8). ........
    00000038 c5 c6 e8 3f ...?


  • Probier bitte mal folgende Änderung:

    Code
    # Some mysterious code bytes:
      $a[12] = 0x01;
      $a[16] = 0xC5;
      $a[17] = 0xC6;


    Klaus

  • Hi,


    habe das Perl-Script selbst modifiziert und die Werte werden jetzt gelistet!!!


    Da war ich wohl zu langsam... ;)


    Zitat


    Super! Eine Frage: Sind das jetzt nur Werte der Heizung oder auch Solar?


    Da ich nur eine ganz einfache Heizung habe (1 Heizkreis und Warmwasser) konnte ich auch nur die Werte dafür "enträtseln".
    Aber mit Hilfe der Daten in x.data und der Debug-Ausgaben an der Konsole sollte es dir möglich sein, auch die Solardaten rauszubekommen. Du musst halt über "Versuch und Irrtum" schauen, welche Speicherstelle mit welcher Temperatur etc. korrelliert.
    Falls du da was rausfindest wäre ich für eine entsprechende Rückmeldung dankbar, damit ich das Script erweitern kann.


    Jetzt wäre nur noch interessant, nach welchem Algorithmus die beiden Antwort-Bytes ermittelt werden. Mal sehen, ob ich da was finde...


    Klaus


  • Jetzt wäre nur noch interessant, nach welchem Algorithmus die beiden Antwort-Bytes ermittelt werden. Mal sehen, ob ich da was finde...


    So, mittlerweile ist auch dieses Rätsel gelöst ;-).
    Dei beiden Bytes werden offensichtlich aus den beiden niederwertigen Bytes der MAC-Adresse ermittelt.


    Anbei der aktuelle Stand des Scripts, der das jetzt auch automatisch kann.


    Klaus

  • Hi,


    wird bei der Ausgabe auf console jeder der zurückgegebenen Felder angezeigt oder nur die die das Script auswerten kann?


    Ich versuche mal die Felder zu liefern. Ich habe leider noch nicht ganz begriffen wie ich weitere Werte in der Grafik aufnehme.


    Ich habe noch eins geändert:


    U => [ "Fehler", "LAST", "AREA", "FF0000FF", 2, 70, "%5.0lf", 1, "", "B" ],
    und
    M => [ "Heizkreispumpe", "LAST", "AREA", "A07030FF", 2, 76, "%5.0lf", 1, "", "B" ],


    weil durch die Solaranlage höhere Temperaturen Zustandekommen und daher die Brauchwasserlinie hinter der Pumpe, die oft läuft liegt. Wird warscheinlich noch nicht reichen.


    MK


  • wird bei der Ausgabe auf console jeder der zurückgegebenen Felder angezeigt oder nur die die das Script auswerten kann?


    Du meinst das hier?

    Code
    1    392 /    393
      6    365 /    361
     12    403 /    402
    180     42 /     41
    220   2817 /   2561
    249      5 /      4


    Da werden alle Felder angezeigt (wenn sie sich ändern).
    Index <neuer Wert> / <alter Wert>


    Zitat


    Ich versuche mal die Felder zu liefern. Ich habe leider noch nicht ganz begriffen wie ich weitere Werte in der Grafik aufnehme.


    Am besten einen ähnlich gelagerten Wert nehmen und an allen entsprechenden Stellen den neuen parallel dazu hinzufügen.



    Sollte ich vielleicht mal versuchen, dynamisch zu machen...


    Klaus


  • mal ne Frage: ich habe meine Grafik mal angehangen. Woher kommt der hellgraue Bereich nachts beim Absenken?


    Was das genau ist weiß ich auch nicht. Ich habe nur gesehen, daß der Wert irgendwie hoch und runtergezählt wird und wohl was mit der Vorverlegung des Aufheizzeitpunktes zu tun hat. Je kälter es draußen ist, desto höher geht er. Ähnlich gelagert dürften auch die Werte an Index 49 und 51 sein (die aber nicht in der Grafik dargestellt werden, weil ich sie erst später entdeckt habe). Die dienen wohl beim Betrieb mit einem Raumtemperaturfühler dazu, die Heizkurve automatisch anzupassen. Bei mir hat die Steuerung inzwischen schon zweimal den Fußpunkt verändert.


    Klaus

  • So ich habe jetzt die ersten Felder.


    11 42,7 Kollektor Temp (TSA)
    184 799 Solargewinn gesamt (noch unsicher) - macht in der Grafik nicht unbedingt Sinn
    183 2 Solargewinn Tag (noch unsicher) - macht in der Grafik nicht unbedingt Sinn


    Kannst du ggf. einmal den 11er Wert ins Script einbauen, dann vergleiche ich das mit dem alten Script und lerne :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!