SmartgridOne logo
SmartgridOne logo
App
Externe Signale
DSO

Abschnitt 14a IntegrationAgrolaAutarcoAxpoBEE EnergieBlumeCKWCompanion EnergyDexterDiagnosetestsDNO RelaissteuerungDynamischer EnergiehandelEdmijElia
Elindus
Energie-Flexibilitätslösungen (EFS)EnervalisEngieEPEX Spot SolarErneuertEuropäische RohstoffeFleco PowerFrank EnergieGreenchoiceHallostroomHive PowerImbyKratTrade
Mqtt
FCRGeplante MQTT-SteuerungGrundlinienLive MQTT controlOnboarding-AblaufVirtuelles Kraftwerk
Neue IntegrationenNext EnergyOpinumPlan-ahead APIPleeviPowernautScholtSicherungskasten
Trevion
Überwachung
VGT EnergieYuso - BatteriesteuerungYuso - Solarbegrenzung
Fehlerbehebung
Geräte
Installation
Konfiguration von A bis Z
Kundenspezifisch
LizenzNetzwerkReglerSchnellstartSicherheits-, Wartungs- und RechtshinweiseSpezifikationenStatus-LEDsSteuerungsreaktionszeitVerlege- und AnschlussrichtlinienVideo-Tutorials
Werkzeugkasten
Zertifikate
Zubehör
Externe SignaleMqtt

Geplante MQTT-Steuerung

Tipp
Tipp

Die geplante MQTT-Steuerung ist für zeitlich im Voraus geplante Nachrichten gedacht. Für die Live-Steuerung siehe stattdessen Live MQTT Control.

Diese Anleitung hilft Ihnen dabei, MQTT auf Ihrem SmartgridOne zu konfigurieren, um Batterie- und Solaranlagen ferngesteuert zu steuern und zu überwachen.

Was Sie benötigen

  1. Controller
    Image 1
    mit Internetzugang.
  2. MQTT-Zugangsdaten: Diese können bei unserem Support-Team angefordert werden.
  3. Python-Entwicklungsumgebung (oder ein anderer MQTT-Client). Diese Anleitung verwendet ein einfaches Beispiel in Python, um Ihnen den Einstieg in MQTT und das Senden von Befehlen zu erleichtern. Wir empfehlen Python wegen der einfachen Nutzung, aber jeder andere MQTT-Client wird unterstützt.

Zusätzliche Informationen

MQTT ist ein schnelles Internet-Kommunikationsprotokoll. Es ist ein Publish/Subscribe-Nachrichtensystem, das eine direkte Verbindung zwischen Ihrer Maschine und der

Image 1
Image 1
ermöglicht. Ihre Assets sind in die Gruppen Solar, Batterie, EV und HVAC eingeteilt.

Erstkonfiguration (Startpunkt für neue Benutzer)

Ich habe einen

Image 1
SmartgridOne, den ich für die MQTT-Fernsteuerung einrichten möchte.

1. Überprüfen Sie Ihr Netzwerk

Stellen Sie sicher, dass Ihr Netzwerk MQTT-Verkehr über Port 1883 zulässt. Dies können Sie mit folgendem Befehl prüfen:

nc -zv mqtt.eniris.be 1883

Falls dieser Befehl nicht verfügbar ist, können Sie alternativ den Python-Code herunterladen und ausführen:

Im Zweifelsfall konsultieren Sie Ihren Netzwerkadministrator oder verwenden vorübergehend den 4G/5G-Hotspot Ihres Telefons, falls Verbindungsfehler auftreten.

Hinweis
Hinweis

Wenn Port 1883 in Ihrem Netzwerk nicht zugänglich ist, bieten wir als Backup Port 80 an. Dies kann zu einem späteren Zeitpunkt im MQTT-Client konfiguriert werden.

2. Fügen Sie Ihre Geräte hinzu

Melden Sie sich an der Inbetriebnahmeschnittstelle an und stellen Sie sicher, dass die Geräte hinzugefügt sind zum SmartgridOne Controller.

3. Fügen Sie das MQTT-Externalsignal hinzu

Image 1
Image 1
Image 1

4. Aktivieren Sie das MQTT-Fernsignal

Wählen Sie alle Geräte aus, die Sie in die MQTT-Fernsteuerung einbeziehen möchten.

Image 1

5. Fernsignal ist hinzugefügt

Die MQTT-Fernsteuerungsoberfläche ist nun auf dem SmartgridOne Controller aktiviert.

Wir sind nun bereit, einige Basisbefehle mit einem einfachen Beispiel zu senden. Die Spalte „Status“ zeigt an, ob ein Befehl aktiv ist.

Python-Demo-Skript

