El control MQTT programado está diseñado para mensajes programados con anticipación. Para control en tiempo real, consulte Live MQTT ControlControl MQTT en vivo
Esta guía le ayudará a configurar MQTT en su SmartgridOne Controller para controlar y supervisar remotamente instalaciones de baterías y paneles solares.
Esta guía le ayudará a configurar MQTT en su SmartgridOne Controller para controlar y supervisar remotamente instalaciones de baterías y paneles solares.
Tengo un SmartgridOne Controller que me gustaría configurar para el control remoto mediante MQTT.
Antes de continuar, asegúrese de que su red y dispositivos estén listos siguiendo la guía de Configuración de MQTTPara un rendimiento óptimo:
Solicite el nombre de usuario y la contraseña de MQTT de Eniris necesarios a través de la tienda web de Eniris antes de iniciar la configuración.
La interfaz de control remoto MQTT ya se ha activado en el SmartgridOne Controller.
Ahora estamos listos para enviar algunos comandos básicos mediante un ejemplo sencillo. La columna Estado indica si hay algún comando activo.
Un buen punto de partida es probar la integración recién configurada con un ejemplo sencillo.
Solar: Establecer potencia a 0 kW durante una hora dentro de 30 minutos
El SmartgridOne ControllerPor favor, descargue el archivo a continuación en su IDE de Python preferido. Complete con su número de serie y credenciales MQTT y ejecute el script:
Cuando lo anterior sea exitoso, puede continuar enviando otros tipos de mensajes. Todos los mensajes se describen a continuación.
Descargue el archivo que aparece a continuación en su IDE de Python preferido. Introduzca su número de serie y las credenciales MQTT solicitadas a través de la tienda web de Eniris, y luego ejecute el script:
Esta sección detalla el formato de mensajes MQTT y los requisitos de carga útil para configurar el control programado de dispositivos dentro de la red del
Tema de suscripción: SmartgridOne Controller'.
standard1/rp_one_s/remoteScheduleMetrics/<controller SN>standard1/outbound/remoteScheduleMetrics/feedback/<controller SN>Where <controller SN>1. Establecer programa (SmartgridOne Controller que desea controlar.
set_schedule)Crea múltiples programas nuevos.
{
"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),
}
}
Respuesta (Éxito):
{
"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
}
}
set_schedules)Recupera un programa específico por ID.
{
"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),
}",
...
}
Respuesta (Éxito):
{
"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
}
}
get_schedule)Recupera el programa activo actualmente para un tipo de dispositivo.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_schedule",
"fields": {
"id": <Schedule ID>
}
}
Respuesta (Éxito):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedule_ack",
"state": <Schedule>,
"responseCode": 0
}
}
get_active_schedule)Recupera el siguiente programa próximo para un tipo de 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),
}
}
Respuesta (Éxito):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_active_schedule_ack",
"state": <Schedule>,
"responseCode": 0
}
}
get_next_schedule)Recupera todos los programas para una fecha específica.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_next_schedule",
"fields": {
"device_type": "<Device Type>",
"node_id": "<Node ID>" (Optional),
}
}
Respuesta (Éxito):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_next_schedule_ack",
"state": <Schedule>,
"responseCode": 0
}
}
get_schedules)Recupera todos los programas futuros.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_schedules",
"fields": {
"date": "<Date String of Format dd/mm/yyyy>"
}
}
Respuesta (Éxito):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}
get_future_schedules)Elimina un programa específico por ID.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_future_schedules",
"fields": {}
}
Respuesta (Éxito):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_future_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}
remove_schedule)Recupera retroalimentación detallada sobre el estado del sistema.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "remove_schedule",
"fields": {
"id": <Schedule ID>
}
}
Respuesta (Éxito):
{
"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
}
}
get_feedback){
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_feedback",
"fields": {
"device": <Device (node) level>
}
}
Respuesta (Éxito):
get_toplogy)Tipos de componentes y políticas
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_topology",
"fields": {}
}
Respuesta (Éxito):
{
"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
}
}
{
"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>
}
Los programas específicos para dispositivos pueden enviarse utilizando el campo opcional , que hace referencia al ID del nodo del dispositivo controlable.Manejo de errores
Todos los mensajes pueden devolver una respuesta de error con node_id cuando ocurre un error:
Errores comunes incluyen:responseCode: 1Superposición de programas con programas existentes
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "<Message Type>_ack",
"error": <Error Body>,
"responseCode": 1
}
}
Rango de tiempo inválidogeneral_error).
Tipo de dispositivo no encontrado
remove_overlapUn tipo de dispositivo válidoTrueUna hora de inicio (timestamp Unix)