SmartgridOne logo
SmartgridOne logo
Accessori
AppAvvio rapidoAvvisi di sicurezza, manutenzione e note legaliCertificati
Configurazione dalla A alla Z
Controller
Dispositivi
InstallazioneLED di statoLicenzaLinee guida per il cablaggio e la connettivitàRete
Risoluzione dei problemi
Segnali esterni
DSO

AgrolaAPI Plan-aheadAutarcoAxpoBEE EnergyCKWCompanion EnergyControllo del relè DNODexterDynamic Energy TradingEdmijElia
Elindus
EnervalisEngieEPEX Spot SolarEuropean CommoditiesFleco PowerFlowerFrank EnergieFuseboxGreenchoiceHallostroomHive PowerImbyIntegrazione Paragraph 14aKratTrade
Monitoraggio
Mqtt
BaselineCentrale elettrica virtualeConfigurazione MQTTControllo MQTT in tempo realeControllo MQTT programmatoFCRFlusso di onboarding
Next EnergyNuove integrazioniOpinumPleeviPowernautRepoweredScholtSoluzioni di Flessibilità Energetica (EFS)
Test diagnosticiTrevionVGT EnergyvZEV - Comunità energeticaYuso - Controllo della batteriaYuso - Riduzione solare
Specifiche
Specifico per il cliente
Tempo di risposta al controllo
Toolbox
Tutorial video
Segnali esterniMqtt

Controllo MQTT programmato

Suggerimento
Suggerimento

Il controllo MQTT programmato è pensato per l'invio anticipato di messaggi programmati. Per il controllo in tempo reale, consulta invece Controllo MQTT in tempo reale.

Questa guida ti aiuterà a configurare MQTT sul tuo SmartgridOne Controller per controllare e monitorare da remoto installazioni con batterie e pannelli solari.

Questa guida ti aiuterà a configurare MQTT sul tuo SmartgridOne Controller per controllare e monitorare da remoto installazioni con batterie e pannelli solari.

Configurazione iniziale (punto di partenza per i nuovi utenti)

Ho un SmartgridOne Controller che desidero configurare per il Controllo remoto MQTT.

Prima di continuare, assicurati che la rete e i dispositivi siano pronti seguendo la guida Configurazione MQTT.

1. Aggiungi il segnale esterno MQTT

Image 1
Image 1
Image 1

2. Abilita il segnale remoto MQTT

Seleziona tutti i dispositivi che desideri includere nel Controllo remoto MQTT.

Image 1

3. Segnale remoto aggiunto

L'interfaccia di Controllo Remoto MQTT è stata ora attivata sul SmartgridOne Controller.

Ora siamo pronti a inviare alcuni comandi di base usando un semplice esempio. La colonna Stato indica se è attivo un comando.

Script demo Python

Un buon punto di partenza è testare l'integrazione appena configurata con un semplice esempio.

Questo codice di test svolge il semplice compito di inviare continuamente la seguente pianificazione:

  • Batteria: carica a 5 kW per 15 minuti tra 10 minuti
  • Solare: imposta la potenza su 0 kW per un'ora tra 30 minuti

Il SmartgridOne Controller risponde con un messaggio di conferma contenente l'identificatore univoco della pianificazione oppure con un messaggio di errore.

Recuperiamo quindi la pianificazione successiva per entrambi i tipi di dispositivo, confermando che il comando è stato eseguito correttamente.

Scarica il file riportato di seguito nell'IDE Python che preferisci. Inserisci il tuo numero di serie e le credenziali MQTT, quindi esegui lo script:

Quando quanto sopra ha esito positivo, puoi continuare inviando altri tipi di messaggi. Tutti i messaggi sono descritti di seguito.

Documentazione MQTT per l'invio dei comandi

Questa sezione descrive in dettaglio il formato dei messaggi MQTT e i requisiti del payload per configurare il controllo programmato dei dispositivi nella rete del SmartgridOne Controller.

Argomenti MQTT

  • Argomento di sottoscrizione: standard1/rp_one_s/remoteScheduleMetrics/<controller SN>
  • Argomento di feedback: standard1/outbound/remoteScheduleMetrics/feedback/<controller SN>

Dove <controller SN> deve essere sostituito con il numero di serie effettivo del SmartgridOne Controller che intendi controllare.

Tipi di messaggi MQTT

1. Imposta pianificazione (set_schedule)

Crea una nuova pianificazione per un tipo di dispositivo.

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

Risposta (operazione riuscita):

{
    "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. Imposta pianificazioni (set_schedules)

Crea più pianificazioni nuove.

{
    "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),
        }",
        ...
}

Risposta (operazione riuscita):

{
    "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. Recupera pianificazione (get_schedule)

Recupera una pianificazione specifica tramite ID.

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

Risposta:

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

4. Recupera pianificazione attiva (get_active_schedule)

Recupera la pianificazione attualmente attiva per un tipo di dispositivo.

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

Risposta (operazione riuscita):

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

5. Recupera pianificazione successiva (get_next_schedule)

Recupera la prossima pianificazione prevista per un tipo di dispositivo.

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

Risposta (operazione riuscita):

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

6. Recupera pianificazioni (get_schedules)

Recupera tutte le pianificazioni per una data specifica.

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

Risposta (operazione riuscita):

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

7. Recupera pianificazioni future (get_future_schedules)

Recupera tutte le pianificazioni future.

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

Risposta (operazione riuscita):

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

8. Rimuovi pianificazione (remove_schedule)

Rimuove una pianificazione specifica tramite ID.

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

Risposta (operazione riuscita):

{
    "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. Recupera feedback del sito (get_feedback)

Recupera informazioni dettagliate sullo stato del sistema.

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

Risposta (operazione riuscita):

Struttura del payload di feedback

10. Topologia del sito (get_toplogy)

Recupera la topologia del sito.

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

Risposta (operazione riuscita):

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

Formato standard della risposta della pianificazione

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

Tipi di componenti e policy

Per informazioni dettagliate sui componenti e sulle policy disponibili che possono essere programmate, consulta la sezione Componenti e policy MQTT nella documentazione del Controllo MQTT in tempo reale.

È possibile inviare pianificazioni specifiche per dispositivo utilizzando il campo opzionale node_id, che fa riferimento all'ID del nodo del dispositivo controllabile.

Gestione degli errori

Tutti i messaggi possono restituire una risposta di errore con responseCode: 1 quando si verifica un errore:

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

Quando si verifica un errore non correlato, il tipo di messaggio sarà (general_error).

Gli errori comuni includono:

  • Sovrapposizione della pianificazione con pianificazioni esistenti
  • Intervallo di tempo non valido
  • Tipo di dispositivo non trovato
  • ID della pianificazione non trovato
  • Policy non valida per il tipo di dispositivo

Regole di gestione delle pianificazioni

  1. Regole di sovrapposizione
    • Le pianificazioni non possono sovrapporsi per lo stesso tipo di dispositivo
    • Le pianificazioni non possono sovrapporsi per lo stesso dispositivo
    • Le pianificazioni per lo stesso dispositivo e tipo di dispositivo non possono sovrapporsi
    • Le pianificazioni esistenti e sovrapposte verranno eliminate se la variabile remove_overlap è impostata su True durante la creazione di una nuova pianificazione.
  2. Ogni pianificazione deve avere:
    • Un tipo di dispositivo valido
    • Un'ora di inizio (timestamp Unix)
    • Un'ora di fine (timestamp Unix)
    • Una policy (corrispondente alle policy disponibili per il tipo di dispositivo)
    • Un setpoint di potenza (per le policy che lo richiedono)
  3. L'ora di inizio deve precedere l'ora di fine
  4. Se l'ora di inizio è nel passato, viene automaticamente modificata per iniziare al momento attuale
  5. Le pianificazioni possono essere eliminate solo se non sono ancora iniziate. Le pianificazioni attive non possono essere eliminate.
  6. È possibile impostare indipendentemente le pianificazioni per tipi di dispositivo diversi
  7. Il sistema applica automaticamente la policy appropriata quando una pianificazione diventa attiva
Last updated August 7, 2026Edit this page

Controllo MQTT in tempo reale

Previous Page

FCR

Next Page

On this page

Controllo MQTT programmatoConfigurazione iniziale (punto di partenza per i nuovi utenti)1. Aggiungi il segnale esterno MQTT2. Abilita il segnale remoto MQTT3. Segnale remoto aggiuntoScript demo PythonDocumentazione MQTT per l'invio dei comandiArgomenti MQTTTipi di messaggi MQTT1. Imposta pianificazione (set_schedule)2. Imposta pianificazioni (set_schedules)3. Recupera pianificazione (get_schedule)4. Recupera pianificazione attiva (get_active_schedule)5. Recupera pianificazione successiva (get_next_schedule)6. Recupera pianificazioni (get_schedules)7. Recupera pianificazioni future (get_future_schedules)8. Rimuovi pianificazione (remove_schedule)9. Recupera feedback del sito (get_feedback)10. Topologia del sito (get_toplogy)Formato standard della risposta della pianificazioneTipi di componenti e policyGestione degli erroriRegole di gestione delle pianificazioni