SmartgridOne logo
SmartgridOne logo
Acessórios
AplicativoAvisos de segurança, manutenção e legais
Caixa de Ferramentas
Certificados
Configuração de A a Z
ControladorDiretrizes para fiação e conectividade
Dispositivos
Especificações
Específico para o Cliente
Início RápidoInstalaçãoLEDs de StatusLicençaRede
Resolução de Problemas
Sinais Externos
OSD

AgrolaAPI de planejamento antecipadoAutarcoAxpoCaixa de fusíveisCKWComércio Dinâmico de EnergiaCompanion EnergiaControle de Relé DNODexterEdmijElia
Elindus
Energia BEEEnervalisEngieEPEX Spot SolarFleco PowerFlorFrank EnergieGreenchoiceHallostroomHive PowerImbyKratTrade
Monitoramento
Mqtt
Configuração MQTTControle MQTT programadoFluxo de IntegraçãoLinhas de baseLive MQTT controlRCEUsina Virtual
Novas integraçõesOpinumParágrafo 14a IntegraçãoPleeviPowernautProdutos EuropeusPróxima EnergiaReativadoScholtSoluções de Flexibilidade Energética (EFS)
Testes de diagnósticoTrevionVGT EnergiavZEV - Comunidade EnergéticaYuso - Controle de BateriaYuso - Restrição Solar
Tempo de resposta do controleTutoriais em vídeo
Sinais ExternosMqtt

Controle MQTT Agendado

Dica
Dica

O controle MQTT agendado destina-se a mensagens programadas com antecedência. Para controle em tempo real, veja Live MQTT Control em vez disso.

Este guia ajudará você a configurar o MQTT em seu SmartgridOne Controller para controlar e monitorar remotamente instalações de baterias e painéis solares.

Este guia ajudará você a configurar o MQTT em seu SmartgridOne Controller para controlar e monitorar remotamente instalações de baterias e painéis solares.

Configuração Inicial (Ponto de partida para novos usuários)

Eu tenho um SmartgridOne Controller que gostaria de configurar para Controle Remoto MQTT.

Antes de continuar, certifique-se de que sua rede e dispositivos estão prontos seguindo o guia MQTT Setup.

1. Adicionar o sinal externo MQTT

Image 1
Image 1
Image 1

2. Habilitar o sinal remoto MQTT

Selecione todos os dispositivos que deseja incluir no Controle Remoto MQTT.

Image 1

3. Sinal remoto adicionado

A interface de Controle Remoto MQTT foi agora ativada no SmartgridOne Controller.

Estamos prontos para enviar alguns comandos básicos usando um exemplo simples. A coluna Status indica se algum comando está ativo.

Script de demonstração em Python

Um bom ponto de partida é testar sua integração recém-configurada com um exemplo simples.

Este código de teste faz um trabalho simples de enviar continuamente o seguinte cronograma:

  • Bateria: Carregar a 5 kW por 15 minutos em 10 minutos
  • Solar: Definir potência para 0 kW por uma hora em 30 minutos

O SmartgridOne Controller responde com uma mensagem de confirmação contendo o identificador único do agendamento ou uma mensagem de erro.

Em seguida, buscamos o próximo agendamento para ambos os tipos de dispositivos, confirmando que o comando foi bem-sucedido.

Por favor, baixe o arquivo abaixo no seu IDE Python preferido. Preencha seu número de série e as credenciais MQTT e execute o script:

Quando o acima tiver sucesso, você pode continuar enviando outros tipos de mensagens. Todas as mensagens estão descritas abaixo.

Documentação MQTT para envio de comandos

Esta seção detalha o formato da mensagem MQTT e os requisitos de payload para configurar o controle agendado dos dispositivos na rede do SmartgridOne Controller.

Tópicos MQTT

  • Tópico de Assinatura: general_error
  • Tópico de Feedback: remove_overlap

Onde True deve ser substituído pelo número de série real do SmartgridOne Controller que você pretende controlar.

Tipos de Mensagens MQTT

1. Definir Agendamento (set_schedule)

Cria um novo agendamento para um tipo de dispositivo.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Opcional),
        "start_time": <Unix Timestamp>,
        "end_time": <Unix Timestamp>,
        "policy": "<Policy>",
        "power_setpoint_w": <Setpoint em watts>,
        "site_import": <Importação do Site em Watts>,
        "site_export": <Exportação do Site em Watts>,
        "remove_overlap": <True/False> (Opcional) (padrão=False),
        "tag": <Tag String> (Opcional) (padrão=None),
    }
}

Resposta (Sucesso):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Schedule ID>,
            "deleted_ids": <IDs de Agendamentos deletados se remove_overlap=True>,
            "tag": <Tag String> (padrão=None),
        },
        "responseCode": 0
    }
}

2. Definir Agendamentos (general_error)

