Reduxi API-handleidingen
Koppel uw eigen systemen aan Reduxi: de External API levert clouddata via HTTPS, de MQTT API geeft u directe toegang tot een Reduxi Controller via uw MQTT-broker.
1 Welke API-handleiding hebt u nodig?
Reduxi biedt twee API-handleidingen. Gebruik de External API om gegevens over uw controllers, apparaten, voorspellingen en prijzen op te halen uit de Reduxi-cloud. Gebruik de MQTT API om waarden uit een Reduxi Controller te lezen en er setpoints en commando's naartoe te sturen via uw eigen MQTT-broker.
| External API | MQTT API | |
|---|---|---|
| Type | REST API via HTTPS (OpenAPI 3.0) | MQTT-berichten (versie 3.x) op uw MQTT-broker |
| Gegevensbron | Reduxi-cloud | Reduxi Controller |
| Toegang | Bearer-token | Host, poort, gebruikersnaam en wachtwoord van de MQTT-broker, ingesteld in de Reduxi Configurator |
| Richting | Haalt gegevens op | Leest gegevens, stuurt setpoints en commando's |
| Geschikt voor | Dashboards, rapportages en integraties met controller-, apparaat-, voorspellings- en prijsgegevens | Een controller in realtime bewaken en aansturen |
2 External API (REST)
De External API geeft u toegang tot de gegevens van uw controllers in de Reduxi-cloud. Alle vermogens- en energiewaarden worden geleverd in basiseenheden: W en Wh. Verzoeken worden geautoriseerd met een Bearer-token.
- Controllers: lijst van controllers, controllerdetails en de laatst bekende status van de apparaten van een controller
- Alarmen: actieve alarmen van een controller
- Apparaatgegevens: metingen per apparaat, geaggregeerde metingen per apparaatcategorie en query's over meerdere apparaten
- Datatypen: de datatypen die voor een apparaat beschikbaar zijn
- Voorspellingen: voorspellingsgegevens per locatie of per controller
- Prijzen: day-ahead spotmarktprijzen, spotmarktregio's en prijslijsten per locatie
3 MQTT API
De MQTT API verbindt een Reduxi Controller met uw MQTT-broker. De controller publiceert zijn uitlezingen en informatie over apparaten en strategieën naar topics, en u stuurt setpoints, commando's en instellingen terug via andere topics. De huidige specificatie is versie 1.5 en vereist controllersoftwareversie 20260421084600.
- Controller: identificatie, keep-alive, uitlees- en keep-aliveintervallen, netinstellingen
- Apparaten: apparatenlijst, apparaatinformatie, uitlezingen en setpoints
- Strategieën: strategielijst, informatie, uitlezingen, parameters, actieve status en instellingen van extern EMS
- Commando's: metadata vernieuwen en herstarten
De MQTT-documentatie is opgesteld vanuit het perspectief van de Reduxi Controller.
Wanneer u uit Reduxi MQTT leest, ziet u de term "PUB". Waarom PUB? Omdat wij de gegevens van de Reduxi Controller publiceren naar het topic.
Wanneer u via MQTT waarden instelt op de Reduxi Controller, ziet u de term "SUB". Waarom SUB? Omdat wij ons abonneren op het topic en er gegevens uit lezen, waarbij de waarden die u hebt verstuurd naar de Reduxi Controller worden ingesteld.
Hoofdstuk 4 tot en met 8 laten zien hoe u de Reduxi Configurator instelt, zodat de controller gegevens naar uw MQTT-broker stuurt. Ze eindigen met een voorbeeld: één apparaat uitlezen en de setpoints ervan instellen.
4 Ondersteuning van MQTT-versies
Wij ondersteunen versie 3. x. Versie 5. x ondersteunen wij echter niet.
5 Configuratie van de Reduxi MQTT-interface
Log in op het Reduxi Controller-apparaat en ga naar de systeeminstellingen. Selecteer onder System settings de optie MQTT v3 en definieer de gegevens van de MQTT-broker:
- Host (alleen domein/IP-adres, zonder mqtts://)
- Poort
- Gebruikersnaam
- Wachtwoord
Tekstbeschrijving van deze afbeelding
Schermafbeelding van de pagina MQTT v3 connection van de Reduxi Configurator. Linkermenu onder het logo reduxi CONFIGURATOR: Users; Devices; Strategies; System (uitgeklapt, minteken); Identifier; Network; Open VPN; Connector (uitgeklapt); Cloud; MQTT v3 (geselecteerd, vet); iFlex; Configuration (ingeklapt, plusteken); Distribution System Operators; Time. Paginakop: MQTT v3 connection, rechts een groen koppelingspictogram. Statustabel: Client: leeg; Host: leeg; Connected: groen vinkje. Formuliersectie Mqtt connection: Host: mqtt.example.com (grijs, als placeholder); Port: 1883 (grijs); Username: leeg; Password: leeg; Server CA chain (PEM format): Choose File, No file chosen; Client public certificate (PEM format): Choose File, No file chosen; Client private key (PEM format): Choose File, No file chosen; Readout interval: 5 sec. Knoppen: Clear, Save.
6 Windows-client (MQTT Explorer)
U kunt proberen gegevens te verzamelen met MQTT Explorer en verbinding te maken met de MQTT-broker met het volgende:
U kunt verbinding maken met de MQTT-broker wanneer u een MQTT Explorer-applicatie start.
Tekstbeschrijving van deze afbeelding
Schermafbeelding van MQTT Explorer (bovenbalk: DISCONNECT, zoekvak) met het dialoogvenster MQTT Connection geopend boven het gedimde hoofdvenster. Linkerlijst: gele plusknop met het label Connections; één opgeslagen item mqtt.example.com met kleine tekst mqtt://mqtt.example.com:1883/ (geselecteerd). Titel van het dialoogvenster: MQTT Connection, met ernaast mqtt://mqtt.example.com:1883/. Velden: Name: mqtt.example.com; Validate certificate: schakelaar uit; Encryption (tls): schakelaar uit; Protocol: mqtt:// (keuzelijst); Host: mqtt.example.com; Port: 1883; Username: leeg; Password: gemaskeerd met puntjes, met een oogpictogram om te tonen/verbergen. Knoppen: DELETE, ADVANCED, SAVE (geel), CONNECT (donker). In de gedimde achtergrond is een deel van het Topic-paneel en een JSON-waarde zichtbaar met de items type POWER_ACTIVE, target FIXED, phaseType null.
7 Commando's
7.1. Metadata vernieuwen
Vraag Reduxi om alle metadata over het systeem, de apparaten en de strategieën opnieuw naar MQTT te publiceren. Anders worden alleen uitlezingen en setpoints periodiek gepubliceerd.
Topic: controllers/controller_unit_id/commands/refresh
Tekstbeschrijving van deze afbeelding
Schermafbeelding van MQTT Explorer (status DISCONNECT, zoekvak bovenaan) waarmee het commando refresh wordt verstuurd. Linker topicboom: e8c1fe29.ala.eu-central-1.emqxsl.com; controllers; ZGFE met keepAlive = 1734965285703; commands met item refresh; identifier = {"unitId":"ZGFE","unitIdFormatted":"ZGE","boardModel":"REDUXI_1","CPUSerial":"16516642034211ad","EMMCSerial":"4.(afgesneden); settings; interval: readout = 15000, keepAlive = 60000; devices: 2 met info = {"id":2,"name":"Tesla Wall Connector Gen 3","typeId":59,"type":{"id":59,"categoryId":3,"category":{"id":3,"name":"EV charger","enumeration":"EV_CHARGER"; 4 (1 topic, 2 berichten); 12 met info = {"id":12,"name":"Iskraemeco AM550","typeId":16,"type":{"id":16,"categoryId":1,"category":{"id":1,"name":"Energy meter","enumeration":"ENERGY_METER"; 17 (1 topic, 2 berichten); 18 (1 topic, 2 berichten); strategies: 8 met info = {"id":8,"typeId":7,"type":{"id":7,"name":"1-phase current based ON/OFF regulation","enumeration":"DISCRETE_CURRENT_PHASE_1"}; parameters (3 topics, 12 berichten); 20 (2 topics, 8 berichten); 27 (geselecteerd) met info = {"id":27,"typeId":8,"type":{"id":8,"name":"Energy manager coordinator for PV, EVSE, battery and heat pump","enumeration":"UMBRELLA"}; parameters (1 topic, 4 berichten); list = [{"id":8,"typeId":7. Rechterkant: Topic-paneel (badge 2) met pad controllers / ZGFE / strategies / 27; Value-paneel met History; Publish-paneel met Topic: controllers/ZGFE/commands/refresh; formaat raw, xml, json met json geselecteerd; leeg berichtveld; knop PUBLISH met een rode pijl die ernaar wijst.
7.2. Opnieuw opstarten
Herstart de Reduxi Controller.
Topic: controllers/controller_unit_id/commands/reboot
Tekstbeschrijving van deze afbeelding
Schermafbeelding van de MQTT Explorer-applicatie (status DISCONNECT, zoekvak bovenaan) waarmee het commando reboot wordt verstuurd. Linker topicboom: $SYS (48 topics, 406 berichten); controllers; devices (29 topics, 865 berichten); strategies (38 topics, 884 berichten); commands (0 topics, 1 bericht); identifier = {"unitId","unitIdFormatted","CPUSerial":.} (geselecteerde rij); settings (2 topics, 2 berichten); keepAlive = 1675762462861. Rechterkant: bovenaan een JSON-berichtvoorbeeld met softwareVersion "20230207091611", hwVersion "0", hasWifiModule false, dso {.}; History: 1. Publish-paneel met Topic: /controllers/ … /commands/reboot, met een rode accolade aan het einde van het topicveld. Formaatopties raw, xml, json: json is geselecteerd. De berichttekst is leeg. Knop PUBLISH is rood omcirkeld. QoS: 0; retain: selectievakje niet aangevinkt.
8 Setpoints
Setpoints bepalen het vermogen of de stroom van een apparaat. De Reduxi Controller publiceert de actieve setpoints van elk apparaat en u stelt nieuwe in via het bijbehorende /set-topic.
8.1. Alle actieve setpoints van het apparaat bekijken
Topic: controllers/controller_unit_id/devices/device_id/setpoint
Tekstbeschrijving van deze afbeelding
Schermafbeelding van MQTT Explorer (status DISCONNECT, zoekvak bovenaan) met het setpoint van apparaat 15. Linker topicboom: $SYS (48 topics, 862 berichten); controllers; devices; 13 (3 topics, 235 berichten); 14 (3 topics, 235 berichten); 15 uitgeklapt met items readout = {"time":1675762671666,"values":[{"deviceId":15,"dataTypeId":174,"dataTypeEnum":"VOLTAGE_L1"; setpoint = {"deviceId":15,"values":[{"action":"NONE","type":"POWER_ACTIVE","target":"FIXED","phaseType":"L1".} (geselecteerde rij, gemarkeerd met een rode accolade); info = {"id":15,"name":"Baterija","typeId":14,"type":{"id":14,"name":"Victron Energy MultiPlus II","enumeration":"BATTE; daarna 18, 8, 9, 10, 11, 12 (elk 3 topics, 233 berichten); list = [{"id":8,"name":"Sončna elektrarna","typeId":7,"type":{"id":7,"name":"SolarEdge","enumeration":"SOLAR_SOLARE; types = [{"id":40,"name":"ABB","enumeration":"CHARGER_ABB"; strategies (38 topics, 2104 berichten); commands (0 topics, 1 bericht); identifier = {"unitId","unitIdFormatted","CPUSerial"; settings (2 topics, 2 berichten); keepAlive = 1675762644772. Rechterkant, Topic / controllers / / devices / 15 / setpoint. Value-paneel, QoS: 0, 02/07/2023 10:37:53 AM, met de knop voor de opgemaakte weergave rood omcirkeld en de JSON-waarde omkaderd met een rode accolade: { "deviceId": 15, "values": [ { "action": "NONE", "type": "POWER_ACTIVE", "target": "FIXED", "phaseType": "L1", "value": 0, "priority": 100, "validForTime": 28571 }, {. (gaat verder). History: 20.
8.2. Setpoints instellen voor het apparaat
Topic: controllers/controller_unit_id/devices/device_id/setpoint/set
Tekstbeschrijving van deze afbeelding
Schermafbeelding van MQTT Explorer (status DISCONNECT, zoekvak bovenaan) waarmee een setpoint voor apparaat 15 wordt gepubliceerd. Linker topicboom: $SYS (48 topics, 1192 berichten); controllers; devices (gemarkeerd); 13 (3 topics, 341 berichten); 14 (3 topics, 341 berichten); 15 uitgeklapt met readout = {"time":1675762794195,"values":[{"deviceId":15,"dataTypeId":174,"dataTypeEnum":"VOLTAGE_L1"; setpoint = {"deviceId":15,"values":[{"action":"NONE","type":"POWER_ACTIVE","target":"FIXED","phaseType":"L1".} (geselecteerde rij); info = {"id":15,"name":"Baterija","typeId":14,"type":{"id":14,"name":"Victron Energy MultiPlus II","enumeration":"BATTE; 18 (3 topics, 339 berichten); 8 (3 topics, 340 berichten, gemarkeerd); 9, 10, 11, 12 (elk 3 topics, 339 berichten); list = [{"id":8,"name":"Sončna elektrarna","typeId":7,"type":{"id":7,"name":"SolarEdge"; types = [{"id":40,"name":"ABB","enumeration":"CHARGER_ABB"; strategies (38 topics, 3062 berichten); commands (0 topics, 1 bericht); identifier = {"unitId","unitIdFormatted","CPUSerial":; settings (2 topics, 2 berichten); keepAlive = 1675762764833. Rechterkant: History-badge 20, daarna het Publish-paneel. Topic: /controllers/ … /devices/15/setpoint/set; het topicveld is gemarkeerd met rode accolades en het woord set is rood onderstreept. Formaat raw, xml, json: json geselecteerd. Berichttekst, omkaderd met een rode accolade: { "values": [ { "action": "SET", "type": "POWER_ACTIVE", "target": "FIXED", "phaseType": null, "value": 1000, "priority": 10000, "validForTime": 60000 } ] }. Knop PUBLISH rood omcirkeld. QoS: 0; retain niet aangevinkt. Daaronder staat een sectie History.
8.2.1. Voorbeeld 1
Stel het actieve vermogen gedurende 15 seconden in op -1 kW (export) op alle fasen.
{
"values": [
{
"action": "SET",
"type": "POWER_ACTIVE",
"target": "FIXED",
"phaseType": null,
"value": 1000,
"priority": 10000,
"validForTime": 15000
}
]
}
8.2.2. Voorbeeld 2
Beperk de maximale stroom gedurende 30 seconden tot 10 A op fase L2.
{
"values": [
{
"action": "SET",
"type": "CURRENT",
"target": "MAX",
"phaseType": "L2",
"value": 10,
"priority": 10000,
"validForTime": 30000
}
]
}