Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wunsch: Erweiterung Mqtt Meldungen um Balance Current #30

Closed
testpaul999 opened this issue Feb 27, 2023 · 11 comments
Closed

Wunsch: Erweiterung Mqtt Meldungen um Balance Current #30

testpaul999 opened this issue Feb 27, 2023 · 11 comments

Comments

@testpaul999
Copy link

testpaul999 commented Feb 27, 2023

Guten Tag,
Bitte die mqtt Meldungen um den Wert Balance-current, Status Laden, Entladen, Balance und die Temperaturwerte mit Nachkommastellen erweitern.

Sprich mit wieviel Strom wird aktuell gebalanced.
Die Werte sollten hier zu finden sein.
Analyse aus https://www.akkudoktor.net/forum/open-source-software-projekte/jkbms-auslesen-ueber-ble-bluetooth-oder-rs485-adapter-mittels-eps-iobroker/#post-649

Current_Balancer = (((int)receivedBytes_main[63+offset] << 8 | receivedBytes_main[62+offset])*0.001);

if((receivedBytes_main[139+2offset] & 0xF0) == 0x0) {
Balance_Curr = (((int)receivedBytes_main[139+2
offset] << 8 | receivedBytes_main[138+2offset])0.001);
}
else if ((receivedBytes_main[139+2
offset] & 0xF0) == 0xF0) {
Balance_Curr = ((((int)receivedBytes_main[139+2
offset] & 0x0F) << 8 | receivedBytes_main[138+2offset])-0.001);
}
Serial.print("Current Balancer = ");
Serial.print(Current_Balancer, 3);
Serial.println("V, ");

Und dann wäre es toll, wenn die Temperaturen ihren Sensoren zugeordnet werden.
Aktuell sehe ich im mqtt 0,1,2
Schön wäre T1,T2 und MOS-Temp.

Danke für die tolle Arbeit.

@testpaul999
Copy link
Author

Guten Tag,
Bitte die mqtt Meldungen um den Wert Balance-current, Status Laden, Entladen, Balance und die Temperaturwerte mit Nachkommastellen erweitern.
danke

@shining-man
Copy link
Owner

Mit dem Code-Schnippsel kann ich nicht wirklich etwas anfangen.
Wenn noch weitere Daten benötigt werden, dass ist die Basis dafür nicht irgend ein Code, sondern eine Spezifikation der Schnittstelle.
Meines Wissens wird der Valance-Current nicht über dies RS485 Schnittstelle übertragen.

Die Nachkommastellen bei der Temperatur schaue ich mir einmal an. Die sollten eigentlich vorhanden sein.

Bei dem Status Laden, Entladen, Balance muss ich erst schauen ob die Info an der RS485 Schnittstelle übertragen wird.

@testpaul999
Copy link
Author

Guten Abend, doch die Werte werden übertragen. Das sieht man an dem Projekt, was ich hier auch verlinkt habe. Analyse aus
https://www.akkudoktor.net/forum/open-source-software-projekte/jkbms-auslesen-ueber-ble-bluetooth-oder-rs485-adapter-mittels-eps-iobroker/#post-649
Hier werden die Werte auch an mqtt übergeben, daher frage ich ja.
Wenn ich helfen kann…?
danke

@shining-man
Copy link
Owner

Dort werden sie aber via Bluetooth gelesen und nicht über die Serielle-Schnittstelle.
In der Spezifikation die ich zur RS485 Schnisttstelle von JK habe, ist da auch nichts erwähnt.
Dein Code-Schnippsel bezieht sich auf das kopieren aus dem BT-Frame. Das RS485 Protokoll hat einen ganz anderen Aufbau.

@testpaul999
Copy link
Author

Mea culpa, das hatte ich so nicht auf dem Schirm.
Schade, aber nicht zu ändern.
Bleibt meine Bitte:
Status Laden, on/off
Status Entladen, on/off
Stautest Balance, on/off und die
Temperaturwerte mit Nachkommastellen erweitern.

@shining-man
Copy link
Owner

Den Issue am besten so lange offen lassen, bis es erledigt ist.

@shining-man shining-man reopened this Mar 2, 2023
@gropi75
Copy link

gropi75 commented Mar 20, 2023

Ich habe viele Rückmeldungen vom JK-BMS (über RS485) bei mir umgesetzt, u.a. auch die Statusnachrichten. (die Variable Decoded ist eigentlich eine Struktur, darunter ist char sBatteryStatus[40] was ist hier auffülle. Bei mir wird auf der Weboberfläche das dann als Text angezeigt)
Sieht dann so aus:

grafik

` case 0x8c: // Battery status information
/* JKBMS
Bit 0: charging on
Bit 1: discharge on
Bit 2: equilization on
Bit 3: battery down
Bit 4..15: reserved
*/

  Decoded.BatteryStatus = ((uint16_t)data2decode[i + 1] << 8 | data2decode[i + 2]);
  i += 3;
  strcpy(Decoded.sBatteryStatus, "undefined");
  strcpy(Decoded.charge, "off");
  strcpy(Decoded.discharge, "off");
  strcpy(Decoded.balance, "off");

  if ((Decoded.BatteryStatus >> 3) & 0x01)
  { // looking for bit 3
    strcpy(Decoded.sBatteryStatus, "Battery Down");
  }
  else
  {
    if (Decoded.BatteryStatus & 0x01)
    { // looking for bit 0
      strcpy(Decoded.charge, "on ");
    }
    else
      strcpy(Decoded.charge, "off");

    strcpy(Decoded.sBatteryStatus, "Charge:");
    strncat(Decoded.sBatteryStatus, Decoded.charge, 3);

    if ((Decoded.BatteryStatus >> 1) & 0x01)
    { // looking for bit 1
      strcpy(Decoded.discharge, "on ");
    }
    else
      strcpy(Decoded.discharge, "off");

    strncat(Decoded.sBatteryStatus, " Discharge:", 12);
    strncat(Decoded.sBatteryStatus, Decoded.discharge, 3);

    if ((Decoded.BatteryStatus >> 2) & 0x01)
    { // looking for bit 2
      strcpy(Decoded.balance, "on ");
    }
    else
      strcpy(Decoded.charge, "off");

    strncat(Decoded.sBatteryStatus, " Balance:", 10);
    strncat(Decoded.sBatteryStatus, Decoded.balance, 3);
  }

  break;`

@testpaul999
Copy link
Author

Danke für den Tipp.
Grüße

@shining-man
Copy link
Owner

@gropi75 Ich habe folgendes Protokoll, das hoffentlich stimmt. So ganz sicher bin ich mir da nicht immer...
http://www.jk-bms.com/Upload/2022-05-19/1621104621.pdf

@gropi75
Copy link

gropi75 commented Mar 20, 2023

Ich habe das gleiche Dokument bei mir bzw. habe mpp-solar verwendet. Inhaltlich passen sie zueinander.
Ich hatte Probleme mit dem 0xB6 - System Working hours. Sonst passt die Beschreibung ganz gut.

@shining-man
Copy link
Owner

Is implemented in the current master branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants