REST/JSON Write acces specs
Basisprincipes REST/JSON
De REST/JSON-interface maakt via REST-toegang mogelijk tot de FEMS in het lokale netwerk.
Leestoegang
Deze app biedt een op REST gebaseerde interface waarmee datapunten in het systeem kunnen worden uitgelezen.
Opmerking
Deze app is standaard inbegrepen in de leveringsomvang van de FEMS.
Het basisadres voor REST-toegang ishttp://<BENUTZER>:<PASSWORT>@<IP>:80/rest
- Http is het protocol
- <BENUTZER>is de gebruikersnaam. Omdat de authenticatie alleen via het wachtwoord plaatsvindt, kan hier elke waarde (bijvoorbeeld “x”) worden opgegeven
- <PASSWORT>is het wachtwoord van de gebruiker. De standaard “gast”-gebruiker in FEMS heeft het wachtwoord ” gebruiker “
- <IP>is het IP-adres van de FEMS
- 80is de poort voor de REST/JSON API (optioneel)
Dus als uw FEMS het lokale IP-adres ‘192.168.0.23’ heeft, is het basisadres voor REST-toegang http://x:user@192.168.0.23:80/rest
Waarschuwing
Om veiligheidsredenen worden eenvoudige authenticatieverzoeken niet ondersteund, omdat bij deze variant wachtwoorden via de URL worden verzonden. Headerverificatie moet expliciet worden gebruikt voor REST-aanroepen. Een zoekopdracht rechtstreeks via de browser (zonder extensie) is daarom niet mogelijk. In dit geval verschijnt er een foutmelding, zie Figuur Foutmelding bij eenvoudige authenticatieverzoeken . Voor het uitvoeren van query’s in de browser kunt u de Talend API Tester-extensie gebruiken, zoals hier beschreven.
Figuur 1. Foutmelding voor eenvoudige authenticatieverzoeken
/channel eindpunt
Het /channeleindpunt maakt toegang mogelijk tot individuele datapunten, zogenaamde “kanalen”, in het systeem.
Het volledige adres van het eindpunt is:
http://x:<WACHTWOORD>@<IP>:80/rest/channel/<COMPONENT>/<CHANNEL>
- <KOMPONENTE>is de ID van het onderdeel
- <KANAL>is de ID van het kanaal s
Data punten
De volgende gegevenspunten kunnen worden gelezen:
Data punt | Beschrijving | Eenheid |
_sum/State | Systeemstatus (0: Ok, 1:Info, 2:Waarschuwing, 3:Fout) | |
_sum/EssSoc | Ladingsniveau geheugen | procent [%] |
_sum/EssActivePower | Actieve kracht van het geheugen | Watt [W] |
_sum/GridActivePower | Werkelijk vermogen op het netaansluitpunt | Watt [W] |
_sum/ProductionActivePower | Actieve stroomgenerator | Watt [W] |
_sum/ProductionAcActivePower | AC-generator met actief vermogen | Watt [W] |
_sum/ProductionDcActualPower | Actief vermogen DC-generator | Watt [W] |
_sum/ConsumptionActivePower | Actieve stroomverbruiker | Watt [W] |
_sum/EssActiveChargeEnergy | Energieopslag laden | Wattuur [Wh] |
_sum/EssActiveDischargeEnergy | Ontlading van energieopslag | Wattuur [Wh] |
_sum/GridBuyActiveEnergy | Energie uit het net | Wattuur [Wh] |
_sum/GridSellActiveEnergy | Teruglevering energienet | Wattuur [Wh] |
_sum/ProductionActiveEnergy | Energie productie | Wattuur [Wh] |
_sum/ProductionAcActiveEnergy | Energie AC-opwekking | Wattuur [Wh] |
_sum/ProductionDcActiveEnergy | Energie DC-opwekking | Wattuur [Wh] |
_sum/ConsumptionActiveEnergy | Energieverbruiker | Wattuur [Wh] |
_sum/EssActivePowerL1 | Actief vermogen fase 1 opslag | Watt [W] |
_sum/EssActivePowerL2 | Actief vermogen fase 2 opslag | Watt [W] |
_sum/EssActivePowerL3 | Actief vermogen fase 3 opslag | Watt [W] |
_sum/GridActivePowerL1 | Actief vermogen fase 1 netwerk | Watt [W] |
_sum/GridActivePowerL2 | Actief vermogen fase 2 netwerk | Watt [W] |
_sum/GridActivePowerL3 | Actief vermogen fase 3 netwerk | Watt [W] |
_sum/ProductionAcActivePowerL1 | Actief vermogen fase 1 generator | Watt [W] |
_sum/ProductionAcActivePowerL2 | Actief vermogen fase 2 generator | Watt [W] |
_sum/ProductionAcActivePowerL3 | Actief vermogen fase 3 generator | Watt [W] |
_sum/ConsumptionActivePowerL1 | Actief vermogen fase 1 verbruiker | Watt [W] |
_sum/ConsumptionActivePowerL2 | Actief vermogen fase 2 verbruiker | Watt [W] |
_sum/ConsumptionActivePowerL3 | Actief vermogen fase 3 verbruiker | Watt [W] |
Voorbeeld 1 – De laadstatus opvragen: cURL
Voorbeeld 1 – De laadstatus opvragen: cURL
Het opdrachtregelprogramma cURL is vooraf geïnstalleerd op zowel Windows als Linux.
Om de laadstatus van de energieopslag te lezen, stuurt u een GET verzoek naar het adres: http://x:user@192.168.0.23:80/rest/channel/_sum/EssSoc
U ontvangt een antwoord in JSON-formaat:
Windows
Met de volgende opdracht wordt het antwoord in JSON-indeling opgeslagen in het bestand out.json
>curl -o out.json http://x:user@192.168.0.23:80/rest/channel/_sum/EssSoc
Om de inhoud van het bestand uit te voeren, gebruikt u:
>type out.json
Uitkomst:
{“address”:“_sum/EssSoc”,”type”:“INTEGER”,”accessMode”:“RO”,”text”:“”,”unit”:“%”,”value”:99}
De waarde van de laadtoestand vindt u onder waarde. In het bovenstaande voorbeeld is dit 99%.
Linux
Met de volgende opdracht wordt het antwoord in JSON-indeling opgeslagen in het bestand out.json
$curl -o out.json http://x:user@192.168.0.23:80/rest/channel/_sum/EssSoc
Om de inhoud van het bestand uit te voeren, gebruikt u:
>cat out.json
Uitkomst:
{“address”:“_sum/EssSoc”,”type”:“INTEGER”,”accessMode”:“RO”,”text”:“”,”unit”:“%”,”value”:99}
De waarde van de laadtoestand vindt u onder waarde. In het bovenstaande voorbeeld is dit 99%.
Voorbeeld 2 – Chargestatus opvragen: Python
Python-versies voor Windows en Linux zijn hier beschikbaar:
https://www.python.org/downloads/
Om de laadstatus van de energieopslag uit te lezen, moet er ook een aanvraag worden verzonden GETnaar het adres:
http://x:user@192.168.0.23:80/rest/channel/_sum/EssSoc
Hiervoor kan de verzoekbibliotheek worden gebruikt, die aan het begin moet worden geïmporteerd:
url = ‘http://192.168.0.23:80/rest/channel/_sum/EssSoc’
user = ‘x’
password = ‘user’
session = requests.Session()
session.auth = (user, password)
response = session.get(url)
response.raise_for_status()
De opdracht retourneert een antwoord in JSON-indeling. Dit kan worden gedaan met het volgende commando:
print(response.text)
Uitkomst:
{“address”:“_sum/EssSoc”,”type”:“INTEGER”,”accessMode”:“RO”,”text”:“”,”unit”:“%”,”value”:99}
De waarde van de laadtoestand vindt u onder waarde. In het bovenstaande voorbeeld is dit 99%.
Voorbeeld 3 – Opvragen laadstatus: Talend API Tester
Talend API Tester is een extensie voor Google Chrome waarmee u REST API’s kunt testen.
Eerst moet een Authorizatie Header worden toegevoegd:
Het verzoek kan vervolgens GET worden uitgevoerd.
De waarde van de laadtoestand vindt u onder waarde. In het bovenstaande voorbeeld is dit 99%.
Schrijftoegang
Deze app biedt een RUSTEr is een soortgelijke interface beschikbaar waarmee datapunten in het systeem kunnen worden beschreven.
Opmerking
Deze app is niet inbegrepen in de standaard leveringsomvang van de FEMS. Het kan echter op elk moment achteraf worden ingebouwd. Neem hiervoor contact met ons op!
Opmerking
Het gebruik van schrijftoegang is niet mogelijk via gasttoegang. In plaats daarvan is afzonderlijke klanttoegang noodzakelijk. Hiervoor moet het wachtwoord “eigenaar” worden gebruikt. Net als bij leestoegang kan de gebruikersnaam willekeurig worden gekozen.
Alle schrijftoegangen moeten POST als verzoeken worden verzonden.
Time-out
Deze app heeft een configureerbare time-out. Standaard is dit ingesteld op 60 seconden. Het zorgt ervoor dat een standaardwaarde 60 seconden actief blijft. Zodra een nieuwe standaardwaarde wordt geschreven, wordt de nieuwe waarde gebruikt. Als er binnen 60 seconden geen nieuwe standaardwaarde is, valt de besturing terug naar de controller met lagere prioriteit – b.v. B. Een “0”-prestatie specificeren of het eigen verbruik optimaliseren.
/channel eindpunt
Het eindpunt /channel maakt toegang mogelijk tot individuele datapunten, zogenaamde “kanalen”, in het systeem.
Het volledige adres van het eindpunt is:
http://x:<WACHTWOORD>@<IP>:80/rest/channel/<COMPONENT>/<CHANNEL>
Datapunten
De volgende gegevenspunten kunnen worden beschreven:
Data punt | Beschrijving | Eenheid |
ess0/SetActivePowerEquals | Specificatie actief vermogen | Watt [W] |
ess0/SetReactivePowerEquals | Specificatie van reactief vermogen | VoltAmpereReactief [VAR] |
ess0/SetActivePowerLessOrEquals | Specificatie van (maximaal) actief vermogen | Watt [W] |
ess0/SetReactivePowerLessOrEquals | (Maximale) blindvermogenspecificatie | VoltAmpereReactief [VAR] |
ess0/SetActivePowerGreaterOrEquals | (Minimale) specificatie actief vermogen | Watt [W] |
ess0/SetReactivePowerGreaterOrEquals | (Minimale) specificatie actief vermogen | VoltAmpereReactief [VAR] |
Opmerking
Zie de verklarende woordenlijst voor meer informatie over het kanaal SetActivePowerEqualsen andere kanalen voor prestatietargeting
Voorbeeld 1 – Specificatie actief vermogen: Python
Naar b.v. Als u bijvoorbeeld een ontladingsvermogen van 5 kW wilt opgeven voor het eerste energieopslagsysteem (of energieopslagcluster), stuurt u een POST verzoek naar het adres http://192.168.0.23:80/rest/channel/ess0/SetActivePowerEqualsmet de vermogensspecificatie in JSON- formaat
{
“value”: 5000
}
Opmerking
Een ontlading van het geheugen wordt gerealiseerd door een positieve waarde, een laden door een negatieve waarde.
Hiervoor kan de verzoekbibliotheek worden gebruikt, die aan het begin moet worden geïmporteerd:
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()
De juiste uitvoering van het verzoek kan GET worden gecontroleerd via een vervolgverzoek of online monitoring.
Voorbeeld 2 – Specificatie actief vermogen: Talend API Tester
Talend API Tester is een extensie voor Google Chrome waarmee u REST API’s kunt testen.
Eerst moet een Authorizatie Header worden toegevoegd:
Het verzoek kan vervolgens POST worden uitgevoerd.
De juiste uitvoering van het verzoek kan GETw orden gecontroleerd via een vervolgverzoek of online monitoring.