SmartgridOne logo
SmartgridOne logo
Accessoires
App
Appareils
Certificats
Configuration de A à Z
Consignes de sécurité, de maintenance et mentions légalesContrôleur
Dépannage
Directives de câblage et de connectivitéInstallationLicenceQuick StartRéseau
Signaux externes
DSO

AgrolaAPI de planification anticipéeAutarcoAxpoBEE EnergyCKWCompanion EnergyDexterDNO Relay ControlDynamic Energy TradingEdmijElia
Elindus
EnervalisEngieEPEX Spot SolarEuropean CommoditiesFleco PowerFlowerFrank EnergieFuseboxGreenchoiceHallostroomHive PowerImbyIntégration du paragraphe 14aKratTrade
Mqtt
Centrale électrique virtuelleCommande MQTT en temps réelCommande MQTT planifiéeConfiguration MQTTFCRProcessus d’intégrationRéférences
Next EnergyNouvelles intégrationsOpinumPleeviPowernautRepoweredScholtSolutions de flexibilité énergétique (EFS)
Surveillance
Tests de diagnosticTrevionVGT EnergyvZEV - Communauté énergétiqueYuso - Contrôle de batterieYuso - Réduction solaire
Spécifications
Spécifique au client
Temps de réponse du contrôle
Toolbox
Tutoriels vidéoVoyants d’état
Signaux externesMqtt

Commande MQTT planifiée

Astuce
Astuce

La commande MQTT planifiée est destinée à l'envoi de messages planifiés à l'avance. Pour une commande en temps réel, consultez plutôt Commande MQTT en temps réel.

Ce guide vous aidera à configurer MQTT sur votre SmartgridOne Controller afin de contrôler et de surveiller à distance les installations de batteries et de panneaux solaires.

Ce guide vous aidera à configurer MQTT sur votre SmartgridOne Controller afin de contrôler et de surveiller à distance les installations de batteries et de panneaux solaires.

Configuration initiale (point de départ pour les nouveaux utilisateurs)

Je possède un SmartgridOne Controller que j'aimerais configurer pour le contrôle à distance via MQTT.

Avant de continuer, assurez-vous que votre réseau et vos appareils sont prêts en suivant le guide Configuration MQTT.

1. Ajouter le signal externe MQTT

Image 1
Image 1
Image 1

2. Activer le signal distant MQTT

Sélectionnez tous les appareils que vous souhaitez inclure dans le contrôle à distance MQTT.

Image 1

3. Le signal distant est ajouté

L'interface de commande à distance MQTT a maintenant été activée sur le SmartgridOne Controller.

Nous sommes maintenant prêts à envoyer quelques commandes de base à l'aide d'un exemple simple. La colonne Statut vous indique si une commande est active.

Script de démonstration Python

Pour commencer, il serait pertinent de tester votre intégration nouvellement configurée avec un exemple simple.

Ce code de test se contente d'envoyer en continu la planification suivante :

  • Batterie : charger à 5 kW pendant 15 minutes dans 10 minutes
  • Solaire : régler la puissance sur 0 kW pendant une heure dans 30 minutes

Le SmartgridOne Controller répond par un message d'accusé de réception contenant l'identifiant unique de la planification, ou par un message d'erreur.

Nous récupérons ensuite la prochaine planification pour les deux types d'appareils, confirmant ainsi que la commande a réussi.

Veuillez télécharger le fichier ci-dessous dans votre IDE Python préféré. Renseignez votre numéro de série et vos identifiants MQTT, puis exécutez le script :

Une fois l'opération ci-dessus réussie, vous pouvez continuer à envoyer d'autres types de messages. Tous les messages sont décrits ci-dessous.

Documentation MQTT pour l'envoi de commandes

Cette section détaille le format des messages MQTT et les exigences relatives à la charge utile pour configurer la commande planifiée des appareils au sein du réseau du SmartgridOne Controller.

Rubriques MQTT

  • Rubrique d'abonnement : standard1/rp_one_s/remoteScheduleMetrics/<controller SN>
  • Rubrique de retour d'information : standard1/outbound/remoteScheduleMetrics/feedback/<controller SN>

Où <controller SN> doit être remplacé par le numéro de série réel du SmartgridOne Controller que vous souhaitez contrôler.

Types de messages MQTT

1. Définir une planification (set_schedule)

Crée une nouvelle planification pour un type d'appareil.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Optional),
        "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> (Optional) (default=False),
        "tag": <Tag String> (Optional) (default=None),
    }
}

Réponse (réussite) :

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Schedule ID>,
            "deleted_ids": <Schedulde IDs deleted if remove_overlap=True>
            "tag": <Tag String> (default=None),
        },
        "responseCode": 0
    }
}

2. Définir des planifications (set_schedules)

Crée plusieurs nouvelles planifications.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedules",
    "fields": 
        "0": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Optional),
            "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> (Optional) (default=False),
        }",
        "1": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Optional),
            "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> (Optional) (default=False),
        }",
        ...
}

Réponse (réussite) :

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <Schedule IDs>,
            "deleted_ids": <Schedulde IDs deleted if remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Obtenir une planification (get_schedule)

Récupère une planification spécifique par son identifiant.

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

Réponse :

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

4. Obtenir la planification active (get_active_schedule)

Récupère la planification actuellement active pour un type d'appareil.

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

Réponse (réussite) :

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

5. Obtenir la prochaine planification (get_next_schedule)

Récupère la prochaine planification à venir pour un type d'appareil.

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

Réponse (réussite) :

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

6. Obtenir les planifications (get_schedules)

Récupère toutes les planifications pour une date donnée.

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

Réponse (réussite) :

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

7. Obtenir les planifications futures (get_future_schedules)

Récupère toutes les planifications futures.

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

Réponse (réussite) :

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

8. Supprimer une planification (remove_schedule)

Supprime une planification spécifique par son identifiant.

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

Réponse (réussite) :

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

9. Obtenir les retours du site (get_feedback)

Récupère des informations détaillées sur l'état du système.

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

Réponse (réussite) :

Structure de la charge utile des retours

10. Topologie du site (get_toplogy)

Récupère la topologie du site.

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

Réponse (réussite) :

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

Format de réponse standard d'une planification

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

Types de composants et stratégies

Pour plus d'informations sur les composants et stratégies disponibles pouvant être planifiés, consultez la section Composants et stratégies MQTT de la documentation sur la commande MQTT en temps réel.

Des planifications spécifiques à un appareil peuvent être envoyées à l'aide du champ node_id facultatif, qui fait référence à l'identifiant de nœud de l'appareil contrôlable.

Gestion des erreurs

Tous les messages peuvent renvoyer une réponse d'erreur avec responseCode: 1 lorsqu'une erreur se produit :

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

Lorsqu'une erreur sans rapport se produit, le type de message sera (general_error).

Les erreurs courantes incluent :

  • Chevauchement de la planification avec des planifications existantes
  • Plage horaire non valide
  • Type d'appareil introuvable
  • Identifiant de planification introuvable
  • Stratégie non valide pour le type d'appareil

Règles de gestion des planifications

  1. Règles de chevauchement
    • Les planifications ne peuvent pas se chevaucher pour un même type d'appareil
    • Les planifications ne peuvent pas se chevaucher pour un même appareil
    • Les planifications concernant le même appareil et le même type d'appareil ne peuvent pas se chevaucher
    • Les planifications existantes qui se chevauchent seront supprimées si la variable remove_overlap est définie sur True lors de la création d'une nouvelle planification.
  2. Chaque planification doit comporter :
    • Un type d'appareil valide
    • Une heure de début (horodatage Unix)
    • Une heure de fin (horodatage Unix)
    • Une stratégie (correspondant aux stratégies disponibles pour le type d'appareil)
    • Une consigne de puissance (pour les stratégies qui l'exigent)
  3. L'heure de début doit être antérieure à l'heure de fin
  4. Si l'heure de début est passée, elle est automatiquement modifiée pour commencer immédiatement
  5. Les planifications peuvent uniquement être supprimées si elles n'ont pas encore commencé. Les planifications actives ne peuvent pas être supprimées.
  6. Les planifications peuvent être définies indépendamment pour différents types d'appareils
  7. Le système applique automatiquement la stratégie appropriée lorsqu'une planification devient active
Last updated August 7, 2026Edit this page

Commande MQTT en temps réel

Previous Page

Configuration MQTT

Next Page

On this page

Commande MQTT planifiéeConfiguration initiale (point de départ pour les nouveaux utilisateurs)1. Ajouter le signal externe MQTT2. Activer le signal distant MQTT3. Le signal distant est ajoutéScript de démonstration PythonDocumentation MQTT pour l'envoi de commandesRubriques MQTTTypes de messages MQTT1. Définir une planification (set_schedule)2. Définir des planifications (set_schedules)3. Obtenir une planification (get_schedule)4. Obtenir la planification active (get_active_schedule)5. Obtenir la prochaine planification (get_next_schedule)6. Obtenir les planifications (get_schedules)7. Obtenir les planifications futures (get_future_schedules)8. Supprimer une planification (remove_schedule)9. Obtenir les retours du site (get_feedback)10. Topologie du site (get_toplogy)Format de réponse standard d'une planificationTypes de composants et stratégiesGestion des erreursRègles de gestion des planifications