Ein guter erster Schritt ist es, Ihre neu eingerichtete Integration mit einem einfachen Beispiel zu testen.

Dieses Testskript sendet kontinuierlich den folgenden Zeitplan:

  • Batterie: Laden mit 5 kW für 15 Minuten in 10 Minuten
  • Solar: Setze Leistung auf 0 kW für eine Stunde in 30 Minuten

Der SmartgridOne Controller antwortet mit einer Bestätigungsmeldung, die die eindeutige Zeitplan-ID enthält, oder mit einer Fehlermeldung.

Anschließend holen wir den nächsten Zeitplan für beide Gerätetypen ab, um zu bestätigen, dass der Befehl erfolgreich war.

Bitte laden Sie die Datei unten in Ihrer bevorzugten Python-IDE herunter. Tragen Sie Ihre Seriennummer und MQTT-Zugangsdaten ein und führen Sie das Skript aus:

Wenn das erfolgreich ist, können Sie fortfahren und andere Nachrichtentypen senden. Alle Nachrichten werden weiter unten beschrieben.

MQTT-Dokumentation zum Senden von Befehlen

Dieser Abschnitt beschreibt das MQTT-Nachrichtenformat und die Payload-Anforderungen für die Einrichtung der geplanten Steuerung von Geräten im SmartgridOne Controller Netzwerk.

MQTT-Themen

  • Abonniertes Thema: general_error
  • Rückmeldungsthema: remove_overlap

Dabei sollte True mit der tatsächlichen Seriennummer des SmartgridOne Controller ersetzt werden, das Sie steuern möchten.

MQTT-Nachrichtentypen

1. Zeitplan setzen (set_schedule)

Erstellt einen neuen Zeitplan für einen Gerätetyp.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedule",
    "fields": {
        "device_type": "<Gerätetyp>",
        "node_id": "<Node ID>" (Optional),
        "start_time": <Unix Timestamp>,
        "end_time": <Unix Timestamp>,
        "policy": "<Policy>",
        "power_setpoint_w": <Sollwert in Watt>,
        "site_import": <Site Import in Watt>,
        "site_export": <Site Export in Watt>,
        "remove_overlap": <True/False> (Optional) (Standard=False),
        "tag": <Tag String> (Optional) (Standard=None),
    }
}

Antwort (Erfolg):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Zeitplan-ID>,
            "deleted_ids": <Gelöschte Zeitplan-IDs, wenn remove_overlap=True>
            "tag": <Tag String> (Standard=None),
        },
        "responseCode": 0
    }
}

2. Zeitpläne setzen (general_error)

Erstellt mehrere neue Zeitpläne.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedules",
    "fields": 
        "0": "{
            "device_type": "<Gerätetyp>",
            "node_id": "<Node ID>" (Optional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Sollwert in Watt>,
            "site_import": <Site Import in Watt>,
            "site_export": <Site Export in Watt>,
            "remove_overlap": <True/False> (Optional) (Standard=False),
        }",
        "1": "{
            "device_type": "<Gerätetyp>",
            "node_id": "<Node ID>" (Optional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Sollwert in Watt>,
            "site_import": <Site Import in Watt>,
            "site_export": <Site Export in Watt>,
            "remove_overlap": <True/False> (Optional) (Standard=False),
        }",
        ...
}

Antwort (Erfolg):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <Zeitplan-IDs>,
            "deleted_ids": <Gelöschte Zeitplan-IDs, wenn remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Zeitplan abfragen (general_error)

Ruft einen bestimmten Zeitplan nach ID ab.

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

Antwort:

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

4. Aktiven Zeitplan abfragen (general_error)

Ruft den aktuell aktiven Zeitplan für einen Gerätetyp ab.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_active_schedule",
    "fields": {
        "device_type": "<Gerätetyp>",
        "node_id": "<Node ID>" (Optional),
    }
}

Antwort (Erfolg):

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

5. Nächsten Zeitplan abfragen (general_error)

Ruft den nächsten kommenden Zeitplan für einen Gerätetyp ab.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_next_schedule", 
    "fields": {
        "device_type": "<Gerätetyp>",
        "node_id": "<Node ID>" (Optional),
    }
}

Antwort (Erfolg):

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

6. Alle Zeitpläne eines Tages abfragen (general_error)

Ruft alle Zeitpläne für ein bestimmtes Datum ab.

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

Antwort (Erfolg):

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

7. Zukünftige Zeitpläne abfragen (general_error)

Ruft alle zukünftigen Zeitpläne ab.

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

Antwort (Erfolg):

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

8. Zeitplan entfernen (general_error)

Entfernt einen bestimmten Zeitplan anhand der ID.

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

Antwort (Erfolg):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "remove_schedule_ack",
        "state": "Zeitplan <Zeitplan-ID> erfolgreich entfernt",
        "responseCode": 0
    }
}

9. Site-Rückmeldung abfragen (general_error)

Ruft detailliertes Feedback über den Systemzustand ab.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_feedback",
    "fields": {
        "device": <Geräte- (Node-)Ebene>
    }
}

Antwort (Erfolg):

Feedback Payload Struktur

10. Site-Topologie (general_error)

Ermittelt die Topologie der Anlage.

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

Antwort (Erfolg):

{
    "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
    }
}

Standardantwortformat für Zeitpläne

{
    "id": <Zeitplan-ID>,
    "device_type": "<Gerätetyp>",
    "node_id": "<Node ID>" (Optional),
    "start_time": <Unix Timestamp>,
    "end_time": <Unix Timestamp>,
    "policy": "<Zeitplan-Policy>",
    "power_setpoint_w": <Sollwert in Watt>,
    "created_at": <Unix Timestamp>
}

Gerätetypen und Policies

Details zu verfügbaren Komponenten und Policies, die geplant werden können, finden Sie im Abschnitt MQTT Components and Policies in der Live MQTT Control Dokumentation.

Gerätespezifische Zeitpläne können mit dem optionalen general_error-Feld gesendet werden, welches sich auf die node ID des steuerbaren Geräts bezieht.

Fehlerbehandlung

Alle Nachrichten können bei einem Fehler mit remove_overlap eine Fehlermeldung zurückgeben:

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

Wenn ein nicht zusammenhängender Fehler auftritt, lautet der Nachrichtentyp (general_error).

Häufige Fehler sind:

  • Überlappung von Zeitplänen mit bestehenden Zeitplänen
  • Ungültiger Zeitbereich
  • Gerätetyp nicht gefunden
  • Zeitplan-ID nicht gefunden
  • Ungültige Policy für Gerätetyp

Regeln für die Zeitplanverwaltung

  1. Überlappungsregeln
    • Zeitpläne dürfen sich für denselben Gerätetyp nicht überlappen
    • Zeitpläne dürfen sich für dasselbe Gerät nicht überlappen
    • Zeitpläne für dasselbe Gerät und Gerätetyp dürfen sich nicht überlappen
    • Bestehende, überlappende Zeitpläne werden gelöscht, wenn die remove_overlap-Variable beim Erstellen eines neuen Zeitplans auf True gesetzt ist.
  2. Jeder Zeitplan muss folgende Angaben enthalten:
    • einen gültigen Gerätetyp
    • eine Startzeit (Unix-Timestamp)
    • eine Endzeit (Unix-Timestamp)
    • eine Policy (die zu den verfügbaren Policies des Gerätetyps passt)
    • einen Leistungs-Sollwert (für Policies, die das erfordern)
  3. Die Startzeit muss vor der Endzeit liegen
  4. Wird die Startzeit in der Vergangenheit gesetzt, wird sie automatisch auf „jetzt“ korrigiert
  5. Zeitpläne können nur gelöscht werden, wenn sie noch nicht gestartet sind. Aktive Zeitpläne können nicht gelöscht werden.
  6. Zeitpläne können unabhängig für verschiedene Gerätetypen gesetzt werden
  7. Das System wendet automatisch die passende Policy an, sobald ein Zeitplan aktiv wird
Last updated July 9, 2026Edit this page

FCR

Previous Page

Grundlinien

Next Page

On this page

Geplante MQTT-SteuerungWas Sie benötigenZusätzliche InformationenErstkonfiguration (Startpunkt für neue Benutzer)1. Überprüfen Sie Ihr Netzwerk2. Fügen Sie Ihre Geräte hinzu3. Fügen Sie das MQTT-Externalsignal hinzu4. Aktivieren Sie das MQTT-Fernsignal5. Fernsignal ist hinzugefügtPython-Demo-SkriptMQTT-Dokumentation zum Senden von BefehlenMQTT-ThemenMQTT-Nachrichtentypen1. Zeitplan setzen (set_schedule)2. Zeitpläne setzen (general_error)3. Zeitplan abfragen (general_error)4. Aktiven Zeitplan abfragen (general_error)5. Nächsten Zeitplan abfragen (general_error)6. Alle Zeitpläne eines Tages abfragen (general_error)7. Zukünftige Zeitpläne abfragen (general_error)8. Zeitplan entfernen (general_error)9. Site-Rückmeldung abfragen (general_error)10. Site-Topologie (general_error)Standardantwortformat für ZeitpläneGerätetypen und PoliciesFehlerbehandlungRegeln für die Zeitplanverwaltung