Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst]Can-Bus Adapter: keine Verbindung zur Junkers WP

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst]Can-Bus Adapter: keine Verbindung zur Junkers WP

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      emblitz @Pedder007 last edited by emblitz

      Hallo Pedder007,
      schön einen Gleichgesinnten zu treffen.
      Hoffentlich können wir uns gegenseitig weiterhelfen.
      Ich habe Junkers (Bosch) mit einer Auflistung der Canbus-Adressen angeschrieben. Leider machen die Zuordnung und Umrechnung nicht öffentlich.
      Eine Zuordnung habe ich bislang zwar für einige wenige Werte in den Trends aus Flot optisch herstellen können, aber keine passende plausible Umrechnung gefunden.
      Die Can-Adressen im verlinkten Mikrocontrollerforum unterscheiden sich leider komplett von den Adressen meiner Heizung. Ansonsten hatte ich keine weiteren brauchbaren Infos im Internet gefunden.
      Ich hoffe, dass die Adressen unserer beiden Heizung gleich sind. Einen Mitschnitt meiner Can-Adressen findest du weiter oben. .
      Melde dich gern, wenn du soweit bist oder Fragen hast.
      LG emblitz

      1 Reply Last reply Reply Quote 1
      • E
        emblitz @crycode last edited by emblitz

        @crycode

        Hallo crycode,

        kann dein Can-Bus Adapter die Hex-Werte direkt mittels einer Formel umrechnen und in das geparste Objekt/Datenpunkt schreiben ?
        Ich möchte einen Hex-Wert mittels uint16be nach Dez umrechnen und dann in der folgenden Formel umrechnen. F4 ist dabei das Ergebnis der Wandlung durch den Parser von Hex nach Dez mit uint16be.

        =105,81916402087-(0,28577699398241F4)+(0,000356191341049951F4F4)-(0,00000020925659550495F4F4F4)

        Eventl. funktioniert die Formel in der Custom-Einstellung des Parsers?
        Ich weiß nur nicht was ich hier eintragen soll.

        Ich konnte zwischenzeitlich bereits einige Can-Bus Adressen WP-Funktionen zuordnen und bin mit anderen Wärmepumpenspezis in diesem Forum etwas weitergekommen.
        https://www.haustechnikdialog.de/Forum/p/3453047
        Die Wandlung der Dez-Werte aus dem Parser mit uint16be scheint sich gut mit der o.g. Formel z.B. bei der Vorlauftemperatur umrechnen zu lassen.
        Die Formel stammt aus dem Fhem-Forum
        https://forum.fhem.de/index.php/topic,47508.150.html

        LG emblitz

        crycode 1 Reply Last reply Reply Quote 0
        • crycode
          crycode Developer @emblitz last edited by

          @emblitz sagte in Can-Bus Adapter: keine Verbindung zur Junkers Wärmepumpe:

          =105,81916402087-(0,28577699398241F4)+(0,000356191341049951F4F4)-(0,00000020925659550495F4F4F4)

          Das sollte mit einem Custom-Parser funktionieren.
          Dazu musst du erst mal den Wert aus dem buffer in eine Variable lesen und kannst damit dann rechnen.
          Beispiel für das eigene Script zum Lesen:

          const f4 = buffer.readUInt16BE(0);
          value = 105,81916402087 - (0,28577699398241 * f4) + (0,000356191341049951 * f4 * f4) - (0,00000020925659550495 * f4 * f4 * f4);
          

          buffer ist dabei ein Buffer Objekt mit den Daten-Bytes aus der CAN-Nachricht und wird vom Adapter gefüllt.
          In value musst du den Wert schreiben, den der Parser zurückgeben soll.
          Der Rest ist Standard JavaScript. Diese zwei Zeilen sollten da reichen.

          Die 0 beim buffer.readUInt16BE ist dabei die Stelle im Buffer, von der du lesen willst. Das musst du ggf. anpassen. Bei den vordefinierten Parsern ist das der Offset.

          Beim eigenen Script zum Schreiben kannst du einfach

          //
          

          rein schreiben, wenn du nichts senden möchtest. Dann meckert der Adapter auch nicht, dass das Script fehlen würde. 😉

          E 1 Reply Last reply Reply Quote 0
          • E
            emblitz @crycode last edited by emblitz

            @crycode
            Vielen Dank für die turoboschnelle Antwort!

            Ich habe dein Script so übernommen:
            9f377dfc-153e-4b3e-a4ab-50be9e442cfd-image.png

            Der Datenpunkt wo jetzt die 105 steht sollte mit ca. 24 nach der Umrechnung geschrieben werden.
            3e55e525-236f-49d1-a422-7d7ffe149559-image.png

            Umrechnung mit Calc:
            1a52dbc2-68a5-4627-917c-c730fb069178-image.png

            Könntest du bitte nochmal schauen was ich falsch gemacht habe?
            Die 105 stehen da noch von vorherigen Versuchen und haben sich nicht verändert.
            Wenn ich das Lesescript kompl lösche, ändert sich auch nichts an der 105.

            LG emblitz

            crycode 1 Reply Last reply Reply Quote 0
            • crycode
              crycode Developer @emblitz last edited by

              @emblitz Ups... ersetz mal in dem Skript alle Kommas in den Zahlen gegen einen Punkt. Hab ich beim Kopieren deiner Formel übersehen.
              Da müsste im Log auch ein Fehler dazu aufgetaucht sein.

              E 1 Reply Last reply Reply Quote 0
              • E
                emblitz @crycode last edited by emblitz

                @crycode
                So, habe die Kommas gegen Punkte ersetzt. Lief dann noch nicht.
                Habe dann den Namen verkürzt
                01e0c172-ec5c-4052-8ff1-4b25b2f538a8-image.png

                und die Funktion "Verwende Raw States" aktivert.
                Ist das so richtig?
                3194ff69-dd08-4e9f-b11a-98a2d7123f66-image.png

                Jetzt läuft es.
                Bis hierhin ein dickes Danke für die kompetente Hilfe!!!

                LG
                emblitz

                crycode 1 Reply Last reply Reply Quote 0
                • crycode
                  crycode Developer @emblitz last edited by

                  @emblitz Die Länge der Namen sollte damit nichts zu tun haben.

                  Auch die Option "Verwende Raw States" wird für die Parser nicht benötigt. Die Raw States sind für externe Verarbeitungen (z.B. in einem eigenen Skript im JavaScript Adapter) gedacht.
                  Wenn man die nicht braucht ist es besser die Raw States zu deaktivieren, da diese (besonders bei sehr aktiven Bus-Systemen) zu vielen State-Änderungen führen können.

                  P.S.: Freut mich zu lesen, dass du Fortschritte beim Auswerten der Daten machst. 🙂

                  E 1 Reply Last reply Reply Quote 0
                  • E
                    emblitz @crycode last edited by

                    @crycode
                    Ja, dein Adapter ist flexibel anpassbar und einfach großartig. Respekt vor dieser tollen Arbeit!
                    Die Raw States werden wieder deaktiviert. Ich hatte das Gefühl, dass erst nach der Aktivierung die Werte umgerechnet wurden. Ich werde es im Auge behalten.

                    Eine Frage hat sich noch ergeben.
                    Kann ich in den verschiedenen Parsern innerhalb einer Can-Bus Adresse oder auch in verschiedenen Parsern anderer Can-Bus Adressen immer die das identische Script verwenden, d.h. darf in allen Scipts immer F4 stehen oder darf F4 nur einmalig in einem Script verwendet werden?

                    LG emblitz

                    crycode 1 Reply Last reply Reply Quote 0
                    • crycode
                      crycode Developer @emblitz last edited by

                      @emblitz Danke für das gute Feedback 🙂

                      In den Skripten kannst du verwenden was du willst und auch z.B. den gleichen Namen für Variablen mehrfach in mehreren Parser-Skripten nutzen. Wichtig ist nur, dass bei einem lesen-Skript der Wert oder undefined in die Variable value geschrieben wird und bei einem schreiben-Skript die Variable buffer entsprechend gesetzt wird.
                      Jedes Skript läuft in einem eigenen abgesicherten Kontext und es kann keine Überschneidungen zwischen verschiedenen Parsern geben. (Mit Ausnahme vom sharedData Objekt, welches speziell für den Austausch zwischen mehreren Skripten gedacht ist.)

                      E 1 Reply Last reply Reply Quote 0
                      • E
                        emblitz @crycode last edited by emblitz

                        Hallo,

                        ich wollte meine Erkenntnisse in diesem Forum gerne rückmelden.
                        Hier nun meine erkannten und zugeordneten Canbus-Adressen für die Junkers Wärmepumpe STM 60-1.
                        Die Adressen ohne Funktionsbeschreibung konnte ich noch nicht zuordnen.
                        Viele Adressen werden gar nicht oder nur sehr selten aktuallisiert.

                        Die Umrechnung mittels der u.g. Formel passt bis auf z.T. 0,2-0,3°C Differenz zu den im Display angezeigten Werten.
                        Energiezählwerte scheinen nicht übertragen zu werden.

                        Wenn jemand einen Tipp hat, wie ich an die Zählerwerte für die erzeugten Heizenergien der Wp komme, wäre ich sehr dankbar.

                        LG emblitz

                        msgId msgName parserDataType parserCustomScriptRead

                        28270 Heizkreispumpe_G1 ein/aus int8
                        30270
                        34270
                        38270 3-Wege_Ventil_Q21_Heizung=0_WW=1 int8
                        40270
                        44270 Zirkulationspumpe_WW ein/aus int8
                        48060
                        48270 Kompressor ein/aus int8
                        54270 Solepumpe_G3 ein/aus int8
                        80060
                        90270 Wärrmeträgerpumpe_G2_Drehzahl 0-100% int8
                        388400
                        388402
                        388403
                        388404
                        388405
                        388406
                        388407

                        8000270 Vorlauftemp custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8004270 Aussentemp custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8008270 Warmwassertemp custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8010270 Heizgas custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8014270 Wärmeträgertemp Austritt custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8018270 Wärmeträgertemp Eintritt custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8020270 Solekreistemp Austritt custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        8058270
                        8060270
                        8064270
                        8068270
                        8070270
                        8074270
                        8078270
                        0002C270 Wärmeträgerpumpe_G2 ein/aus int8
                        0003C270 Elektr_Zuheizer_1 ein/aus int8
                        0004C270 Elektr_Zuheizer_2 ein/aus int8
                        000A8402
                        000A8403
                        000A8404
                        000A8405
                        000A8406
                        000A8407
                        000A8408
                        000A8409
                        001D8431
                        0042C402
                        0042C403
                        0042C404
                        0042C405
                        0042C406
                        0042C407
                        0800C270

                        0801C270 Solekreistemp Eintritt custom const f4 = buffer.readUInt16BE(0); value = 105.81916402087 - (0.28577699398241 * f4) + (0.000356191341049951 * f4 * f4) - (0.00000020925659550495 * f4 * f4 * f4);

                        0805C270
                        0806C270
                        0807C270
                        09FFC270

                        1 Reply Last reply Reply Quote 1
                        • crycode
                          crycode Developer last edited by

                          @emblitz Super!
                          Magst du deine aktuelle Konfiguration ein mal aus den Adaptereinstellungen als json exportieren und dann hier posten?
                          Dann könnte ich das vordefinierte Konfiguration für einen Import von GitHub mit aufnehmen und jeder könnte das mit wenigen Klicks laden. 🙂

                          E H 2 Replies Last reply Reply Quote 1
                          • E
                            emblitz @crycode last edited by emblitz

                            @crycode Ja, gern.
                            Die wichtigsten Datenpunkte um einen Überblick des Betriebs der WP zu bekommen, sind enthalten. Leider fehlen die Zählwerte der erzeugten Energien. z.B. für die automatische Berechnung des COP/JAZ.
                            Das ist die Datei des Exports aus der Canbus-Instanz:

                            canbus-messages.json

                            LG emblitz

                            1 Reply Last reply Reply Quote 1
                            • H
                              hbrockmann @crycode last edited by hbrockmann

                              @crycode
                              von mir auch noch mal ein danke, ich hab mich da mal über emblitz mit dran gehängt..

                              anbei die konfiguration für eine junkers ste60 (ohne -1)

                              die letzten drei bits (6,7,8) der id scheinen modelspezifisch zu sein, aber die bits 2,3,4,5 (ich nenne sie mal register), scheinen zumindest bei junkers in vielen bereichen übereinzustimmen.

                              junkers_ste60_canbus-messages.json

                              ich bekomme zwar einige register mehr ausgelesen als emblitz, aber bis auf das datum+uhrzeit habe ich da noch nicht viel brauchbares zusätzlich identifizieren können.

                              gruß hb

                              edit:
                              eine neue formel aus dem fhem forum, aber an der umsetzung in den iobroker code hapert es momentan noch..

                              Gegebenenfalls noch interessant:
                              eine genauere Linearisierung als das Polynom 3. Ordnung (+-0.3°C) ergibt sich mit dem Polynom 5.Ordnung (+-0.1°C)
                              Die Funktion läst sich mittels 'Trendlinie' oder RGP Funktion in Excel bzw. OpenOffice Calc ermitteln.
                              
                              f(x) = − 5,63141E-13 x⁵ + 1,53737E-09 x⁴ − 1,7745E-06 x³ + 0,00108586 x² − 0,4378966 x + 116,88035
                              

                              mein versuch war:

                              const f4 = buffer.readUInt16BE(0);
                              value = - (5.63141E-13 * f4 * f4 * f4 * f4 * f4) + (1.53737E-09 * f4 * f4 * f4 * f4) − (1.7745E-06 * f4 * f4 * f4) + (0.00108586 * f4 * f4) − (0.4378966 * f4) + 116.88035;
                              value = Math.round(value * 10 ) / 10;
                              
                              crycode 1 Reply Last reply Reply Quote 0
                              • crycode
                                crycode Developer @hbrockmann last edited by

                                @hbrockmann sagte in [gelöst]Can-Bus Adapter: keine Verbindung zur Junkers WP:

                                f(x) = − 5,63141E-13 x⁵ + 1,53737E-09 x⁴ − 1,7745E-06 x³ + 0,00108586 x² − 0,4378966 x + 116,88035

                                Ich denke das sollte passen:

                                value = (-5.63141E-13 * f4 * f4 * f4 * f4 * f4) + (1.53737E-09 * f4 * f4 * f4 * f4) − (1.7745E-06 * f4 * f4 * f4) + (0.00108586 * f4 * f4) − (0.4378966 * f4) + 116.88035;
                                

                                Die Konfigs in GitHub mit aufnehmen mache ich in den nächsten Tagen. Danke euch schon mal dafür!

                                H 1 Reply Last reply Reply Quote 0
                                • H
                                  hbrockmann @crycode last edited by hbrockmann

                                  @crycode
                                  leider noch nicht..
                                  ich hab da schon einige versuche durch, auch den mit dem minus innerhalb der klammer..

                                  value = (-5.63141E-13 * f4 * f4 * f4 * f4 * f4) + (1.53737E-09 * f4 * f4 * f4 * f4) − (1.7745E-06 * f4 * f4 * f4) + (0.00108586 * f4 * f4) − (0.4378966 * f4) + 116.88035;
                                   ^ SyntaxError: Unexpected character '−' at makeNiceSyntaxError (/opt/iobroker/node_modules/vm2/lib/transformer.js:41:16) at transformer (/opt/iobroker/node_modules/vm2/lib/transformer.js:84:8) at NodeVM.run
                                  ....diverse andere weitere fehler....
                                  
                                  crycode 1 Reply Last reply Reply Quote 0
                                  • crycode
                                    crycode Developer @hbrockmann last edited by

                                    @hbrockmann Ah... du hast da wohl anstatt einem Minus-Zeichens ein anderes Zeichen drin, was nahezu identisch aussieht.

                                    Versuch mal das:

                                    value = (-5.63141E-13 * f4 * f4 * f4 * f4 * f4) + (1.53737E-09 * f4 * f4 * f4 * f4) - (1.7745E-06 * f4 * f4 * f4) + (0.00108586 * f4 * f4) - (0.4378966 * f4) + 116.88035;
                                    
                                    H 1 Reply Last reply Reply Quote 0
                                    • H
                                      hbrockmann @crycode last edited by hbrockmann

                                      @crycode said in [gelöst]Can-Bus Adapter: keine Verbindung zur Junkers WP:

                                      value = (-5.63141E-13 * f4 * f4 * f4 * f4 * f4) + (1.53737E-09 * f4 * f4 * f4 * f4) - (1.7745E-06 * f4 * f4 * f4) + (0.00108586 * f4 * f4) - (0.4378966 * f4) + 116.88035;

                                      ..§$%&/~@€#.. ich glaubs nicht..
                                      das war es.. was auch immer das für ein zeichen war..

                                      danke..!!!!

                                      anbei der überarbeitete export..
                                      junkers_ste60_canbus-messages.json

                                      edit:
                                      das hat mir ja nun keine ruhe gelassen.. aber ja, im hex editor ist es deutlich zu erkennen das "pseudo-minus"..

                                      E 1 Reply Last reply Reply Quote 1
                                      • E
                                        emblitz @hbrockmann last edited by

                                        @hbrockmann
                                        Hallo,
                                        ich habe die neue Formel in einem separaten Parser für den VL auch ausprobiert. Das Ergebnis liegt nun nur noch -0,1°C satt vorher -0,2°C vom Displaywert "daneben". Die Formel scheint wie im Fhem-Forum berichtet , in der Tat etwas genauer zu rechnen. Sehr gut!
                                        Eventl. schaffen wir es nocht auf den Punkt 🙂
                                        Ich beobachte den weiteren Verlauf morgen und werde die anderen Werte vermutl. ebenfalls mit der neuen Formel berechnen lassen.
                                        Nach der kompletten Anpassung lade ich dann wieder hier die Config-Datei hoch.

                                        @crycode: Warte mal noch mit dem Hochladen nach Github!

                                        @ hbrockmann:
                                        Bekommts du nun auch plausible Werte mit deiner WP?

                                        LG
                                        emblitz

                                        H 1 Reply Last reply Reply Quote 0
                                        • H
                                          hbrockmann @emblitz last edited by

                                          @emblitz said in [gelöst]Can-Bus Adapter: keine Verbindung zur Junkers WP:

                                          @ hbrockmann:
                                          Bekommts du nun auch plausible Werte mit deiner WP?

                                          LG
                                          emblitz

                                          auf jeden fall sind die bekannten nun noch dichter dran an den displaywerten, wie bei dir auch..

                                          bei den unbekannten war es leider kein fortschritt..

                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            hbrockmann last edited by

                                            es ist schade, das niemand mit einem mb-lan 2 hier vertreten ist.

                                            es könnte gut sein, das man beim anschluss des mb-lan 2 erkennen kann, wie es die daten abfragt.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            762
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            40
                                            3455
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo