Benachrichtigungen
Alles löschen

JKBMS auslesen über BLE (Bluetooth) oder RS485 Adapter mittels EPS, ioBroker

729 Beiträge
163 Benutzer
16 Likes
132.1 K Ansichten
(@henrik_79)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 16
 

Hallo

Ich habe V3.6 auf den ESP geladen.

Nach dem Booten bekommt er auch eine IP zugewiesen.

Dann bekomme ich wiederkehrend folgende Meldungen im S.Monitor.

BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
MQTT Client not connected
MQTT time for reconnect
MQTT connection failed!
MQTT reconnect Error
BLE -> Reconnecting!
BLE Advertised Device found: Name: , Address: 78:5c:65:09:0f:36, manufacturer data: 060001092002bce278ed10fdde11a20c6179e57b34a764b4df9b7a0e77
MQTT Client not connected
MQTT time for reconnect

Ich habe den Namen von dem BMS eingegeben die auch in der APP angezeigt wird.

Hier meine Anpassungen

bool debug_flg = true;
bool debug_flg_full_log = true;

//########### Settings beginnen #########

//OTA Setting
#define OTA_Hostname "JKBMS_ESP32" // -> hier ändern wenn OTA Name anders sein soll
#define OTA_Passwort "xxxxxx" // -> hier ändern wenn OTA Passwort anders sein soll

// MQTT Setting
const char* mqtt_server = ""; // -> hier die IP des MQTT Server eingeben
const int mqtt_port = 1883; // -> hier den Port einstellen für den MQTT Server
const char* mqtt_username = ""; // -> hier MQTT Benutzername eintragen
const char* mqtt_passwort = ""; // -> hier MQTT Passwort eingeben
#define mqttname "BMS_Watchdog" // -> hier wird der MQTT Gerätename festgelegt
const int mqttpublishtime_offset = 1000; //-> hier einstellen wie oft Danten gesnedet werden sollen 1000 = jede Sekunde

// CAN Settings
bool CAN_use = false; // -> true wenn ein CAN MOdul vorhanden und verwendet wird für die Paylontech simulation
const int CAN_Cylcetime = 1000;

//W-LAN Setting
const char* ssid = "XXXXXXXXX";
const char* password = "XXXXXXXX";

//BMS-BLE Settings
const char* Geraetename = "JK-BD6A20S10P"; //JK-B2A24S20P JK-B2A24S15P

Ich hoffe ihr könnt mir damit etwas helfen.

Gruß

Henrik

 

 

 


   
AntwortZitat
(@stromsparer_1)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
 

@henrik_79 Moin, ich denke der Fehler ist das du keinen MQTT Server angegeben hast. Ob der ESP sich mit dem JK per BLE verbindet hörst du auch an einem 2 maligen Piepton der vom JK ausgegeben wird. Ausserdem leuchtet dann die LED an der Unterseite dauerhaft. Wenn keine Verbindung besteht blinkt die LED. Es ist auch nur möglich eine Verbindung zur zeit aufzubauen, also wenn du denn ESP verbindest erst das Smartphone trennen.


   
AntwortZitat
(@unixtom)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 20
 

@henrik_79 

Du brauchst im Arduino nur auf Änderung oder Wert testen den Du brauchst und statt MQTT PWM. Arduino hilft dir da sogar.

 

https://www.exp-tech.de/blog/arduino-tutorial-pulsweitenmodulation-pwm

 

 


   
AntwortZitat
(@henrik_79)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 16
 

Hallo

Ich habe auch eine IP bei MQTT Server abgegeben. Die gibt es aber nicht.

Das bringt nichts an der Stelle.

Die Ganze Abfrage nach WIFI oder nach MQTT brauche ich nicht.

Am besten nur starten der Bluetooth Übertragung und auslesen der Werte.

Den ausgelesenen Wert kann ich in ein PWM Signal wandeln. Das sollte nicht das Problem sein.

 

Gruß

Henrik


   
AntwortZitat
(@stromsparer_1)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
 

@henrik_79 Kannst du die Batteriespannung nicht direkt über einen Spannungsteiler auf deine SPS geben, sind doch nur 2 Wiederstände ? Und wenn ich das richtig seheh und du 0-10V brauchst die kann der ESP eh nicht ausgeben, da kommen nur 5V max. raus.


   
AntwortZitat
Shadowblues
(@shadowblues)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 300
 

Könnt ihr mir bitte sagen welche PlugIns ihr in der Arduino IDE geladen habt damit das bei euch geht?


   
AntwortZitat
(@henrik_79)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 16
 

@stromsparer_1 

Das mache ich aktuell genau so.

Jedoch ist das sehr schlecht. Die Spannung ist schnell wieder auf einem Wert der als "Voll" gerechnet wird.

Das BMS zeigt 38% an und der AkkU hat schon 49V. Damit kann ich nicht sehr viel machen.

Gruß

Henrik


   
AntwortZitat
(@stromsparer_1)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
 

@henrik_79 Moin, jetzt verstehe ich was du vorhast. Du möchtest den Akkufüllstand in Prozent an deine SPS übergeben. Leider sind meine Arduino Kenntnisse sehr gering. Vielleicht versuchst du mal im 1. Schritt die Ansprünge für Wifi und MQTT im Programm abzuhängen (mit 2 // vorweg), dann die debug_flg_full_log auf true umschalten und nachdem du kompiliert hast mal im log zu schauen ob du Daten vom JK angezeigt bekommst.


   
AntwortZitat
(@unixtom)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 20
 

Der AKku-Stand kann anhand der Spannung nicht genau vorhergesagt werden, da die Kurve sehr Flach ist und unten und oben schnell abfällt oder ansteigt.

Der SOC wird durch das BMS berechnet. Das sind wohl komplexere Algos. Den SOC bekommt Du über Blau mitgeteilt. Hier musst Du ansetzten.

SPS hört sich schon sehr nach Industrie an. Als Firma würde ich mich nicht auf diesen Sketch verlassen. Da muss schon mehr in den Code rein.

Dies wird es dann auch nicht Gratis geben.

 


   
AntwortZitat
(@henrik_79)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 16
 

@unixtom 

Die SPS ist eine kleine Siemens LOGO die ich als Webinterface nutze um mir diverse Daten per MODBUS TCP anzeigen zu lassen.

Um mir den Akkustand auch dort anzeigen zu lassen benötige ich diese Abfrage.

Zur Not auch eine Alternative parallel zu BMS. (für 16 Zellen)

Gruß

Henrik

 


   
AntwortZitat
(@unixtom)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 20
 

Ich weiß nicht wo Dein Problem ist.

 

in BLE_client.ino   Zeile  346  wird die Funktion Data_publish aufgerufen. In dieser Funktion (Datei MQTT.ino  Zeile 79) wird der Prozentstand des Akkus an MQTT gesendet.

Die Daten selbst werden in BLE_client.ino   Zeile  340 Funktion Datenanalyse aufbereitet. Diese Funktion befindet sich in BLE_Data_analyse.ino.

Dort kannst Du ansetzten.

 


   
AntwortZitat
(@unixtom)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 20
 

Wllst DU MQTT nicht muss DU alles rausnemen was mit

client  beginnt.  z.B.  sendet über MQTT 

client.publish(topic.c_str(), "BLE_Connection_error!");
Zeile 289  bis    315. etc.
In der Funktion 

voidloop(){}
läuft das Programm im Loop ab und ruft immer wieder alle Funktionen auf.
 
 
Diese r Beitrag wurde geändert Vor 1 Jahr von unixtom

   
AntwortZitat
(@luigi)
Vorsichtiger Stromfühler
Beigetreten: Vor 4 Jahren
Beiträge: 83
 

Moin,

ich wollte zurück melden, das der ESP32 mit Version 3.6 CAN, seit ca. 24h sehr stabil die Daten im MQTT in den iobroker meldet. 
vorher hatte ich mit Version 3.4 regelmäßige Arbeitsverweigerung sller ca. 5-8h. Es kann auch am ESP liegen. Aktuell nutzte ich einen anderen aber baugleichen ESP32.

 

ein CAN Modul ist bestellt, wär dann echt klasse, wenn ich diesen in den Cerbo eingepflegt bekomme…


   
AntwortZitat
(@stromsparer_1)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 45
 

@henrik_79 

Moin, ich hab da mal was vorbereitet. Eine Version ohne alles nur mit BLE. Gerade an meinem JK getestet und läuft. Die Analogwert Ausgabe ist beim ESP32 nicht ganz so einfach, musste ich auch erstmal Googlen. Bei meinem ESP32 erfolgt die Ausgabe über GPIO 25 DAC_1. Musst du mal in deinem Pinout schauen ob das bei dir auch passt. Du musst in der BLE_client lediglich

den Namen deines JK eintragen und direkt da drunter evtl. den GPIO Pin. Die BLE_Data_analyse ist für die neue Firmware des JK. Wenn du noch die alte Version hast musst du die originale Version von Scotty89 benutzen.


   
AntwortZitat
(@luigi)
Vorsichtiger Stromfühler
Beigetreten: Vor 4 Jahren
Beiträge: 83
 

Ach was mir gerade einfällt. Kann man auch die gecyclete Kapazität und verbleibende Kapazität noch mit abrufen? 

Remain Capacity 

Cycle Capacity

Grüsse Luigi


   
AntwortZitat
Seite 35 / 49
Teilen: