SmartgridOne logo
SmartgridOne logo
Accessoires
App
Apparaten
Bedradings- en verbindingsrichtlijnenCertificaten
Configuratie van A tot Z
Controller
Externe signalen
DSO

AgrolaAutarcoAxpoBEE EnergieBloemCKWCompanion EnergyDexterDiagnostische testsDNO ReleebesturingDynamische EnergiehandelEdmijElia
Elindus
Energie Flexibiliteitsoplossingen (EFS)EnervalisEngieEPEX Spot SolarEuropese GrondstoffenFleco PowerFrank EnergieGreenchoiceHallostroomHeropendHive PowerImbyKratTrade
Monitoring
Mqtt
BasislijnenFCRGeplande MQTT-besturingLive MQTT controlOnboarding-procesVirtuele Energiecentrale
Nieuwe integratiesOpinumParagraaf 14a IntegratiePlan-ahead APIPleeviPowernautScholt
TrevionVGT EnergieVolgende EnergieYuso - BatterijcontroleYuso - Zonne-uitschakelingZekeringkast
Gereedschapskist
Installatie
Klant specifiek
LicentieNetwerk
Probleemoplossing
RegeltijdSnel aan de slagSpecificatiesStatus-LED'sVeiligheids-, onderhouds- en wettelijke mededelingenVideohandleidingen
Externe signalenMqtt

Geplande MQTT-besturing

Tip
Tip

De Geplande MQTT-besturing is bedoeld voor geplande berichten vooraf. Voor live besturing, zie Live MQTT-besturing in plaats daarvan.

Deze gids helpt je bij het configureren van MQTT op je SmartgridOne om batterij- en zonnepaneleninstallaties op afstand te besturen en te monitoren.

Wat je nodig hebt

  1. Controller
    Image 1
    met internetverbinding.
  2. MQTT-gegevens: Deze kunnen worden aangevraagd bij ons Support Team.
  3. Python-ontwikkelomgeving (of een andere MQTT-client). Deze gids gebruikt een eenvoudig voorbeeld geschreven in Python om je op weg te helpen met MQTT en het verzenden van commando’s. We raden aan Python te gebruiken vanwege het gebruiksgemak, maar elke andere MQTT-client wordt ondersteund.

Extra informatie

MQTT is een snel communicatieprotocol via het internet. Het is een publish/subscribe-berichtensysteem, wat een directe verbinding mogelijk maakt tussen je machine en de

Image 1
Image 1
. Je assets zijn onderverdeeld in groepen voor zonne-energie, batterijen, EV en HVAC.

Eerste Configuratie (Startpunt voor nieuwe gebruikers)

Ik heb een

Image 1
SmartgridOne die ik wil instellen voor MQTT Remote Control.

1. Controleer je netwerk

Zorg dat je netwerk MQTT-verkeer via poort 1883 toestaat. Dit kan je controleren met het commando:

nc -zv mqtt.eniris.be 1883

Als dit commando niet beschikbaar is, kan je als alternatief de pythoncode downloaden en uitvoeren:

Bij twijfel, raadpleeg je netwerkbeheerder of gebruik tijdelijk de 4G/5G-hotspot van je telefoon bij verbindingsfouten.

Opmerking
Opmerking

Als poort 1883 niet toegankelijk is via je netwerk, bieden we een backup via poort 80 aan. Dit kan later in je MQTT-client worden ingesteld volgens deze handleiding.

2. Voeg je apparaten toe

Log in op de inbedrijfstellingsinterface en zorg dat de apparaten toegevoegd zijn aan de SmartgridOne Controller.

3. Voeg het MQTT externe signaal toe

Image 1
Image 1
Image 1

4. Schakel het MQTT remote signaal in

Selecteer alle apparaten die je wilt opnemen in de MQTT Remote Control.

Image 1

5. Remote signaal is toegevoegd

De MQTT Remote Control interface is nu geactiveerd op de SmartgridOne Controller.

We zijn nu klaar om enkele basiscommando’s te verzenden met een eenvoudig voorbeeld. De Status-kolom geeft aan of een commando actief is.

Python demoscript

Een goed beginpunt is om je nieuw ingestelde integratie te testen met een eenvoudig voorbeeld.

