Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [Adapter] CAN-Bus - Beschreibung, FAQ, Diskussionen, etc.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Adapter] CAN-Bus - Beschreibung, FAQ, Diskussionen, etc.

    This topic has been deleted. Only users with topic management privileges can see it.
    • crycode
      crycode Developer last edited by crycode

      ioBroker.canbus

      Logo

      Aktuelle Version Version Stable
      Aktuelle Testversion NPM version
      Installationen Number of Installations (stable)
      Github Link https://github.com/crycode-de/ioBroker.canbus

      Allgemeines

      Der CAN-Bus (Controller Area Network) ist ein serielles Bussystem. Er kam ursprünglich vorrangig von Fahrzeugen zum Einsatz und ist inzwischen auch im Bereich der Heimautomatisierung recht verbreitet.

      Dieser Adapter soll eine direkte Anbindung eines CAN-Interfaces (z.B. can0) an ioBroker ermöglichen.
      Hierbei geht es um reine CAN-Nachrichten von bis zu 8 Byte Datenlänge. Aufgesetzte Protokolle wie z.B. CANOpen sind nicht vorgesehen.

      Unterstützt wird jede Hardware, die auf einem Linux-basierten Betriebssystem vom Kernel unterstützt wird und sich als CAN-Interface meldet. Aufgrund der zugrundeliegenden socketcan Library werden Windows-Systeme leider nicht unterstützt.


      Features

      • Empfangen und Senden von CAN-Nachrichten in Standard- und Extended-Frames
      • Jede Nachricht kann einzeln zum Senden und/oder Empfangen konfiguriert werden
      • Möglichkeit automatisch empfangene, aber noch nicht konfigurierte, CAN-Nachrichten hinzuzufügen
      • Konfiguration von Parsern für die einzelnen CAN-Nachrichten zum Lesen/Schreiben von Daten von/in den Rohdaten-Buffer der Nachrichten
        • Zahlentypen
        • Boolsche Werte inkl. Bitmasken
        • Strings in verschieden Encodings
        • Eigene Scripte zum Lesen vom / Schreiben in den Buffer der Rohdaten
      • Erweiterte Import/Export Funktionen
        • Import von Nachrichtenkonfigurationen zur Erweiterung der bestehenden Konfiguration
        • Import vor vordefinierten "bekannten" Konfigurationen von GitHub direkt im Admininterface
        • Export und Import der Nachrichtenkonfigurationen als json oder csv Dateien
      • Optionale Verwendung der Datenlänge (DLC)
      • Optionale Unterstützung des RTR-Flags
      • Optionale Raw-States, welche die Rohdaten der empfangenen bzw. gesendeten/zu sendenden CAN-Nachrichten-Objekte beinhalten
      • Optional automatisches Senden bestimmter Werte in einem vorgegebenen Intervall (z.B. um regelmäßig aktiv Daten abzufragen)

      Anforderungen

      • Linux Betriebssystem
      • CAN-Hardware, die vom Kernel unterstützt wird und ein Interface wie beispielsweise can0 bereitstellt
      • Kenntnisse über die CAN-Nachrichten auf dem Bus (nicht zwingend erforderlich, aber hilfreich)

      Parser

      Über die Parser können Daten aus den Rohdaten einer CAN-Nachricht extrahiert bzw. in diese hineingeschrieben werden.

      Es gibt vordefinierte Parser für die nachfolgend aufgeführten Datentypen und zusätzlich die Möglichkeit eigene Scripte zum Lesen/Schreiben zu erstellen.

      Zahlentypen im Big-Endian und Little-Endian Format

      • Signed und Unsigned 8, 16 und 32 Bit Integer
      • 32 Bit Float
      • 64 Bit Double

      Boolsche Werte

      • 1 Byte inkl. Unterstützung von Bitmasken

      Strings

      • 1 bis 8 Byte Länge
      • Encodings: ascii, base64, hex, latin1, utf8, utf16le

      Eigene Skripte
      Beim Parsertyp Custom können eigene Skripte zum Lesen/Schreiben der Werte genutzt werden.
      Diese Skripte laufen in einer Sandbox (ähnlich den Skripten vom JavaScript Adapter).

      Folgende Features können in den Skripten genutzt werden:

      • Die meisten Node.js Standardfunktionen
      • async/await
      • Log-Funktionen des Adapters: log.warn('something'), log.info('something'), log.debug('something')
      • getStateAsync('id') und getObjectAsync('id'), wobei id die vollständige ID des States/Objektes ist

      Fehler in den Skripten werden vom Adapter abgefangen und ins Log geschrieben.

      In beiden Skripen sind die Variablen value und buffer vordefiniert. buffer enthält dabei jeweils die aktuellen Rohdaten der CAN-Nachricht als Node.js Buffer. value sollte beim Lesen auf den gelesenen Wert gesetzt werden. Beim Schreiben enthält value den zu schreibenden Wert.

      Weitere Details sind in der Readme auf GitHub zu finden.


      Vordefinierte Konfigurationen

      Für die folgenden Geräte sind im GitHub Repository des Adapters vordefinierte Konfigurationen vorhanden.
      Diese sind mit Hilfe der Community entstanden und getestet.
      Die Konfigurationen können direkt in der Adminoberfläche des Adapter geladen werden.

      Wärmepumpe Rotex HPSU Compact / Daikin Altherma

      Auslesen und Setzen vieler Parameter der einzelnen Module der Wärmepumpe.
      Keine speziellen Zugriffsrechte erforderlich.
      Getestet mit Rotex HPSU compact 516 (Baujahr 2013/2017) und Altherma 3 ECH2O.

      Siehe extra Thema im Forum: Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus

      Weitere

      Wer mag kann mir gerne Exports seiner Konfiguration zukommen lassen, um diese in den Adapter aufzunehmen.


      FAQ

      Was sind Nachrichten?

      Eine Nachricht ist ein auf dem Bus empfangenes oder zu sendendes Datenpaket.
      Jede Nachricht hat eine eindeutige ID. Diese ID wird vom Adapter in hexadezimaler Schreibweise für ein Objekt vom Typ Kanal genutzt, z.B. canbus.0.1AA
      Weiterhin enthält jede Nachricht null bis acht Byte an Daten. Die Daten werden als Array im json-State des jeweiligen Nachrichten-Kanals gespeichert.

      Was sind Parser?

      Über Parser können aus den Rohdaten einer Nachricht Werte ausgelesen bzw. hineingeschrieben werden. Ein Parser übernimmt quasi die Übersetzung zwischen den ioBroker-States und den Datenbytes einer Nachricht.
      In der Adminoberfläche des Adapters können zu jeder Nachricht beliebig viele Parser konfiguriert werden.
      Jeder konfigurierte Parser erzeugt einen eigenen State im Nachrichten-Kanal, z.B. canbus.0.1AA.mein-parser.

      Welche Hardware brauche ich?

      Theoretisch geht alles, was vom Linux Kernel und SocketCAN unterstützt wird und somit ein Interface wie z.B. can0 im System bereitstellt.
      Zusammen mit einem Raspberry Pi funktionieren Module MCP2515 CAN-Controller meist sehr gut und zuverlässig. Diese sind oftmals als CAN-Hat fertig zu erwerben.
      Weiter Infos zum CAN-Bus am Raspberry Pi gibt es hier.

      Kann ich einen ELM327 CAN-Adapter verwenden?

      Kurz: Nein, da dieser kein wirklich eigenständiger CAN-Controller ist und nicht vom Linux Kernel unterstützt wird.
      Es gibt jedoch den Linux SocketCAN driver for ELM327 auf GitHub, womit eine Einbindung über SocketCAN möglich sein soll. Hierzu kann ich aber keine Erfahrungen und auch keinen Support geben.

      Ich habe eine vordefinierte Konfiguration geladen, aber das sind mir jetzt zu viele Datenpunkte, die ich gar nicht brauche. Was kann ich tun?

      Nicht benötigte Nachrichten oder auch einzelne Parser dieser Nachrichten können einfach in der Adminoberfläche gelöscht werden. Beim nächsten Start des Adapters werden dann auch die entsprechenden Datenpunkte gelöscht.

      Warum werden von mir gelöschte Nachrichten immer wieder automatisch angelegt?

      Das kann zwei Gründe haben:
      a) Es wurden nur die Objekte im ioBroker gelöscht, aber nicht die entsprechenden Einträge in der Adapterkonfiguration. In diesem Fall werden die Objekte vom Adapter beim Start automatisch wieder angelegt.
      b) In der Adapterkonfiguration ist der Haken bei Gesehene Nachrichten automatisch hinzufügen gesetzt. In diesem Fall werden automatisch Objekte für Nachrichten angelegt, die empfangen wurden, aber noch nicht konfiguriert sind.

      Woher bekomme ich die Informationen über die CAN-Nachrichten meines Gerätes?

      Zu vielen Geräten mit CAN-Bus finden sich diese Informationen im Internet.
      Teilweise ist es auch möglich von einem CAN-Dump, also einer Aufzeichnung der über den Bus empfangenen Nachrichten, etwas abzuleiten.
      Bei der Übertragung in eine Adapterkonfiguration kann ich gerne unterstützen.


      Diskussionen

      Einige Diskussionen zum Adapter selbst und der Rotex HPSU Konfiguration sind bereits im Adapter-Test-Thema zu finden.

      Alles weitere bitte hier in diesem Thema oder gegebenenfalls in einem extra Thema zu bestimmter Hardware.

      1 Reply Last reply Reply Quote 0
      • L
        Letty last edited by Letty

        @crycode
        Hallo Crycode, vielen Dank für deinen Adapter lief auf Anhieb.

        D 1 Reply Last reply Reply Quote 0
        • D
          Dreman @Letty last edited by Dreman

          @crycode Kurze Frage zum Adapter: ich hab unter der Empfangs ID 690 verschiedene Parser angelegt, teilweise nur zum Testen. Diese Test-Parser möchte ich jetzt wieder löschen. Beim Click auf den Papierkorb (und auch auf den Kopier-Button) passiert aber nichts. Was mache ich falsch?

          Nachtrag am 14.08.: Ich hab natürlich alle in den FAQs aufgelisteten Punkte zum Löschen beachtet:

          • Häkchen rausgenommen
          • Objekte im iobroker gelöscht

          Aber in der Adapter-Konfiguration kann ich zwar die gesamte ID 690 löschen, aber nicht einzelne Parser. Der Lösch-Button reagiert einfach nicht.

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

            @dreman Huch, das klingt tatsächlich nach einem Bug in der Konfigurationsoberfläche. Kann ich nächste Woche mal bei mir testen.
            Kannst du vlt. in der Zwischenzeit mal schauen, ob bei in der Browserconsole (F12 bei den meisten Browsern) beim Klick auf den Button ein Fehler geloggt wird?

            1 Reply Last reply Reply Quote 0
            • D
              Dreman last edited by Dreman

              @crycode Problem ist, dass, wenn ich mit der Maus auf/über den Lösch-Button gehe, keine Hand erscheint, d.h. der Button wird nicht als solcher nicht erkannt und das Klicken bleibt folgenlos. Von daher auch kein Fehler in der Browser-Konsole.

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

                @dreman Hab es grad mal auf die Schnelle getestet. Bei mir geht alles wie geplant. Welche Adapterversion und welchen Browser (Version?) benutzt du?

                Beim Klick auf den Kopieren-Button sollte der Einfügen-Button daneben aktiv werden.

                D 1 Reply Last reply Reply Quote 0
                • D
                  Dreman @crycode last edited by

                  @crycode Adapterversion 1.3.1, Chrome und Firefox (aktuellste Version), probiert unter WIN8.1 und WIN10: immer gleiches Verhalten. Gehe mit der Mouse über Kopieren oder Löschen erscheint statt des Mousepfeil kein Handzeichen, d.h. ich kann wild rumklicken, aber es passiert nix. Macht es es Sinn, wenn ich meine Adapter-Konfig-Datei exportiere und dir (privat) schicke?

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

                    @dreman Mit der Adapterconfig kann das eigentlich nichts direkt zu tun haben, aber schick mir die gerne mal zur Sicherheit.
                    Welche Version von Admin hast du drauf?

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      Dreman @crycode last edited by Dreman

                      @crycode Admin 6.3.5, eben upgedated auf 6.8.0: keine Änderung.

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

                        @dreman Hab deine Config grad mal in meiner Testinstallation geladen. Klappt alles und ich kann auch die einzelnen Parser löschen.

                        Sind die Buttons bei dir blau hinterlegt (aktiv) oder grau (inaktiv)?

                        Versuch mal bitte folgendes:

                        1. Auf der "Instanzen" Seite die Dev-Konsole vom Browser mittels F12 öffnen und dort den Reiter Konsole aktivieren.
                        2. Die Einstellungen für den canbus Adapter öffnen.
                        3. Zu dem zu löschenden Parser navigieren.

                        Dabei sollte in der Konsole eine Ausgabe ähnlich dieser geloggt werden:
                        4791fdeb-7ee5-4948-85b0-493e9c904207-grafik.png
                        Erscheinen bei dir dort Fehlermeldungen?

                        1 Reply Last reply Reply Quote 0
                        • D
                          Dreman last edited by

                          Nur vorsichtshalber: es gibt ja auf der Seite 2 Kopier- und 2 Löschbuttons: einmal rechts oben für die komplette ID (bei mir 690) und einmal in der Mitte auf Parser-Höhe. Alle 4 Buttons sind bei bir aktiv. Parser_löschen.JPG.
                          Reden wir beide von den beiden Buttons im Bild?

                          In der Konsole sehe ich das identische Bild wie von dir gezeigt. Ich kann auch den zu löschenden Parser anklicken, wird dann mit einem Balken gezeigt. Aber wenn ich dann mit der Mouse auf den Kopier- bzw. Lösch-Button im Bild oben gehe, passiert nichts, es wird auch die Mouseover Hand nicht angezeigt. Und logischerweise ändert sich auch in der Konsole nix. Hilft womöglich nur Adapter löschen/neu installieren und alte Konfiguration laden. Vielleicht verschwindet das Problem dann ja.

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

                            @dreman Jup, genau die Buttons.
                            Dein Screenshot brachte mir grade die Erkenntnis, was da los ist und ich kann es bei mir nachstellen.
                            Da dein Fenster (Bildschirm?) recht schmal ist, sind die Buttons hinter dem Eingabefeld für den Namen. Damit sind sie zwar sichtbar, da das Eingabefeld einen transparenten Hintergrund hat, aber können nicht angeklickt werden.

                            Als Workaround zwei Optionen für dich:
                            a) Das Browserfenster breiter ziehen, bis die Buttons neben dem Eingabefeld sind.
                            b) Die Seite mittels STRG+Minus oder STRG+Mausrad drehen verkleinern (heraus zoomen), bis die Buttons daneben sind.

                            Ich werde das Problem zusammen mit der nächsten Adapterversion, die ich eh in den nächsten Wochen machen wollte, dann beheben. 🙂

                            D 1 Reply Last reply Reply Quote 0
                            • D
                              Dreman @crycode last edited by

                              @crycode Das war's 👍 . Ist halt noch ein alter Old School 4:3 Bildschirm :-).
                              Danke für die Geduld und Unterstützung.

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

                                @dreman Immer gerne. Nur darüber können Bugs ja gefunden und behoben werden. 👍

                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  Dreman @crycode last edited by

                                  @crycode Nochmal eine Frage: die mit 'Senden' und 'Automatisch Senden' gekennzeichneten Frames kann ich ja auch über ein Script gezielt starten, die nur mit 'Empfang' definierten Frames lauschen jedoch kontinuierlich auf dem CAN-Bus (so mein Verständnis). Gibt es einen Trick, dieses kontinuierlich Lauschen bei einzelnen mit 'Empfang' definierten Frames zu unterbinden und diese (wie beim Senden möglich) nur gezielt (über ein Script) zu starten? Würde den Empfang von CAN-UDS-Multiframes erheblich erleichtern.

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

                                    @dreman Nein, das geht nicht. Alles was zum Empfang definiert ist, lauscht permanent.

                                    Wenn du Custom Parser nutzt, dann kannst da da drin das Objekt sharedData verwenden. Dieses ist in allen Custom Parsern das gleiche und kann von jedem Parser aus gelesen und geschrieben werden.

                                    Fiktives Beispiel...
                                    Beim Senden:

                                    /* bisheriger Teil hier */
                                    sharedData.requestXySend = true;
                                    

                                    Beim Empfangen:

                                    // prüfen ob die Anfrage gesendet wurde
                                    if (!sharedData.requestXySend) return;
                                    sharedData.requestXySend = false;
                                    /* bisheriger Teil hier */
                                    
                                    D 1 Reply Last reply Reply Quote 0
                                    • D
                                      Dreman @crycode last edited by

                                      @crycode Danke, das hilft mir weiter.

                                      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

                                      514
                                      Online

                                      31.7k
                                      Users

                                      79.8k
                                      Topics

                                      1.3m
                                      Posts

                                      adapter canbus canbus adapter diskussion faq
                                      3
                                      17
                                      1969
                                      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