Commands
O módulo Commands: START_SESSION, STOP_SESSION e UNLOCK_CONNECTOR, com as matrizes de decisão de CommandResponse e CommandResult.
Nesta página
Considerações técnicas
Devem ser suportados os seguintes comandos:
START_SESSIONSTOP_SESSIONUNLOCK_CONNECTOR
Todos os processos são assíncronos. Por isso, é OBRIGATÓRIO que o EMSP indique um identificador único no response_url.
Quanto ao desbloqueio do conector, é importante notar que o EMSP não deve ser autorizado a usar esta funcionalidade de forma ligeira. É proibido ao EMSP criar aplicações que permitam executar este comando sem validação.
Um EMSP NÃO DEVERIA enviar comandos para um EVSE que não seja REMOTE_START_STOP_CAPABLE.
Métodos a implementar
CPO (e MOBI.Hub) – Receiver
| Método | Direção | Descrição da utilização |
|---|---|---|
POST | Resposta | Confirmação do pedido inicial de execução do comando. |
POST | Pedido | Responder de forma assíncrona ao pedido do EMSP quanto à sua execução. |
EMSP (e MOBI.Hub) – Sender
| Método | Direção | Descrição da utilização |
|---|---|---|
POST | Pedido | O EMSP envia um comando ao MOBI.Hub |
POST | Resposta | Receber a confirmação de execução do MOBI.Hub |
Descrição dos comandos e objetos
START_SESSION
O MOBI.Hub deve verificar que o token existe e autorizá-lo antes de enviar o pedido ao posto de carregamento. Esta validação pode basear-se numa autorização em tempo real junto do EMSP ou numa lista branca (whitelist) gerida pela Mobi.e.
Normalmente, todos os postos de carregamento deveriam fazer a autorização OCPP antes de iniciar uma nova transação. Se o firmware o permitir, os postos de carregamento serão configurados para não autorizar transações na sequência de um início remoto, de forma a melhorar o tempo global de validação.
O estado do EVSE não deve ser considerado para o CommandResponse, uma vez que um posto de carregamento pode não ter comunicado todas as alterações de estado necessárias.
A tabela seguinte descreve o objeto START_SESSION:
| Propriedade | Obrigatório | Valor | Comentário |
|---|---|---|---|
response_url | TRUE | URL para o resultado posterior | |
token | TRUE | APP_USER / AD_HOC_USER | O token tem de ter sido criado previamente no MOBI.Hub (mesmo que apenas alguns segundos/minutos antes). |
token | TRUE | RFID | O token tem de ter sido criado previamente no MOBI.Hub. Este token deve ser usado caso o EMSP pretenda garantir que o utilizador poderá iniciar ou parar a transação no posto de carregamento. Caso algum dos parâmetros RFID não esteja correto, o pedido deve ser rejeitado (ou seja, esta não é uma forma de atualizar o token com PATCH). |
location_id | TRUE | ||
evse_uid | TRUE | O valor deveria ser obrigatório, uma vez que o MOBI.Hub não consegue garantir que todos os postos de carregamento suportam um pedido ao nível do posto de carregamento com seleção local. | |
authorization_reference | FALSE | Deve ser implementado um tipo UUID. |
Para o CommandResponse correspondente, considere-se a seguinte matriz.
| Condição | CommandResponse - result | Mensagem (se aplicável) | ||
|---|---|---|---|---|
| Token válido | EVSE UID existe no local | Posto de carregamento online | ||
| TRUE | TRUE | TRUE | ACCEPTED | N/A |
| * | * | FALSE | REJECTED | O posto de carregamento pedido está atualmente offline. |
| FALSE | * | TRUE | REJECTED | O token pedido é inválido. |
| TRUE | FALSE | TRUE | REJECTED | O EVSE UID pedido não existe no local. |
A verificação da validade do token deve considerar o seguinte:
- Se o token existir, então:
- Tem de ter as mesmas propriedades.
- Tem de pertencer à parte que faz o pedido.
Por fim, para o CommandResult aplica-se a tabela seguinte. Note-se que, ao contrário do que é indicado no documento de referência, o CommandResult result não pode ser ACCEPTED se não tiver sido recebido nenhum StartTransaction.req.
| Condição | CommandResult - result | Mensagem (se aplicável) | ||||||
|---|---|---|---|---|---|---|---|---|
RemoteStartTransaction.conf recebido | Estado de RemoteStartTransaction.conf | StartTransaction.req recebido | Sessão ativa com o mesmo token | Sessão ativa com token diferente | EVSE em OutOfService | Tempo limite de execução do comando | ||
| TRUE | ACCEPTED | TRUE | * | * | * | FALSE | ACCEPTED | N/A |
| TRUE | ACCEPTED | TRUE | * | * | * | FALSE | ACCEPTED | [Motivo do StartTransaction.req] |
| FALSE | N/A | TRUE | * | * | * | FALSE | ACCEPTED | AVISO! Confirmação original não recebida. |
| TRUE | ACCEPTED | FALSE | * | * | * | TRUE | FAILED | O posto de carregamento não confirmou que iniciou a transação. |
| TRUE | REJECTED | FALSE | TRUE | FALSE | N/A | FALSE | EVSE_OCCUPIED | O utilizador atual tem uma transação ativa no EVSE. |
| TRUE | REJECTED | FALSE | FALSE | FALSE | TRUE | FALSE | EVSE_INOPERATIVE | O EVSE pedido está fora de serviço. |
| TRUE | REJECTED | FALSE | FALSE | TRUE | N/A | FALSE | EVSE_OCCUPIED | O EVSE está atualmente ocupado. |
| FALSE | N/A | FALSE | * | * | * | TRUE | TIMEOUT | |
STOP_SESSION
| Propriedade | Valor | Obrigatório | Comentário |
|---|---|---|---|
response_url | TRUE | URL para o resultado posterior | |
session_id | TRUE |
Se o posto de carregamento em causa não suportar a paragem remota de uma sessão, deve ser dado o seguinte result de CommandResponse: NOT_SUPPORTED.
Para o CommandResponse correspondente, considere-se a seguinte matriz.
| Condição | CommandResponse - result | Mensagem (se aplicável) | |||
|---|---|---|---|---|---|
| Sessão existe | Sessão ativa | Sessão pertence ao EMSP | Posto de carregamento online | ||
| TRUE | TRUE | TRUE | TRUE | ACCEPTED | N/A |
| TRUE | TRUE | TRUE | FALSE | REJECTED | A sessão pedida está atualmente offline. |
| TRUE | TRUE | FALSE | * | REJECTED | A sessão pedida não pertence à parte que faz o pedido. |
| TRUE | FALSE | TRUE | * | REJECTED | A sessão pedida já não está ativa. |
| TRUE | FALSE | FALSE | * | REJECTED | A sessão pedida não pertence à parte que faz o pedido. |
| FALSE | N/A | N/A | * | UNKNOWN_SESSION | N/A |
Para o CommandResult, considere-se a seguinte tabela:
| Condição | CommandResult - result | Mensagem (se aplicável) | ||||
|---|---|---|---|---|---|---|
RemoteStopTransaction.conf recebido | Estado de RemoteStopTransaction.conf | StopTransaction.req recebido | Motivo do StopTransaction.req | Tempo limite de execução do comando | ||
| TRUE | ACCEPTED | TRUE | Remote OU posto de carregamento OCPP 1.5 | FALSE | ACCEPTED | N/A |
| TRUE | ACCEPTED | TRUE | (diferente de Remote em postos de carregamento OCPP 1.6) | FALSE | ACCEPTED | [Motivo do StopTransaction.req] |
| FALSE | N/A | TRUE | * | FALSE | ACCEPTED | Concatenação de: AVISO! Confirmação original não recebida + [Motivo do StopTransaction.req]. |
| TRUE | ACCEPTED | FALSE | N/A | TRUE | FAILED | O posto de carregamento não confirmou que parou a transação. |
| TRUE | REJECTED | FALSE | N/A | FALSE | FAILED | O posto de carregamento rejeitou o pedido. |
| FALSE | N/A | FALSE | N/A | TRUE | TIMEOUT | |
UNLOCK_CONNECTOR
O objeto pode ser descrito pelas seguintes propriedades:
| Propriedade | Valor | Obrigatório | Comentário |
|---|---|---|---|
response_url | TRUE | URL para o resultado posterior | |
location_id | TRUE | ||
evse_uid | TRUE | ||
connector_uid | TRUE |
| Condição | CommandResponse - result | Mensagem (se aplicável) | ||
|---|---|---|---|---|
| Sessão ativa com utilizador do EMSP | Sem sessão ativa, mas o último utilizador pertence ao EMSP (menos de 24h) | Posto de carregamento online | ||
| TRUE | N/A | TRUE | ACCEPTED | N/A |
| TRUE | N/A | FALSE | REJECTED | Impossível executar o comando pedido, uma vez que o posto de carregamento está offline. |
| FALSE | TRUE | TRUE | ACCEPTED | Aviso: a sessão de carregamento terminou às [stop_timestamp] |
| FALSE | TRUE | FALSE | REJECTED | Impossível executar o comando pedido, uma vez que o posto de carregamento está offline. Aviso: a sessão de carregamento terminou às [stop_timestamp] |
| FALSE | FALSE | * | REJECTED | Não existe nenhuma sessão válida do EMSP no posto de carregamento |
Para o CommandResult, considere-se a seguinte tabela para postos OCPP 1.6:
| Condição | CommandResult - result | Mensagem (se aplicável) | ||
|---|---|---|---|---|
UnlockConnector.conf recebido | Estado de UnlockConnector.conf | Tempo limite de execução do comando | ||
| TRUE | Unlocked (OCPP 1.6) ou Accepted (OCPP 1.5) | FALSE | ACCEPTED | N/A |
| TRUE | Rejected (OCPP 1.5) | FALSE | REJECTED | N/A |
| TRUE | UnlockFailed (OCPP 1.6) | FALSE | FAILED | N/A |
| TRUE | NotSupported (OCPP 1.6) | FALSE | NOT_SUPPORTED | N/A |
| FALSE | N/A | TRUE | TIMEOUT | N/A |