Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Microcontroller
  5. JK-BMS über RS485 mit ESPHome auslesen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

JK-BMS über RS485 mit ESPHome auslesen

Geplant Angeheftet Gesperrt Verschoben Microcontroller
jk-bmsesphomearduinoiobroker
94 Beiträge 11 Kommentatoren 19.8k Aufrufe 10 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Marco 3

    @syssi
    Ich bin Mega begeistert!!! Danke Danke Danke...

    Bin aber einen ein klein wenig anderen Weg gegangen. Als Status LED, also GPIO02 war es net so dolle, ist immer an. Aber sie ist blau 🙂 also kann sie als BT Kontroll LED verwendet werden und dein Heartbeat Vorschlag ist einfach genial.

    output:
     - platform: gpio
       pin: GPIO02
       id: bluetoothled
    
    sensor:
     - platform: jk_bms_ble
       jk_bms_ble_id: bms0
    .....
       total_voltage:
         name: "${name} total voltage"
         on_value:
           then:
             - output.turn_on: bluetoothled
             - delay: 500ms
             - output.turn_off: bluetoothled
    .....
    
    
    

    Die vorhandene blaue Status LED sagt mir nun ob Daten vom BT kommen. Ich habe auch die Gegenprüfung gemacht und den ESP abgesteckt, mit Handy auf das JK drauf verbunden..... ESP angesteckt und es geht keine blaue Status LED an! Handyverbindung zum JK abgebaut.... der ESP verbindet sich automatisch auf das JK BMS und die Blaue LED blinkt.
    SUPER !!!

    Ich habe aktuell das WEB interface aktiviert und den Update Intervall auf 1s gestellt
    logging: steht auf INFO

    
    00:00:11	[I]	[jk_bms_ble:467]	
    Cell info frame (version 2, 300 bytes) received
    00:00:12	[W]	[component:214]	
    Component esp32_ble took a long time for an operation (0.24 s).
    00:00:12	[W]	[component:215]	
    Components should block for at most 20-30ms.
    00:00:13	[I]	[jk_bms_ble:467]	
    
    

    Die Message kommt aber auch, wenn ich auf 5s den Abrufintervall stelle.

    Anhand der gesehenen BMS uptime, werden aller 2s neue Sekunden gezählt, dies werde ich im io broker anzeigen lassen und weiß somit, daß es lebt.

    Ich bin voll begeistert!

    M Offline
    M Offline
    Marco 3
    schrieb am zuletzt editiert von Marco 3
    #70

    @marco-3
    Dies ist meine aktuelle Installation: nur die Sensoren:
    -am ESP32 ist die blaue LED als BT Feedback --> erfolgreicher BT Datenabruf vom JKBM , aktiviert
    -web Interface ist mit den mir wichtigen Daten aktiviert

    substitutions:
      name: bms1
      device_description: "Monitor and control a JK-BMS via bluetooth"
      external_components_source: github://syssi/esphome-jk-bms@main
      mac_address: 11:22:33:44:AA:BB
      # Defaults to "JK02" (hardware version >= 6.0 and < 11.0)
      # Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26)
      # Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0)
      protocol_version: JK02
    
    esphome:
      name: ${name}
      comment: ${device_description}
      project:
        name: "syssi.esphome-jk-bms"
        version: 1.5.0
    
    esp32:
      board: esp32dev
      framework:
        type: esp-idf
    
    external_components:
      - source: ${external_components_source}
        refresh: 0s
    
    wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password
    
    ota:
    
    web_server:   # web server aktiviert  
    
    logger:
      level: INFO  # DEBUG geht auch
    
    # If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component!
    # api:
    
    mqtt:
      broker: !secret mqtt_host
      username: !secret mqtt_username
      password: !secret mqtt_password
      port: !secret mqtt_port
      discovery: false   # weniger Ordner im iobroker MQTT Ordner (esphome und homeassiant fehlen dann)
    
    esp32_ble_tracker:
      on_ble_advertise:
        then:
          - lambda: |-
              if (x.get_name().rfind("JK-", 0) == 0) {
                ESP_LOGI("ble_adv", "New JK-BMS found");
                ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
                ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
                ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
                for (auto uuid : x.get_service_uuids()) {
                  ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
                }
              }
    
    ble_client:
      - mac_address: ${mac_address}
        id: client0
    
    jk_bms_ble:
      - ble_client_id: client0
        protocol_version: ${protocol_version}
        throttle: 1s # BMS BT Datensatz Auswertung aller ...Sekunden
        id: bms0
    
    output:       # BT soll auf die status LED gelegt werden
      - platform: gpio
        pin: GPIO2
        id: bluetoothled
    
    sensor:
      - platform: jk_bms_ble
        jk_bms_ble_id: bms0
        min_cell_voltage:
          name: "${name} min cell voltage"
        max_cell_voltage:
          name: "${name} max cell voltage"
        min_voltage_cell:
          name: "${name} min voltage cell"
        max_voltage_cell:
          name: "${name} max voltage cell"
        delta_cell_voltage:
          name: "${name} delta cell voltage"
        average_cell_voltage:
          name: "${name} average cell voltage"
        cell_voltage_1:
          name: "${name} cell voltage 1"
        cell_voltage_2:
          name: "${name} cell voltage 2"
        cell_voltage_3:
          name: "${name} cell voltage 3"
        cell_voltage_4:
          name: "${name} cell voltage 4"
        cell_voltage_5:
          name: "${name} cell voltage 5"
        cell_voltage_6:
          name: "${name} cell voltage 6"
        cell_voltage_7:
          name: "${name} cell voltage 7"
        cell_voltage_8:
          name: "${name} cell voltage 8"
        cell_voltage_9:
          name: "${name} cell voltage 9"
        cell_voltage_10:
          name: "${name} cell voltage 10"
        cell_voltage_11:
          name: "${name} cell voltage 11"
        cell_voltage_12:
          name: "${name} cell voltage 12"
        cell_voltage_13:
          name: "${name} cell voltage 13"
        cell_voltage_14:
          name: "${name} cell voltage 14"
        cell_voltage_15:
          name: "${name} cell voltage 15"
        cell_voltage_16:
          name: "${name} cell voltage 16"
        cell_resistance_1:
          name: "${name} cell resistance 1"
        cell_resistance_2:
          name: "${name} cell resistance 2"
        cell_resistance_3:
          name: "${name} cell resistance 3"
        cell_resistance_4:
          name: "${name} cell resistance 4"
        cell_resistance_5:
          name: "${name} cell resistance 5"
        cell_resistance_6:
          name: "${name} cell resistance 6"
        cell_resistance_7:
          name: "${name} cell resistance 7"
        cell_resistance_8:
          name: "${name} cell resistance 8"
        cell_resistance_9:
          name: "${name} cell resistance 9"
        cell_resistance_10:
          name: "${name} cell resistance 10"
        cell_resistance_11:
          name: "${name} cell resistance 11"
        cell_resistance_12:
          name: "${name} cell resistance 12"
        cell_resistance_13:
          name: "${name} cell resistance 13"
        cell_resistance_14:
          name: "${name} cell resistance 14"
        cell_resistance_15:
          name: "${name} cell resistance 15"
        cell_resistance_16:
          name: "${name} cell resistance 16"
        total_voltage:
          name: "${name} total voltage"
          on_value:
            then:
              - output.turn_on: bluetoothled
              - delay: 500ms
              - output.turn_off: bluetoothled
        current:
          name: "${name} current"
        power:
          name: "${name} power"
        charging_power:
          name: "${name} charging power"
        discharging_power:
          name: "${name} discharging power"
        temperature_sensor_1:
          name: "${name} temperature sensor 1"
        temperature_sensor_2:
          name: "${name} temperature sensor 2"
        power_tube_temperature:
          name: "${name} power tube temperature"
        state_of_charge:
          name: "${name} state of charge"
        capacity_remaining:
          name: "${name} capacity remaining"
        total_battery_capacity_setting:
          name: "${name} total battery capacity setting"
        charging_cycles:
          name: "${name} charging cycles"
        total_charging_cycle_capacity:
          name: "${name} total charging cycle capacity"
        total_runtime:
          name: "${name} total runtime"
        balancing_current:
          name: "${name} balancing current"
        errors_bitmask:
          name: "${name} errors bitmask"
    
    text_sensor:
      - platform: jk_bms_ble
        errors:
          name: "${name} errors"
        total_runtime_formatted:
          name: "${name} total runtime formatted"
    
    # status_led:     # status LED On-Board 
    #  pin:
    #    number: GPIO2
    #    inverted: true
    

    die mit

    !secret
    

    versehenen Daten müsst ihr im Secrets Ordner pflegen

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      Marco 3
      schrieb am zuletzt editiert von
      #71

      Und wieder eine Frage.
      Wie kann ich die Struktur der MQTT Daten anpassen, so daß diese nicht in einzelnen Ordnern einlaufen.
      so hätte ich es gern:

      7ab52e38-4a70-45fa-8583-eb451b90ed85-image.png

      so ist es aktuell:
      080428fb-907f-4c5e-a24d-db62874247a2-image.png

      syssiS 1 Antwort Letzte Antwort
      0
      • M Marco 3

        Und wieder eine Frage.
        Wie kann ich die Struktur der MQTT Daten anpassen, so daß diese nicht in einzelnen Ordnern einlaufen.
        so hätte ich es gern:

        7ab52e38-4a70-45fa-8583-eb451b90ed85-image.png

        so ist es aktuell:
        080428fb-907f-4c5e-a24d-db62874247a2-image.png

        syssiS Offline
        syssiS Offline
        syssi
        schrieb am zuletzt editiert von
        #72

        Sowas habe ich noch nie gemacht. Ich befürchte, dass es die YAML sehr unleserlich macht. Du wirst pro Sensor/Entität sog. Overrides der entsprechenden Eigenschaften ergänzen müssen. Hier die Dokumentation: https://esphome.io/components/mqtt.html#mqtt-component-base-configuration

        Hier eine Vermutung, wie es dann pro Sensor aussehen würde (ungetestet!):

        sensor:
          - platform: jk_bms_ble
            jk_bms_ble_id: bms0
            min_cell_voltage:
              name: "${name} min cell voltage"
              state_topic: bms1_min_cell_voltage
        
        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          Marco 3
          schrieb am zuletzt editiert von Marco 3
          #73

          Ich möchte euch hier meine Umsetzung veröffentlichen.
          Vielen vielen Dank an syssi !!! ohne dich wäre das alles nix geworden.

          Ich hab das web Interface aktiviert um alles zu sehen was geht... letztlich werden dann bei mir durch # alles über das Web Interface verstellbaren Buttons etc. deaktiiviert.

          aber so sieht es aus wenn alles "scharf" ist
          8e074011-8493-403a-9dd1-29f67b9a72c0-image.png

          yaml File, dafür solltet ihr im HomeAssistand den Secrets Ordner pflegen.

          wifi:
            ssid: !secret wifi_ssid
            password: !secret wifi_password
          
          mqtt:
            broker: !secret mqtt_host
            username: !secret mqtt_username
            password: !secret mqtt_password
            port: !secret mqtt_port
            discovery: false   # weniger Ordner im iobroker MQTT Ordner (esphome und homeassiant fehlen dann)
          

          d654da35-3d0e-4b7d-9a46-19ad9a376d34-image.png

          iobroker Typisch

          # Your Wi-Fi SSID and password
          wifi_ssid: "deine Daten"
          wifi_password: "deine Daten"
          mqtt_host: "deine IP"
          mqtt_username: "mqttuser"
          mqtt_password: "deine Daten"
          mqtt_port: "1883"
          

          Kleiner Tip, um Kompilierungsfehler Fehler zu vermeiden, "clean Build Files" löst sehr oft die Felhler, vor allem, wenn man mit # erst Teile nach der ersten Kompilierung deaktiviert.

          meine Konfiguration (nicht deaktivierte Button, usw.) aber für den ESP32 D1 Mini die aktivierte LED mit dem Blinkfeedback für BT Daten

          substitutions:
            name: bms1
            device_description: "Monitor and control a JK-BMS via bluetooth"
            external_components_source: github://syssi/esphome-jk-bms@main
            mac_address: aa:bb:cc:dd:ee:ff
            # Defaults to "JK02" (hardware version >= 6.0 and < 11.0)
            # Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26)
            # Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0)
            protocol_version: JK02
           
          esphome:
            name: ${name}
            comment: ${device_description}
            project:
              name: "syssi.esphome-jk-bms"
              version: 1.5.0
           
          esp32:
            board: wemos_d1_mini32
            framework:
              type: esp-idf
           
          external_components:
            - source: ${external_components_source}
              refresh: 0s
           
           
          web_server:   # web server aktiviert  
           
          logger:      
            level: INFO  # DEBUG geht auch
           
          # If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component!
          # Enable Home Assistant API
          api:
          
          ota:
          
          wifi:
            ssid: !secret wifi_ssid
            password: !secret wifi_password
          
          mqtt:
            broker: !secret mqtt_host
            username: !secret mqtt_username
            password: !secret mqtt_password
            port: !secret mqtt_port
            discovery: false   # weniger Ordner im iobroker MQTT Ordner (esphome und homeassiant fehlen dann)
           
          esp32_ble_tracker:
            on_ble_advertise:
              then:
                - lambda: |-
                    if (x.get_name().rfind("JK-", 0) == 0) {
                      ESP_LOGI("ble_adv", "New JK-BMS found");
                      ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
                      ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
                      ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
                      for (auto uuid : x.get_service_uuids()) {
                        ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
                      }
                    }
           
          ble_client:
            - mac_address: ${mac_address}
              id: client0
           
          jk_bms_ble:
            - ble_client_id: client0
              protocol_version: ${protocol_version}
              throttle: 1s # BMS BT Datensatz Auswertung aller ...Sekunden (JK sendet aller 1s)
              id: bms0
           
          output:       # BT soll auf die status LED gelegt werden
            - platform: gpio
              pin: GPIO2
              id: bluetoothled
          
          button:
            - platform: jk_bms_ble
              retrieve_settings:
                name: "${name} retrieve settings"
              retrieve_device_info:
                name: "${name} retrieve device info"
          
          number:
            - platform: jk_bms_ble
              jk_bms_ble_id: bms0
              balance_trigger_voltage:
                name: "${name} balance trigger voltage"
              cell_count:
                name: "${name} cell count"
              total_battery_capacity:
                name: "${name} total battery capacity"
              cell_voltage_overvoltage_protection:
                name: "${name} cell voltage overvoltage protection"
              cell_voltage_overvoltage_recovery:
                name: "${name} cell voltage overvoltage recovery"
              cell_voltage_undervoltage_protection:
                name: "${name} cell voltage undervoltage protection"
              cell_voltage_undervoltage_recovery:
                name: "${name} cell voltage undervoltage recovery"
              balance_starting_voltage:
                name: "${name} balance starting voltage"
              voltage_calibration:
                name: "${name} voltage calibration"
              current_calibration:
                name: "${name} current calibration"
              power_off_voltage:
                name: "${name} power off voltage"
              max_balance_current:
                name: "${name} max balance current"
              max_charge_current:
                name: "${name} max charge current"
              max_discharge_current:
                name: "${name} max discharge current"
                
          sensor:
            - platform: jk_bms_ble
              jk_bms_ble_id: bms0
              min_cell_voltage:
                name: "${name} min V Zelle"
              max_cell_voltage:
                name: "${name} max V Zelle"
              min_voltage_cell:
                name: "${name} min V Zelle Nr."
              max_voltage_cell:
                name: "${name} max V Zelle Nr."
              delta_cell_voltage:
                name: "${name} delta Zelle Volt"
              average_cell_voltage:
                name: "${name} average Zelle Volt"
              cell_voltage_1:
                name: "${name} Zelle 01"
              cell_voltage_2:
                name: "${name} Zelle 02"
              cell_voltage_3:
                name: "${name} Zelle 03"
              cell_voltage_4:
                name: "${name} Zelle 04"
              cell_voltage_5:
                name: "${name} Zelle 05"
              cell_voltage_6:
                name: "${name} Zelle 06"
              cell_voltage_7:
                name: "${name} Zelle 07"
              cell_voltage_8:
                name: "${name} Zelle 08"
              cell_voltage_9:
                name: "${name} Zelle 09"
              cell_voltage_10:
                name: "${name} Zelle 10"
              cell_voltage_11:
                name: "${name} Zelle 11"
              cell_voltage_12:
                name: "${name} Zelle 12"
              cell_voltage_13:
                name: "${name} Zelle 13"
              cell_voltage_14:
                name: "${name} Zelle 14"
              cell_voltage_15:
                name: "${name} Zelle 15"
              cell_voltage_16:
                name: "${name} Zelle 16"
              cell_resistance_1:
                name: "${name} Widerstand 01"
              cell_resistance_2:
                name: "${name} Widerstand 02"
              cell_resistance_3:
                name: "${name} Widerstand 03"
              cell_resistance_4:
                name: "${name} Widerstand 04"
              cell_resistance_5:
                name: "${name} Widerstand 05"
              cell_resistance_6:
                name: "${name} Widerstand 06"
              cell_resistance_7:
                name: "${name} Widerstand 07"
              cell_resistance_8:
                name: "${name} Widerstand 08"
              cell_resistance_9:
                name: "${name} Widerstand 09"
              cell_resistance_10:
                name: "${name} Widerstand 10"
              cell_resistance_11:
                name: "${name} Widerstand 11"
              cell_resistance_12:
                name: "${name} Widerstand 12"
              cell_resistance_13:
                name: "${name} Widerstand 13"
              cell_resistance_14:
                name: "${name} Widerstand 14"
              cell_resistance_15:
                name: "${name} Widerstand 15"
              cell_resistance_16:
                name: "${name} Widerstand 16"
              total_voltage:
                name: "${name} total Volt"
                on_value:
                  then:
                    - output.turn_on: bluetoothled      # BT LED blinken bei erfolgreich gelesenem Datensatz
                    - delay: 500ms
                    - output.turn_off: bluetoothled
              current:
                name: "${name} Strom"
              power:
                name: "${name} Leistung"
              charging_power:
                name: "${name} Ladeleistung"
              discharging_power:
                name: "${name} Entladeleistung"
              temperature_sensor_1:
                name: "${name} Temperatur 1"
              temperature_sensor_2:
                name: "${name} Temperatur 2"
              power_tube_temperature:
                name: "${name} Temperatur BMS"
              state_of_charge:
                name: "${name} SoC"
              capacity_remaining:
                name: "${name} Kapazität verbleibend"
              total_battery_capacity_setting:
                name: "${name} total battery capacity setting"
              charging_cycles:
                name: "${name} Ladezyklen"
              total_charging_cycle_capacity:
                name: "${name} Gesamtladezykluskapazität"
              total_runtime:
                name: "${name} Gesamtlaufzeit"
              balancing_current:
                name: "${name} Balancer Strom"
              errors_bitmask:
                name: "${name} errors bitmask"
          
          switch:
            - platform: jk_bms_ble
              charging:
                name: "${name} charging"
              discharging:
                name: "${name} discharging"
              balancer:
                name: "${name} balancer"
                
            - platform: ble_client
              ble_client_id: client0
              name: "${name} enable bluetooth connection"
          
          text_sensor:
            - platform: jk_bms_ble
              errors:
                name: "${name} errors"
              total_runtime_formatted:
                name: "${name} total runtime formatted"
          

          Hier noch die IOBROKER MQTT Einstellunge, da wie syssi schon gesagt hat, Fehler auftreten können, wenn der ioboker zu gesprächig ist.

          5f9a9991-c2e1-42ed-b17b-0bfd37db156b-image.png

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marco 3
            schrieb am zuletzt editiert von Marco 3
            #74

            Moin zusammen, ich hab jetzt 16 Dallas Temperatur Sensoren noch an des ESP mit angeschlossen.

            https://forum.iobroker.net/post/1128390

            Quasie kam mir dann in die Idee auch noch diese Temperatur Sensoren mit in den BT ESP zu integrieren.

            3 Fragen oder "Nice to have" habe ich noch.

            • Kann man die BT-Signal Qualität mit abfragen und anzeigen, wie mit dem WIFI Signal?

            • Umrechnung der Uptime des ESP in Tage, Min, Stunden.... --> dies führt bei mir immer zu einer -
              lamda- Fehlermeldung (Zeile 134-151) -> Im Testaufbau auf einem anderen ESP (nur die Temp Sensoren hat es funktioniert) Danke @klassisch ) --> -lambda -Fehlermeldung kommt an Ende .......

            • @syssi protocoll_version musste ich nun auf JK02_24S ändern, heißt das jetzt auch das da beim kompilieren die syssi JK-bms Version 2.0 installiert wurde und ich project: version von 1.5.0 auf 2.0.0 ändern kann sollte

            substitutions:
              name: bms1-t
              device_description: "Monitor and control a JK-BMS via bluetooth"
              external_components_source: github://syssi/esphome-jk-bms@main
              mac_address: C8:47:8C:E5:BA:51
              # Defaults to "JK02" (hardware version >= 6.0 and < 11.0)
              # Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26)
              # Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0)
              protocol_version: JK02_24S
             
            esphome:
              name: ${name}
              comment: ${device_description}
              project:
                name: "syssi.esphome-jk-bms"
                version: 1.5.0
             
            esp32:
              board: wemos_d1_mini32
              framework:
                type: esp-idf
             
            external_components:
              - source: ${external_components_source}
                refresh: 0s
             
             
            web_server:   # web server aktiviert  
             
            logger:       # deaktiviert 
              level: INFO  # DEBUG geht auch
             
            # If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component!
            # Enable Home Assistant API
            api:
              reboot_timeout: 43200min
            ota:
            
            wifi:
              ssid: !secret wifi_ssid
              password: !secret wifi_password
            
            mqtt:
              broker: !secret mqtt_host
              username: !secret mqtt_username
              password: !secret mqtt_password
              port: !secret mqtt_port
              discovery: false   # weniger Ordner im iobroker MQTT Ordner (esphome und homeassiant fehlen dann)
             
            esp32_ble_tracker:
              on_ble_advertise:
                then:
                  - lambda: |-
                      if (x.get_name().rfind("JK-", 0) == 0) {
                        ESP_LOGI("ble_adv", "New JK-BMS found");
                        ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
                        ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
                        ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
                        for (auto uuid : x.get_service_uuids()) {
                          ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
                        }
                      }
             
            ble_client:
              - mac_address: ${mac_address}
                id: client0
             
            jk_bms_ble:
              - ble_client_id: client0
                protocol_version: ${protocol_version}
                throttle: 1s # BMS BT Datensatz Auswertung aller ...Sekunden (JK sendet aller 1s)
                id: bms0
             
            output:       # BT soll auf die status LED gelegt werden
              - platform: gpio
                pin: GPIO2
                id: bluetoothled
            
            # button:
            #  - platform: jk_bms_ble
            #    retrieve_settings:
            #      name: "${name} retrieve settings"
            #    retrieve_device_info:
            #      name: "${name} retrieve device info"
            
            # number:
            #  - platform: jk_bms_ble
            #    jk_bms_ble_id: bms0
            #    balance_trigger_voltage:
            #      name: "${name} balance trigger voltage"
            #    cell_count:
            #     name: "${name} cell count"
            #    total_battery_capacity:
            #      name: "${name} total battery capacity"
            #    cell_voltage_overvoltage_protection:
            #      name: "${name} cell voltage overvoltage protection"
            #    cell_voltage_overvoltage_recovery:
            #      name: "${name} cell voltage overvoltage recovery"
            #    cell_voltage_undervoltage_protection:
            #      name: "${name} cell voltage undervoltage protection"
            #    cell_voltage_undervoltage_recovery:
            #      name: "${name} cell voltage undervoltage recovery"
            #    balance_starting_voltage:
            #      name: "${name} balance starting voltage"
            #    voltage_calibration:
            #      name: "${name} voltage calibration"
            #    current_calibration:
            #      name: "${name} current calibration"
            #    power_off_voltage:
            #      name: "${name} power off voltage"
            #    max_balance_current:
            #      name: "${name} max balance current"
            #    max_charge_current:
            #      name: "${name} max charge current"
            #    max_discharge_current:
            #      name: "${name} max discharge current"
            
            dallas:
              - pin: GPIO16
            #    id: hub_1
            #  - pin: GPIO17
            #    id: hub_2
                update_interval: 5s
            
            sensor:
              - platform: wifi_signal
                name: "POW WiFi Signal"
                update_interval: 60s
            
              - platform: uptime
                name: Uptime Sensor
                id: uptime_sensor
                update_interval: 10s 
            #    on_raw_value:
            #      then:
            #        - text_sensor.template.publish:
            #            id: uptime_human
            #            state: !lambda |-
            #              int seconds = round(id(uptime_sensor).raw_state);
            #              int days = seconds / (24 * 3600);
            #              seconds = seconds % (24 * 3600);
            #              int hours = seconds / 3600;
            #              seconds = seconds % 3600;
            #              int minutes = seconds /  60;
            #              seconds = seconds % 60;
            #              return (
            #                (days ? String(days) + "d " : "") +
            #                (hours ? String(hours) + "h " : "") +
            #                (minutes ? String(minutes) + "m " : "") +
            #                (String(seconds) + "s")
            #              ).c_str(); 
            
              - platform: dallas
                address: 0xc10000003cd4d028
                name: "Temperatur 01"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0xc10000003cd4d028
                name: "Temperatur 01"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x340000003cf37028
                name: "Temperatur 02"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x090000003ddaac28 
                name: "Temperatur 03"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0xb00000003e281228 
                name: "Temperatur 04"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x950000003d64ca28 
                name: "Temperatur 05"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0xcc0000003cbcea28 
                name: "Temperatur 06"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x630000003e244628 
                name: "Temperatur 07"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0xde0000003ccfde28 
                name: "Temperatur 08"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x550000003e3eb128 
                name: "Temperatur 09"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x3a0000003dbdd928 
                name: "Temperatur 10"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x380000003da7b928 
                name: "Temperatur 11"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x5e0000003e4ccd28 
                name: "Temperatur 12"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x9c0000003ccdad28 
                name: "Temperatur 13"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x660000003d16bd28 
                name: "Temperatur 14"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x500000003e37c328 
                name: "Temperatur 15"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
              - platform: dallas
                address: 0x820000003e235328 
                name: "Temperatur 16"
                unit_of_measurement: "°C"
                accuracy_decimals: 1
            
              - platform: jk_bms_ble
                jk_bms_ble_id: bms0
                min_cell_voltage:
                  name: "min V Zelle"
                max_cell_voltage:
                  name: "max V Zelle"
                min_voltage_cell:
                  name: "min V Zelle Nr."
                max_voltage_cell:
                  name: "max V Zelle Nr."
                delta_cell_voltage:
                  name: "delta Zelle Volt"
                average_cell_voltage:
                  name: "average Zelle Volt"
                cell_voltage_1:
                  name: "Zelle 01"
                cell_voltage_2:
                  name: "Zelle 02"
                cell_voltage_3:
                  name: "Zelle 03"
                cell_voltage_4:
                  name: "Zelle 04"
                cell_voltage_5:
                  name: "Zelle 05"
                cell_voltage_6:
                  name: "Zelle 06"
                cell_voltage_7:
                  name: "Zelle 07"
                cell_voltage_8:
                  name: "Zelle 08"
                cell_voltage_9:
                  name: "Zelle 09"
                cell_voltage_10:
                  name: "Zelle 10"
                cell_voltage_11:
                  name: "Zelle 11"
                cell_voltage_12:
                  name: "Zelle 12"
                cell_voltage_13:
                  name: "Zelle 13"
                cell_voltage_14:
                  name: "Zelle 14"
                cell_voltage_15:
                  name: "Zelle 15"
                cell_voltage_16:
                  name: "Zelle 16"
                cell_resistance_1:
                  name: "Widerstand 01"
                cell_resistance_2:
                  name: "Widerstand 02"
                cell_resistance_3:
                  name: "Widerstand 03"
                cell_resistance_4:
                  name: "Widerstand 04"
                cell_resistance_5:
                  name: "Widerstand 05"
                cell_resistance_6:
                  name: "Widerstand 06"
                cell_resistance_7:
                  name: "Widerstand 07"
                cell_resistance_8:
                  name: "Widerstand 08"
                cell_resistance_9:
                  name: "Widerstand 09"
                cell_resistance_10:
                  name: "Widerstand 10"
                cell_resistance_11:
                  name: "Widerstand 11"
                cell_resistance_12:
                  name: "Widerstand 12"
                cell_resistance_13:
                  name: "Widerstand 13"
                cell_resistance_14:
                  name: "Widerstand 14"
                cell_resistance_15:
                  name: "Widerstand 15"
                cell_resistance_16:
                  name: "Widerstand 16"
                total_voltage:
                  name: "total Volt"
                  on_value:
                    then:
                      - output.turn_on: bluetoothled      # BT LED blinken bei erfolgreich gelesenem Datensatz
                      - delay: 500ms
                      - output.turn_off: bluetoothled
                current:
                  name: "Strom"
                power:
                  name: "Leistung"
                charging_power:
                  name: "Ladeleistung"
                discharging_power:
                  name: "Entladeleistung"
                temperature_sensor_1:
                  name: "JK Temperatur 1"
                temperature_sensor_2:
                  name: "JK Temperatur 2"
                power_tube_temperature:
                  name: "Temperatur BMS"
                state_of_charge:
                  name: "SoC"
                capacity_remaining:
                  name: "Kapazität verbleibend"
                total_battery_capacity_setting:
                  name: "total battery capacity setting"
                charging_cycles:
                  name: "Ladezyklen"
                total_charging_cycle_capacity:
                  name: "Gesamtladezykluskapazität"
                total_runtime:
                  name: "Gesamtlaufzeit"
                balancing_current:
                  name: "Balancer Strom"
                errors_bitmask:
                  name: "errors bitmask"
            
            
            # switch:
            #  - platform: jk_bms_ble
            #    charging:
            #      name: "${name} charging"
            #    discharging:
            #      name: "${name} discharging"
            #    balancer:
            #      name: "${name} balancer"
                  
            #  - platform: ble_client
            #    ble_client_id: client0
            #    name: "${name} enable bluetooth connection"
            
            text_sensor:
              - platform: jk_bms_ble
                errors:
                  name: "errors"
                total_runtime_formatted:
                  name: "total runtime formatted"
            # text_sensor needed for human frindly update sensor
            # text sensor for update. Part . Part 2 is the update sensor itself at the end of sensors chapter
            # refer to: https://esphome.io/components/sensor/uptime.html
              - platform: template
                name: Uptime
                id: uptime_human
                icon: mdi:clock-start
            ########### End text sensors #############    
            

            lambda Fehlermeldung:

            Reading CMake configuration...
            Dependency Graph
            |-- ArduinoJson @ 6.18.5
            Compiling .pioenvs/bms1-t/src/main.o
            <unicode string>: In lambda function:
            <unicode string>:147:28: error: no matching function for call to 'std::__cxx11::basic_string<char>::basic_string(int&)'
            In file included from /data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/string:52,
                             from /data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/stdexcept:39,
                             from /data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/array:39,
                             from src/esphome/components/api/api_noise_context.h:3,
                             from src/esphome/components/api/api_frame_helper.h:13,
                             from src/esphome/components/api/api_connection.h:3,
                             from src/esphome.h:3,
                             from src/main.cpp:3:
            /data/cache/platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:614:9: note: candidate: 'template<class _InputIterator, class> std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(_InputIterator, _InputIterator, const _Alloc&)'
                     basic_string(_InputIterator __beg, _InputIterator __end,
            
            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              Marco 3
              schrieb am zuletzt editiert von Marco 3
              #75

              @syssi Ich bin total begeistert von der Stabilität des Systems!!! kein hangup!
              trotz dessen ich nun das Web Interface, MQTT und die 32 Dallas Sensoren in einem ESP bediene.
              Klasse Arbeit. (die ESP Zeit Umrechnung-Problematik aus dem vorhergehenden Post, lass ich liegen, das muss der iobroker machen...)

              Eine Frage habe ich aber nochmal...

              kann man in dem ESP gleich eine Abschaltautomatik schreiben?

              Wenn die einer der TEMP Sensoren (Dallas) den Wert von z.B.: 65°C oder mehr erreicht, daß dann per BT das BMS die Stromversorgung kappt? Als Not Abschaltautomatik. Der Sensor Wert muss mindestens die Bedingung für 1min haben. und immer wieder durchgeführt werden, wenn der Temperatur Wert über die 65°C ist. (falls der Erste Behl nicht erfolgreich war.
              Und eventuell bei 70°C ein GPIO ein Relais ansteuert um zum eventuell ein Stromstoß Relails zu schalten.
              Es soll kein Fallback oder sonstiges geben. Es soll eine reine Notabschaltung sein. Zuschaltung dann nur durch manuellen reboot des BMS oder so...

              1 Antwort Letzte Antwort
              0
              • syssiS syssi

                @marco-3 said in JK-BMS über RS485 mit ESPHome auslesen:

                jk_bms_ble:

                • ble_client_id: client0
                  protocol_version: ${protocol_version}
                  throttle: 5s // Abrufintervall der BMS Datensätze
                  id: bms0

                Ja, das Zeichen dafür ist aber ein #:

                jk_bms_ble:
                  - ble_client_id: client0
                    protocol_version: ${protocol_version}
                    throttle: 5s # Abrufintervall der BMS Datensätze
                    id: bms0
                

                Auch möglich ist:

                jk_bms_ble:
                  - ble_client_id: client0
                    protocol_version: ${protocol_version}
                    # Abrufintervall der BMS Datensätze
                    throttle: 5s
                    id: bms0
                
                S Offline
                S Offline
                schneire
                schrieb am zuletzt editiert von
                #76

                @syssi , Hallo und danke für die ausführlichen Erklärungen.

                Leider habe ich es noch nicht ganz geschaft!
                Die yaml habe ich angepasst, eine firmware.bin auch erzeugt und auf einen ESP32 geflasht. Die Verbindung mit der SSID steht und ein MQTT-Verzeichnis mit den Ordner wurde auch angelegt. M.M. steht auch die BLE- Verbindung,
                nur kommen keine sinnvollen Daten rein:JK-BMS.JPG

                Wo habe ich da was verdreht bzw. nicht beachtet? Ich hoffe wir kriegen das noch gemeinsam hin.
                LG Reiner

                influxdb2.7, mqtt, Grafana, Raspberry Pi5, Venus-Os m.Raspi3, JK-BMS

                M 1 Antwort Letzte Antwort
                0
                • S schneire

                  @syssi , Hallo und danke für die ausführlichen Erklärungen.

                  Leider habe ich es noch nicht ganz geschaft!
                  Die yaml habe ich angepasst, eine firmware.bin auch erzeugt und auf einen ESP32 geflasht. Die Verbindung mit der SSID steht und ein MQTT-Verzeichnis mit den Ordner wurde auch angelegt. M.M. steht auch die BLE- Verbindung,
                  nur kommen keine sinnvollen Daten rein:JK-BMS.JPG

                  Wo habe ich da was verdreht bzw. nicht beachtet? Ich hoffe wir kriegen das noch gemeinsam hin.
                  LG Reiner

                  M Offline
                  M Offline
                  Marco 3
                  schrieb am zuletzt editiert von Marco 3
                  #77

                  @schneire Moin, was mir beim Fehler suchen immer geholfen hat.

                  web_server:
                  
                  logger:
                    level: INFO  #oder DEBUG
                  
                  

                  aktivieren, damit kommst du auf den ESP und siehst ob er überhaupt Daten hat.

                  Wenn der ESP sich erfolgreich mit dem JK verbunden hat, dann kann man sich in dem Moment nicht mehr mit dem Handy darauf per BT verbinden .... Falls doch, dann ist der ESP nicht mit dem JK verbunden. Aber der Web Server zeigt gleich ob er alle Daten hat... Für Fehlersuche ist es schon mal eine feine Sache... Macht das JK eigentlich den Piep Piep?

                  laut deinem Screen Shot ist BT off
                  BT_off.PNG

                  Und die Werte sollten im Sensor Folder eintrudeln.
                  Sensor.PNG

                  und die ganzen anderen Ordner die du geöffnet hast, scheinen die Command zu sein. Also keine Werte.

                  Ich würde erst mal sicher stellen, daß BT sich verbindet.... MQTT scheint bei dir zu laufen und WIFI ist auch aktiv, sonst kämen keine Werte rein.
                  Aber ob nur Werte kommen wenn BT verbunden ist oder nicht, kann ich nicht beurteilen, .... test ich gleich mal und blockiere den BT Zugang indem ich mich mit demHandy auf JK einlogge...
                  Ja so ist es, wenn MQTT steht, dann kommen die Werte al NA im ioBroker an.
                  Hier der Screen vom WEB interface des ESP.
                  Web_interface.PNG

                  Vermutung zu 99% steht deine BT Verbindung nicht. --> MAC heraus finden und noch mal überprüfen... und schauen, daß es pieb piep macht.

                  Bei meinem aktuellen Test mit der Blockierung des JK-BT mit dem Handy, war sehr schön zu beobachten, als ich mich wieder ausgeloggt hatte, daß der ESP in den nächsten 2 Sekunden sich sofort selbst wieder verbunden hat. "Klasse geschrieben" die SW!!!!

                  S 1 Antwort Letzte Antwort
                  0
                  • M Marco 3

                    @schneire Moin, was mir beim Fehler suchen immer geholfen hat.

                    web_server:
                    
                    logger:
                      level: INFO  #oder DEBUG
                    
                    

                    aktivieren, damit kommst du auf den ESP und siehst ob er überhaupt Daten hat.

                    Wenn der ESP sich erfolgreich mit dem JK verbunden hat, dann kann man sich in dem Moment nicht mehr mit dem Handy darauf per BT verbinden .... Falls doch, dann ist der ESP nicht mit dem JK verbunden. Aber der Web Server zeigt gleich ob er alle Daten hat... Für Fehlersuche ist es schon mal eine feine Sache... Macht das JK eigentlich den Piep Piep?

                    laut deinem Screen Shot ist BT off
                    BT_off.PNG

                    Und die Werte sollten im Sensor Folder eintrudeln.
                    Sensor.PNG

                    und die ganzen anderen Ordner die du geöffnet hast, scheinen die Command zu sein. Also keine Werte.

                    Ich würde erst mal sicher stellen, daß BT sich verbindet.... MQTT scheint bei dir zu laufen und WIFI ist auch aktiv, sonst kämen keine Werte rein.
                    Aber ob nur Werte kommen wenn BT verbunden ist oder nicht, kann ich nicht beurteilen, .... test ich gleich mal und blockiere den BT Zugang indem ich mich mit demHandy auf JK einlogge...
                    Ja so ist es, wenn MQTT steht, dann kommen die Werte al NA im ioBroker an.
                    Hier der Screen vom WEB interface des ESP.
                    Web_interface.PNG

                    Vermutung zu 99% steht deine BT Verbindung nicht. --> MAC heraus finden und noch mal überprüfen... und schauen, daß es pieb piep macht.

                    Bei meinem aktuellen Test mit der Blockierung des JK-BT mit dem Handy, war sehr schön zu beobachten, als ich mich wieder ausgeloggt hatte, daß der ESP in den nächsten 2 Sekunden sich sofort selbst wieder verbunden hat. "Klasse geschrieben" die SW!!!!

                    S Offline
                    S Offline
                    schneire
                    schrieb am zuletzt editiert von
                    #78

                    @marco-3 sagte in JK-BMS über RS485 mit ESPHome auslesen:

                    web_server:

                    Dann binde ich mal den WE-Server-code in die .yaml ein.
                    Wie kriege ich die MAC am besten raus???

                    Und das Passwort 1234 hatte ich bisher nicht hinterlegt, ist das richtig?

                    influxdb2.7, mqtt, Grafana, Raspberry Pi5, Venus-Os m.Raspi3, JK-BMS

                    M 1 Antwort Letzte Antwort
                    0
                    • S schneire

                      @marco-3 sagte in JK-BMS über RS485 mit ESPHome auslesen:

                      web_server:

                      Dann binde ich mal den WE-Server-code in die .yaml ein.
                      Wie kriege ich die MAC am besten raus???

                      Und das Passwort 1234 hatte ich bisher nicht hinterlegt, ist das richtig?

                      M Offline
                      M Offline
                      Marco 3
                      schrieb am zuletzt editiert von Marco 3
                      #79

                      @schneire
                      https://forum.iobroker.net/post/1105691

                      mach den logger auch noch mit rein, kannse du ja später wenn es läuft alles wieder mit # deaktivieren...

                      # logger:
                      #   level: INFO  #oder DEBUG
                      

                      nRF Toolbox beim Android Handy --> MAC finden.... (nimmste irgend ein Ding Glucose --> Scanner --> All und dann werden die BT Geräte in der Nähe angezeigt.... JK-BMS sollte da auf der "Suche" sein, also mit keinem BT Gerät verbunden, sonst findet er das nicht --> Gerade getestet 🙂

                      ..... PW ist nicht nötig, das ist ein Placebo für die JK_APP wenn ich syssi richtig verstanden habe...

                      Also ich nehme da den Home Assistand in eine VM und dort ESP home installieren, dann kann man schön des ESP im WIFI flashen und Veränderungen manchen, ratz fatz uploaden.... usw. Unter Windows die Oracle Virual Box und fertig, wenn nicht mehr benötigt herunter fahren und gut ist....

                      S 1 Antwort Letzte Antwort
                      0
                      • M Marco 3

                        @schneire
                        https://forum.iobroker.net/post/1105691

                        mach den logger auch noch mit rein, kannse du ja später wenn es läuft alles wieder mit # deaktivieren...

                        # logger:
                        #   level: INFO  #oder DEBUG
                        

                        nRF Toolbox beim Android Handy --> MAC finden.... (nimmste irgend ein Ding Glucose --> Scanner --> All und dann werden die BT Geräte in der Nähe angezeigt.... JK-BMS sollte da auf der "Suche" sein, also mit keinem BT Gerät verbunden, sonst findet er das nicht --> Gerade getestet 🙂

                        ..... PW ist nicht nötig, das ist ein Placebo für die JK_APP wenn ich syssi richtig verstanden habe...

                        Also ich nehme da den Home Assistand in eine VM und dort ESP home installieren, dann kann man schön des ESP im WIFI flashen und Veränderungen manchen, ratz fatz uploaden.... usw. Unter Windows die Oracle Virual Box und fertig, wenn nicht mehr benötigt herunter fahren und gut ist....

                        S Offline
                        S Offline
                        schneire
                        schrieb am zuletzt editiert von schneire
                        #80

                        @marco-3 danke dir Marco, ich habe jetzt mit Android (IOS geht nicht) die MAC gefunden und siehe da
                        MQtt liefert die gewünschten Daten per BLE und Grafana hat schon die gewünschte Werte in der Anzeige!

                        Nun habe ich schon im VENUS OS per "serialBatterie" mit RS475 die Anzeige aber eben keine modbus/Mqtt-Daten des JK-BMS.
                        Damit doppelt gemoppelt ... sowohl HW/als auch SW.

                        Stellt sich also bei mir die Frage ob man nicht schlanker die Daten aus dem VENUS-OS /serialBatterie die Daten in den ioBroker bekommen kann. Servus

                        influxdb2.7, mqtt, Grafana, Raspberry Pi5, Venus-Os m.Raspi3, JK-BMS

                        M 1 Antwort Letzte Antwort
                        0
                        • S schneire

                          @marco-3 danke dir Marco, ich habe jetzt mit Android (IOS geht nicht) die MAC gefunden und siehe da
                          MQtt liefert die gewünschten Daten per BLE und Grafana hat schon die gewünschte Werte in der Anzeige!

                          Nun habe ich schon im VENUS OS per "serialBatterie" mit RS475 die Anzeige aber eben keine modbus/Mqtt-Daten des JK-BMS.
                          Damit doppelt gemoppelt ... sowohl HW/als auch SW.

                          Stellt sich also bei mir die Frage ob man nicht schlanker die Daten aus dem VENUS-OS /serialBatterie die Daten in den ioBroker bekommen kann. Servus

                          M Offline
                          M Offline
                          Marco 3
                          schrieb am zuletzt editiert von
                          #81

                          @schneire

                          doppelt gemoppelt ist manchmal nicht so schlecht. Bei mir ist es auch so Serial Batt in der Venus. Ich fände es sogar besser, wenn man die BT Daten ins Venus füttern könnte und die RS485 Verbindung kappen.... (Galvanische Trennung) Um den Cerbo zu schützen.

                          (Meine Sicht) Am Besten wäre, wenn der Cerbo und seine Batterie(en) sich kümmert. Und der IObroker nur ein Zuschauer ist. Daher such ich noch ne Lösung, daß der ESP autarkt die Notabschaltung bei erreichen einer zu hohen Temperatur eines der 32 Dallas Sensoren abschaltet ... Vllt. Hat da syssi eine Lösung ... Ich bin da ein bissel zu "unwissend" 😉

                          S 1 Antwort Letzte Antwort
                          0
                          • M Marco 3

                            @schneire

                            doppelt gemoppelt ist manchmal nicht so schlecht. Bei mir ist es auch so Serial Batt in der Venus. Ich fände es sogar besser, wenn man die BT Daten ins Venus füttern könnte und die RS485 Verbindung kappen.... (Galvanische Trennung) Um den Cerbo zu schützen.

                            (Meine Sicht) Am Besten wäre, wenn der Cerbo und seine Batterie(en) sich kümmert. Und der IObroker nur ein Zuschauer ist. Daher such ich noch ne Lösung, daß der ESP autarkt die Notabschaltung bei erreichen einer zu hohen Temperatur eines der 32 Dallas Sensoren abschaltet ... Vllt. Hat da syssi eine Lösung ... Ich bin da ein bissel zu "unwissend" 😉

                            S Offline
                            S Offline
                            schneire
                            schrieb am zuletzt editiert von
                            #82

                            @marco-3 Hast du evtl. eine Lösung/Vorschlag um den ESPHome Nachts zum Schlafen zu bringen? z.B. Ein cron von 00:01 bis 08:00

                            influxdb2.7, mqtt, Grafana, Raspberry Pi5, Venus-Os m.Raspi3, JK-BMS

                            M 1 Antwort Letzte Antwort
                            0
                            • S schneire

                              @marco-3 Hast du evtl. eine Lösung/Vorschlag um den ESPHome Nachts zum Schlafen zu bringen? z.B. Ein cron von 00:01 bis 08:00

                              M Offline
                              M Offline
                              Marco 3
                              schrieb am zuletzt editiert von
                              #83

                              @schneire
                              nein, leider nicht. Da hab ich zu wenig Erfahrung/Ahnung. 🙂

                              1 Antwort Letzte Antwort
                              0
                              • D Offline
                                D Offline
                                dremeier
                                schrieb am zuletzt editiert von
                                #84

                                Ich bin ein wenig verwirrt der Uart pinouts!

                                Bei einem ESP32 sagt das Pinout GPIO17=Tx und GPIO16=Rx. In den example files von sissi ist es genau umgekehrt.

                                  tx_pin: GPIO16
                                  rx_pin: GPIO17
                                

                                Kann bitte jemand Licht ins dunkle bringen?

                                syssiS 1 Antwort Letzte Antwort
                                0
                                • D dremeier

                                  Ich bin ein wenig verwirrt der Uart pinouts!

                                  Bei einem ESP32 sagt das Pinout GPIO17=Tx und GPIO16=Rx. In den example files von sissi ist es genau umgekehrt.

                                    tx_pin: GPIO16
                                    rx_pin: GPIO17
                                  

                                  Kann bitte jemand Licht ins dunkle bringen?

                                  syssiS Offline
                                  syssiS Offline
                                  syssi
                                  schrieb am zuletzt editiert von
                                  #85

                                  @dremeier Die GPIOs können für beliebige Zwecke zum Einsatz kommen. Durch die Konfiguration in der YAML wird definiert, ob sie zum Lauschen oder zum Sprechen zum Einsatz kommen sollen. Antwortet dein BMS nicht auf Anhieb, weil etwas "falsch" angeschlossen ist, dann verdrehst du entweder die Kabel oder vertauschst die GPIOs.

                                  D 1 Antwort Letzte Antwort
                                  0
                                  • syssiS syssi

                                    @dremeier Die GPIOs können für beliebige Zwecke zum Einsatz kommen. Durch die Konfiguration in der YAML wird definiert, ob sie zum Lauschen oder zum Sprechen zum Einsatz kommen sollen. Antwortet dein BMS nicht auf Anhieb, weil etwas "falsch" angeschlossen ist, dann verdrehst du entweder die Kabel oder vertauschst die GPIOs.

                                    D Offline
                                    D Offline
                                    dremeier
                                    schrieb am zuletzt editiert von
                                    #86

                                    @syssi vielen Dank!
                                    Ich war der Meinung die Pins seinen Hardware UART, wenn man sie so frei belegen kann um so besser!
                                    Bin gerade dabei eine kleine Platine mit DC/DC converter zu entwickeln, so dass die hohe Batteriespannung, die an dem UART-Stecker des BMS anliegt auf 3,3V geregelt wird. Zusätzlich wird die UART noch galvanisch entkoppelt. Hatte mir schon einige ESP zerschossen.
                                    Wenns fertig ist stell ich es hier gern vor.ADUM1201_UART_ESP32.jpg

                                    syssiS 1 Antwort Letzte Antwort
                                    0
                                    • D dremeier

                                      @syssi vielen Dank!
                                      Ich war der Meinung die Pins seinen Hardware UART, wenn man sie so frei belegen kann um so besser!
                                      Bin gerade dabei eine kleine Platine mit DC/DC converter zu entwickeln, so dass die hohe Batteriespannung, die an dem UART-Stecker des BMS anliegt auf 3,3V geregelt wird. Zusätzlich wird die UART noch galvanisch entkoppelt. Hatte mir schon einige ESP zerschossen.
                                      Wenns fertig ist stell ich es hier gern vor.ADUM1201_UART_ESP32.jpg

                                      syssiS Offline
                                      syssiS Offline
                                      syssi
                                      schrieb am zuletzt editiert von
                                      #87

                                      @dremeier Der ESP32 hat eine GPIO-Matrix und kann deshalb per Software einen der drei Hardware-UARTs auf nahezu beliebige Pins routen. Beim ESP8266 war das anders (festverdrahtet). Ich bin gespannt, ob dein Konverter funktioniert. Ich habe leider schon von vielen rauchenden Komponenten gehoert, sobald der ESP vom DC/DC-Wandler direkt von der Batterie gespeist wurde. Ich hoffe, dass die galvanische Trennung (auf allen Ebenen?) insb. auf der Masse-Leitung zwischen Batterie- und "ESP" bzw. DC/DC-Wandler. Ich habe hier leider zu wenig Ahnung von Schaltkreisen um hier guten Input zu geben.

                                      1 Antwort Letzte Antwort
                                      0
                                      • syssiS syssi

                                        Ich würde dich gerne unterstützen zum Ziel zu kommen. 🙂 Vorab ein paar Fragen:

                                        1. Hat dein ESP32-Board eine USB-Buchse / USB-zu-TTL-Wandler auf der Platine, so dass man es direkt per USB-Kabel beschreiben kann?
                                        2. Welches Betriebsystem hat dein Rechner? Steht dir ein Rechner mit z.B. Ubuntu zur Verfuegung?
                                        3. Kennst du die MAC-Adresse deines BMS? Kannst du sie bereits z.B. am Smartphone per "nRF Toolbox" in Erfahrung bringen?
                                        4. Betreibst du bereits einen MQTT-Server, welchen man mit den Daten aus der ESPHome-Node / dem BMS befüttern kann?
                                        D Offline
                                        D Offline
                                        Dieter_P
                                        schrieb am zuletzt editiert von
                                        #88

                                        @syssi

                                        Hallo Sebastian

                                        bin gerade auch dabei per BLE einzubinden da ein anderer Weg aktuell wegen einem Herstellerbug eine Sackgasse ist.

                                        Nun holt mich aber wieder ESPHome mit vielen Fragen und Fehlermeldungen ein.

                                        Darf ich davon ausgehen, dass die angebotene Lösung nicht nur für HomeAssistant funktionieren soll sondern auch mit dem ESPHome Adapter der in IOBroker läuft?

                                        Wie verhält es sich dann mit der Zuordnung? Lt. Anleitung sieht man die fertige Kachel in HA. In IOBroker finde ich derzeit "nur" die Datenpunkt. Muß ich mir die Zuordnung wirklich selbst austüfteln?
                                        c7d12c02-2c39-4083-b37e-a6083638cd65-grafik.png

                                        Binde ich zusätzlich über Mqtt an sieht es etwas besser aus und ich finde Datenpunkte mit Beschreibung wie der durschnittlichen Zellspannung:

                                        160a6769-3022-4dd8-97b3-f4b5fc2dd3b2-grafik.png

                                        Was muß ich nun aber tun über hier Settings per Mqtt verändern zu können? Reicht es den Mqtt Datenpunkt in IOB zu ändern oder ist das per command DP zu nutzen?
                                        32534bea-debc-4778-a0f0-8fc5f3716a10-grafik.png

                                        Ergänzend die Frage, dass mir durch die Integration der Log voll läuft:

                                        esphome.0
                                        	2025-05-11 10:24:48.349	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:48.348	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:43.237	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:43.235	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:38.110	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:38.109	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:33.069	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:33.068	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:27.780	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:27.780	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:22.654	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:22.652	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:17.540	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:17.540	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:12.408	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:12.407	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:07.291	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:07.289	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:24:02.094	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:24:02.090	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:23:56.967	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        esphome.0
                                        	2025-05-11 10:23:56.966	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                        esphome.0
                                        	2025-05-11 10:23:51.938	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                        

                                        Bin noch auf der Suche was ID:25 ist.

                                        Besten Dank für Eure Tips!

                                        syssiS 1 Antwort Letzte Antwort
                                        0
                                        • D Dieter_P

                                          @syssi

                                          Hallo Sebastian

                                          bin gerade auch dabei per BLE einzubinden da ein anderer Weg aktuell wegen einem Herstellerbug eine Sackgasse ist.

                                          Nun holt mich aber wieder ESPHome mit vielen Fragen und Fehlermeldungen ein.

                                          Darf ich davon ausgehen, dass die angebotene Lösung nicht nur für HomeAssistant funktionieren soll sondern auch mit dem ESPHome Adapter der in IOBroker läuft?

                                          Wie verhält es sich dann mit der Zuordnung? Lt. Anleitung sieht man die fertige Kachel in HA. In IOBroker finde ich derzeit "nur" die Datenpunkt. Muß ich mir die Zuordnung wirklich selbst austüfteln?
                                          c7d12c02-2c39-4083-b37e-a6083638cd65-grafik.png

                                          Binde ich zusätzlich über Mqtt an sieht es etwas besser aus und ich finde Datenpunkte mit Beschreibung wie der durschnittlichen Zellspannung:

                                          160a6769-3022-4dd8-97b3-f4b5fc2dd3b2-grafik.png

                                          Was muß ich nun aber tun über hier Settings per Mqtt verändern zu können? Reicht es den Mqtt Datenpunkt in IOB zu ändern oder ist das per command DP zu nutzen?
                                          32534bea-debc-4778-a0f0-8fc5f3716a10-grafik.png

                                          Ergänzend die Frage, dass mir durch die Integration der Log voll läuft:

                                          esphome.0
                                          	2025-05-11 10:24:48.349	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:48.348	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:43.237	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:43.235	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:38.110	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:38.109	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:33.069	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:33.068	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:27.780	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:27.780	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:22.654	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:22.652	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:17.540	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:17.540	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:12.408	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:12.407	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:07.291	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:07.289	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:24:02.094	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:24:02.090	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:23:56.967	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          esphome.0
                                          	2025-05-11 10:23:56.966	error	ESPHome client 192.168.7.76 Error: Failed find or parsed message type for Id: 25
                                          esphome.0
                                          	2025-05-11 10:23:51.938	error	ESPHome client 192.168.7.76 TypeError: Cannot set properties of undefined (setting 'length')
                                          

                                          Bin noch auf der Suche was ID:25 ist.

                                          Besten Dank für Eure Tips!

                                          syssiS Offline
                                          syssiS Offline
                                          syssi
                                          schrieb am zuletzt editiert von syssi
                                          #89

                                          @dieter_p Hallo Dieter! Ich kann deine Annahmen nur bestätigen: Die Implementierung kann unabhängig oder auch ganze ohne eine Heimautomation genutzt werden. Man hat die Möglichkeit alle Messwerte über einen MQTT-Broker abzusetzen oder Schalter/Einstellungen über MQTT zu verändern. Die geposteten Logbuch-Zeilen scheinen ioBroker spezifisch zu sein und ich weiss nicht, was sie bedeuten.

                                          D 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          377

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe