kann die fehlermeldung nicht posten...kommt immer firewall fehler
dann jetzt ebend als screenshot. was mach ich falsch? warum versucht er erst gar nicht die bt verbindung aufzubauen? bezeichnung stimmt
Wie bekomm ich die MQTT Daten vom ESP32 in meine InfluxDB.
Habe Telegraf auf meinem Raspberry....
Hat einer die Daten aus dem ESP schon in Influx geschrieben ? Wenn ja kann mir einer dabei helfen...
MFG
Schau dir einmal den BSC an, da kannst du alles über eine Weboberfläche eisntellen und musst nichts im code ändern.
https://github.com/shining-man/bsc_fw
https://www.akkudoktor.net/forum/open-source-software-projekte/projektvorstellung-battery-safety-controller
Das JK-BMS wird im letzten Release noch nicht unterstützt, aber in der aktuellen Testversion. Die findest du auf dem BSC Discord-Channel.
https://discord.gg/bPK2HeYhEv
Hallo Ich kann mein JK-BMS nun per Bluetooth auslesen und die Daten per Mqtt von meinem ESP32 an den IOBroker zu meinem Raspberry senden. Dort speicher ich die Daten in meiner Influx DB. Alles gut soweit. Leider möchte ich gerne die Werte so übermittelt bekommen:
jkbms/Batterie/Spannung_Zelle_01 3.305 jkbms/Batterie/Spannung_Zelle_02 3.305 jkbms/Batterie/Spannung_Zelle_03 3.305 jkbms/Batterie/Spannung_Zelle_04 3.305 jkbms/Batterie/Spannung_Zelle_05 3.305 jkbms/Batterie/Spannung_Zelle_06 3.305 jkbms/Batterie/Spannung_Zelle_07 3.306 jkbms/Batterie/Spannung_Zelle_08 3.305 jkbms/Batterie/Spannung_Zelle_09 3.300 jkbms/Batterie/Spannung_Zelle_10 3.305 jkbms/Batterie/Spannung_Zelle_11 3.306 jkbms/Batterie/Spannung_Zelle_12 3.304 jkbms/Batterie/Spannung_Zelle_13 3.305 jkbms/Batterie/Spannung_Zelle_14 3.305 jkbms/Batterie/Spannung_Zelle_15 3.306 jkbms/Batterie/Spannung_Zelle_16 3.305 jkbms/Batterie/BatSpannung 52.881 jkbms/Service/SpannungDiff 0.004 jkbms/Service/TempBMS 23.100 jkbms/Service/Temp1 24.700 jkbms/Service/Temp2 25.000 jkbms/Batterie/BatLeistung 398.036 jkbms/Service/Charge_Current -7.527 jkbms/Service/SOC 81 jkbms/Service/Ladezyklen 33 jkbms/Service/Balance_Current 0.000 jkbms/Uptime/Sekunde 9 jkbms/Uptime/Minuten 49 jkbms/Uptime/Stunden 12 jkbms/Uptime/Tage 160 jkbms/Data/Charge on jkbms/Data/Discharge on jkbms/BLEconnection connected jkbms/status online
Dafür habe ich von der BLE_client_V3.6b die Mqtt.info datei so angepasst:
String willTopic = mqttname + "/status"; #define willMessage "offline" byte willQoS = 0; boolean willRetain = true; boolean reconnect(){ String topic2 = mqttname + "/BLEconnection"; if (client.connect(mqttname.c_str(), mqtt_username, mqtt_passwort, willTopic.c_str(), willQoS, willRetain, willMessage)) { // Once connected, publish an announcement... if(millis() < 20000) { client.publish(topic2.c_str(),"Startup"); } topic2 = mqttname + "/parameter/debugging_aktive"; client.subscribe(topic2.c_str()); topic2 = mqttname + "/parameter/debugging_Full_Log_aktive"; client.subscribe(topic2.c_str()); //debug_flg_full_log topic2 = mqttname + "/status"; client.publish(topic2.c_str(),"online"); if(debug_flg) { Serial.println("MQTT reconnected!"); } } else { if(debug_flg) { Serial.println("MQTT connection failed!"); } } return client.connected(); } void Data_publish() { String cellStr; String topic; String cellVoltageBaseTopic = mqttname + "/Batterie/Spannung_Zelle_"; for(uint8_t i=0; i<16; i++) { cellStr = String(cellVoltage[i],3); if(i<9) topic = cellVoltageBaseTopic + String("0") + String(i+1); else topic = cellVoltageBaseTopic + String(i+1); if(cellVoltage[i] != 0) { client.publish(topic.c_str(), cellStr.c_str()); } } cellStr = String(Battery_Voltage,3); topic = mqttname + "/Batterie/BatSpannung"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Delta_Cell_Voltage,3); topic = mqttname + "/Service/SpannungDiff"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(MOS_Temp,3); topic = mqttname + "/Service/TempBMS"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Battery_T1,3); topic = mqttname + "/Service/Temp1"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Battery_T2,3); topic = mqttname + "/Service/Temp2"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Battery_Power,3); topic = mqttname + "/Batterie/BatLeistung"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Charge_Current,3); topic = mqttname + "/Service/Charge_Current"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Percent_Remain); topic = mqttname + "/Service/SOC"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(Cycle_Count); topic = mqttname + "/Service/Ladezyklen"; client.publish(topic.c_str(),cellStr.c_str()); // Capacity_Remain // Nominal_Capacity // Capacity_Cycle cellStr = String(Balance_Curr,3); topic = mqttname + "/Service/Balance_Current"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(sec); topic = mqttname + "/Uptime/Sekunde"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(mi); topic = mqttname + "/Uptime/Minuten"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(hr); topic = mqttname + "/Uptime/Stunden"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(days); topic = mqttname + "/Uptime/Tage"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(charge); topic = mqttname + "/Data/Charge"; client.publish(topic.c_str(),cellStr.c_str()); cellStr = String(discharge); topic = mqttname + "/Data/Discharge"; client.publish(topic.c_str(),cellStr.c_str());
Leider Werden die Daten immer noch so in meiner Datenbank geschrieben:
mqtt.0.BMS_Watchdog.status mqtt.0.Data.Balance_Current mqtt.0.Data.Battery_Power mqtt.0.Data.Battery_T1 mqtt.0.Data.Battery_T2 mqtt.0.Data.Battery_Voltage mqtt.0.Data.Charge mqtt.0.Data.Charge_Current mqtt.0.Data.Cycle_Count mqtt.0.Data.Delta_Cell_Voltage mqtt.0.Data.Discharge mqtt.0.Data.MOS_Temp mqtt.0.Data.Percent_Remain mqtt.0.Data.Zelle_01 mqtt.0.Data.Zelle_02 mqtt.0.Data.Zelle_03 mqtt.0.Data.Zelle_04 mqtt.0.Data.Zelle_05 mqtt.0.Data.Zelle_06 mqtt.0.Data.Zelle_07 mqtt.0.Data.Zelle_08 mqtt.0.Data.Zelle_09 mqtt.0.Data.Zelle_10 mqtt.0.Data.Zelle_11 mqtt.0.Data.Zelle_12 mqtt.0.Data.Zelle_13 mqtt.0.Data.Zelle_14 mqtt.0.Data.Zelle_15 mqtt.0.Data.Zelle_16 mqtt.0.Uptime.Minuten mqtt.0.Uptime.Sekunde mqtt.0.Uptime.Stunden mqtt.0.Uptime.TageKann man das evtl. anpassen das ich measurements werte wie Service - Batterie usw wie oben geschrieben erhalten kann ?
Vielen Dank Vorab
Sralus
Hallo
Ich hoffe es ist noch alles uptodate ?
Also ich habe ein neues JKBMS bekommen B2A20S20P
in der const char* Geraetename = "JK-B2A20S20P"; musste es schonmal so geändert werden damit sich das ESP mit dem JK über bluetooth verbindet:
Habe deine 742mal die 96=11923-JKBMS_BLE_connection auf mein ESP32 geflasht.
{"Cell":{"0":3.409,"1":3.408,"2":3.407,"3":3.407,"4":3.406,"5":3.407,"6":3.408,"7":3.408,"8":3.408,"9":3.407,"10":3.407,"11":3.406,"12":3.407,"13":3.406,"14":3.407,"15":3.407},"Battery":{"Battery_Voltage":0.000,"Delta_Cell_Voltage":0.000,"MOS_Temp":0.000,"Battery_T1":0.000,"Battery_T2":0.000,"Battery_Power":0.000,"Charge_Current":0.000,"Percent_Remain":0,"Cycle_Count":455,"Balance_Current":0.000,"Uptime_Sec":27,"Uptime_Min":9,"Uptime_Hr":20,"Uptime_Day":185,"Charge":"off","Discharge":"off"}}
Über Die App auf meinem Iphone kann ich alle Daten auslesen.
wenn ich mich mit dem GPS Port verbinde werden auch alle daten ausgelesen ( nutze dafür Solaranzeige )
Hättest du eine Idee warum das jetzt so ist ?
Mqtt zeigt:
BMS_Publisher/Data/Zelle_01 3.409
BMS_Publisher/Data/Zelle_02 3.408
BMS_Publisher/Data/Zelle_03 3.407
BMS_Publisher/Data/Zelle_04 3.407
BMS_Publisher/Data/Zelle_05 3.407
BMS_Publisher/Data/Zelle_06 3.408
BMS_Publisher/Data/Zelle_07 3.407
BMS_Publisher/Data/Zelle_08 3.408
BMS_Publisher/Data/Zelle_09 3.408
BMS_Publisher/Data/Zelle_10 3.407
BMS_Publisher/Data/Zelle_11 3.407
BMS_Publisher/Data/Zelle_12 3.406
BMS_Publisher/Data/Zelle_13 3.407
BMS_Publisher/Data/Zelle_14 3.406
BMS_Publisher/Data/Zelle_15 3.406
BMS_Publisher/Data/Zelle_16 3.407
BMS_Publisher/Data/Battery_Voltage 0.000
BMS_Publisher/Data/Delta_Cell_Voltage 0.000
BMS_Publisher/Data/MOS_Temp 0.000
BMS_Publisher/Data/Battery_T1 0.000
BMS_Publisher/Data/Battery_T2 0.000
BMS_Publisher/Data/Battery_Power 0.000
BMS_Publisher/Data/Charge_Current 0.000
BMS_Publisher/Data/Percent_Remain 0
BMS_Publisher/Data/Cycle_Count 456
BMS_Publisher/Data/Balance_Current 0.000
BMS_Publisher/Uptime/Sekunde 11
BMS_Publisher/Uptime/Minuten 57
BMS_Publisher/Uptime/Stunden 1
BMS_Publisher/Uptime/Tage 185
BMS_Publisher/Data/Charge off
BMS_Publisher/Data/Discharge off
BMS_Publisher/BLEconnection connected
BMS_Publisher/status online
Vielen Dank Vorab !!
Sralus
Dieses Problem hatte ich heute auch und es ist schon auf einer früheren Seite dieser Unterhaltung zu finden. So wie ich es vertanden habe sind die neuen JK BMS statt für 24 Zellen sogar für 32 Zellen ausgelegt. Dadurch erweitert sich der Speicher-Ardessbereich, und die Adresswerte "xxx" bei receivedBytes_main[xxx] müssen nach den single Zell Spannungsabfragen alle um 32!!! erhöht werden.
Ich habe das schon mal realiesiert und es wäre für viele andere hilfreich, wenn Du das komplettte Flash-File hier zur Verfügung stellst
Ich habe die "alten" Zeilen alle auskommentiert und Du siehst, dass die neuen Zahlen bei receivedBytes_main alle um 32 höher sind.
Aber es sind leider immer noch nicht alle Werte richtig. So zeigt z.B. die Delta_Cell_Voltage beim Handy 0,010V und über Mqtt 0,051V. Viele andere Werte sind aber ok
Also, irgendwie blicke ich langsam nicht mehr ganz durch.
Nicht zuletzt auch weil die 42 Seiten mittlerweile nicht mehr zu überblicken sind.
Ich habe mich in den letzten Tagen mit Solaranzeige + ESP32 und MQTT herumgequält und mittlerweile 2 JK BMS V11.XW dazu bekommen mit dem MQTT-Server zu reden.
Im Zuge der Versionsproblematik habe ich nun natürlich auch das Problem, dass zwar die 16 Zellen angezeigt werden, aber der Rest fehlt.
Wo finde ich denn Infos, wie das mit o.g. Script funktioniert?
Ist das jetzt für Home Assistent oder kann ich das für Solaranzeige / Graphana ebenfalls verwenden?
Viele Grüße
Jens
Dieses Video erklärt das Flashen des ESP32 (es ist die Erklärung für diese 42ig Seitige Diskussion :). Allerdings musst Du eben den Code wie oben beschrieben anpassen.
Wenn Du alles richtig gemacht hast, dann sendet das BMS per MQTT die Daten an Deinen MQTT Server:
Dieses Video erklärt das Flashen des ESP32 (es ist die Erklärung für diese 42ig Seitige Diskussion :). Allerdings musst Du eben den Code wie oben beschrieben anpassen.
Wenn Du alles richtig gemacht hast, dann sendet das BMS per MQTT die Daten an Deinen MQTT Server:
// MQTT Settingconst char* mqtt_server = "192.168.178.8"; // -> hier die IP des MQTT Server eingebenconst int mqtt_port = 1883; // -> hier den Port einstellen für den MQTT Serverconst char* mqtt_username = ""; // -> hier MQTT Benutzername eintragenconst char* mqtt_passwort = ""; // -> hier MQTT Passwort eingebenString mqttname = "BMS_Watchdog"; // -> hier wird der MQTT Gerätename festgelegtconst int mqttpublishtime_offset = 5000; //-> hier einstellen wie oft Danten gesnedet werden sollen 1000 = jede SekundeBei mir ist das ein IO Broker. Aber es kann vieles sein, was MQTT versteht. So vertehe ich das zumindest
Hi @robi_muc
vielen Dank für die Info.
Die reine Kommunikation hatte ich ja bereits hinbekommen.
Die Daten beider JK`s werden schön an den MQTT Server gesendet.Jedoch konnte bis gerade eben mit der obigen Datei nichts anfangen.
Und siehe da, ich glaube ich habe sie gefunden.
In meinem Paket heißt sie "BLE_Data_analyse.ino"
Ich glaube, jetzt könnte das was werden...Vielen Dank und viele Grüße
JensEDIT: Mit den o.a. Teil sieht das schon mal weitaus besser aus
Danke für deine Info ... habe deine Werte mal eingetragen und sie da !!
MOS_Temp 0.000 fehlt nur noch ..
jkbms/Data/Zelle_01 3.327 jkbms/Data/Zelle_02 3.327 jkbms/Data/Zelle_03 3.326 jkbms/Data/Zelle_04 3.326 jkbms/Data/Zelle_05 3.326 jkbms/Data/Zelle_06 3.327 jkbms/Data/Zelle_07 3.328 jkbms/Data/Zelle_08 3.328 jkbms/Data/Zelle_09 3.322 jkbms/Data/Zelle_10 3.328 jkbms/Data/Zelle_11 3.328 jkbms/Data/Zelle_12 3.327 jkbms/Data/Zelle_13 3.330 jkbms/Data/Zelle_14 3.328 jkbms/Data/Zelle_15 3.328 jkbms/Data/Zelle_16 3.325 jkbms/Data/Battery_Voltage 52.992 jkbms/Data/Delta_Cell_Voltage 0.051 jkbms/Data/MOS_Temp 0.000 jkbms/Data/Battery_T1 23.700 jkbms/Data/Battery_T2 23.700 jkbms/Data/Battery_Power 755.712 jkbms/Data/Charge_Current -14.202 jkbms/Data/Percent_Remain 66 jkbms/Data/Cycle_Count 1 jkbms/Data/Balance_Current 0.000 jkbms/Uptime/Sekunde 16 jkbms/Uptime/Minuten 57 jkbms/Uptime/Stunden 7 jkbms/Uptime/Tage 2 jkbms/Data/Charge on jkbms/Data/Discharge on jkbms/BLEconnection connected
Hallo,
läuft super ! Leider fehlen mir ein paar Daten !? Was muss geändert werden um meine 18 Zellen anzuzeigen und Balance on/off ?? Habe die Version 3.6 und lass mir die Daten per Mqtt auf den Iobroker senden. Dann wäre es perfekt ....Gruß Marco
Guten Morgen, nachdem ich mich nun fast durch das ganze Thema durchgearbeitet habe....und sicher etwas überlesen habe ... Mein ESP ist programmiert, funktioniert, verbindet sich sehr schnell per BT, ist im iobroker eingebunden, und wird auch angezeigt. Nur: nicht alle Daten, Zellspannungen, Zeit , funktioniert, SOC zum Beispiel nicht.
Ich habe mir eine Experimentierboard aufgebaut, mit 8 Zellen und einem JK-b2a24s15p-C . die BT Übertragung über die App funktioniert mit allen Daten. Muss ich im Script evtl noch die Zellenanzahl ändern ? Vielen Dank
ich hoffe, es ist an der richtigen Stelle im Forum