Sehr gut funktionierende PV Überschuss Ladesteuerung für 48-56V LiFo Akku Systeme

Die im Einsatz befindlichen Systeme sind folgende:
Home Assistant
2x500W an HMS-800-2T
2x500W an auf Epever -> 4x12 LiFo Akkus in Reihe.
Ladegerät an JK-BMS-S16.

Über einen Beitrag (von Christian -> "Überschussregelung" "Der Kanal") bin ich auf eine andere Idee gekommen.
In der Bucht habe ich ein Ladegerät für 130€ gekauft.
"Akku Ladegerät Current Adjustable 5-25A Für 48V/60V/72V Li-ion LiFePo4 Akku Pack"
Dieses Ladegerät hat ein Poti, um den Ladestrom zu steuern. Danach habe ich mir ein "MG996R SERVO MOTOR-180°" für 7,50€ besorgt.
Den Poti Knopf, der sich sehr leicht drehen lässt, habe ich von der Vielzahnwelle abgezogen und ihn mit einer ca. 7 cm Kabelummantelung mit der nackten ServoAchse verbunden.
Der Servo benötigt dafür ein wenig Abstand vom Boden (an + auf Holzleiste schrauben), damit er waagerecht zur Potiachse steht.
Das Ladegerät wird bei mir mit einer Sonoff WLAN Steckdose geschaltet.
D1 Mini ESP8266 reicht für die Servo-Steuerung aus.
Der Servo hat drei Kabelanschlüsse, die an Esp-VCC 5V, GND und ein Steuerdraht der hier im Beispiel an D7 / 13 führt.

Anbei der ESP-Home Code den D1 Mini:

#############

substitutions:
  name: servo1
  friendly_name: Servo1
  device_description: "Ladegerät Servo Steuerung"
  
esphome:
  name:  ${name}
  friendly_name: ${name}
  comment: ${device_description}
  compile_process_limit: 1  
  on_boot:
    priority: 0
    then:
      - lambda: !lambda |-
          id(servoSlider1).make_call().set_value(0).perform();

wifi:
  ssid: "Dein Wlan"
  password: "4711"
  fast_connect: on
  min_auth_mode: WPA2
  # Feste IP 
  manual_ip:
    static_ip: 192.168.96.104  # Eine freie Wunsch-IP außerhalb des FRITZ!-DHCP
    gateway: 192.168.96.1      # IP deiner FRITZ!Box
    subnet: 255.255.255.0
  use_address: 192.168.96.104
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Servo1-Hotspot"
    password: "123456789"

captive_portal:

web_server:

esp8266:
  board: d1_mini

ota:
  - platform: esphome
    password: "79085a4d0f943491dbe69823c933bb4b" 
    
api:
  encryption:
    key: "KjF50ggctjy+w/lpsVWZFeXYalkfZut5TGh1B/EGJFQ="

# 🕓 Uhrzeit und Zeitzone
time:
  - platform: homeassistant
    id: ha_time
    
servo:
  - id: servo1
    output: output1
    auto_detach_time: 1s
    min_level: 2.5%
    max_level: 12.5%

output:
  - platform: esp8266_pwm
    id: output1
    pin: 13
    frequency: 50 Hz

substitutions:
  name: servo1
  friendly_name: Servo1
  device_description: "Ladegerät Servo Steuerung"
  
esphome:
  name:  ${name}
  friendly_name: ${name}
  comment: ${device_description}
  compile_process_limit: 1  
  on_boot:
    priority: 0
    then:
      - lambda: !lambda |-
          id(servoSlider1).make_call().set_value(0).perform();

wifi:
  ssid: "Dein Wlan"
  password: "4711"
  fast_connect: on
  min_auth_mode: WPA2
  # Feste IP 
  manual_ip:
    static_ip: 192.168.96.104
    gateway: 192.168.96.1
    subnet: 255.255.255.0
  use_address: 192.168.96.104
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Servo1-Hotspot"
    password: "123456789"

captive_portal:

web_server:

esp8266:
  board: d1_mini

ota:
  - platform: esphome
    password: "79085a4d0f943491dbe69823c933bb4b" 
    
api:
  encryption:
    key: "KjF50ggctjy+w/lpsVWZFeXYalkfZut5TGh1B/EGJFQ="

# 🕓 Uhrzeit und Zeitzone
time:
  - platform: homeassistant
    id: ha_time
    
servo:
  - id: servo1
    output: output1
    auto_detach_time: 1s
    min_level: 2.5%
    max_level: 12.5%

output:
  - platform: esp8266_pwm
    id: output1
    pin: 13
    frequency: 50 Hz

number:
  - platform: template
    id: servoSlider1
    name: $name 1
    icon: mdi:sync
    optimistic: true
    min_value: 0
    max_value: 250
    mode: slider
    initial_value: 0
    step: 1
    set_action:
      then:
        - servo.write:
            id: servo1
            level: !lambda 'return ((x / 250.0) * 2.0) - 1.0;'

logger:
  logs:
    number: none
    servo: none

text_sensor:
# IP Infos
  - platform: wifi_info
    ip_address:
      name: ESP IP Address
      icon: mdi:ip

Es wird eine Current Power Entität von Eurem Shelly oder Tasmota benötigt. Die anderen Entitäten müssen an Euer System angepasst werden.
Mit einer Automation kann man nach seinen Wünschen und Bedingungen die folgende einschalten.

Anbei die Steuerungs-Automation in yaml:

alias: Überschussladung - Servo-Poti Steuerung mit Totzone 220°
description: Regelt Servo Überschussladung basierend auf Shelly-Total-Power
triggers:
  - seconds: /5
    trigger: time_pattern
conditions:
  - condition: state
    entity_id: switch.s60tpf_sonoff_1
    state:
      - 'off'
    enabled: true
actions:
  - action: switch.turn_on
    metadata: {}
    target:
      entity_id: switch.s60tpf_sonoff_1
    data: {}
  - variables:
      aktueller_winkel: '{{ states(''number.servo1_servo1_1'') | float(0) }}'
      netzwert: '{{ states(''sensor.total_activ_power'') | float(0) }}'
      totzone: 40
  - if:
      - condition: template
        value_template: '{{ netzwert | abs > totzone }}'
    then:
      - variables:
          schritt: '{{ ( -1 * netzwert / 5.5 ) | round(0) }}'
          neuer_winkel: >-
            {{ [[0, (aktueller_winkel + ( -1 * netzwert / 5.5 ) | round(0))] |
            max, 250] | min }}
      - if:
          - condition: template
            value_template: '{{ neuer_winkel != aktueller_winkel }}'
        then:
          - target:
              entity_id: number.servo1_servo1_1
            data:
              value: |-
                {{ [[0, (aktueller_winkel + ( -1 * netzwert / 5.5 ) | round(0))]

                | max, 250] | min }}
            action: number.set_value
mode: restart

###############

Die Poti Steuerung reagiert sehr schnell, wie ich finde und versucht wirklich so wenig wie möglich in den Netzbezug zu rutschen.
Der 180° Servo kann nicht die Volle Poti Drehlänge gehen, sondern endet so bei ca. 8A Ladestrom (<500W). Bei meinem Überschuss passt das sehr gut.
Das Ladegerät sollte möglichst ein wenig frei stehen, da die Kühllüfter manchmal ihre Arbeit verrichten.

Möglicherweise kann es wer brauchen :wink: . Grüße an Alle.