Closed testpaul999 closed 1 year ago
Guten Tag, Bitte die mqtt Meldungen um den Wert Balance-current, Status Laden, Entladen, Balance und die Temperaturwerte mit Nachkommastellen erweitern. danke
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.
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
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.
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.
Den Issue am besten so lange offen lassen, bis es erledigt ist.
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:
` 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;`
Danke für den Tipp. Grüße
@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
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.
Is implemented in the current master branch
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+2offset] << 8 | receivedBytes_main[138+2offset])0.001); } else if ((receivedBytes_main[139+2offset] & 0xF0) == 0xF0) { Balance_Curr = ((((int)receivedBytes_main[139+2offset] & 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.