Cria múltiplos novos agendamentos.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedules",
    "fields": 
        "0": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Opcional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint em watts>,
            "site_import": <Importação do Site em Watts>,
            "site_export": <Exportação do Site em Watts>,
            "remove_overlap": <True/False> (Opcional) (padrão=False),
        }",
        "1": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Opcional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint em watts>,
            "site_import": <Importação do Site em Watts>,
            "site_export": <Exportação do Site em Watts>,
            "remove_overlap": <True/False> (Opcional) (padrão=False),
        }",
        ...
}

Resposta (Sucesso):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <IDs de Agendamentos>,
            "deleted_ids": <IDs de Agendamentos deletados se remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Obter Agendamento (general_error)

Recupera um agendamento específico pelo ID.

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

Resposta:

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

4. Obter Agendamento Ativo (general_error)

Recupera o agendamento atualmente ativo para um 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>" (Opcional),
    }
}

Resposta (Sucesso):

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

5. Obter Próximo Agendamento (general_error)

Recupera o próximo agendamento futuro para um tipo de dispositivo.

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

Resposta (Sucesso):

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

6. Obter Agendamentos (general_error)

Recupera todos os agendamentos para uma data específica.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_schedules",
    "fields": {
        "date": "<String de Data no formato dd/mm/yyyy>"
    }
}

Resposta (Sucesso):

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

7. Obter Agendamentos Futuros (general_error)

Recupera todos os agendamentos futuros.

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

Resposta (Sucesso):

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

8. Remover Agendamento (general_error)

Remove um agendamento específico pelo ID.

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

Resposta (Sucesso):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "remove_schedule_ack",
        "state": "Agendamento <Schedule ID> removido com sucesso",
        "responseCode": 0
    }
}

9. Obter Feedback do Site (general_error)

Recupera feedback detalhado sobre o estado do sistema.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_feedback",
    "fields": {
        "device": <Nível do dispositivo (node)>
    }
}

Resposta (Sucesso):

Estrutura do Payload de Feedback

10. Topologia do Site (general_error)

Obtém a topologia do site.

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

Resposta (Sucesso):

{
    "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 Padrão de Resposta de Agendamento

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

Tipos de Componentes e Políticas

Para detalhes sobre componentes disponíveis e políticas que podem ser agendadas, consulte a seção MQTT Components and Policies na documentação de Live MQTT Control.

Agendamentos específicos para dispositivos podem ser enviados usando o campo opcional general_error, referindo-se ao node ID do dispositivo controlável.

Tratamento de Erros

Todas as mensagens podem retornar uma resposta de erro com remove_overlap em caso de erro:

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

Quando ocorre um erro não relacionado, o tipo de mensagem será (general_error).

Erros comuns incluem:

  • Sobreposição de agendamentos com agendamentos existentes
  • Intervalo de tempo inválido
  • Tipo de dispositivo não encontrado
  • ID de agendamento não encontrado
  • Política inválida para o tipo de dispositivo

Regras de Gerenciamento de Agendamentos

  1. Regras de Sobreposição
    • Agendamentos não podem se sobrepor para o mesmo tipo de dispositivo
    • Agendamentos não podem se sobrepor para o mesmo dispositivo
    • Agendamentos para o mesmo dispositivo e tipo de dispositivo não podem se sobrepor
    • Agendamentos existentes e sobrepostos serão deletados se a variável remove_overlap estiver definida para True ao criar um novo agendamento.
  2. Cada agendamento deve ter:
    • Um tipo de dispositivo válido
    • Um horário de início (timestamp Unix)
    • Um horário de término (timestamp Unix)
    • Uma política (compatível com as políticas disponíveis para o tipo de dispositivo)
    • Um setpoint de potência (para políticas que o requerem)
  3. O horário de início deve ser antes do horário de término
  4. Se o horário de início estiver no passado, ele é automaticamente alterado para iniciar agora
  5. Agendamentos só podem ser removidos se ainda não tiverem começado. Agendamentos ativos não podem ser removidos.
  6. Agendamentos podem ser configurados para diferentes tipos de dispositivos de forma independente
  7. O sistema aplica automaticamente a política apropriada quando um agendamento se torna ativo
Last updated August 12, 2026Edit this page

Configuração MQTT

Previous Page

Fluxo de Integração

Next Page

On this page

Controle MQTT AgendadoConfiguração Inicial (Ponto de partida para novos usuários)1. Adicionar o sinal externo MQTT2. Habilitar o sinal remoto MQTT3. Sinal remoto adicionadoScript de demonstração em PythonDocumentação MQTT para envio de comandosTópicos MQTTTipos de Mensagens MQTT1. Definir Agendamento (set_schedule)2. Definir Agendamentos (general_error)3. Obter Agendamento (general_error)4. Obter Agendamento Ativo (general_error)5. Obter Próximo Agendamento (general_error)6. Obter Agendamentos (general_error)7. Obter Agendamentos Futuros (general_error)8. Remover Agendamento (general_error)9. Obter Feedback do Site (general_error)10. Topologia do Site (general_error)Formato Padrão de Resposta de AgendamentoTipos de Componentes e PolíticasTratamento de ErrosRegras de Gerenciamento de Agendamentos