NEWS
Mit E3DC S10E und KEBA P30 C-Serie PV optimiert EV laden
-
E3DC S10E und KEBA P30 C-Serie anbinden
Anwendungsbeschreibung
Begrifssklärung
E3DC S10: Integrierte PV und Speicherlösung https://de.wikipedia.org/wiki/Hager_Group
Wallbox (WB) KEBA P30 C-Series https://de.wikipedia.org/wiki/KEBA_GroupZiel
Ich möchte unser Elektroauto ausschließlich mit Sonnenstrom des E3DC s10e AI 6.5 laden. Unser Elektroauto (EV:Electric Vehicle) steht in der Garage und wird an die KEBA P30 C-Serie (WB:Wallbox) angeschlossen. Bei wenig PV Leistung soll das Auto warten und gesteuert zu laden beginnen, wenn genügend PV Leistung zur Verfügung steht.Ich verwende hier nicht die E3DC Wallbox.
Das Ledeverhalten ergibt sich dann wie folgt:
- rot: Ladeleistung des Elektroautos (EV), Y-Skala rechts.
- grün: Bezug und Einspeisung ins öffentliche Netz (Grid), Y-Skala links.
- blau: Ladeleistung der E3DC Batterie. Entladen ist deaktiviert!
Am schwarzen Punk an der X-Achse beginnt das EV zu laden. Hier wurde die minimale verfügbare EV-Ladeleistung von ~4kW überschritten.
Wenn das EV die verfügbare Leistung nicht abruft, schnappt sich die E3DC Batterie etwas (blaue Linie).
Sobald mehr ins Grid (grüne Linie) eingespeist wird erhält das EV die Ladeleistung und die rote Linie geht hoch, grün wechselt um die Nulllinie.
Für eine wirklich gute Datenanalyse fehlen noch weitere Daten. Für einen kleinen Blick in die Lösung sollte das erstmal reichenKomponenten
Systemschaltbild
- HAK : Haus Anschluss Kasten
- E3DC S10E : EnergieSpeicherSystem
- KEBA P30 C-Series : WB : Wallbox
- EV : Car : Elektroauto
- ioboker: RasPi 4
In der Konfiguration mit einem E3DC System wird der Hausanschluß über das E3DC System geschleift. Hier findet auch die Notstromversorgung statt und es wird die Leistung gemessen:
- PV Leistung der Sonne
- BAT laden oder entladen
- Hausverbrauch. In diesem Fall zeigt das E3DC System den Hausverbrauch + Wallboxverbrauch als Summe an.
- GRID Einspeisung oder Bezug
Die Leistungsmessung im E3DC S10E verwenden wir nun um das Elektroauto ausschließlich über Sonnenstrom zu laden, hier verwenden wir GRID (Einspeisen oder Bezug) und BAT (laden oder entladen).
Noch ein paar Worte zur Wallbox
Es gibt meines Erachtens folgende Typen:- ohne Steuerung mit 1Phase oder 3Phasen bis 11kW AC Ladeleistung: Liegt dann die WB im Bereich ~500EUR.
- mit Steuerung und Ethernet Kommunikationsschnittstelle mit 1Phase oder 3Phasen bis 22kW AC Ladeleistung: Liegt dann die WB im Bereich ~1200EUR.
- Mit noch mehr Features, z.B. 1phasiges und 3phasiges umschalten: Liegt dann die WB im Bereich ~1800EUR.
Wichtig: Die Wallbox regelt nicht die Ladeleistung des EV. In der WB gibt es nur einen Schütz, der die WB mit dem EV verbindet. Die Ladeleistung wird vom EV Inverter bestimmt und die Wallbox teilt die Einstellung über eine Datenschnittstelle dem EV mit. Alles über das Ladekabel. Deswegen kosten die WB mit diesem Feature etwas mehr, siehe oben Punkt 2+3.
Warum 1Phasiger oder 3Phasiger Anschluß?
Das hängt damit zusammen, wann das EV zu laden beginnt. Denn bei einem 1Phasigen Ladekabel oder Ladeanschluß beginnt das EV bei ~1.5kW bereits zu laden. Die obere Grenze bei 1Phasigem Anschluß liegt bei ~4.6kW. Bei einem 3Phasigem Ladekabel oder Ladeanschluß wird ~4.1kW Ladeleistung benötigt, damit das EV zu laden beginnt. Die obere Grenze bei 3Phasigem Anschluß liegt bei ~22kW.Dazu habe ich mal eine Tabelle erstellt und exemplarisch für PV Anlagen von 3-9kWp.
Deswegen gibt es bereist Lösung für die Phasenumschaltung, wenn PV optimiert und mit kleinen Leistungen begonnen werden soll. Teils extern, teils intern in der Wallbox.| PV Anlage [kWp] | PV optimiert laden | max EV laden 22kW | | 3 | 1Phase ab 1.5kW | 3Phase ab 4.1kW | | 5 | 1Phase ab 1.5kW | 3Phase ab 4.1kW | | 7 | 1Phase ab 1.5kW | 3Phase ab 4.1kW | | 9 | 3Phase ab 4.1kW | 3Phase ab 4.1kW |
Dann sollte die Wallbox eine offene Programmierschnittstelle, bestenfalls UDP/TCP basiert per Ethernet bieten. Dadrüber läuft dann oft ein Modbus Protokoll. Und perfekt ist es dann noch, wenn es einen iobroker Adapter gibt.
iobroker RasPi 4
(keine SD-Karte, kein USB Stick)-
Plattform linux, Betriebssystem linux
- Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
- OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
- ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
- Node.js v18.15.0, NPM 9.5.0
- USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
- log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
- Aktive Instanzen 19
-
Instanzen
- Admin v6.3.5
- e3dc-rscp.0 v1.1.1
- kecontact.0 v1.5.2
E3DC s10e AI 6.5
- VERSION_MAIN: MAIN HW06 2.044
KEBA P30 C-Serie
- Product-ID: KC-P30
- Software P30 v 3.10.27
Kurzbeschreibung der Lösung
Block Diagram Adapter
- Das E3DC s10e AI 6.5 (e3dc-rscp.0) wie auch die KEBA P30 C-Serie (kecontact.0) sind über entsprechende Adapter in den iobroker integriert. Beide Adapter sollten im ersten Schritt einwandfrei funktionieren.
- Dann legen wir benötigte Alias (alias.0) an. Das erleichtert die Konfiguration. Über den Alias erhält die Wallbox Informationen, wie viel Leistung in das öffentliche Netz eingespeist wird. Außerdem weiß die Wallbox mit welcher Leistung die Batterie geladen wird.
- Im dritten Schritt wird dann die Steuerung über die PV Leistung aktiviert. Und schon kann die Wallbox KEBA P30 C-Serie PV optimiert das EV laden.
- Mit einem Datenpunkt kann jetzt zwischen EV PV optimiert laden ( kecontact.0.automatic.photovoltaics = true) und volle EV Ladeleistung umgeschaltet werden (kecontact.0.automatic.photovoltaics = false).
Schritt 1: E3DC und Wallbox KEBA P30 konfigurieren
Konfiguration E3DC s10e AI 6.5
Voraussetzung ist, dass das E3DC im Netwerk angeschlossen und erreichbar ist.
Du benötigst die IP Adresse in Deinem Netzwerk. Bei mir ist das 192.168.178.42- E3/DC IP-Adresse
- e3dc_ip: "YourE3DCiPAddress"
E3DC Portal
Erreichbar über folgenden Link: Portal: https://s10.e3dc.com/s10/
Du benötigst typisch Deine Email adresse und ein Passwort für die Anmeldung. Das Portal wird vom Istallateur bei der Inbetriebnahme angelegt. Deswegen gehe ich hier nicht weitere darauf ein.-
E3/DC Portal Benutzername
- portal_user: "spock@enterprise.com"
-
E3/DC Portal Passwort
- portal_password: "EnterYourPortalPassword",
RSCP am E3DC S10 Gerät aktivieren
Diese Funktion muss zusätzlich am Display des E3DC S10E aktiviert werden. War bei mir ausgeschaltet.- Startseite
- Hauptmenü
- Personalisieren
- Benutzerprofil
- (scroll down) RSCP-Password eingeben
- Benutzerprofil
- Personalisieren
- Hauptmenü
Dabei vergibst Du ein eigenes Password, das unter folgendem Begriff zu finden ist:
- rscp_password : "EnterYourRscpPassword"
Außerdem kann man hier den Port eingeben, typisch ist:
- E3/DC Port
- e3dc_port : "5033"
Konfiguration des iobroker e3dc-rscp Adapter (e3dc-rscp.0)
Wir stellen den e3dc-rscp.0 Adapter so ein, dass Datenpunkte im Objektbaum der Instanz vom Gerät erscheinen. Das kann man manuell eingeben oder über eine JSON Datei laden. Beides wird hier beschrieben:- Im iobroker unter "Instanzen" die Konfiguration des e3dc-rscp Adapter öffnen (Schraubenschlüssel):
TAB EINSTELLUNGEN E3/DC-Verbindung
| E3/DC Portal Benutzername | E3/DC Portal Passwort | E3/DC IP-Adresse | E3/DC Port | E3/DC RSCP Passwort | | spock@enterprise.com | EnterYourPortalPassword | YourE3DCiPAddress | 5033 | EnterYourRscpPassword |
TAB EINSTELLUNGEN Zeitintervalle für Senden
| SET_POWER Wiederholintervall [s] | Tupel-Schreibverzögerung [s] | | 10 | 10 |
TAB EINSTELLUNGEN Auswahl der E3/DC-Namespaces, für die Daten abgefragt werden
Ich habe die "Wallbox (WB) nicht aktiviert, denn ich verwende nicht die E3DC-Wallbox, sondern die KEBA P30. Der Adapter würde versuchen die E3DC-Wallbox zu finden und dann Fehler im Protokoll werfen, weil nicht angeschlossen. Deswegen hier unten WB: "query_wb": false!
- BAT : "query_bat": true
- EMS : "query_ems": true
- EP: "query_ep": true
- PVI : "query_pvi": true
- SYS : "query_sys": true
- WB: "query_wb": false
- DB : "query_db": true
TAB ABFRAGEINTERVALL Einstellung der Abfrageintervalle
default, keine Änderung gemacht, siehe e3dc-rscp JSON KonfigurationHilfe:
readme": "https://github.com/git-kick/ioBroker.e3dc-rscp/blob/master/README.md",Konfiguration über eine Datei in die e3dc-rscp.0 Instanz laden
Wichtig und bitte anpassen
--> "host": "YourIoBrokerHostName"
--> "portal_user": "spock@enterprise.com",
--> "portal_password": "EnterYourPortalPassword",
--> "e3dc_ip": "YourE3DCiPAddress",
--> "e3dc_port": 5033,
--> "rscp_password": "EnterYourRscpPassword",Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden
- Instanze
- e3dc-rscp.0
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- Klick: oben rechts den Upload Knopf.
- Dann die JSON Datei auswählen
- Klick: oben rechts den Upload Knopf.
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- e3dc-rscp.0
e3dc-rscp JSON Datei meiner Konfiguration
{ "_id": "system.adapter.e3dc-rscp.0", "common": { "name": "e3dc-rscp", "version": "1.1.1", "title": "E3/DC RSCP", "authors": [ "Ulrich Kick <iobroker@kick-web.de>" ], "keywords": [ "E3/DC", "power station", "energy", "RSCP" ], "license": "GPL-3.0-only", "platform": "Javascript/Node.js", "main": "main.js", "icon": "e3dc-rscp.png", "enabled": true, "extIcon": "https://raw.githubusercontent.com/git-kick/ioBroker.e3dc-rscp/master/admin/e3dc-rscp.png", "readme": "https://github.com/git-kick/ioBroker.e3dc-rscp/blob/master/README.md", "loglevel": "warn", "mode": "daemon", "type": "energy", "compact": true, "connectionType": "local", "dataSource": "poll", "materialize": true, "materializeTab": false, "dependencies": [ { "js-controller": ">=2.0.0" } ], "installedFrom": "iobroker.e3dc-rscp@1.1.1", "installedVersion": "1.1.1", "host": "YourIoBrokerHostName" }, "native": { "portal_user": "spock@enterprise.com", "portal_password": "EnterYourPortalPassword", "e3dc_ip": "YourE3DCiPAddress", "e3dc_port": 5033, "rscp_password": "EnterYourRscpPassword", "setpower_interval": 10, "send_tuple_delay": 10, "query_bat": true, "query_ems": true, "query_ep": true, "query_pvi": true, "query_sys": true, "query_wb": false, "query_db": true, "polling_interval_short": 30, "polling_interval_medium": 5, "polling_interval_long": 12, "polling_intervals": [ { "tag": "TAG_EMS_REQ_POWER_PV", "interval": "S" }, { "tag": "TAG_EMS_REQ_POWER_BAT", "interval": "S" }, { "tag": "TAG_EMS_REQ_POWER_HOME", "interval": "S" }, { "tag": "TAG_EMS_REQ_POWER_GRID", "interval": "S" }, { "tag": "TAG_EMS_REQ_POWER_ADD", "interval": "S" }, { "tag": "TAG_EMS_REQ_AUTARKY", "interval": "M" }, { "tag": "TAG_EMS_REQ_SELF_CONSUMPTION", "interval": "M" }, { "tag": "TAG_EMS_REQ_BAT_SOC", "interval": "M" }, { "tag": "TAG_EMS_REQ_COUPLING_MODE", "interval": "M" }, { "tag": "TAG_EMS_REQ_STORED_ERRORS", "interval": "M" }, { "tag": "TAG_EMS_REQ_MODE", "interval": "S" }, { "tag": "TAG_EMS_REQ_BALANCED_PHASES", "interval": "M" }, { "tag": "TAG_EMS_REQ_INSTALLED_PEAK_POWER", "interval": "L" }, { "tag": "TAG_EMS_REQ_DERATE_AT_PERCENT_VALUE", "interval": "L" }, { "tag": "TAG_EMS_REQ_DERATE_AT_POWER_VALUE", "interval": "L" }, { "tag": "TAG_EMS_REQ_POWER_WB_ALL", "interval": "M" }, { "tag": "TAG_EMS_REQ_POWER_WB_SOLAR", "interval": "M" }, { "tag": "TAG_EMS_REQ_EXT_SRC_AVAILABLE", "interval": "L" }, { "tag": "TAG_EMS_REQ_STATUS", "interval": "S" }, { "tag": "TAG_EMS_REQ_USED_CHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_BAT_CHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_DCDC_CHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_USER_CHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_USED_DISCHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_BAT_DISCHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_DCDC_DISCHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_USER_DISCHARGE_LIMIT", "interval": "M" }, { "tag": "TAG_EMS_REQ_REMAINING_BAT_CHARGE_POWER", "interval": "M" }, { "tag": "TAG_EMS_REQ_REMAINING_BAT_DISCHARGE_POWER", "interval": "M" }, { "tag": "TAG_EMS_REQ_EMERGENCY_POWER_STATUS", "interval": "M" }, { "tag": "TAG_EMS_REQ_BATTERY_TO_CAR_MODE", "interval": "M" }, { "tag": "TAG_EMS_REQ_BATTERY_BEFORE_CAR_MODE", "interval": "M" }, { "tag": "TAG_EMS_REQ_GET_IDLE_PERIODS", "interval": "M" }, { "tag": "TAG_EMS_REQ_GET_POWER_SETTINGS", "interval": "M" }, { "tag": "TAG_EMS_REQ_GET_MANUAL_CHARGE", "interval": "M" }, { "tag": "TAG_EMS_REQ_EMERGENCYPOWER_TEST_STATUS", "interval": "M" }, { "tag": "TAG_EMS_REQ_GET_SYS_SPECS", "interval": "L" }, { "tag": "TAG_EMS_REQ_POWER_PV_AC_OUT", "interval": "M" }, { "tag": "TAG_EMS_REQ_ALIVE", "interval": "S" }, { "tag": "TAG_EP_REQ_IS_READY_FOR_SWITCH", "interval": "M" }, { "tag": "TAG_EP_REQ_IS_GRID_CONNECTED", "interval": "M" }, { "tag": "TAG_EP_REQ_IS_ISLAND_GRID", "interval": "M" }, { "tag": "TAG_EP_REQ_IS_INVALID_STATE", "interval": "M" }, { "tag": "TAG_EP_REQ_IS_POSSIBLE", "interval": "M" }, { "tag": "TAG_PVI_REQ_ON_GRID", "interval": "M" }, { "tag": "TAG_PVI_REQ_STATE", "interval": "S" }, { "tag": "TAG_PVI_REQ_LAST_ERROR", "interval": "M" }, { "tag": "TAG_PVI_REQ_TYPE", "interval": "L" }, { "tag": "TAG_PVI_REQ_VOLTAGE_MONITORING", "interval": "M" }, { "tag": "TAG_PVI_REQ_FREQUENCY_UNDER_OVER", "interval": "M" }, { "tag": "TAG_PVI_REQ_SYSTEM_MODE", "interval": "M" }, { "tag": "TAG_PVI_REQ_POWER_MODE", "interval": "M" }, { "tag": "TAG_PVI_REQ_TEMPERATURE", "interval": "M" }, { "tag": "TAG_PVI_REQ_TEMPERATURE_COUNT", "interval": "L" }, { "tag": "TAG_PVI_REQ_MAX_TEMPERATURE", "interval": "M" }, { "tag": "TAG_PVI_REQ_MIN_TEMPERATURE", "interval": "M" }, { "tag": "TAG_PVI_REQ_DEVICE_STATE", "interval": "M" }, { "tag": "TAG_PVI_REQ_SERIAL_NUMBER", "interval": "L" }, { "tag": "TAG_PVI_REQ_VERSION", "interval": "L" }, { "tag": "TAG_PVI_REQ_AC_MAX_PHASE_COUNT", "interval": "L" }, { "tag": "TAG_PVI_REQ_AC_POWER", "interval": "S" }, { "tag": "TAG_PVI_REQ_AC_VOLTAGE", "interval": "S" }, { "tag": "TAG_PVI_REQ_AC_CURRENT", "interval": "S" }, { "tag": "TAG_PVI_REQ_AC_APPARENTPOWER", "interval": "M" }, { "tag": "TAG_PVI_REQ_AC_REACTIVEPOWER", "interval": "M" }, { "tag": "TAG_PVI_REQ_AC_ENERGY_ALL", "interval": "M" }, { "tag": "TAG_PVI_REQ_AC_MAX_APPARENTPOWER", "interval": "M" }, { "tag": "TAG_PVI_REQ_AC_ENERGY_GRID_CONSUMPTION", "interval": "M" }, { "tag": "TAG_PVI_REQ_DC_POWER", "interval": "M" }, { "tag": "TAG_PVI_REQ_DC_VOLTAGE", "interval": "M" }, { "tag": "TAG_PVI_REQ_DC_CURRENT", "interval": "M" }, { "tag": "TAG_PVI_REQ_DC_STRING_ENERGY_ALL", "interval": "M" }, { "tag": "TAG_BAT_REQ_MAX_BAT_VOLTAGE", "interval": "M" }, { "tag": "TAG_BAT_REQ_MAX_CHARGE_CURRENT", "interval": "L" }, { "tag": "TAG_BAT_REQ_EOD_VOLTAGE", "interval": "L" }, { "tag": "TAG_BAT_REQ_MAX_DISCHARGE_CURRENT", "interval": "L" }, { "tag": "TAG_BAT_REQ_CHARGE_CYCLES", "interval": "L" }, { "tag": "TAG_BAT_REQ_TERMINAL_VOLTAGE", "interval": "M" }, { "tag": "TAG_BAT_REQ_DEVICE_NAME", "interval": "L" }, { "tag": "TAG_BAT_REQ_DCB_COUNT", "interval": "L" }, { "tag": "TAG_BAT_REQ_RSOC_REAL", "interval": "M" }, { "tag": "TAG_BAT_REQ_ASOC", "interval": "M" }, { "tag": "TAG_BAT_REQ_FCC", "interval": "L" }, { "tag": "TAG_BAT_REQ_RC", "interval": "L" }, { "tag": "TAG_BAT_REQ_MAX_DCB_CELL_TEMPERATURE", "interval": "M" }, { "tag": "TAG_BAT_REQ_MIN_DCB_CELL_TEMPERATURE", "interval": "M" }, { "tag": "TAG_BAT_REQ_DCB_ALL_CELL_TEMPERATURES", "interval": "M" }, { "tag": "TAG_BAT_REQ_DCB_ALL_CELL_VOLTAGES", "interval": "M" }, { "tag": "TAG_BAT_REQ_READY_FOR_SHUTDOWN", "interval": "M" }, { "tag": "TAG_BAT_REQ_INFO", "interval": "M" }, { "tag": "TAG_BAT_REQ_TRAINING_MODE", "interval": "M" }, { "tag": "TAG_BAT_REQ_USABLE_CAPACITY", "interval": "L" }, { "tag": "TAG_BAT_REQ_USABLE_REMAINING_CAPACITY", "interval": "L" }, { "tag": "TAG_BAT_REQ_DCB_INFO", "interval": "M" }, { "tag": "TAG_BAT_REQ_SPECIFICATION", "interval": "L" }, { "tag": "TAG_BAT_REQ_INTERNALS", "interval": "L" }, { "tag": "TAG_BAT_REQ_TOTAL_USE_TIME", "interval": "M" }, { "tag": "TAG_BAT_REQ_TOTAL_DISCHARGE_TIME", "interval": "M" }, { "tag": "TAG_BAT_REQ_DEVICE_STATE", "interval": "M" }, { "tag": "TAG_SYS_REQ_IS_SYSTEM_REBOOTING", "interval": "S" }, { "tag": "TAG_WB_REQ_STATUS", "interval": "M" }, { "tag": "TAG_WB_REQ_ENERGY_ALL", "interval": "M" }, { "tag": "TAG_WB_REQ_ENERGY_SOLAR", "interval": "M" }, { "tag": "TAG_WB_REQ_SOC", "interval": "M" }, { "tag": "TAG_WB_REQ_STATUS", "interval": "M" }, { "tag": "TAG_WB_REQ_ERROR_CODE", "interval": "M" }, { "tag": "TAG_WB_REQ_MODE", "interval": "M" }, { "tag": "TAG_WB_REQ_APP_SOFTWARE", "interval": "L" }, { "tag": "TAG_WB_REQ_BOOTLOADER_SOFTWARE", "interval": "L" }, { "tag": "TAG_WB_REQ_HW_VERSION", "interval": "L" }, { "tag": "TAG_WB_REQ_FLASH_VERSION", "interval": "L" }, { "tag": "TAG_WB_REQ_DEVICE_ID", "interval": "L" }, { "tag": "TAG_WB_REQ_DEVICE_STATE", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_POWER_L1", "interval": "S" }, { "tag": "TAG_WB_REQ_PM_POWER_L2", "interval": "S" }, { "tag": "TAG_WB_REQ_PM_POWER_L3", "interval": "S" }, { "tag": "TAG_WB_REQ_PM_ACTIVE_PHASES", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_MODE", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_ENERGY_L1", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_ENERGY_L2", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_ENERGY_L3", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_DEVICE_ID", "interval": "L" }, { "tag": "TAG_WB_REQ_PM_ERROR_CODE", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_DEVICE_STATE", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_FIRMWARE_VERSION", "interval": "L" }, { "tag": "TAG_WB_REQ_DIAG_INFOS", "interval": "M" }, { "tag": "TAG_WB_REQ_DIAG_WARNINGS", "interval": "M" }, { "tag": "TAG_WB_REQ_DIAG_ERRORS", "interval": "M" }, { "tag": "TAG_WB_REQ_DIAG_TEMP_1", "interval": "M" }, { "tag": "TAG_WB_REQ_DIAG_TEMP_2", "interval": "M" }, { "tag": "TAG_WB_REQ_PM_MAX_PHASE_POWER", "interval": "M" }, { "tag": "TAG_WB_REQ_DEVICE_NAME", "interval": "L" }, { "tag": "TAG_WB_REQ_EXTERN_DATA_SUN", "interval": "M" }, { "tag": "TAG_WB_REQ_EXTERN_DATA_NET", "interval": "M" }, { "tag": "TAG_WB_REQ_EXTERN_DATA_ALL", "interval": "M" }, { "tag": "TAG_WB_REQ_EXTERN_DATA_ALG", "interval": "M" }, { "tag": "TAG_WB_REQ_PARAM_1", "interval": "M" }, { "tag": "TAG_WB_REQ_PARAM_2", "interval": "M" } ] } }
Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
(Ausschnitt aus dem Objektbaum)- e3dc-rscp
- 0
- BAT
- BAT_0
- DCB_0
- DCB_CELL_TEMPERATURE
- DCB_CELL_VOLTAGE
- ...
- DCB_0
- BAT_0
- BAT
- 0
Konfiguration KEBA P30 C-Serie
Voraussetzung ist, dass die P30 im Netwerk angeschlossen und erreichbar ist.
Bitte kurz prüfen, ob die Website der Wallbox erreichbar ist. Dazu einfach die IP Adress im Browser eingeben. Bei mir ist das 192.168.178.60- Wichtig: Bei der KEBA P30 C-Series muß der DIP-Schalter 1.3=ON gestellt werden, wenn man die Ladelseitung beeinflussen möchte.
- Außerdem ist meine Wallbox auf 11kW gedrosselt: DIP Schalter 1.7=ON.
- Alle anderen DIP-Schalter = OFF.
Auf dem PCB ist echt wenig beschriftet, deswegen habe ich mal ein Bild gemacht:
Hier ein Bild des Schalters: DIP Schalter 1.3=ON, 1.7=ON
(gelbe Markierung 1.3 = ON)
Konfiguration des iobroker kecontact Adapter (kecontact.0)
-
Im iobroker unter "Instanzen" die Konfiguration des kecontact.0 Adapter öffnen (Schraubenschlüssel):
-
IP-Adresse der Wallbox : IP-Adresse der KEBA KeContact-Wallbox : 192.168.178.60
-
OFF: passiver Modus
-
30 : Aktualisierungsintervall (für passiven Modus)
-
ON : lade letzte Ladesitzungen
-
ON : States beinhalten die Lesitung der Wallbox
Konfiguration über eine Datei in die kecontact.0 Instanz laden
Wichtig und bitte anpassen
--> "host": "YourIoBrokerHostName"
--> "host": "192.168.178.60"Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden
- Instanze
- kecontact.0
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- Klick: oben rechts den Upload Knopf.
- Dann die JSON Datei auswählen
- Klick: oben rechts den Upload Knopf.
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- kecontact.0
Hilfe:
readme": "https://github.com/iobroker-community-adapters/ioBroker.kecontact/blob/master/README.md",kecontact.0 JSON Datei meiner Konfiguration
{ "_id": "system.adapter.kecontact.0", "common": { "name": "kecontact", "version": "1.5.2", "title": "KEBA KeContact Wallbox", "authors": [ "UncleSamSwiss <samuel.weibel@gmail.com>", "Volker Sengler <git@sengler.de>" ], "license": "Apache-2.0", "platform": "Javascript/Node.js", "mode": "daemon", "messagebox": true, "materialize": true, "readme": "https://github.com/iobroker-community-adapters/ioBroker.kecontact/blob/master/README.md", "loglevel": "info", "type": "hardware", "connectionType": "local", "compact": true, "dataSource": "poll", "keywords": [ "KeContact", "P30", "P20", "BMW", "KEBA", "wallbox", "emobility", "e-mobility" ], "icon": "kecontact.png", "extIcon": "https://raw.githubusercontent.com/iobroker-community-adapters/ioBroker.kecontact/master/admin/kecontact.png", "plugins": { "sentry": { "dsn": "https://01d409e4ecea470485101a0f53720ee5@sentry.iobroker.net/139" } }, "installedFrom": "iobroker.kecontact@1.5.2", "installedVersion": "1.5.2", "enabled": true, "host": "YourIoBrokerHostName", "logLevel": "info", "supportCustoms": false, "dependencies": [ { "js-controller": ">=2.0.0" } ] }, "native": { "host": "192.168.178.60", "passiveMode": false, "pollInterval": 30, "loadChargingSessions": true, "stateRegard": "alias.0.Energy.GRID_0", "stateSurplus": "", "statesIncludeWallbox": true, "stateBatteryCharging": "alias.0.Energy.BAT_0", "stateBatteryDischarging": "", "useX1forAutomatic": false, "delta": 500, "minAmperage": 6000, "addPower": 0, "underusage": 500, "minTime": 300, "regardTime": 300, "maxPower": 0, "stateEnergyMeter1": "", "stateEnergyMeter2": "", "stateEnergyMeter3": "", "wallboxNotIncluded": false } }
Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
(Ausschnitt aus dem Objektbaum)- kecontact
- 0
- DIP-Sw1
- ...
- 0
Schritt 1: Ziel erreicht, wenn:
- Instanze :e3dc-rscp.0 wird grün angezeigt
- Instanze : kecontact.0 wird grün angezeigt
Schritt 2: Alias für die Datenpunkte in der Instanz e3dc-rscp.0 anlegen
Jetzt legen wir einen Verzeichnisbaum für zwei benötigt Alias an.- Bitte im iobroker Objekte alias und 0 wählen (gelb markiert).
- Dann das "+" im Menü oben auswählen (rot markiert).
- im Pop-up Fenster wählen und eingeben: Typ aus DropDown liste = "Verzeichnis", Name = "Energy"
Jetzt legen wir zwei Alias im Verzeichnis "Energy" aus der e3dc-rscp Instanz an.
-
alias.0.Energy.GRID_0 = e3dc-rscp.0.EMS.POWER_GRID
Der Wert POWER_GRID hat die Unit "Watt" und ist positiv (+), wenn Leistung aus dem Netz (Grid) entnommen wird. Und der Wert ist negativ (-) , wenn Leistung in des öffentliche Netz eingespeist wird. Demnach wird Entnahme und Einspeisung aus dem öffentlichem Netz im gleichen Datenpunkt (DP) gespeichert. Der Alias sollte dann so aussehen:
-
alias.0.Energy.BAT_0 = e3dc-rscp.0.EMS.POWER_BAT
Der Wert POWER_BAT hat die Unit "Watt" und ist positiv (+), wenn Leistung in der Battery des E3DC gespeichert wird. Und der Wert ist negativ (-), wenn Leistung entnommen wird, um diese im Haus/EV zu verbrauchen. Der Alias sollte dann so aussehen:
(Ausschnitt aus dem Objektbaum)
- alias
- 0
- Energy
- BAT_0
- GRID_0
- Energy
- 0
Hier kann man schon die Werte aus der Instanz e3dc-rscp erkennen (rechts gelb markiert). Natürlich kann man sich so mehrere Alias anlegen
Schritt 2: Ziel erreicht, wenn:
- Instanz : alias.0.Energy.BAT_0 plausible Werte anzeigt. In dem Screenshot hier oben werden gerade 57.0 Watt in der E3DC Batterie gespeichert.
- Instanz : alias.0.Energy.GRID_0 plausible Werte anzeigt. In dem Screenshot hier oben werden gerade 3.0 Watt aus dem öffentlichen Netz entnommen.
Schritt 3: Jetzt teilen wir dem Wallbox Adapter kecontact.0 die beiden Alias mit
Im iobroker unter "Instanzen" die Konfiguration des kecontact.0 Adapter öffnen (Schraubenschlüssel):Dies hatten wir weiter oben schon eingetragen -->
- IP-Adresse der Wallbox : IP-Adresse der KEBA KeContact-Wallbox : 192.168.178.60
- OFF: passiver Modus
- 30 : Aktualisierungsintervall (für passiven Modus)
- ON : lade letzte Ladesitzungen
- ON : States beinhalten die Lesitung der Wallbox
Dies muss noch eingetragen werden -->
- Name des States für Netzbezug : alias.0.Energy.GRID_0
- Name des States für aktuelle Leistungsaufnahme des Batterieseichers: alias.0.Energy.BAT_0
Die beiden Alias werden hier eingetragen (gelb markiert):
Schritt 3: Ziel erreicht, wenn:
- Instanze : kecontact.0 weiterhin grün angezeigt
- Instanze :e3dc-rscp.0 wird grün angezeigt
Sollten dann so aussehen:
Schritt 4: PV optimiertes laden des EV aktivieren
kecontact.0.automatic.photovoltaics = true
Hat es bei euch funktioniert? Dann schreibt doch ein paar Zeilen zu Eurer Lösung, Danke.
-
PV optimierte und volle Ladeleistung via QR code umschalten
Ziel
Die Wallbox (WB) ist aus dem vorherigen Beitrag immer fest auf PV optimiertem laden eingestellt. Nun ist es oft so, dass man bei schlechtem Wetter das Elektroauto mal schnell voll laden möchte. Für das Umschalten möchte ich hier eine einfache Möglichkeit zeigen. Wieder ganz ohne jegliche Programmierkentnisse- Instanzen
- Admin v6.3.5
- e3dc-rscp.0 v1.1.1
- kecontact.0 v1.5.2
- simple-api.0 V2.7.2
Kurzbeschreibung der Lösung
- Den simple-api Adapter konfigurieren und erfolgreich starten.
- Den Datenpunkt kecontact.0.automatic.photovoltaics von true auf false umschalten.
- Einen QR code erstellen, um mit dem Mobiltelefon den QR Code zu scannen und damit den Datenpunkt zu verändern. Dazu hängt bei uns ein entsprechendes Blatt in der Küche.
Schritt 1: Im iobroker unter "Instanzen" die Konfiguration des simple-api Adapter öffnen (Schraubenschlüssel).
Konfiguration über eine Datei in die simple-api.0 Instanz laden{ "port": 8087, "auth": false, "secure": false, "bind": "0.0.0.0", "certPublic": "", "certPrivate": "", "certChained": "", "defaultUser": "admin", "onlyAllowWhenUserIsOwner": false, "webInstance": "", "leEnabled": false, "leUpdate": false, "leCheckPort": 80, "dataSource": "", "allDatapoints": false }
Jetzt kann man einige Funktionen des Adapters ausprobieren:
z.B. help
http://YourIpAdress:8087/helpIn meinem Fall heist der iobroker host "heimgarten.fritz.box":
{ "getPlainValue": "http://heimgarten.fritz.box:8087/getPlainValue/stateID", "get": "http://heimgarten.fritz.box:8087/get/stateID/?prettyPrint", "getBulk": "http://heimgarten.fritz.box:8087/getBulk/stateID1,stateID2/?prettyPrint", "set": "http://heimgarten.fritz.box:8087/set/stateID?value=1&prettyPrint", "toggle": "http://heimgarten.fritz.box:8087/toggle/stateID&prettyPrint", "setBulk": "http://heimgarten.fritz.box:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint", "setValueFromBody": "http://heimgarten.fritz.box:8087/setValueFromBody?stateID1", "objects": "http://heimgarten.fritz.box:8087/objects?pattern=system.adapter.admin.0*&prettyPrint", "states": "http://heimgarten.fritz.box:8087/states?pattern=system.adapter.admin.0*&prettyPrint", "search": "http://heimgarten.fritz.box:8087/search?pattern=system.adapter.admin.0*&prettyPrint", "query": "http://heimgarten.fritz.box:8087/query/stateID1,stateID2/?dateFrom=2019-06-06T12:00:00.000Z&dateTo=2019-06-06T12:00:00.000Z&noHistory=false&aggregate=minmax&count=3000&prettyPrint" }
Schritt 2: Den Datenpunkt "photovoltaics" von true auf false umschalten
Das geht jetzt ganz einfach mit jeweils einem Aufruf über Deinen Browser.
Wichtig: Bitte noch deine IP Adresse oder deinen hostname einsetzen. Bei mir heisst der iobroker host heimgarten.fritz.box.True: EV PV optimiert laden
http://heimgarten.fritz.box:8087/set/kecontact.0.automatic.photovoltaics?value=true&prettyPrint Ergebnis: { "id": "kecontact.0.automatic.photovoltaics", "value": true, "val": true }
False: EV mit voller Ladeleistung laden
http://heimgarten.fritz.box:8087/set/kecontact.0.automatic.photovoltaics?value=false&prettyPrint Ergebnis: { "id": "kecontact.0.automatic.photovoltaics", "value": false, "val": false }
Gerne auch mal kontrollieren, ob der Datenpunkt sich geändert hat
Schritt 3: Einen QR code erstellen, um mit dem Mobiltelefon den QR Code zu scannen und damit den Datenpunkt zu verändern
Dazu habe ich einen freien Generator verwendet:https://www.qr-code-generator.com/
Jetzt die Adressen von Schritt 2 im QR Code Generator eintragen und schon bekommt ihr den zugehörigen QR Code angezeigt. Download von JPG ist auch möglich - oder einfach einen Screenshot speichern:
Hier das Beispiel für "false" -->
<--Natürlich braucht ihr für jeweils einen QR Code für:
- true
- false
Zur Probe könnte ihr den QR Code schonmal mit eurem Mobiltelefon ausprobieren.
Viel Spass!
- Instanzen