Alarme e notificação de modo Demo por falha de licença.

Como monitorar o estado da licença do E3 Server, disparar um alarme automático assim que ele cair para o modo Demo e avisar a equipe remotamente — por e-mail ou por aplicativos de mensagens (Microsoft Teams, WhatsApp, Telegram).

1. Por que o E3 entra em modo Demo

Quando o E3 Server perde o acesso à licença (Hardkey ou Softkey), ele não cai para Demo imediatamente. Desde a versão 6.0 existe uma licença emergencial temporária, que mantém a última licença válida por até 2 horas em horário útil (8h30–17h30). Se a falha ocorrer ao final de um período útil, as duas horas começam a contar nas primeiras horas úteis do dia útil seguinte. Esgotado esse período sem que a licença volte, o servidor passa a modo Demo.

Como essa transição pode ocorrer sem reinício do servidor e sem aviso na estação de operação, vale monitorar o estado da licença e transformá-lo em alarme e em notificação remota.

Recuperação rápida: o reconhecimento da licença é refeito a cada inicialização do E3 Server. Se o problema ocorrer, clique com o botão direito no ícone do E3 Admin e escolha Reiniciar E3 Server, depois confira em E3 Admin › Licenças se o servidor saiu do modo Demo. Só reinicie a máquina inteira se o serviço de licença continuar indisponível.

2. Detectar o modo Demo por script

O estado da licença fica disponível em tempo de execução na propriedade booleana IsDemo do objeto [?Server].License, que devolve True quando nenhuma licença válida foi encontrada. Em modo Demo, a propriedade ID (identificador da Hardkey/Softkey) também fica vazia.

O padrão recomendado é gravar esse estado em um InternalTag booleano e atualizá-lo periodicamente:

  1. No DataServer do projeto, crie um InternalTag booleano — por exemplo E3_LicencaDemo.
  2. Crie um TimerTag (por exemplo MonitorLicenca) do tipo contínuo, disparando a cada 30–60 segundos.
  3. No evento OnPreset do TimerTag, leia IsDemo e grave no tag.
Sub MonitorLicenca_OnPreset()
    Dim lic, tag, emDemo
    Set lic = Application.GetObject(":[?Server].License")
    Set tag = Application.GetObject("Dados.E3_LicencaDemo")
    emDemo  = lic.IsDemo

    ' Detecta a transicao Normal -> Demo (borda de subida) para notificar uma unica vez
    If emDemo And Not tag.Value Then
        Notificar "E3 entrou em modo Demo em " & Now
    End If

    ' Atualiza o estado - a fonte de alarme observa este tag
    tag.Value = emDemo
End Sub

Rode no servidor, não no Viewer. O objeto [?Server] é resolvido pelo E3 Server que executa o script. Rodar o monitoramento no lado do servidor garante que o valor de IsDemo reflita a licença real do domínio.

O TimerTag do tipo contínuo (ttContinuous) dispara OnPreset no intervalo definido em RepeatInterval — por exemplo TimeValue("00:00:30") para 30 segundos.

3. Gerar o alarme

Com o estado já refletido no tag Dados.E3_LicencaDemo, associe uma fonte de alarme digital a ele. Assim, qualquer queda de licença gera um alarme imediato, visível no controle E3Alarm da tela de operação.

Pelo Studio

  1. No AlarmConfig do projeto, crie (ou reutilize) uma Ãrea de alarme — por exemplo Licenciamento.
  2. Adicione uma fonte de alarme digital dentro dela — por exemplo AlmLicencaDemo.
  3. Em Fonte, aponte para o tag Dados.E3_LicencaDemo.
  4. Habilite a condição Digital, com Limite = 1 (dispara quando o tag = True), defina a severidade (por exemplo Crítica) e a mensagem de alarme.

4. Notificar remotamente

O alarme na tela resolve a percepção local, mas quem está fora da sala de operação precisa ser avisado. A notificação é disparada na transição para Demo — na rotina Notificar chamada pelo script do passo 2, ou por um Evento de Usuário configurado na própria fonte de alarme (monitorando a propriedade Alarm com o modo Sempre que a propriedade for uma condição verdadeira).

4.1. Por e-mail

O E3 já dispõe de dois caminhos consolidados para envio de e-mail, ambos documentados na Base de Conhecimento:

  • Driver SendMail — dispara o e-mail por um driver de comunicação, acionado por um Evento de Usuário sobre a propriedade Alarm da fonte de alarme (ver Artigos relacionados).
  • CDO por script — cria o objeto CDO.Message no VBScript e envia via servidor SMTP, sem driver.

Exemplo com CDO, dentro da rotina de notificação:

Sub EnviarEmail(assunto, texto)
    Dim msg
    Set msg = CreateObject("CDO.Message")
    msg.Subject  = assunto
    msg.From     = "e3servidor@suaempresa.com.br"
    msg.To       = "manutencao@suaempresa.com.br"
    msg.TextBody = texto
    ' ... configurar os campos SMTP (servidor, porta, autenticacao) ...
    msg.Send
End Sub

Atenção ao TLS do CDO. O CDO usa uma implementação antiga de TLS e não é compatível com provedores que exigem TLS 1.2 ou superior (Gmail, Outlook, Yahoo). Nesses casos, use um servidor SMTP interno ou o envio por PowerShell (System.Net.Mail.SmtpClient). Os detalhes de configuração SMTP estão nos artigos relacionados.

4.2. Por aplicativo de mensagens (Teams, WhatsApp, Telegram)

O envio para aplicativos móveis é uma integração externa: não é um recurso nativo do E3 — o E3 apenas executa uma requisição HTTP (POST) para o webhook do serviço, que se encarrega de entregar a mensagem. O script usa o objeto COM padrão do Windows MSXML2.ServerXMLHTTP:

' Envia um POST para um webhook HTTP (integracao externa)
Sub EnviarWebhook(url, corpoJson)
    Dim http
    Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send corpoJson
End Sub

Exemplo com o Telegram (API pública de bots — obtenha o token junto ao BotFather e o chat_id do destino):

Dim token, chatId, texto, url
token  = "SEU_TOKEN_DO_BOT"
chatId = "SEU_CHAT_ID"
texto  = "E3 entrou em modo Demo em " & Now

url = "https://api.telegram.org/bot" & token & "/sendMessage"
EnviarWebhook url, "{""chat_id"":""" & chatId & """,""text"":""" & texto & """}"

Os demais serviços seguem o mesmo padrão, mudando apenas a URL do webhook e o formato do corpo JSON — Microsoft Teams (webhook de entrada do canal) e WhatsApp (via um provedor de API, como a WhatsApp Business Cloud API ou um gateway). Como cada plataforma tem sua própria API e política, confirme o formato atual na documentação do serviço.

5. Observações e boas práticas

  • Notifique uma única vez por evento — apenas na transição Normal → Demo (borda de subida), como no script do passo 2, com varredura a cada 30–60 s.
  • Proteja as credenciais. Senhas de SMTP e tokens de bot não devem ficar visíveis ao operador; mantenha-os restritos no projeto.
  • A licença que volta normaliza o alarme. Reconhecida a licença, IsDemo volta a False, o tag zera e o alarme normaliza automaticamente.
  • Reduza a chance de repetição: mantenha o ambiente de licenciamento atualizado (HKCustomer / Sentinel / eLic); em máquina virtual, evite snapshot, clonagem ou migração a quente e mantenha o relógio sincronizado.

Artigos relacionados

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Leave a Reply

Your email address will not be published.Required fields are marked *