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. Bei ab und zu Wolken kommt das System ans arbeiten, schafft es aber sehr gut auf Null und dann sofort wieder in schnellen Schritten, in den Plus Bereich zu steuern.
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 vollrichten.
Möglicherweise kann es wer brauchen
. Grüße an Alle.