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

AgrolaAutarcoAxpoBEE EnergieBloemCompanion EnergyDexterDiagnostische testsDNO ReleebesturingDynamische EnergiehandelEdmijElia
Elindus
Energie Flexibiliteitsoplossingen (EFS)EnervalisEngieEPEX Spot SolarEuropese GrondstoffenFleco PowerFrank EnergieGreenchoiceHallostroomHeropendImbyKratTrade
Monitoring
Mqtt
BasislijnenGeplande MQTT-besturingLive MQTT controlOnboarding-procesVirtuele Energiecentrale
Nieuwe integratiesOpinumParagraaf 14a IntegratiePlan-ahead APIPleeviScholtTrevionVGT EnergieVolgende EnergieYuso - BatterijbeheerYuso - ZonnewinstopplingZekeringkast
Gereedschapskist
Installatie
Klant specifiek
LicentieNetwerk
Probleemoplossing
RegeltijdSnel aan de slagSpecificatiesStatus-LED'sVeiligheids-, onderhouds- en wettelijke mededelingenVideohandleidingen
Externe signalenMqtt
Tip
Tip

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

Deze gids helpt je bij het configureren van MQTT op jouw SmartgridOne om batterijen en zonnepaneelinstallaties op afstand te bedienen en te monitoren.

Wat je nodig hebt

  1. Controller
    Image 1
    met internetverbinding.
  2. MQTT-inloggegevens: deze kun je aanvragen bij ons Support Team.
  3. Python ontwikkelomgeving (of een andere MQTT-client). Deze gids gebruikt een basisvoorbeeld geschreven in Python om je op weg te helpen met MQTT en het verzenden van commando's. We raden Python aan 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, waardoor er een directe verbinding ontstaat tussen jouw machine en de

Image 1
Image 1
. Je apparaten zijn ingedeeld in groepen: solar, batterij, 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 toestaat via poort 1883. Dit kan je controleren met het commando:

nc -zv mqtt.eniris.be 1883

Als dit commando niet beschikbaar is, kun je als alternatief de python-code downloaden en uitvoeren:

Bij twijfel, raadpleeg je netwerkbeheerder of gebruik tijdelijk de 4G/5G hotspot van je telefoon als er verbindingsproblemen zijn.

Opmerking
Opmerking

Als poort 1883 niet toegankelijk is vanuit jouw netwerk, bieden we een alternatief via poort 80. Dit kan in een later stadium in je MQTT-client geconfigureerd worden.

2. Voeg je apparaten toe

Log in op de commissioning interface en zorg ervoor dat de apparaten zijn toegevoegd aan de SmartgridOne Controller.

3. Voeg het MQTT externe signaal toe

Image 1
Image 1
Image 1

4. Schakel MQTT remote signaal in

Selecteer alle apparaten die je wilt opnemen in 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 versturen met een eenvoudig voorbeeld. De kolom Status geeft aan of een commando actief is.

Python demo script

Een goed startpunt is om je nieuw ingestelde integratie te testen met een simpel voorbeeld.

Deze testcode verstuurt continu het volgende schema:

  • Batterij: Laden met 5 kW gedurende 15 minuten over 10 minuten
  • Solar: Vermogen instellen op 0 kW gedurende een uur over 30 minuten

De SmartgridOne Controller reageert met een bevestigingsbericht met de unieke schema-ID, of een foutmelding.

Vervolgens halen we het volgende schema op voor beide apparaattype, als bevestiging 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, kun je doorgaan met het verzenden van andere typen berichten. Alle berichten worden hieronder beschreven.

MQTT Documentatie voor het versturen van commando's

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

MQTT Topics

  • Abonneer topic: general_error
  • Feedback topic: remove_overlap

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

MQTT Berichttypes

1. Set Schedule (set_schedule)

Maakt een nieuw schema 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 watt>,
        "site_import": <Import op locatie in Watt>,
        "site_export": <Export op locatie in Watt>,
        "remove_overlap": <True/False> (Optioneel) (standaard=False),
        "tag": <Tag String> (Optioneel) (standaard=None),
    }
}

Response (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Schema ID>,
            "deleted_ids": <Verwijderde Schema ID's indien remove_overlap=True>,
            "tag": <Tag String> (standaard=None),
        },
        "responseCode": 0
    }
}

2. Set Schedules (general_error)

Maakt meerdere nieuwe schema's 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 watt>,
            "site_import": <Import op locatie in Watt>,
            "site_export": <Export op locatie in Watt>,
            "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 watt>,
            "site_import": <Import op locatie in Watt>,
            "site_export": <Export op locatie in Watt>,
            "remove_overlap": <True/False> (Optioneel) (standaard=False),
        }",
        ...
}

Response (Succes):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <Schema IDs>,
            "deleted_ids": <Verwijderde Schema IDs indien remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Get Schedule (general_error)

Haalt een specifiek schema op via ID.

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

Response:

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

4. Get Active Schedule (general_error)

Haalt het momenteel actieve schema 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),
    }
}

Response (Succes):

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

5. Get Next Schedule (general_error)

Haalt het volgende geplande schema 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),
    }
}

Response (Succes):

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

6. Get Schedules (general_error)

Haalt alle schema’s op voor een specifieke datum.

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

Response (Succes):

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

7. Get Future Schedules (general_error)

Haalt alle toekomstige schema’s op.

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

Response (Succes):

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

8. Remove Schedule (general_error)

Verwijdert een specifiek schema via ID.

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

Response (Succes):

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

9. Get Site Feedback (general_error)

Haal 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>
    }
}

Response (Succes):

Feedback Payload Structure

10. Site Topology (general_error)

Haalt de topologie van de locatie op.

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

Response (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": <nominaleStroom>
            "children": [{<ChildObject>}]
            },
        "responseCode": 0
    }
}

Standaard schema response-formaat

{
    "id": <Schema ID>,
    "device_type": "<Apparaattype>",
    "node_id": "<Node ID>" (Optioneel),
    "start_time": <Unix Timestamp>,
    "end_time": <Unix Timestamp>,
    "policy": "<Schema Policy>",
    "power_setpoint_w": <Setpoint in watt>,
    "created_at": <Unix Timestamp>
}

Apparaten types en Policies

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

Apparaatspecifieke schema’s kunnen worden verzonden 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 wanneer een fout optreedt:

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

Wanneer een niet-gerelateerde fout optreedt, is het berichttype (general_error).

Veelvoorkomende fouten zijn:

  • Schema-overlapping met bestaande schema’s
  • Ongeldige tijdsduur
  • Apparaattype niet gevonden
  • Schema ID niet gevonden
  • Ongeldige policy voor apparaattype

Regels voor schema beheer

  1. Overlapregels
    • Schema’s mogen niet overlappen voor hetzelfde apparaattype
    • Schema’s mogen niet overlappen voor hetzelfde apparaat
    • Schema’s voor hetzelfde apparaat én apparaattype mogen niet overlappen
    • Bestaande overlappende schema’s worden verwijderd als de remove_overlap variabele is ingesteld op True bij het maken van een nieuw schema.
  2. Elk schema moet bevatten:
    • Een geldig apparaattype
    • Een starttijd (Unix-timestamp)
    • Een eindtijd (Unix-timestamp)
    • Een policy (passend bij de beschikbare policies van het apparaattype)
    • Een stroominstelpunt (voor policies die dit vereisen)
  3. Starttijd moet vóór eindtijd liggen
  4. Is de starttijd in het verleden, dan wordt de starttijd automatisch op nu gezet
  5. Schema’s kunnen alleen verwijderd worden als ze nog niet zijn gestart. Actieve schema’s kunnen niet verwijderd worden.
  6. Schema’s kunnen onafhankelijk voor verschillende apparaattype ingesteld worden
  7. Het systeem past automatisch de juiste policy toe zodra een schema actief wordt

Basislijnen

Previous Page

Live MQTT control

Next Page

On this page

Wat je nodig hebtExtra informatieEerste configuratie (Startpunt voor nieuwe gebruikers)1. Controleer je netwerk2. Voeg je apparaten toe3. Voeg het MQTT externe signaal toe4. Schakel MQTT remote signaal in5. Remote signaal is toegevoegdPython demo scriptMQTT Documentatie voor het versturen 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 schema response-formaatApparaten types en PoliciesFoutafhandelingRegels voor schema beheer