Deze testcode verstuurt continu de volgende planning:

  • Batterij: Laden met 5 kW gedurende 15 minuten over 10 minuten
  • Zonne-energie: Zet vermogen op 0 kW gedurende een uur over 30 minuten

De SmartgridOne Controller reageert met een bevestigingsbericht dat de unieke planning-ID bevat, of een foutmelding.

Vervolgens halen we de volgende planning op voor beide apparaattype, om te bevestigen dat het commando gelukt is.

Download het onderstaande bestand in je favoriete Python-IDE. Vul je serienummer en MQTT-gegevens in en voer het script uit:

Als dit succesvol is, kan je doorgaan met het verzenden van andere typen berichten. Alle berichten worden hieronder beschreven.

MQTT Documentatie voor het Verzenden van Commando’s

Deze sectie beschrijft het MQTT-berichtformaat en de payloadvereisten voor het instellen van geplande besturing van apparaten binnen het netwerk van de SmartgridOne Controller.

MQTT Topics

  • Subscribe Topic: general_error
  • Feedback Topic: remove_overlap

Waarbij True vervangen moet worden door het werkelijke serienummer van de SmartgridOne Controller die je wilt besturen.

MQTT Berichttypes

1. Set Schedule (set_schedule)

Maakt een nieuwe planning aan voor een apparaattype.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Optioneel),
        "start_time": <Unix Timestamp>,
        "end_time": <Unix Timestamp>,
        "policy": "<Policy>",
        "power_setpoint_w": <Setpoint in watts>,
        "site_import": <Site Import in Watts>,
        "site_export": <Site Export in Watts>,
        "remove_overlap": <True/False> (Optioneel) (standaard=False),
        "tag": <Tag String> (Optioneel) (standaard=None),
    }
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Schedule ID>,
            "deleted_ids": <Geplande ID’s verwijderd als remove_overlap=True>
            "tag": <Tag String> (standaard=None),
        },
        "responseCode": 0
    }
}

2. Set Schedules (general_error)

Maakt meerdere nieuwe planningen aan.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedules",
    "fields": 
        "0": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Optioneel),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint in watts>,
            "site_import": <Site Import in Watts>,
            "site_export": <Site Export in Watts>,
            "remove_overlap": <True/False> (Optioneel) (standaard=False),
        }",
        "1": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Optioneel),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint in watts>,
            "site_import": <Site Import in Watts>,
            "site_export": <Site Export in Watts>,
            "remove_overlap": <True/False> (Optioneel) (standaard=False),
        }",
        ...
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <Schedule IDs>,
            "deleted_ids": <Geplande ID’s verwijderd als remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Get Schedule (general_error)

Haalt een specifieke planning op via ID.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_schedule",
    "fields": {
        "id": <Schedule ID>
    }
}

Antwoord:

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedule_ack",
        "state": <Schedule>,
        "responseCode": 0
    }
}

4. Get Active Schedule (general_error)

Haalt de momenteel actieve planning op voor een apparaattype.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_active_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Optioneel),
    }
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_active_schedule_ack",
        "state": <Schedule>,
        "responseCode": 0
    }
}

5. Get Next Schedule (general_error)

Haalt de eerstvolgende geplande planning op voor een apparaattype.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_next_schedule", 
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Optioneel),
    }
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_next_schedule_ack",
        "state": <Schedule>,
        "responseCode": 0
    }
}

6. Get Schedules (general_error)

Haalt alle planningen op voor een specifieke datum.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_schedules",
    "fields": {
        "date": "<Datum String in formaat dd/mm/yyyy>"
    }
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedules_ack",
        "state": {
            "schedules": [<Schedule>, ...]
        },
        "responseCode": 0
    }
}

7. Get Future Schedules (general_error)

Haalt alle toekomstige planningen op.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_future_schedules",
    "fields": {}
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_future_schedules_ack",
        "state": {
            "schedules": [<Schedule>, ...]
        },
        "responseCode": 0
    }
}

8. Remove Schedule (general_error)

Verwijdert een specifieke planning via ID.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "remove_schedule",
    "fields": {
        "id": <Schedule ID>
    }
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "remove_schedule_ack",
        "state": "Planning <Schedule ID> succesvol verwijderd",
        "responseCode": 0
    }
}

