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:
- No
DataServerdo projeto, crie umInternalTagbooleano — por exemploE3_LicencaDemo. - Crie um
TimerTag(por exemploMonitorLicenca) do tipo contÃnuo, disparando a cada 30–60 segundos. - No evento
OnPresetdoTimerTag, leiaIsDemoe 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 deIsDemoreflita 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
- No
AlarmConfigdo projeto, crie (ou reutilize) uma Ãrea de alarme — por exemploLicenciamento. - Adicione uma fonte de alarme digital dentro dela — por exemplo
AlmLicencaDemo. - Em Fonte, aponte para o tag
Dados.E3_LicencaDemo. - 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
Alarmda fonte de alarme (ver Artigos relacionados). - CDO por script — cria o objeto
CDO.Messageno 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,
IsDemovolta aFalse, 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.
