Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. JK-BMS über RS485 mit ESPHome auslesen

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    JK-BMS über RS485 mit ESPHome auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • syssi
      syssi @saugimanni last edited by

      Ich würde dich gerne unterstützen zum Ziel zu kommen. 🙂 Vorab ein paar Fragen:

      1. Hat dein ESP32-Board eine USB-Buchse / USB-zu-TTL-Wandler auf der Platine, so dass man es direkt per USB-Kabel beschreiben kann?
      2. Welches Betriebsystem hat dein Rechner? Steht dir ein Rechner mit z.B. Ubuntu zur Verfuegung?
      3. Kennst du die MAC-Adresse deines BMS? Kannst du sie bereits z.B. am Smartphone per "nRF Toolbox" in Erfahrung bringen?
      4. Betreibst du bereits einen MQTT-Server, welchen man mit den Daten aus der ESPHome-Node / dem BMS befüttern kann?
      M D 2 Replies Last reply Reply Quote 0
      • S
        saugimanni last edited by

        Hallo syssi ,

        danke für Deine Antwort . ich nmuss mich leider entschuldigen, da ich überwiegend im Ausland tätig bin und nicht immer einen brauchbaren Internetzugang habe . Deshalb auch die späte Reaktion meinerseits . Und ich bin nur an unregelmäßigen Wochenenden zu Hause und kann erst dann wieder versuche starten.
        Als Board habe ich mehrere zur Auswahl, zum einen einen ESP32 D1 mini oder ein Esp32 Board von AZ-Delivery ( mit den 2 Tastern ). Das letztere habe ich im Moment mit einer Arduino-Software beschrieben, die über BLE die Daten abrufen soll , da ich das mit dem RS485 Anschluss bisher garnicht nicht hinbekommen habe, diesen aber favorisieren würde .
        Beide Boards haben einen micro USB-Anschluß, aber das wisst Ihr sicher.
        Mein Rechner ist ein Windows 11 Rechner , habe aber auch unbuntu auf einem Raspi laufen .
        Ich habe 3 JK-BMS am laufen, da ich 3 Stück 48V-LIFE4-Akkus habe . Von jedem BMS habe ich auch die Mac-Adresse . Im Moment habe ich nur ein Board am Akku . Das Board baut ab und an die Bluetooth-Verbindung zum BMS auf , aber die Verbindung zum MQTT-Server klappt nicht ( MQTT-Adapter im IO-Broker mit geändertem Port nur für die BMS , BD2A-24S8P ).
        Ich habe auch schon versucht , über ESPHome die BMS zu erreichen, funktionierte genau 1 mal beim Neustart, dann hat es keine Daten mehr heruntergeholt .
        Deshalb wollte ich auf die RS485 Schnittstelle gehen, um die BLE zu umgehen.
        Habe es aber bisher nicht hinbekommen , muss zu meiner verteidigung aber sagen , dass ich Generation Ü60 bin und keinerlei Programmierkenntnisse habe .
        Ich beschäftige mich zwar schon etwa 5 Jahre mit der Hausautomation, habe dieses jahr nun eine DYS - Solaranlage aufgebaut und bekomme die BMS zur Auswertung nun nicht an den IO-Broker .

        Z syssi E 3 Replies Last reply Reply Quote 0
        • Z
          zaim @saugimanni last edited by

          @saugimanni

          Hast du mal in der beispiel yaml die # vor dem mqtt Bereich (glaube 5 Zeilen) weg gemacht, damit die Verbindung über mqtt auch aufgebaut wird? Mit dem esphome Adapter hatte ich auch immer eine Anzeige und nach ein paar Sekunden keine Verbindung mehr. Nachdem ich in der yaml mqtt eingerichtet habe (IP, passwort etc.) funktioniert das seit Monaten stabil. Hier ein Beispiel meiner Konfiguratio, wobei die Daten natürlich angepasst werden müssen 😉 (Passwort etc.)

          mqtt:
          broker: "192.168.1.28"
          port: "6055"
          username: "Name"
          password: "Passwort"
          id: "Name für den esp32"

          Viele Grüße

          1 Reply Last reply Reply Quote 0
          • syssi
            syssi @saugimanni last edited by

            Ich bin mir sicher, dass wir eine Lösung finden, wenn wir uns systematisch dem Problem nähern. Der Einstieg in ESPHome ist nicht ganz einfach für jung und alt. Gleichzeitig ist die Komplexität recht hoch auf Grund des Übertragungswege und der vielen involvierten Parteien.

            Im ersten Moment würde ich mich gerne auf das bestehende BLE-Setup konzentrieren und hier MQTT zum laufen bekommen. Sobald hier die Daten fließen, kann man die BLE-Teil aus der Gleichung streichen und ihn gegen ein Datenkabel ersetzt. Der Port am JK-BMS heißt zwar RS485, jedoch handelt es sich eigentlich um eine serielle Schnittstelle mit einem 3.3V Pegel (TTL). Der Hersteller moechte gerne, dass man hier einen RS485-Adapter anschließt, einerseits zur Isolation / Schutz des BMS und andererseits um größere Strecken (Kabellängen) überbrücken zu können.

            ESPHome + MQTT Adapter von ioBroker: Hin und wieder treffen ioBroker-User auf das JK-BMS-Projekt, welche von Problemen berichten. Der Grund ist, dass in der Adapter-Konfiguration häufig definiert ist, dass beim Verbindungsaufbau der ioBroker alle Nachrichten/Zustände an den Client schicken darf. Die ESPHome-Node ist mit dieser großen Menge an Daten / eingehenden Nachrichten überfordert, crasht und rebootet. Bei jedem Verbindungsaufbau passiert das Gleiche. Nimmt man das Häkchen bei "Eigene States beim Verbinden publizieren" weg, so sollte die Verbindung zwischen ioBroker und ESPHome-Node stabilisieren. Im nächsten Schritt subscribed / meldet die ESPHome-Node ein Interesse für sog. Command-Topics an. Schickt man eine Instruktion ("ON"/"OFF") an ein solches Command-Topic, kann man Schalter umlegen, sofern diese Nachricht die ESPHome-Node auch wirklich erreicht. Das ist erst gegeben, wenn man die Checkbox "States bei subscribe publizieren" angewaehlt hat. Wie es um die weiteren Checkboxen steht, weiss ich leider nicht. Meistens sind sie deaktiviert.

            Mit diesen Einstellungen sollte es möglich sein eine ESPHome-Node in diesem Fall zur Anbindung eines JK-BMS an ioBroker per MQTT anzubinden. Solltest du mit abweichenden Ports arbeiten, muss der mqtt Abschnitt um eine weitere Option port: 2883 ergaenzt werden.

            https://github.com/syssi/esphome-jk-bms/issues/295
            https://github.com/syssi/esphome-jk-bms/issues/294

            Meld dich, wenn du nicht weiter kommst!

            Gruß Syssi

            syssi created this issue in syssi/esphome-jk-bms

            open Mention required settings of the ioBroker MQTT adapter #295

            cyrano330 created this issue in syssi/esphome-jk-bms

            closed Change mqtt-port possible? #294

            S 1 Reply Last reply Reply Quote 0
            • S
              saugimanni @syssi last edited by

              vielen Dank für die infos zu meinem Problem.
              Ich bin wieder einmal zu Hause und habe etwas Zeit, mich damit zu beschäftigen und melde mich dann wieder.

              1 Reply Last reply Reply Quote 0
              • S
                saugimanni last edited by

                @syssi

                so, wie es aussieht lag es wirklich an dn Einstellungen im mqtt Adapter.
                ( https://github.com/syssi/esphome-jk-bms/issues/295 )

                im Moment habe ich seit ca. 20 Minuten eine stabile Verbindung und der ESP liefert die Werte .
                Da bin ich schon einmal happy .

                Ich habe 3 Stück Speicher a 15 KW , die jeeils mit einem BMS abgesichert sind. Werde erst mal versuchen, die beiden anderen soweit an den Start zu bekommen .

                Melde mich dann wieder

                syssi created this issue in syssi/esphome-jk-bms

                open Mention required settings of the ioBroker MQTT adapter #295

                syssi 1 Reply Last reply Reply Quote 0
                • syssi
                  syssi @saugimanni last edited by

                  @saugimanni Cool! Das ging flott!

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    saugimanni @syssi last edited by

                    @syssi

                    so , habe heute nun auch die anderen beiden Akkus an den Start bekommen und habe somit genaue Werte zu weiteren Berechnungen zur Verfügung .
                    21c1f260-6375-4fde-a16c-3364f7274152-image.png

                    Nochmal vielen Dank an alle, speziell an Syssi für den entscheidenden Tip .

                    Wenn Du etwas Zeit hast, vielleicht kannst Du mir noch mitteilen, was ich zu tun habe , wenn ich auf den "RS485" Anschluss der BMS umstellen möchte, denn ich denke , die BLE-Abfrage wird wahrscheinlich nicht so stabil sein, wie der Kabelanschluss . Ich werde es jedoch in den nächsten Wochen erst mal testen, da ich beruflich wieder länger abwesend sein werde .

                    Also nochmals Danke und ein frohes Osterfest für Euch alle .....

                    syssi 1 Reply Last reply Reply Quote 0
                    • syssi
                      syssi @saugimanni last edited by

                      @saugimanni Die Anbindung über Kabel statt BLE sollte nun ein Kinderspiel für dich sein. Es ist wichtig zu wissen, dass der Steckplatz am BMS zwar mit dem Label "RS485" versehen ist, hier jedoch serielle Daten mit 115k2 herausfallen, wenn man ein sog. Status-Frame anfordert. Etwas schade ist, dass sich das BMS nicht übers Kabel schreiben/konfigurieren lässt. Man kann somit nur periodisch das Status-Frame anfordern und es in Sensorwerte zerlegen. Inhaltlich ist es leider auch etwas schwächer bestückt als im BLE-Verkehr. Es fehlt z.B. der Balancer-Strom im Payload.

                      So wuerdest du vorgehen:

                      1. Beim ESP32 bleiben, weil dieser 3 Hardware-UARTs besitzt
                      2. Anstatt mit der esp32-ble-example.yaml würdest du mit der esp32-example.yaml starten bzw. esp32-example-multiple-devices.yaml. Jene erweiterst du bis sie 3 UARTs & 3 BMSe umfasst.
                      3. Zwischen BMS (RX, TX, GND) und ESP werden Leitungen zu den jeweiligen GPIOs/Pinnen gezogen.

                      Das sollte es schon gewesen sein. Die Komponente pollt in der Frequenz des update_interval das BMS und fordert das Status-Frame an. Viel Erfolg!

                      N 1 Reply Last reply Reply Quote 0
                      • N
                        nettworker @syssi last edited by nettworker

                        @syssi

                        ich muss das Thema noch mal aufgreifen. Ich versuche auch gerade einen ESP32 zu flashen bzw. die *.bin zu erzeugen und bekomme nach dem Entfernen der Kommentarzeichen im Bereich MQTT folgenden Fehler:

                        INFO ESPHome 2023.7.0
                        INFO Reading configuration jkbms2.yaml...
                        INFO Updating https://github.com/syssi/esphome-jk-bms.git@main
                        Failed config

                        api: [source jkbms2.yaml:39]

                        [mqtt] is an invalid option for [api]. Please check the indentation.
                        mqtt:
                        broker: xxx.xxx.xxx.xxx
                        username: ''
                        password: ''
                        id: jkbms
                        port: 1884

                        Woran kann das liegen?

                        Verwendet habe ich die esp32-ble-example.yaml

                        syssi 1 Reply Last reply Reply Quote 0
                        • syssi
                          syssi @nettworker last edited by

                          @nettworker Bitte alle Leerzeichen vor dem Wort "api:" entfernen. Sowohl die Zeile "mqtt:" als auch "api:" dürfen keine führenden Leerzeichen besitzen, da es sich um Abschnitte handelt die auf der gleichen Hierarchie-Ebene liegen.

                          1 Reply Last reply Reply Quote 0
                          • E
                            ed.fischer @saugimanni last edited by

                            @saugimanni Hi, eine dumme Frage. Wie finde ich die MAC Add von meinem JK BMS B1A20S15P?
                            Danke und gruss
                            ED

                            E 1 Reply Last reply Reply Quote 0
                            • E
                              ed.fischer @ed.fischer last edited by

                              @ed-fischer said in JK-BMS über RS485 mit ESPHome auslesen:

                              MAC

                              Wenn ich ESP debug protokoll lese, finde ich genau die 2 Geräte:

                              1. Victron Smartsolar
                                address: 222986639317806
                                rssi: -81
                                address_type: 1
                                data: "\002\001\006\027\377\341\002\020\002X\240\001\340\340M_\0301\276\353\252krg\013)s\027\tSmartSolar HQ2302ZF4NC"

                              2. JK BMS
                                address: 220209632571241
                                rssi: -76
                                data: "\002\001\006\005\002\340\377\347\376\013\377e\013\210\240\310G\214\354\357i\r\tJK_B1A20S15P"

                              Die MAC adresse sollte doch anders sein oder?
                              Gruss
                              Ed

                              E 1 Reply Last reply Reply Quote 0
                              • E
                                ed.fischer @ed.fischer last edited by

                                @ed-fischer Habe gefunden "Diagnose Info herunterladen"

                                syssi 1 Reply Last reply Reply Quote 0
                                • syssi
                                  syssi @ed.fischer last edited by

                                  Alternativ kannst du noch ins Logbuch der ESPHome Node schauen. Die Standard-Konfiguration enthält diesen Abschnitt:

                                  esp32_ble_tracker:
                                    on_ble_advertise:
                                      then:
                                        - lambda: |-
                                            if (x.get_name().rfind("JK-", 0) == 0) {
                                              ESP_LOGI("ble_adv", "New JK-BMS found");
                                              ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
                                              ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
                                              ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
                                              for (auto uuid : x.get_service_uuids()) {
                                                ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
                                              }
                                            }
                                  

                                  Dieser sorgt dafür, dass immer wenn der ESP eine BLE-Ankündigung empfängt und sie mit dem Gerätenamen "JK-" beginnt ein paar Meldungen ins Log schreibt. Die Zeile "MAC address: ..." enthaelt die MAC-Adresse des BMS. Alternativ kannst du dir eine beliebige Android App schnappen, welche in der Lage ist BLE-Geräte in der Luft aufzulisten. Sehr beliebt ist die App "nRF Connect for Mobile". Viel Erfolg!

                                  1 Reply Last reply Reply Quote 1
                                  • H
                                    home3131 last edited by

                                    Hallo zusammen, ich lese dieses Thema mit Interesse. Aber ich habe eine Frage. Mein BMS ist JK-BMS B2A8S20P. Nach allen Informationen, die ich anderswo gefunden habe, kommen die RS485-Daten vom GPS-Port. Dieser Typ ist in der Liste der getesteten BMS aufgeführt. Der Anschluss ist so klein, dass ich ihn nirgends im Internet finden kann. Wie habt ihr das gemacht?

                                    syssi 1 Reply Last reply Reply Quote 0
                                    • syssi
                                      syssi @home3131 last edited by

                                      @home3131 Der Stecker trägt den Namen "4 Pin, JST 1.25mm".

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @syssi last edited by Homoran

                                        @syssi sagte in JK-BMS über RS485 mit ESPHome auslesen:

                                        @home3131 Der Stecker trägt den Namen "4 Pin, JST 1.25mm".

                                        JST haben üblicherweise noch eine weitere Bezeichnung.
                                        z.B. XH, PH oder GH.
                                        möglich, dass das Rastermaß von 1.25 reicht um es einzugrenzen, aber auch die Führungen könnten unterschiedlich sein

                                        syssi 1 Reply Last reply Reply Quote 0
                                        • syssi
                                          syssi @Homoran last edited by

                                          Grenzt "Micro JST 1.25mm 4 Pin" es besser ein? Soweit mir bekannt hat diese Ausprägung des Steckers keinen zusätzlichen Identifikator.

                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @syssi last edited by

                                            @syssi sagte in JK-BMS über RS485 mit ESPHome auslesen:

                                            Grenzt "Micro JST 1.25mm 4 Pin" es besser ein? Soweit mir bekannt hat diese Ausprägung des Steckers keinen zusätzlichen Identifikator.

                                            dürfte der GH sein.
                                            der XH hat 2.5mm und der RH 2 oder 1.8, bin mir da aber nicht sicher.

                                            Ich kenne den Kram noch aus dem Modellbau

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            arduino esphome iobroker jk-bms
                                            11
                                            91
                                            11381
                                            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