Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. IOBroker Anbindung an einen Kostal Plenticore

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    IOBroker Anbindung an einen Kostal Plenticore

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

      @strathcole Für den Moment müsste es ja helfen wenn ich in allen forcast ?h Ordnern leere generated Objete anlege oder?
      Werden die dann bei Datumswechsel wieder gelöscht?

      StrathCole 1 Reply Last reply Reply Quote 0
      • StrathCole
        StrathCole @Diginix last edited by

        @diginix habe es nicht im Kopf, aber denke, dass sie gelöscht werden.

        Diginix 1 Reply Last reply Reply Quote 0
        • Diginix
          Diginix @StrathCole last edited by

          @strathcole Das wäre doch dann der Ansatz. Einfach alle Objekte die "erwartet" werden auch existent lassen und dann eben mit Wert 0/null.
          K.a. was man machen muss damit sie fehlen dürfen wenn nicht benötigt. Der JS-Controller bekommt ja anscheinend vom Adapter mit welche "angesprochen" werden.

          StrathCole 1 Reply Last reply Reply Quote 0
          • StrathCole
            StrathCole @Diginix last edited by

            @diginix denke nicht. Vermute, dass es an irgendetwas anderem liegt. Muss ich näher untersuchen, kann aber noch nicht sagen, wann ich dazu komme. Im Moment ist Arbeitsstress hoch drei.

            Diginix lemonbiter 2 Replies Last reply Reply Quote 0
            • Diginix
              Diginix @StrathCole last edited by

              @strathcole Ok, na ich hab einfach mal den loglevel vom Adapter auf "error" gestellt, damit das Log nicht explodiert und ich eventuelle Probleme anderer Adapter überhaupt noch sehe.

              StrathCole 1 Reply Last reply Reply Quote 0
              • J
                joefarm @tp1de last edited by

                @tom57 Danke für die Info. Ich bin zwar einen Schritt weiter, hilft mir aber leider nicht. Ich habe meinen Byd jetzt einmal an einen separaten Router gesteckt, der Netzwerkadressen unter 192.168.1.* vergibt. Da komme ich problemlos auf die Byd. Es liegt also definitiv daran, dass mein Heimnetz unter 192.168.5.* unterwegs ist und die WLAN-Adresse auf 192.168.5.1 fest eingestellt ist. Da gibt es irgendwie einen Konflikt. Ich hab aber keine Lust, mein Heimnetz zu ändern. Da sind hunderte von IP Adressen unterwegs, viele davon fest und einige meiner Anwendungen einschließlich iobroker verwenden IP-Adressen unter dem Segment. Leider lässt sich die wlan0-Adresse im Byd nicht ändern...hab auch schon nachgefragt.

                U 1 Reply Last reply Reply Quote 0
                • lemonbiter
                  lemonbiter @StrathCole last edited by lemonbiter

                  @strathcole

                  Ich muss mich leider anschließen, habe auch das Problem, dass mein Log mit Warnings vollläuft. Wäre wunderbar, wenn Du Dir das anschauen würdest. Vielen lieben Dank

                  LEM

                  Das "Desaster" fing bei mir erst ab . 08:16 an - vorher war keine Meldung im LOG dazu - und ab da dann bis jetzt ununterbrochen:

                  2021-01-27 08:16:49.942 - info: plenticore.0 (28897) Read forecast data before calcMinSoC.
                  2021-01-27 08:16:50.082 - info: plenticore.0 (28897) calcMinSoC for day 1.
                  2021-01-27 08:16:50.082 - info: plenticore.0 (28897) Using forecast of day 1 for MinSoC calculation.
                  2021-01-27 08:16:50.155 - info: plenticore.0 (28897) calcMinSoC for day 2.
                  2021-01-27 08:17:09.132 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:09.133 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:09.133 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:19.842 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:19.843 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:19.843 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:30.553 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:30.554 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:30.554 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:41.043 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  2021-01-27 08:17:41.091 - warn: plenticore.0 (28897) State "plenticore.0.forecast.day1.power.1h.generated" has no existing object, this might lead to an error in future versions
                  
                  Diginix 1 Reply Last reply Reply Quote 0
                  • Diginix
                    Diginix @lemonbiter last edited by

                    @lemonbiter Stell den Loglevel einfach erstmal auf "error" dann wird alles was nur info oder warn ist nicht mehr ins Log geschrieben. Nicht ideal aber ansonsten explodiert das Log ab sofort dauerhaft.

                    lemonbiter 1 Reply Last reply Reply Quote 1
                    • lemonbiter
                      lemonbiter @Diginix last edited by lemonbiter

                      @diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:

                      @lemonbiter Stell den Loglevel einfach erstmal auf "error" dann wird alles was nur info oder warn ist nicht mehr ins Log geschrieben. Nicht ideal aber ansonsten explodiert das Log ab sofort dauerhaft.

                      Dank Deines vorherigen Eintrags längst erledigt 🙂 Ist das bei Dir auch erst morgens losgegangen?

                      Diginix 1 Reply Last reply Reply Quote 0
                      • Diginix
                        Diginix @lemonbiter last edited by

                        @lemonbiter Das beginnt ab der Uhrzeit wo "generated" nicht mehr existiert. Wahrs. löscht der Adapter zu Tagesbeginn bzw. ab Sonnenaufgang die Objekte vom Vortag. Bei mir fing es am 2021-01-24 08:04:26 an und am 23.01. abends hatte ich den JS-Controller aktualisiert. Sonnenaufgang ist bei mir zZt kurz vor 8 Uhr. Passt also kausal zusammen.

                        A 1 Reply Last reply Reply Quote 1
                        • A
                          ak1 @Diginix last edited by

                          @diginix sagte in IOBroker Anbindung an einen Kostal Plenticore:

                          @lemonbiter Das beginnt ab der Uhrzeit wo "generated" nicht mehr existiert. Wahrs. löscht der Adapter zu Tagesbeginn bzw. ab Sonnenaufgang die Objekte vom Vortag. Bei mir fing es am 2021-01-24 08:04:26 an und am 23.01. abends hatte ich den JS-Controller aktualisiert. Sonnenaufgang ist bei mir zZt kurz vor 8 Uhr. Passt also kausal zusammen.

                          Was wir hier sehen, hängt mit dem js-controller 3.2.x im Latest zusammen. Gefixt muss es allerdings in den jeweiligen Adaptern werden.
                          Siehe z.B. hier im Forum

                          Diginix 1 Reply Last reply Reply Quote 0
                          • U
                            ukl-PV @joefarm last edited by

                            @joefarm da Dein Heimnetz den Bereich 192.168.5.* hat und der BYD 192.168.1.* brauchst Du nur im Router die subnet Einstellungen auf 255.255.0.0 ändern. Default ist normalerweise 255.255.255.0,
                            Dann geht alles, d.h Dein Rechner kann auf alles zugreifen was im Bereich 192.168.. ist.
                            Der Bereich muss aber frei sein, manche Router vergeben dort auch GAST LAN/WLAN IP adress Bereiche

                            J 1 Reply Last reply Reply Quote 0
                            • J
                              joefarm @ukl-PV last edited by

                              @ukl-pv Sorry hab mich falsch ausgedrückt. Ja das ist mir klar, wie ich von einem Subnetz ins andere komme. Das mit dem 1.x Netz hab ich nur zum testen gemacht, ich habe das normalerweise nicht installiert. Ich hab alle meine Geräte im 5.x Netz und das kollidiert mit der WLAN-IP des Byd, aus welchen Gründen auch immer. Eine Lösung ist, einen Router dazwischenzuschalten, das die Byd über LAN ein anderes Subnetz als 5.x routet, nur wollte ich nicht einen Router extra nur für diesen Zweck betreiben. Wenn es aber nicht anders geht, mache ich es vielleicht trotzdem...

                              Vielen Dank jedenfalls für die Ideen.

                              1 Reply Last reply Reply Quote 0
                              • Diginix
                                Diginix @ak1 last edited by

                                @ak1 Ist bekannt und von mir so auch schon hier geschrieben und ebenfalls von @StrathCole schon als todo bestätigt.

                                1 Reply Last reply Reply Quote 0
                                • J
                                  joefarm @tp1de last edited by

                                  @tom57 said in IOBroker Anbindung an einen Kostal Plenticore:

                                  @joefarm Ich habe verstanden, dass Du per WLAN auf die BYD HV-Box kommst. Hat der Router denn eine IP-Adresse aus dem DHCP Bereich für eth0 vergeben?

                                  Bei mir sieht das unter Device Information so aus:
                                  f5c02ece-7ca6-4b22-b764-5a02068b270a-grafik.png

                                  Ein redirect erfolgt bei der eigenen IP nicht.

                                  Doch noch eine Frage: hat es schon jemand geschafft, über eth0:2, d.h. 192.168.6.1 auf die Weboberfläche zu kommen? Oder wofür ist diese Adresse gut?

                                  U 1 Reply Last reply Reply Quote 0
                                  • U
                                    ukl-PV @joefarm last edited by

                                    @joefarm es gibt bei dem HVS Speichern keine Weboberfläche mehr, dafür aber das tool "Be Connect Plus (BCP) V1.4" um auf die Batterie zuzugreifen. Zu finden hier: https://www.eft-systems.de/de/downloads.
                                    Das tool findet die BYD alleine (oder auch nicht), nachdem man auf connect gedrückt hat

                                    J 1 Reply Last reply Reply Quote 0
                                    • J
                                      joefarm @ukl-PV last edited by

                                      @ukl-pv Danke, aber es geht um die HV, nicht die HVS. Die ist nur über eine Weboberfläche zu erreichen.

                                      J 1 Reply Last reply Reply Quote 0
                                      • J
                                        joefarm @joefarm last edited by

                                        Zur Info, falls es noch nicht bekannt ist:
                                        @arteck hat einen Adapter für die Byd geschrieben (Vielen Dank!!), der schon einmal einige Werte aus der HV-Box ausliest, v.a. die Zustände der einzelnen Zellen. Leider fehlen noch die Daten von der Seite "Statistics Information", die ich speziell interessant finde, weil man dann z.B. "Total Charge" und "Total Discharge" sehen kann.
                                        Leider sind meine Programmierkenntnisse nicht so großartig, sonst würde ich beim Implementieren mitmachen. Vielleicht kommt es ja noch...

                                        Verwendet den Adapter sonst schon jemand?

                                        HAL Diginix 2 Replies Last reply Reply Quote 0
                                        • Diginix
                                          Diginix last edited by Diginix

                                          Neue Firware vom 29.01.2021 "UI: 01.18.05255 / MC: 01.46 / IOC: 01.45"

                                          Changelog:

                                          Änderungen
                                          Die Funktion AutoUpdate ist nun verfügbar. Es kann gewählt werden zwischen „manuellem Update per Dateiupload“ / „über verfügbare Updates informieren“ / „Updates automatisch durchführen“.
                                          Ändern Sie hierzu nach erfolgter Softwareaktualisierung im Updatemenü des Webservers die Updatemethode.

                                          1 Reply Last reply Reply Quote 0
                                          • HAL
                                            HAL @joefarm last edited by HAL

                                            @joefarm Mich würde ein Adapter für BYD HVS interessieren. Bisher klappt damit nur das Windows Programm "Be Connect Plus-V1.4.exe" und abgespeckt die "Be Connect App". Es soll wohl auch mittels pearl Script gehen, aber auf meinem Tinkerboard kriege ich das nicht zum laufen .

                                            readBYD.pl

                                            #!/usr/bin/perl
                                            #
                                            # readBYD.pl
                                            #
                                            # This program reads some current values from a BYD HVS/HVM Premium Battery Box.
                                            # There is NO WARRANTY
                                            #
                                            #
                                            # If you find this program useful send me some greetings to forenandi73@kabelmail.de
                                            #
                                            # redirect STDERR to nul (Windows) or /dev/null (UNIX) if you are not interested in the debugging output
                                            
                                            use strict;
                                            use IO::Socket;
                                            use Digest::CRC;
                                            
                                            # connect to BYD HVS/HVM Premium device, adjust PeerAddr to match your IP
                                            my $sock = IO::Socket::INET->new(PeerAddr => '192.168.178.78', PeerPort => '8080', Proto => 'tcp') or die;
                                            
                                            # commands to be sent to BYD
                                            my $tobyd1="\x01\x03\x00\x00\x00\x13\x04\x07";
                                            my $tobyd2="\x01\x03\x05\x00\x00\x19\x84\xcc";
                                            
                                            # unbuffer output on socket, stdout, stderr
                                            my $old=select($sock); $|=1; 
                                            select(STDOUT);$|=1;
                                            select(STDERR);$|=1;
                                            select($old);
                                            
                                            # always read one byte from stream
                                            $/=\1;
                                            
                                            # create empty hash for results
                                            my %rh=();
                                            
                                            # send first command to BYD
                                            print $sock $tobyd1;
                                            print STDERR "Data1 sent!\n";
                                            
                                            # read 3 bytes
                                            my $b11=<$sock>;	# 0x01
                                            my $b12=<$sock>; 	# 0x03
                                            my $b13=<$sock>; 	# length of data
                                            
                                            my $dl1=ord($b13);	# data length
                                            printf STDERR "data length=%d\n",$dl1;
                                            
                                            # read payload
                                            my $pl1=$b13;	
                                            for (my $i=0;$i<$dl1;$i++)
                                            {
                                            	$pl1.=<$sock>;
                                            }
                                            
                                            # read checksum bytes
                                            my $c11=<$sock>;	# checksum LSB
                                            my $c12=<$sock>;	# checksum MSB
                                            
                                            # get overall checksum from data
                                            my $crc1=ord($c12)*256 + ord($c11);
                                            
                                            # calculate checksum from actual data
                                            my $ctx1 = Digest::CRC->new(width=>16, init=>0x0284, xorout=>0x0000, refout=>1, poly=>0x8005, refin=>1, cont=>0);
                                            $ctx1->add($pl1);
                                            my $digest1=$ctx1->digest;
                                            
                                            printf STDERR "Payload length: %d, Checksum=%04X, Digest=%04X\n",length($pl1),$crc1,$digest1;
                                            
                                            if ($b11 ne "\x01" || $b12 ne "\x03" || $crc1 != $digest1)
                                            {
                                            	die "illegal/unexpected data received";
                                            }
                                            
                                            # print received bytes
                                            my $num1=0;
                                            for (my $i=0;$i<length($pl1);$i++)
                                            {
                                            	my $c=substr($pl1,$i,1);
                                            	$num1++;
                                            	my $o=ord($c);
                                            	$c=".";
                                            	if ($o > 31 && $o < 127) { $c=chr($o); }
                                            
                                            	printf STDERR "%03d: %03d %02X %s\n",$num1,$o,$o,$c;
                                            }
                                            
                                            # extract the values from the payload
                                            &getvals1(\%rh,$pl1);
                                            
                                            # send second command
                                            print $sock $tobyd2;
                                            print STDERR "Data2 sent!\n";
                                            
                                            # read 3 bytes from response
                                            my $b21=<$sock>;	#0x01
                                            my $b22=<$sock>; 	#0x03
                                            my $b23=<$sock>; 	# length of data
                                            
                                            my $dl2=ord($b23);	# data length
                                            printf STDERR "data length=%d\n",$dl2;
                                            
                                            # read the payload
                                            my $pl2=$b23;		# payload
                                            for (my $i=0;$i<$dl2;$i++)
                                            {
                                            	$pl2.=<$sock>;
                                            }
                                            
                                            # read checksum bytes
                                            my $c21=<$sock>;	# checksum LSB
                                            my $c22=<$sock>;	# checksum MSB
                                            
                                            # get overall checksum from data
                                            my $crc2=ord($c22)*256 + ord($c21);
                                            
                                            # calculate checksum from actual payload
                                            my $ctx2 = Digest::CRC->new(width=>16, init=>0x0284, xorout=>0x0000, refout=>1, poly=>0x8005, refin=>1, cont=>0);
                                            $ctx2->add($pl2);
                                            my $digest2=$ctx2->digest;
                                            
                                            printf STDERR "Payload length: %d, Checksum=%04X, Digest=%04X\n",length($pl2),$crc2,$digest2;
                                            
                                            if ($b21 ne "\x01" || $b22 ne "\x03" || $crc2 != $digest2)
                                            {
                                            	die "illegal/unexpected data received";
                                            }
                                            
                                            # print payload bytes
                                            my $num2=0;
                                            for (my $i=0;$i<length($pl2);$i++)
                                            {
                                            	my $c=substr($pl2,$i,1);
                                            	$num2++;
                                            	my $o=ord($c);
                                            	$c=".";
                                            	if ($o > 31 && $o < 127) { $c=chr($o); }
                                            
                                            	printf STDERR "%03d: %03d %02X %s\n",$num2,$o,$o,$c;
                                            }
                                            
                                            # extract the values from the payload
                                            &getvals2(\%rh,$pl2);
                                            
                                            # finally print the accumulated results
                                            foreach my $k (sort keys %rh)
                                            {
                                            	printf STDOUT "%s = %s\n",$k,$rh{$k};
                                            }
                                            
                                            $sock->close();
                                            print STDERR "End.\n";
                                            exit(0);
                                            
                                            sub getvals1
                                            {
                                            	my $h=shift @_;
                                            	my $pl=shift @_;
                                            
                                            	$$h{SerialNo}=substr($pl,1,19);
                                            	$$h{"BMU-A"}=getvers(substr($pl,25,2));
                                            	$$h{"BMU-B"}=getvers(substr($pl,27,2));
                                            	$$h{BMS}=getvers(substr($pl,29,2));
                                            }
                                            
                                            sub getvals2
                                            {
                                            	my $h=shift @_;
                                            	my $pl=shift @_;
                                            
                                            	$$h{SoC}=getshort(substr($pl,1,2));
                                            	$$h{CellVhigh}=getshort(substr($pl,3,2))/100;
                                            	$$h{CellVlow}=getshort(substr($pl,5,2))/100;
                                            	$$h{SoH}=getshort(substr($pl,7,2));
                                            	$$h{Vbatt}=getshort(substr($pl,11,2))/100;
                                            	$$h{CellTempHigh}=getshort(substr($pl,13,2));
                                            	$$h{CellTempLow}=getshort(substr($pl,15,2));
                                            	$$h{Vout}=getshort(substr($pl,33,2))/100;
                                            
                                            	my $currval=getshort(substr($pl,9,2));
                                            	
                                            	if ($currval < 32768)
                                            	{
                                            		$$h{Current}=$currval/10;
                                            	}
                                            	else
                                            	{
                                            		$$h{Current}=($currval-2**16)/10;
                                            	}
                                            }
                                            
                                            sub getshort
                                            {
                                            	my $v=shift @_;
                                            	return(
                                            		ord(substr($v,0,1))*256 + ord(substr($v,1,1))
                                            	);
                                            }
                                            
                                            sub getvers
                                            {
                                            	my $v=shift @_;
                                            	return(
                                            		ord(substr($v,0,1)) . "." .  ord(substr($v,1,1))
                                            	);
                                            }
                                            
                                            
                                            
                                            J T 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            848
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            83
                                            1298
                                            316328
                                            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