FEMS App REST/JSON Schreibzugriff

1. Einleitung

Sehr geehrte Kundin, sehr geehrter Kunde,

vielen Dank, dass Sie sich für die »FEMS App REST/JSON Schreibzugriff« entschieden haben. Gerne können Sie uns Ihre Anregungen mitteilen, damit wir die Qualität unserer Produkte noch weiter verbessern können.

2. Installation der App

Mit der Bestellung der »FEMS App REST/JSON Schreibzugriff« haben Sie einen 16-stelligen Lizenzschlüssel erhalten. Mittels diesem Lizenzschlüssel können Sie die App eigenständig im FEMS App Center einlösen.

Eine Anleitung zur Vorgehensweise finden Sie hier.

3. REST/JSON — Schreibzugriff

Diese Anleitung dient der Beschreibung des Schreibzugriffs auf ein FENECON-Stromspeichersystem mittels REST-/JSON-API. Anschließend wird die Funktionsweise der Schnittstelle erklärt.

3.1. Voraussetzungen

Das auf das Stromspeichersystem zugreifende Gerät (z. B. Notebook/PC) muss direkten Zugriff auf die IP-Adresse des FEMS haben - also z. B. im selbem physischen Netzwerk angeschlossen sein.

3.2. Grundlagen REST/JSON

Die REST-/JSON-Schnittstelle ermöglicht den Zugriff auf das FEMS im lokalen Netzwerk über eine an REST angelehnte Schnittstelle.

3.3. Schreibzugriff

Diese App stellt eine an REST angelehnte Schnittstelle zur Verfügung, mit der Datenpunkte im System beschrieben werden können.

Diese App ist nicht im Standard-Lieferumfang des FEMS enthalten. Sie kann jedoch nachträglich jederzeit nachgerüstet werden. Bitte kontaktieren Sie uns, falls Sie eine Nachrüstung wünschen.
Die Verwendung des Schreibzugriffs ist nicht über den Gast-Zugang möglich. Stattdessen ist ein gesonderter Kundenzugang notwendig. Hierfür ist das Passwort "owner" zu verwenden. Der Nutzername kann wie beim Lesezugriff beliebig gewählt werden.

Sämtliche Schreibzugriffe müssen als POST-Requests gesendet werden.

3.3.1. Timeout

Diese App verfügt über einen konfigurierbaren Timeout. Im Standard ist dieser auf 60 Sekunden konfiguriert. Er sorgt dafür, dass ein Vorgabewert 60 Sekunden lang aktiv bleibt. Sobald ein neuer Vorgabewert geschrieben wird, wird der neue Wert verwendet. Erfolgt kein neuer Vorgabewert innerhalb von 60 Sekunden, fällt die Steuerung auf den nachrangig priorisierten Controller zurück - z. B. Vorgabe einer "0"-Leistung oder Eigenverbrauchsoptimierung.

3.3.2. /channel Endpunkt

Über den Endpunkt /channel wird der Zugriff auf einzelne Datenpunkte, sogenannte "Channels", im System ermöglicht.

Die vollständige Adresse des Endpunkts lautet:

http://x:<PASSWORT>@<IP>:80/rest/channel/<KOMPONENTE>/<KANAL>

3.3.3. Datenpunkte

Die folgenden Datenpunkte der Komponente _ess0 können beschrieben werden:

Tabelle 1. Datenpunkte der Komponente _ess0

Datenpunkt

Beschreibung

Einheit

SetActivePowerEquals

Vorgabe Be- bzw. Entladeleistung

Watt [W]

SetReactivePowerEquals

Vorgabe Blindleistungsvorgabe

VoltAmpere Reaktiv [var]

SetActivePowerLessOrEquals

Vorgabe maximaler Entladeleistung

Watt [W]

SetReactivePowerLessOrEquals

Vorgabe maximaler Blindleistung

VoltAmpere Reaktiv [var]

SetActivePowerGreaterOrEquals

Vorgabe maximaler Beladeleistung

Watt [W]

SetReactivePowerGreaterOrEquals

Vorgabe minimaler Blindleistung

VoltAmpere Reaktiv [var]

Die Register für Blindleistungsvorgaben sind aktuell für Home-Systeme nicht nutzbar.
Mehr Informationen zum Channel SetActivePowerEquals und anderen Channels zur Leistungsvorgabe finden Sie im Glossar

3.3.4. Beispiel 1 — Wirkleistungsvorgabe: Python

Um z. B. dem ersten Stromspeichersystem (bzw. Stromspeicher-Cluster) eine Entladeleistung von 5 kW vorzugeben, senden Sie einen POST-Request an die Adresse http://192.168.0.23:80/rest/channel/ess0/SetActivePowerEquals mit der Leistungsvorgabe im JSON-Format

{
  "value": 5000
}
Positive Werte entsprechen einer Speicherentladung - Negative Werte einer Speicherbeladung.

Hierfür kann die requests-Bibliothek genutzt werden, die zu Beginn importiert werden muss:

import requests

url = 'http://192.168.0.23:80/rest/channel/ess0/SetActivePowerEquals'

user = 'x'
password = 'owner'

session = requests.Session()
session.auth = (user, password)

data = {"value": 5000}

response = session.post(url, json = data)
response.raise_for_status()

Die korrekte Durchführung des Requests kann über einen anschließenden GET-Request oder über das Online-Monitoring (s. unten) überprüft werden.

Talend API Tester POST Success

3.3.5. Beispiel 2 — Wirkleistungsvorgabe: Talend API Tester

Talend API Tester ist eine Erweiterung für Google Chrome, die es ermöglicht, REST APIs zu testen.

Zunächst muss ein Authorization-Header hinzugefügt werden:

Talend API Tester Authentication POST

Anschließend kann der POST-Request ausgeführt werden.

Talend API Tester POST

Die korrekte Durchführung des Requests kann über einen anschließenden GET-Request oder über das Online-Monitoring (s. unten) überprüft werden.

Talend API Tester POST Success