9. Get Site Feedback (general_error)

Haalt gedetailleerde feedback op over de status van het systeem.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_feedback",
    "fields": {
        "device": <Apparaat (node) niveau>
    }
}

Antwoord (Succes):

Feedback Payload Structuur

10. Site Topology (general_error)

Haalt de topologie van de site op.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_topology",
    "fields": {}
}

Antwoord (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_topology_ack",
        "state": {
            "nodeId": <nodeId>,
            "isControllable": <boolean>,
            "nodeType": <nodeType>,
            "nomCurrent": <nominalCurrent>
            "children": [{<ChildObject>}]
            },
        "responseCode": 0
    }
}

Standaard Response Formaat Planning

{
    "id": <Schedule ID>,
    "device_type": "<Device Type>",
    "node_id": "<Node ID>" (Optioneel),
    "start_time": <Unix Timestamp>,
    "end_time": <Unix Timestamp>,
    "policy": "<Schedule Policy>",
    "power_setpoint_w": <Setpoint in watts>,
    "created_at": <Unix Timestamp>
}

Apparaten Types en Policies

Voor details over beschikbare componenten en policies die gepland kunnen worden, zie de sectie MQTT Components and Policies in de Live MQTT-besturing documentatie.

Apparaatspecifieke planningen kunnen verzonden worden met het optionele general_error veld, verwijzend naar het node-ID van het aanstuurbare apparaat.

Foutafhandeling

Alle berichten kunnen een foutmelding teruggeven met remove_overlap als er een fout optreedt:

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "<Message Type>_ack",
        "error": <Error Body>,
        "responseCode": 1
    }
}

Als een niet-gerelateerde fout voorkomt, zal het berichttype (general_error) zijn.

Veelvoorkomende fouten zijn:

  • Overlapping van planningen met bestaande planningen
  • Ongeldige tijdsperiode
  • Apparaattype niet gevonden
  • Planning ID niet gevonden
  • Ongeldige policy voor apparaattype

Beheerregels voor Planningen

  1. Overlapregels
    • Planningen mogen niet overlappen voor hetzelfde apparaattype
    • Planningen mogen niet overlappen voor hetzelfde apparaat
    • Planningen voor hetzelfde apparaat én apparaattype mogen niet overlappen
    • Bestaande overlappende planningen worden verwijderd als de remove_overlap variabele op True wordt gezet bij het aanmaken van een nieuwe planning
  2. Elke planning moet bevatten:
    • Een geldig apparaattype
    • Een starttijd (Unix-timestamp)
    • Een eindtijd (Unix-timestamp)
    • Een policy (die overeenkomt met de beschikbare policies van het apparaattype)
    • Een power setpoint (voor policies die dit vereisen)
  3. Starttijd moet vóór de eindtijd liggen
  4. Als de starttijd in het verleden ligt, wordt deze automatisch aangepast naar nu starten
  5. Planningen kunnen alleen verwijderd worden als ze nog niet begonnen zijn. Actieve planningen kunnen niet verwijderd worden.
  6. Planningen kunnen onafhankelijk voor verschillende apparaattype ingesteld worden
  7. Het systeem past automatisch de juiste policy toe zodra een planning actief wordt
Last updated July 9, 2026Edit this page

FCR

Previous Page

Live MQTT control

Next Page

On this page

Geplande MQTT-besturingWat je nodig hebtExtra informatieEerste Configuratie (Startpunt voor nieuwe gebruikers)1. Controleer je netwerk2. Voeg je apparaten toe3. Voeg het MQTT externe signaal toe4. Schakel het MQTT remote signaal in5. Remote signaal is toegevoegdPython demoscriptMQTT Documentatie voor het Verzenden van Commando’sMQTT TopicsMQTT Berichttypes1. Set Schedule (set_schedule)2. Set Schedules (general_error)3. Get Schedule (general_error)4. Get Active Schedule (general_error)5. Get Next Schedule (general_error)6. Get Schedules (general_error)7. Get Future Schedules (general_error)8. Remove Schedule (general_error)9. Get Site Feedback (general_error)10. Site Topology (general_error)Standaard Response Formaat PlanningApparaten Types en PoliciesFoutafhandelingBeheerregels voor Planningen