Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.

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

      @sierra

      Ich hab in irgendeinem Forum gelesen das jemand die BMS mit einem ESP32 über Bluetooth ausliest und per MQTT verschickt.

      Hab aber noch nicht so ganz gecheckt wie ich das installieren muss. Ein ESP32 hab ich sogar auch noch da.

      Sierra 2 Replies Last reply Reply Quote 0
      • Sierra
        Sierra @Elektroniker86 last edited by

        @elektroniker86 Ja aber angeblich läuft es nicht so ganz stabil. Bei mir ist es etwas einfacher, mein Raspberry Pi ist gleich neben meiner Anlage, also USB-RS485 ist absolut kein Problem, hab ich ja jetzt auch im Einsatz.
        Schlimmsten Fall bau ich mir einen Sniffer über Python damit ich die Werte raus bekomme.

        Mal sehen, die 2. Batterie sollte eigentlich eh bald kommen, ist ja schon 1,5 Monate unterwegs.
        Wenn sie ankommt, dann wird weiter getüftelt bis es läuft 😊

        1 Reply Last reply Reply Quote 0
        • Sierra
          Sierra @Elektroniker86 last edited by

          @elektroniker86 Habe gestern endlich meine 2. Batterie bekommen.
          Hat eh nur 3 Monate gedauert 😖

          Also, anscheinend geht es wirklich nicht dass man über einen RS485 Adapter die Packs ausliest.

          Ich habe es nun mit 2 Stück USB-RS485 (liegen ja beim BMS bei) gelöst.
          Man muss halt 2 Modbus-Instanzen machen, eine mit Adresse 0 und eine mit Adresse 1

          Die Anlage liest über CAN auch beide Batterien aus, funktioniert alles.

          Anschluss.png

          6851b9fd-e3f7-4fb8-b2d0-71ab205d0c3b-grafik.png

          Sollte also mit 2 Stück RS485-TCP Adapter auch funktionieren, ansonsten sehe ich keine andere Lösung.

          Grüsse

          1 Reply Last reply Reply Quote 0
          • K
            KlausAnders @Elektroniker86 last edited by

            @elektroniker86
            wo hast die Register belegung her. in den PDF daten stehen ganz andere Register drin die nur teilweise funktionieren.

            Sierra 1 Reply Last reply Reply Quote 0
            • Sierra
              Sierra @KlausAnders last edited by

              @KlausAnders
              Um welche Register geht es?
              Die PDF ist schon richtig...

              K 1 Reply Last reply Reply Quote 0
              • K
                KlausAnders @Sierra last edited by

                @sierra said in JK BMS mit Modbus Adapter über RS485 zu TCP einbinden.:

                @KlausAnders
                Um welche Register geht es?
                Die PDF ist schon richtig...
                im Pdf gibt es keine ungeraden Adressen, nur länge 2 oder 4. Zu deiner vorlage fehlen damit etliche Werte. Das auslesen mit deiner vorlage funzt, nur das schreiben von Schaltern, z.b. Laden Entladen bekomm ich nicht hin.

                Sierra 1 Reply Last reply Reply Quote 0
                • Sierra
                  Sierra @KlausAnders last edited by

                  @klausanders
                  Da gebe ich dir Recht.
                  Es ist schon verwirrend, in der PDF stehen auch die Längen.
                  Für Laden Ein/Aus sind 4 Bytes vorgesehen.
                  Im iobroker werden bei Länge 2 angezeigt, aber da werden vermutlich 1 Länge 2 Bytes verwendet, High und Low.

                  Egal, ich habe mal versucht zu schreiben, also das funktioniert mit den Adressen die in der PDF steht.

                  782788a3-6d64-4fd6-b13d-6ed6a8db8ec1-grafik.png

                  Als Kontrolle ob wirklich Ein oder Aus mit den anderen Registern:

                  a8dd9115-8a0e-443c-9b75-5dbaeb922fdd-grafik.png

                  Balancer Ein/Aus zu schreiben funktioniert nicht so wirklich, da allein schon 1500 drin steht. Keine Ahnung

                  Da ich aber die ganzen Schreibbefehle nicht brauche, habe ich mich damit nicht wirklich beschäftigt.
                  Im Heimbereich ist das auch nicht wirklich Notwendig finde ich, warum sollte man da was laufend verstellen?
                  Einmal eingestellt und die Anlage läuft.
                  In einem Camper würde ich es verstehen wenn man da was abdrehen möchte 😊

                  Ich habe auf meinem BMS die letzte Firmware drauf, neuere kann ich leider nicht mehr updaten da der Support für <V19 eingestellt wurde. Eine aktualisierte Registerliste wäre mal was tolles, ich denke da hat sich einiges getan die letzten Jahre.

                  P D 2 Replies Last reply Reply Quote 0
                  • P
                    peterfido @Sierra last edited by

                    @sierra Man sollte auch nicht zu oft schreiben. Je nachdem, ob das Gerät Parameter im Flash speichert, ist da früher oder später eben dieser hinüber.

                    1 Reply Last reply Reply Quote 0
                    • D
                      Dieter_P @Sierra last edited by Dieter_P

                      @sierra @Elektroniker86
                      Danke für eure dokumentierte Vorarbeit!

                      Habe gerade versucht zwei v19 BMS (Master-Slave-Verbund) über Buchse RS485-1 mit einem RS485 zu TCP Adapter auszulesen.

                      Klappt genau wie ihr es beschrieben habt.

                      Eine Geräte-ID in der Modbus-Adapterinstanz passen zum Steckplatz (ID:0 oder ID:1) funktioniert prima.

                      Mehrere Geräte IDs in der Adapterinstanz klappt bei mir gar nicht, egalwelche ID ich abfrage und wo es eingesteckt ist.

                      Habt ihr dazu noch etwas herausgefunden?

                      Müßte dazu nun einen zweiten RS485-TCP Converter spendieren und falls ein drittes Batteriepack kommt, noch einen, klingt aufwendig für ein BUSsystem 😞

                      Sierra Elektroniker86 2 Replies Last reply Reply Quote 0
                      • Sierra
                        Sierra @Dieter_P last edited by

                        @dieter_p
                        Nein ich habe nichts mehr weiter getestet.

                        Interessant wäre ob dies vielleicht mit einem RJ45 Splitter funktionieren würde.
                        Weiss aber nicht ob die Ports des BMS dafür gemacht sind, riskieren will ich das ehrlich gesagt nicht 😬

                        1 Reply Last reply Reply Quote 1
                        • Elektroniker86
                          Elektroniker86 @Dieter_P last edited by

                          @dieter_p

                          Hi,

                          ich habe bereits weiter getestet und habe es hinbekommen mit zwei instanzen und einem Modbusgateway 3 Batterien auszulesen.

                          Muss mir nur noch was einfallen lassen wie ich das noch schön mache damit das auch optisch was aussieht.

                          Wenn ich Zeit habe werde ich meine Lösung genauer beschreiben.

                          1 Reply Last reply Reply Quote 1
                          • Elektroniker86
                            Elektroniker86 last edited by

                            Wie versprochen meine Settings bzw. mein Testaufbau.
                            Werde das Gateway wahrscheinlich in ein Gehäuse einbauen und die RJ45 Buchsen auch .

                            Batterie A (Adresse 0 (Master):

                            Screenshot 2025-10-11 134318.png

                            _address	name	description	unit	type	len	factor	offset	formula	role	room	poll	wp	cw	isScale
                            4608	Zelle 1		V	uint16be	1	0.001	0		level		true	false	false	false
                            4609	Zelle 2		V	uint16be	1	0.001	0		level		true	false	false	false
                            4610	Zelle 3		V	uint16be	1	0.001	0		level		true	false	false	false
                            4611	Zelle 4		V	uint16be	1	0.001	0		level		true	false	false	false
                            4612	Zelle 5		V	uint16be	1	0.001	0		level		true	false	false	false
                            4613	Zelle 6		V	uint16be	1	0.001	0		level		true	false	false	false
                            4614	Zelle 7		V	uint16be	1	0.001	0		level		true	false	false	false
                            4615	Zelle 8		V	uint16be	1	0.001	0		level		true	false	false	false
                            4616	Zelle 9		V	uint16be	1	0.001	0		level		true	false	false	false
                            4617	Zelle 10		V	uint16be	1	0.001	0		level		true	false	false	false
                            4618	Zelle 11		V	uint16be	1	0.001	0		level		true	false	false	false
                            4619	Zelle 12		V	uint16be	1	0.001	0		level		true	false	false	false
                            4620	Zelle 13		V	uint16be	1	0.001	0		level		true	false	false	false
                            4621	Zelle 14		V	uint16be	1	0.001	0		level		true	false	false	false
                            4622	Zelle 15		V	uint16be	1	0.001	0		level		true	false	false	false
                            4623	Zelle 16		V	uint16be	1	0.001	0		level		true	false	false	false
                            4676	Max_Zelle_Spannung		V	uint16be	1	0.001	0		level		true	false	false	false
                            4677	Zellen_Diff		V	uint16be	1	0.001	0		level		true	false	false	false
                            4678	Max_Zelle_Nummer			uint8be	1	1	0		level		true	false	false	false
                            4678	Min_Zelle_Nummer			uint8le	1	1	0		level		true	false	false	false
                            4746	TempMos		°C	uint16be	1	0.1	0		level		true	false	false	false
                            4749	Spannung		V	uint32be	2	0.001	0		level		true	false	false	false
                            4751	Watt		W	uint32be	2	0.001	0		level		true	false	false	false
                            4753	Strom		A	int32be	2	0.001	0		level		true	false	false	false
                            4755	Temperatur 1		°C	int16be	1	0.1	0		level		true	false	false	false
                            4756	Temperatur 2		°C	int16be	1	0.1	0		level		true	false	false	false
                            4757	Alarm			uint32be	2	1	0		level		true	false	false	false
                            4759	BalanCurrent		A	uint16be	1	0.001	0		level		true	false	false	false
                            4760	BalanStatus			uint8le	1	1	0		level		true	false	false	false
                            4760	SOC		%	uint8be	1	1	0		level		true	false	false	false
                            4761	ReCap		Ah	int32be	2	0.001	0		level		true	false	false	false
                            4763	MaxCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4765	Zyklen			uint32be	2	0.001	0		level		true	false	false	false
                            4767	SOCCycleCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4769	SOCSOH		%	uint8le	1	1	0		level		true	false	false	false
                            4769	Precharge			uint8be	1	1	0		level		true	false	false	false
                            4770	UserAlarm			uint16be	1	1	0		level		true	false	false	false
                            4771	RunTime			uint32be	2	1	0		level		true	false	false	false
                            4773	Laden_Erlaubt			uint8le	1	1	0		level		true	false	false	false
                            4773	Entladen_Erlaubt			uint8be	1	1	0		level		true	false	false	false
                            4836	BatVol		V	uint16be	1	0.01	0		level		true	false	false	false
                            4856	TempBat 3		°C	int16be	1	0.1	0		level		true	false	false	false
                            4857	TempBat 4		°C	int16be	1	0.1	0		level		true	false	false	false
                            4858	TempBat 5		°C	int16be	1	0.1	0		level		true	false	false	false
                            5120	DeviceID			string	8	1	0		level		true	false	false	false
                            5128	Hardware_Version			string	4	1	0		level		true	false	false	false
                            5132	Software_Version			string	4	1	0		level		true	false	false	false
                            5140	Name1			string	6	1	0		level		true	false	false	false
                            5156	Installationsdatum			string	4	1	0		level		true	false	false	false
                            5160	SerienNummer			string	8	1	0		level		true	false	false	false
                            5168	Name2			string	8	1	0		level		true	false	false	false
                            5176	Pin_Code			string	8	1	0		level		true	false	false	false
                            

                            Batterie B+C (Adresse 1 + 2 (Slaves):

                            Screenshot 2025-10-11 134124.png

                            Screenshot 2025-10-11 134144.png

                            _address	deviceId	name	description	unit	type	len	factor	offset	formula	role	room	poll	wp	cw	isScale
                            4608	1	Zelle 1		V	uint16be	1	0.001	0		level		true	false	false	false
                            4609	1	Zelle 2		V	uint16be	1	0.001	0		level		true	false	false	false
                            4610	1	Zelle 3		V	uint16be	1	0.001	0		level		true	false	false	false
                            4611	1	Zelle 4		V	uint16be	1	0.001	0		level		true	false	false	false
                            4612	1	Zelle 5		V	uint16be	1	0.001	0		level		true	false	false	false
                            4613	1	Zelle 6		V	uint16be	1	0.001	0		level		true	false	false	false
                            4614	1	Zelle 7		V	uint16be	1	0.001	0		level		true	false	false	false
                            4615	1	Zelle 8		V	uint16be	1	0.001	0		level		true	false	false	false
                            4616	1	Zelle 9		V	uint16be	1	0.001	0		level		true	false	false	false
                            4617	1	Zelle 10		V	uint16be	1	0.001	0		level		true	false	false	false
                            4618	1	Zelle 11		V	uint16be	1	0.001	0		level		true	false	false	false
                            4619	1	Zelle 12		V	uint16be	1	0.001	0		level		true	false	false	false
                            4620	1	Zelle 13		V	uint16be	1	0.001	0		level		true	false	false	false
                            4621	1	Zelle 14		V	uint16be	1	0.001	0		level		true	false	false	false
                            4622	1	Zelle 15		V	uint16be	1	0.001	0		level		true	false	false	false
                            4623	1	Zelle 16		V	uint16be	1	0.001	0		level		true	false	false	false
                            4676	1	Max_Zelle_Spannung		V	uint16be	1	0.001	0		level		true	false	false	false
                            4677	1	Zellen_Diff		V	uint16be	1	0.001	0		level		true	false	false	false
                            4678	1	Max_Zelle_Nummer			uint8be	1	1	0		level		true	false	false	false
                            4678	1	Min_Zelle_Nummer			uint8le	1	1	0		level		true	false	false	false
                            4746	1	TempMos		°C	uint16be	1	0.1	0		level		true	false	false	false
                            4749	1	Spannung		V	uint32be	2	0.001	0		level		true	false	false	false
                            4751	1	Watt		W	uint32be	2	0.001	0		level		true	false	false	false
                            4753	1	Strom		A	int32be	2	0.001	0		level		true	false	false	false
                            4755	1	Temperatur 1		°C	int16be	1	0.1	0		level		true	false	false	false
                            4756	1	Temperatur 2		°C	int16be	1	0.1	0		level		true	false	false	false
                            4757	1	Alarm			uint32be	2	1	0		level		true	false	false	false
                            4759	1	BalanCurrent		A	uint16be	1	0.001	0		level		true	false	false	false
                            4760	1	BalanStatus			uint8le	1	1	0		level		true	false	false	false
                            4760	1	SOC		%	uint8be	1	1	0		level		true	false	false	false
                            4761	1	ReCap		Ah	int32be	2	0.001	0		level		true	false	false	false
                            4763	1	MaxCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4765	1	Zyklen			uint32be	2	0.001	0		level		true	false	false	false
                            4767	1	SOCCycleCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4769	1	SOCSOH		%	uint8le	1	1	0		level		true	false	false	false
                            4769	1	Precharge			uint8be	1	1	0		level		true	false	false	false
                            4770	1	UserAlarm			uint16be	1	1	0		level		true	false	false	false
                            4771	1	RunTime			uint32be	2	1	0		level		true	false	false	false
                            4773	1	Laden_Erlaubt			uint8le	1	1	0		level		true	false	false	false
                            4773	1	Entladen_Erlaubt			uint8be	1	1	0		level		true	false	false	false
                            4836	1	BatVol		V	uint16be	1	0.01	0		level		true	false	false	false
                            4856	1	TempBat 3		°C	int16be	1	0.1	0		level		true	false	false	false
                            4857	1	TempBat 4		°C	int16be	1	0.1	0		level		true	false	false	false
                            4858	1	TempBat 5		°C	int16be	1	0.1	0		level		true	false	false	false
                            5120	1	DeviceID			string	8	1	0		level		true	false	false	false
                            5128	1	Hardware_Version			string	4	1	0		level		true	false	false	false
                            5132	1	Software_Version			string	4	1	0		level		true	false	false	false
                            5140	1	Name1			string	6	1	0		level		true	false	false	false
                            5156	1	Installationsdatum			string	4	1	0		level		true	false	false	false
                            5160	1	SerienNummer			string	8	1	0		level		true	false	false	false
                            5168	1	Name2			string	8	1	0		level		true	false	false	false
                            5176	1	Pin_Code			string	8	1	0		level		true	false	false	false
                            4608	2	Zelle 1		V	uint16be	1	0.001	0		level		true	false	false	false
                            4609	2	Zelle 2		V	uint16be	1	0.001	0		level		true	false	false	false
                            4610	2	Zelle 3		V	uint16be	1	0.001	0		level		true	false	false	false
                            4611	2	Zelle 4		V	uint16be	1	0.001	0		level		true	false	false	false
                            4612	2	Zelle 5		V	uint16be	1	0.001	0		level		true	false	false	false
                            4613	2	Zelle 6		V	uint16be	1	0.001	0		level		true	false	false	false
                            4614	2	Zelle 7		V	uint16be	1	0.001	0		level		true	false	false	false
                            4615	2	Zelle 8		V	uint16be	1	0.001	0		level		true	false	false	false
                            4616	2	Zelle 9		V	uint16be	1	0.001	0		level		true	false	false	false
                            4617	2	Zelle 10		V	uint16be	1	0.001	0		level		true	false	false	false
                            4618	2	Zelle 11		V	uint16be	1	0.001	0		level		true	false	false	false
                            4619	2	Zelle 12		V	uint16be	1	0.001	0		level		true	false	false	false
                            4620	2	Zelle 13		V	uint16be	1	0.001	0		level		true	false	false	false
                            4621	2	Zelle 14		V	uint16be	1	0.001	0		level		true	false	false	false
                            4622	2	Zelle 15		V	uint16be	1	0.001	0		level		true	false	false	false
                            4623	2	Zelle 16		V	uint16be	1	0.001	0		level		true	false	false	false
                            4676	2	Max_Zelle_Spannung		V	uint16be	1	0.001	0		level		true	false	false	false
                            4677	2	Zellen_Diff		V	uint16be	1	0.001	0		level		true	false	false	false
                            4678	2	Max_Zelle_Nummer			uint8be	1	1	0		level		true	false	false	false
                            4678	2	Min_Zelle_Nummer			uint8le	1	1	0		level		true	false	false	false
                            4746	2	TempMos		°C	uint16be	1	0.1	0		level		true	false	false	false
                            4749	2	Spannung		V	uint32be	2	0.001	0		level		true	false	false	false
                            4751	2	Watt		W	uint32be	2	0.001	0		level		true	false	false	false
                            4753	2	Strom		A	int32be	2	0.001	0		level		true	false	false	false
                            4755	2	Temperatur 1		°C	int16be	1	0.1	0		level		true	false	false	false
                            4756	2	Temperatur 2		°C	int16be	1	0.1	0		level		true	false	false	false
                            4757	2	Alarm			uint32be	2	1	0		level		true	false	false	false
                            4759	2	BalanCurrent		A	uint16be	1	0.001	0		level		true	false	false	false
                            4760	2	BalanStatus			uint8le	1	1	0		level		true	false	false	false
                            4760	2	SOC		%	uint8be	1	1	0		level		true	false	false	false
                            4761	2	ReCap		Ah	int32be	2	0.001	0		level		true	false	false	false
                            4763	2	MaxCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4765	2	Zyklen			uint32be	2	0.001	0		level		true	false	false	false
                            4767	2	SOCCycleCap		Ah	uint32be	2	0.001	0		level		true	false	false	false
                            4769	2	SOCSOH		%	uint8le	1	1	0		level		true	false	false	false
                            4769	2	Precharge			uint8be	1	1	0		level		true	false	false	false
                            4770	2	UserAlarm			uint16be	1	1	0		level		true	false	false	false
                            4771	2	RunTime			uint32be	2	1	0		level		true	false	false	false
                            4773	2	Laden_Erlaubt			uint8le	1	1	0		level		true	false	false	false
                            4773	2	Entladen_Erlaubt			uint8be	1	1	0		level		true	false	false	false
                            4836	2	BatVol		V	uint16be	1	0.01	0		level		true	false	false	false
                            4856	2	TempBat 3		°C	int16be	1	0.1	0		level		true	false	false	false
                            4857	2	TempBat 4		°C	int16be	1	0.1	0		level		true	false	false	false
                            4858	2	TempBat 5		°C	int16be	1	0.1	0		level		true	false	false	false
                            5120	2	DeviceID			string	8	1	0		level		true	false	false	false
                            5128	2	Hardware_Version			string	4	1	0		level		true	false	false	false
                            5132	2	Software_Version			string	4	1	0		level		true	false	false	false
                            5140	2	Name1			string	6	1	0		level		true	false	false	false
                            5156	2	Installationsdatum			string	4	1	0		level		true	false	false	false
                            5160	2	SerienNummer			string	8	1	0		level		true	false	false	false
                            5168	2	Name2			string	8	1	0		level		true	false	false	false
                            5176	2	Pin_Code			string	8	1	0		level		true	false	false	false
                            

                            Screenshot 2025-10-11 134049.png

                            Screenshot 2025-10-11 133910.png Screenshot 2025-10-11 133846.png Screenshot 2025-10-11 133819.png Screenshot 2025-10-11 133758.png Screenshot 2025-10-11 133729.png Screenshot 2025-10-11 133703.png

                            20251011_131225.jpg 20251011_134808.jpg 20251011_134816.jpg 20251011_134832.jpg

                            D 1 Reply Last reply Reply Quote 1
                            • D
                              Dieter_P @Elektroniker86 last edited by Dieter_P

                              @elektroniker86
                              Ganz herzlichen Dank!
                              Jetzt habe ich eine Zielvorgabe 🙂

                              Auf den ersten Blick liegt die Lösung darin um mehrere BMS auszulesen, dass der Master und die Slaves anders aus der Instanz angesprochen werden: "Master" vs. "Mehrere IDs".

                              Ich hatte immer verstanden, dass der RS485-1 zur Kommunikation zu einem WR immer ein Slave sein kann. Im Fall vom Master (Adresse 0) scheint das aber ein Irrweg.

                              Werde mich mit der hoffentlich funktionierenden Lösung blad melden.

                              Liest du bei dir nur Werte oder kannst Du auch Schreiben und Werte ändern?

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              981
                              Online

                              32.3k
                              Users

                              80.9k
                              Topics

                              1.3m
                              Posts

                              8
                              102
                              9286
                              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