NEWS
[Neuer Adapter] BYD HVS
-
Hi!
Es gibt eine neue Version des Adapters (1.1.0). Folgende Neuigkeiten habe ich eingebaut:1.1.0 (2021-04-22)
- HVS-Versionen: Es scheint zwei Speicherbänke zu geben und in beiden Bänken sind verschiedene Versionen enthalten. Das A und B zeigt nur die aktive Bank an. Ich habe das entsprechend eingebaut. Ich hoffe es ist so richtig.
- Alle States bei denen es sinnvoll erscheint haben jetzt Einheiten
- Es gibt zwei neue States: Power_Consumption und Power_Delivery for summarizing
- Systeme mit 5 Module: Die Zell-Temperaturen sollten jetzt komplett ankommen, die Spannungen leider nur für die ersten 128 Zellen. (s.u.)
- Umbenannt: State.ErrorNum in System.ErrorNum. Wenn jemand weiß wie ich aus dem Adapter heraus den alten State löschen kann: Bitte Infos zu mir.
- kleine Fehler behoben
Details zu den Batterie-Größen: Der Adapter funktioniert auch für Zelltemperaturen und ZellSpannungen bei 2,3 und 4 Batterie-Modulen. Bei einem System mit 5 Modulen werden nur die Zellspannungen der ersten 128 Zellen angezeigt. Für die Zellen 129 bis 160 ist mir nicht bekannt wo die Daten gespeichert werden. Ich würde das gerne mit in den Adapter einbauen, benötige aber dafür einen Wireshark-Mittschnitt der Kommunikation zwischen der beConnect App und dem Speicher. Ich helfe auch gerne wenn jemand nicht weiß wie man den Mittschnitt machen kann, entweder per Teamviewer oder per Postings im Forum. Offensichtlich funktioniert die Kommunikation für die 5. Einheit anders als bei den ersten 4 Einheiten.
Ich bin auf Euer Feedback gespannt!
Viele Grüße
Tueftler17 -
@jb_sullivan In der offiziellen Adapter-Liste bin ich noch nicht drin. Da sind noch eine Hürden im Code zu überpringen, das bin ich bisher noch nicht angegangen.
Daher gibt es den Adapter im Augenblick entweder über die Katze oder per npm:npm i iobroker.bydhvs
Bei den Datenpunkten habe ich mich um maximale Kompatibilität bemüht. Wenn Du State.ErrorNum manuell löscht bist Du up to date. Das Löschen per Code habe ich aufgegeben, nach 2h habe ich keine Lust mehr gehabt weiterzusuchen.
Ich wollte für die Leute die schon den History-Adapter drauf los gelassen haben einen Umstieg einfach zu machen, daher ist alles bis auf die Einheiten und ein paar zusätzliche Datenpunkte gleich geblieben. -
Hi,
habe die neue Version gerade installiert und kurz drüber geschaut. Sieht soweit ganz gut aus und auch die Version der BMU stimmt jetzt auch.
Das BMU steht ja für die Batterie Management Unit, aber wieso die 2 Bänke hat ist mir noch nicht ganz klar
Ansonsten super Arbeit!
-
@qqolli Danke für die Blumen!
Das mit den zwei Bänken habe ich mir zusammengereimt. Als Hersteller würde ich versuchen immer eine bootfähige Version zu behalten. Also: Eine aktive Bank, dann die inaktive Bank neu flashen, prüfen ob das flashen erfolgreich war (Checksum) und erst danach für den Reboot ein Flag setzen das jetzt von der anderen Bank gebootet werden soll. So wäre es für mich plausibel. Jedenfalls passt es so mit allen Testdaten zusammen die mir freundliche Mitnutzer geschickt haben. -
Ja, das würde allerdings Sinn machen. Danke für die Erklärung.
-
Das mit der json Tabelle bzgl. der ganzen Temp/Volte Werte war noch nicht möglich? Ist doch auch für dich bestimmt jede Menge Fleißarbeit bei sooooo vielen Einzelwerten?
Gibt es für ErrorNum auch eine Auflistung, welche Nummern kommen können und was die Nummern ggf. bedeuten? Dann könnte man das auch in der VIS einsetzen, so wie das bei den div. Meldungen des Saugroboters auch passiert.
Ansonsten VIELEN Dank für deinen Einsatz
AH - noch einen kleinen Fehler entdeckt - wenn ich bydhvs.0.State.ErrorNum lösche und die Instanz neu starte, wird der DP wieder angelegt
-
@jb_sullivan Danke für den Hinweis mit dem Neuanlegen des Datenpunktes. Das ändere ich noch. Diese Kombi hatte ich nicht ausprobiert :-(.
Zu den Temperaturen und Spannungen: Ich kann das sehr gerne machen, das ist auch nicht viel Aufwand.
Aber: Ich habe wirklich noch nicht genau verstanden was ich tun soll. Ist denn ein Datenpunkt mit dem Namen "VoltDetails" und Inhalt JSON-Formatiert das Richtige? Ich hatte das in dem anderen Thread schon angesprochen, bin aber aus den Antworten nicht ganz schlau geworden.Daher: Wenn mir jemand verrät was ich genau (!) machen soll, am Besten ein fiktives Beispiel, dann baue ich das gerne ein. Ist ja sowieso noch eine weitere Version fällig.
-
@jb_sullivan Arghhh: Einen Teil der Antwort vergessen. Ich habe die Bits von Errornum einzeln im Test gesetzt und über die beConnect App herausgesucht.
Es gibt folgende Fehler:
- High Temperature Charging (Cells)
- Low Temperature Charging (Cells)
- Over Current Discharging
- Over Current Charging
- Main circuit Failure
- Short Current Alarm
- Cells Imbalance
- Current Sensor Failure
- Battery Over Voltage
- Battery Under Voltage
- Cell Over Voltage
- Cell Under Voltage
- Voltage Sensor Failure
- Temperature Sensor Failure
- High Temperature Discharging (Cells)
- Low Temperature Discharging (Cells)
die alle zumindestens theoretisch kombiniert werden können. Sie tauchen dann bei "Bedarf" bei ErrorString auf. OK?
-
D.h. über den Error String gibt es definitiv die Textliche Meldung? Somit wäre die Nummer "doppelt gemoppelt" wenn man Sie wie oben im Beispiel bei dem VIS Widget definieren würde.
So würde man zweimal den gleichen Text bekommen - richtig oder?
Zur json Tabelle würde ich dir wahnsinnig gerne helfen, aber ich verstehe das auch nicht so wirklich.
Ich glaube aber das der Ansatz von dir schon der richtige war. DU gibts quasi die Tabellen Struktur nach dem Schema unten vor - wobei ich mir bzgl. des durchreichen der Einheiten nicht sicher bin, ob die überhaupt da drin stehen müssen.
[{"Zelle":"1","Spannung":3500 mV,"Temperatur":20 °C,"},{"Zelle":"2","Spannung":3500 mV,"Temperatur":20 °C,"}]
Daraus läßt sich dann mit materialdesign eine Tabelle bauen.
Wenn die gleichen Werte als Trendgrafik formatiert sein sollen, muss die json dann so aussehen -
{"graphs":[{""datalabel_color":"lightblue","datalabel_fontSize":10,"data":[3500,22,3501,20,3700,21,3620,20,................}
Wie ich schonmal geschrieben hatte, am besten nimmst du mal Kontakt mit den beiden Usern @Gargano und / oder @paul53 auf. Die beiden sind echt fit was sowas betrifft und ich habe sie auch als sehr hilfsbereit kennen gelernt.
Vielleicht können Sie dir da weiter helfen.
-
.... auf jeden Fall ist das mit der GELADENEN und ENTLADENEN Leistung eine coole Sache in Verbindung mit dem Sourceanalytix Adapter.
Da man in SA ja auch unterschiedliche Preise für eingespeisten und gekauften Strom definieren kann, sieht man gleich, was es gekostet hätte, wenn dieser Strom ins Netz gegangen wäre und was man im Gegenzug hätte dafür bezahlen müssen, wenn kein Speicher vorhanden wäre - also ich finds COOL
-
Absolut! Und vor allem spart es eine Menge Geld und warum sollte man seinen Strom so billig verkaufen und dann für den 3 fachen Preis wieder einkaufen? Da verbrauch ich lieber alles selbst, bevor ich den verkaufe, getreu de Motte: Ich zuerst
Was ich auch echt cool finde, ist Deine View. Wäre es ok für Dich, die zu sharen?
-
@qqolli sagte in [Neuer Adapter] BYD HVS:
Was ich auch echt cool finde, ist Deine View. Wäre es ok für Dich, die zu sharen?
Ja kann ich machen - keine Problem. Der Trend ist allerdings auf Basis von Grafana entstanden und als iframe im VIS eingebunden.
Mache ich heute Abend fertig.
-
Supi, vielen Dank dafür. Grafana nutze ich ebenfalls
-
@jb_sullivan Was möchtest Du denn genau am Ende als Ergebnis haben? Wahrscheinlich tue ich mich schwer mit einer Tabelle da mir nicht genau klar ist was Du wie visualisierst haben möchtest..
Zu den Error-Strings: Korrekt, aus der Batterie kommt die Zahl und ich reiche die Zahl als Datenpunkt durch für den Fall das jemand eigene Dinge damit anstellen möchte. Zusätzlich gibt es alle Fehler in einer semikolon-separierten Liste zusätzlich zurück. Das Ergebnis ist dann im Prinzip wie in der App, hier ein Beispiel der möglichen Fehler, ist natürlich mit dem Simulator gemacht:
-
Die Beispiele oben die ich dir genannt habe, basieren auf der Solar PV Prognose.
Letzendlich stelle ich mir das für die Zellen genauso vor, nur nicht als 3-Tages Ansicht.
Also im Graphen könnte man Zellenspannung und Temperatur genau so aufbauen. Die kleinere Kurve (rot) zeigt für den dazu gehörigen Bargraph (Zellenspannung =blau) die Temperatur an. Das mit den Werten im Trend ist eine materialdesign Widget Sache.
Darunter halt das ganze noch mal Tabellarisch zum Nachlesen und durchscrollen. Da wo jetzt Uhrzeit drin steht die Zellenummer, wo OST / WEST drin steht, könnte man halt die Zellen Spannung und Temperatur rein schreiben. und sofern es Zellenspezifische Störmeldungen geben sollte, könnten die z.B. bei Bedarf dort auftauchen wo jetzt Summe OST/WEST drin steht
-
@jb_sullivan OK, das verstehe ich soweit. Aber: Wie möchtest Du das für 128 Zellen darstellen (wenn du 4 Module hast). 128 Linien in einer Grafik halte ich nicht für sinnvoll. Ich bin bei grafischen Dingen immer nicht so geschickt, daher läuft die Darstellung bei mir im Augenblick nur per FLOT. Ergebnis dann so (rot = Max Zellspannung, Gelb = Min Zellspannung, Blau = SOC, Violett = Differenz zwischen max und min Zellspanunng):
Das klappt einfach mit dem History-Adapter und FLOT und das reicht mir um meine Steuerung zu optimieren. Ich möchte nicht aus meiner Batterie das letzte Quentchen Leistung pro Tag herauskitzeln sondern sie so lange wie möglich und daher so schonend wie möglich benutzen. Daher entlade ich auch langsam und gleichmäßig die ganze Nacht und höre mit dem Laden auf sobald die Zellspannung 3,6V erreicht. -
Ob man nun den/die Datenpunkt über FLOT, oder so wie ich, über Grafana trackt, sollte ja eigentlich egal sein.
Die Frage ist, warum hast du jede einzelne Zelle 2x (Spannung und Temp) als DP definiert? Das ist doch auch jede Menge Arbeit für dich gewesen. Die Frage ist wofür? Was von den ganzen Werten nutzt du dann in FLOT?
Kannst du bitte mal einen Screenshot von der FLOT Definitionsseite, wo die DP`s für deine Trends eingetragen sind, machen?
Die Balken oben in meinem Diagramm sind 116 Balken. Ich glaube schon, das man das in einem Diagramm dargestellt bekäme - glaube ich zumindest. Dann würde in der Tat jeder Balken einer Zelle mit einem blauen Spannungswert und einem roten Temperatur Wert entsprechen.
Ich bilde mir ein, das man so ggf. brutale Ausreißer einzelner Zellen in einem Diagramm sofort erkennen könnte, um diese über die Tabellen Funktion genauer betrachten zu können.
-
Hier wie versprochen der Quellcode zu dem oben gezeigten VIEW. Bitte dementsprechend als VIEW importieren.
Kopf und Fußzeile werden fehlende Icons anzeigen. Diese habe ich jetzt nicht mitgeliefert, weil das vermutlich ohnehin nicht für jedermann Interessant sein dürfte.
Für die Batterie mit dem veränderlichen Füllstand muss der VIS-Plumb Adapter installiert sein.
Hier das entsprechende Icon dazu, welches über die Z-Ebene über den VIS-Plumb Tank gelegt wurde.
-
Super, vielen Dank. Funktioniert einwandfrei und sieht auch echt chick aus.
Ist immer interessant, wie es andere machen (bin noch nicht so fit). Man kann immer was dazu lernen
-
@jb_sullivan sagte in [Neuer Adapter] BYD HVS:
Ob man nun den/die Datenpunkt über FLOT, oder so wie ich, über Grafana trackt, sollte ja eigentlich egal sein.
Die Frage ist, warum hast du jede einzelne Zelle 2x (Spannung und Temp) als DP definiert? Das ist doch auch jede Menge Arbeit für dich gewesen. Die Frage ist wofür? Was von den ganzen Werten nutzt du dann in FLOT?
Kannst du bitte mal einen Screenshot von der FLOT Definitionsseite, wo die DP`s für deine Trends eingetragen sind, machen?
Die Balken oben in meinem Diagramm sind 116 Balken. Ich glaube schon, das man das in einem Diagramm dargestellt bekäme - glaube ich zumindest. Dann würde in der Tat jeder Balken einer Zelle mit einem blauen Spannungswert und einem roten Temperatur Wert entsprechen.
Ich bilde mir ein, das man so ggf. brutale Ausreißer einzelner Zellen in einem Diagramm sofort erkennen könnte, um diese über die Tabellen Funktion genauer betrachten zu können.
Oh, die Arbeit hat sich in Grenzen gehalten, das hat eine Schleife für mich ereldigt:
for (let i = 1; i < maxCellVolts; i++) { adapter.setObjectNotExists("CellDetails.CellVolt" + pad(i, 3), { type: "state", common: { name: "Voltage Cell: " + pad(i, 3), type: "number", role: "", read: true, write: false, unit: "mV" }, native: {} }); }
Ich hatte keine Ahnung wofür man die Daten nutzen soll. Da ich mir aber die Mühe gemacht habe den Trick zu entschlüsseln (die Daten sind über mehrere Antwort-Pakete etwas wirr verteilt) wollte ich sie auch "zur Verfügung" stellen. Vielleicht hat jemand eine gute Idee dafür. Ein Balkendiagramm mit den Zellen nebeneinander und die Spannungen für jede Zelle als Balken darstellen halte ich nicht für hilfreich. Was ich mir noch vorstellen kann ist das man im History-Adapter jeweils die Zellen mit den höchsten und niedrigsten Spannungen mitloggt und wenn sich das für eine Weile auf wenige Zellen einschießt könnte man über für diese speziellen Zellen noch mal extra mit loggen und sich darstellen lassen. Vielleicht gibt es ja noch andere gute Anwendungsideen?
Meine Flot-Einstellung sieht so aus: