Olá pessoal,
Hoje vamos iniciar com as experiências que tive em uma outra necessidade que tive no dia-a-dia do meu trabalho. Primeiramente vamos entender a problemática e a solução que obtive utilizando Arduino.
Temos diversos equipamentos de rede (switch) que são conectados a pequenos nobreaks para que em momentos de quedas rápidas de energia o switch não seja desligado. Se há queda de energia isso faz com que o switch seja reinicializado e isso demora um tempo e a rede fica indisponível enquanto ele não volta ao seu estado funcional.
Com a utilização destes pequenos nobreaks o grande problema ocorre quando há uma queda mais prolongada de energia, consumindo boa parte da carga da bateria e também muitas vezes esgotando totalmente. Como esses nobreaks muitas vezes só desligam com a carga totalmente esgotada ocorreram várias vezes das baterias dos nobreaks ficarem danificadas por esse esgotamento. Uma parte da rede elétrica em que estes nobreaks e switches ficam conectados são conectados em um estabilizador de 100KVA em cabine e algumas vezes o estabilizador desarma e não reaciona (ele tem uma chave que desarma e o rearme é manual). A outra parte da rede elétrica não está no estabilizador (rede não estabilizada) e depende diretamente da energia vinda diretamente da rua.
De tudo isso o complicado é saber quando e onde ocorreu o problema. É uma falha da concessionária de energia? É problema no estabilizador como mencionado acima? O quão frequente são estas falhas?
Com esses problema surgiu a idéia de implementar uma espécie de monitoramento da energia em determinados pontos da rede elétrica para determinar quando e onde caiu a energia. A idéia é que se colocarmos um monitor de energia em algum ponto da rede elétrica que está conectada com o estabilizador saberemos que provavelmente em uma queda de energia deste ponto provavelmente o problema ocorreu no estabilizador como mencionado acima ou o circuito que este ponto de rede elétrica caiu (por desarme de disjuntor, problema na tomada, etc).Se conectarmos um monitor de energia em um ponto da rede elétrica que não está conectada ao estabilizador e houver uma queda de energia detectada provavelmente a energia vinda diretamente da concessionária falhou ou o circuito que este ponto de rede elétrica caiu (por desarme de disjuntor, problema na tomada, etc). Então temos:
1 monitor de energia conectado à rede elétrica estabilizada.
1 monitor de energia conectado à rede elétrica não estabilizada.
Temos as seguintes situações com essa configuração de monitores:
1) Queda de energia detectada pelo monitor conectado à rede estabilizada: provavelmente ocorreu queda do estabilizador ou do circuito.
2) Queda de energia detectada pelo monitor conectado à rede não estabilizada: provavelmente ocorreu um problema geral elétrico.
3)Queda de energia detectada pelo monitor conectado à rede estabilizada e também queda de energia detectada pelo monitor conectado à rede não estabilizada: provavelmente há falha de energia vinda diretamente da concessionária de energia.
Como implementar esse monitor? O escolhido foi: com Arduino! Basta implementar um circuito detector de tensão e monitorar. Monitorar como? Podemos utilizar igualmente o monitoramento implementado para temperatura que ao invés de monitorar temperatura monitora tensão e notifica via e-mail e SMS.
No próximo post vamos entrar nos detalhes de implementação do monitor de tensão utilizando Arduino.
Até a próxima.
Blog voltado para compartihamento de experiências e projetos utilizando a plataforma Arduino.
quinta-feira, 19 de março de 2015
sexta-feira, 27 de fevereiro de 2015
Evolução do projeto de acionamento de ar condicionado
Olá pessoal,
Vimos nos posts anteriores como o projeto de acionamento de ar condicionado via infravermelho evoluiu desde a primeira concepção do projeto com a utilização de shield GSM e shield Ethernet para notificação e alarme de temperatura alta até a utilização da biblioteca Agentuino e o Zabbix. Este projeto foi concebido para resolver um problema relacionado ao fato do ar condicionado não ter o recurso de restart automático.
A boa notícia é que para o ambiente em que tínhamos esse projeto rodando foram adquiridos dois aparelhos de ar condicionado com restart automático! Agora, além da redundância de aparelhos, não será mais necessário o acionamento via infravermelho.
Hoje o projeto está somente monitorando a temperatura e emitindo alertas via SMS ou e-mail caso a temperatura fique mais alta do que a programada no Zabbix.
Uma coisa é certa: vale a experiência e aprendizado ao se tentar soluções para os problemas do dia a dia. Analisando todo o histórico do projeto e sua evolução quanta coisa aprendi.
E aí tem mais alguma sugestão para aprimorar o projeto? No próximo post vamos a outro projeto que desenvolvemos: monitor de tensão.
Até mais!
Vimos nos posts anteriores como o projeto de acionamento de ar condicionado via infravermelho evoluiu desde a primeira concepção do projeto com a utilização de shield GSM e shield Ethernet para notificação e alarme de temperatura alta até a utilização da biblioteca Agentuino e o Zabbix. Este projeto foi concebido para resolver um problema relacionado ao fato do ar condicionado não ter o recurso de restart automático.
A boa notícia é que para o ambiente em que tínhamos esse projeto rodando foram adquiridos dois aparelhos de ar condicionado com restart automático! Agora, além da redundância de aparelhos, não será mais necessário o acionamento via infravermelho.
Hoje o projeto está somente monitorando a temperatura e emitindo alertas via SMS ou e-mail caso a temperatura fique mais alta do que a programada no Zabbix.
Uma coisa é certa: vale a experiência e aprendizado ao se tentar soluções para os problemas do dia a dia. Analisando todo o histórico do projeto e sua evolução quanta coisa aprendi.
E aí tem mais alguma sugestão para aprimorar o projeto? No próximo post vamos a outro projeto que desenvolvemos: monitor de tensão.
Até mais!
segunda-feira, 16 de fevereiro de 2015
Agentuino + Zabbix - Parte 4 - Google Agenda e SMS
Olá pessoal,
Continuando a série Agentuino + Zabbix hoje veremos como usar o Google Agenda para o envio de SMS quando uma trigger do Zabbix for acionada. Veremos como instalar e utilizar o gcalcli (Google Calendar Command Line Interface) no Zabbix e configurá-lo para enviar SMS usando este software.
Como funciona?
O sistema funciona assim: o Zabbix, através de um script, utiliza o gcalcli para criar um evento no Google Agenda e uma vez criado o evento o Google Agenda é configurado para notificar o usuário a criação do evento através de SMS. O esquema básico é o seguinte:
1) O Zabbix gera o alerta e executa o script que utiliza o gcalcli para criar o evento.
2) O evento é criado na agenda.
3) Uma notificação via SMS é enviado ao usuário notificando que um novo evento foi criado.
Instalação do gcalcli:
É necessário fazer a instalação de alguns pacotes necessários (dependências) antes de instalar o gcalcli. Deve-se instalar:
- python-dateutil-2.4.0
- setuptools
- python-gflags-2.0
- google-api-python-client-1.3.1
- httplib2
Eu acabei utilizando os sources de cada um destes pacotes, descompactando e instalando com o comando python setup.py install
# wget --no-check-certificate https://github.com/insanum/gcalcli/archive/master.zip
# unzip -e master.zip
# cd gcalcli-master
# python setup.py install
Execute o seguinte comando para testar:
# gcalcli agenda
ERROR: Missing module - No module named dateutil.tz
Se ao executar o gcalcli ele apresentar como Missing Module (módulo faltante) basta baixar e instalar o módulo faltante. Por exemplo se ele indicar que o módulo dateutil.tz está faltando basta instalar a dependência python-dateutil-2.4.0.
Instalando dateutil:
# wget --no-check-certificate https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz
# tar zxvf python-dateutil-2.4.0.tar.gz
# cd python-dateutil-2.4.0
# python setup.py install
Instalando setuptools:
# wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
# python ez_setup.py --insecure
# wget --no-check-certificate https://python-gflags.googlecode.com/files/python-gflags-2.0.tar.gz
# tar zxvf python-gflags-2.0.tar.gz
# cd python-gflags-2.0
# python setup.py install
Instalando httplib2:
# wget --no-check-certificate https://github.com/jcgregorio/httplib2/archive/master.zip
# unzip -e master.zip.1
# cd httplib2-master/
# python setup.py install
Instalando google-api-python-client-1.3.1
# wget --no-check-certificate https://github.com/google/google-api-python-client/archive/master.zip
# unzip -e master.zip.2
# cd google-api-python-client-master/
# python setup.py install
Se tudo ocorrer bem o gcalcli estará instalado. Precisamos fazer com o que o servidor zabbix seja autorizado a criar eventos através do gcalcli e também é necessário que se tenha uma conta válida do Google e que esta conta tenha acesso ao Google Agenda. Uma vez logado com a conta do Google através do navegador faça o seguinte:
No Zabbix execute:
# gcalcli agenda --noauth_local_webserver
Com o navegador aberto logado com uma conta do Google (Gmail por exemplo) cole o link que se apresenta na barra de endereços. Aceite e copie o código de verificação. Cole o código de verificação no Zabbix e dê um Enter.
Se der tudo certo tem que apresentar a resposta Authentication Successfull.
Acesse o Google Agenda. Crie um novo calendário chamado Monitoramento Zabbix. Clique no ícone de roda dentada para acessar Configurações.
Na aba Agendas, clique em Criar nova agenda.
Dê um nome, descrição e local para a agenda e depois clique em Criar Agenda:
A agenda foi criada.
Clique no ícone de roda dentada novamente para acessar Configurações e vá novamente na aba Agendas e clique em Editar notificações da agenda que você acabou de criar:
Marcar as opções para notificar por SMS 10 minutos antes de cada evento:
Vá na aba Configuração de celular, forneça no campo Telefone o número do seu celular e clique em Enviar código de confirmação. Você deverá receber o código de confirmação através de SMS e digite no campo Código de confirmação o código recebido. Clique em Salvar.
Se tudo correr bem o Status aparecerá como Número de telefone validado com sucesso.
Agora falta criar o script no Zabbix que utilizará o gcalcli para criar o evento.
# cd /etc/zabbix/scripts
# vi sms.sh
Crie o script sms.sh com o seguinte conteúdo:
#!/bin/bash
let oneminf=`date +%s`+60
dateonemin=`date -d @$oneminf +%R`
gcalcli --calendar 'Monitoramento Zabbix' --title "$1" --when $dateonemin --reminder '1m sms' --where '' --descr '' --duration 1 add
No caso estou usando o gcalcli para criar um evento no calendário "Monitoramento Zabbix" com o título que eu passar no script sms.sh (o $1 será substituído pelo conteúdo que eu passar no script) 1 minuto depois da data atual com lembrete em 1minuto via SMS. O evento terá duração de 1 minuto.
Vimos no post anterior que a trigger tem como ação executar um comando remoto no servidor Zabbix.
Se a temperatura for maior que 28 graus o Zabbix dispara a trigger que por sua vez dispara a ação e executa o script sms.sh dessa forma:
# /etc/zabbix/scripts/sms.sh "[Arduino Sensor] Temperatura:PROBLEM"
Se quiser testar é só chamar o script dessa forma:
# /etc/zabbix/scripts/sms.sh "[Arduino Sensor] Temperatura: NORMAL"
Veja o SMS recebido:
sexta-feira, 30 de janeiro de 2015
Agentuino + Zabbix - Parte 3 - Criação de alarmes via SMS e E-mail no Zabbix
Olá pessoal!!
Continuando a série com Zabbix + Agentuino, vamos ver hoje como criar triggers e ações para criar alarmes com aviso por SMS e E-mail através do Zabbix. Quando a temperatura lida com o Arduino ultrapassar um certo limite o Zabbix lerá essa temperatura e disparará a trigger e as ações programadas.
Vamos lá!
O primeiro passo é criar a trigger associada ao host. Localize o host Arduino e assegure-se de que ele está se comunicando via SNMP com seu servidor Zabbix e fornecendo a temperatura.
Clique no botão Criar Trigger:
Na primeira aba Trigger escolha o nome da trigger e clique no botão Adicionar para criar a expressão que será avaliada para o disparo da trigger.
Abrirá uma janela pop-up e em seguida selecione o item do host (Temperatura) que faz a leitura da temperatura.
No campo Função escolha a opção: Último (mais recente) valor de T é > N.
No campo N digite 28.
Com isso a expressão criada será lida dessa forma: se o último valor de T (item Temperatura) for maior que N (28) dispara a trigger. Escolha o valor da temperatura que for mais conveniente.
Voltando a tela de criação da Trigger escolha uma Descrição da trigger de forma bem clara e concisa. Escolha o Tipo de Risco como Atenção. Clique em Salvar.
Está criada a trigger.
Com a trigger criada devemos criar as ações que serão realizadas quando esta trigger for ativada. Para isso vá em Configurações e clique em Acões. Depois clique em Criar Ação:
Continuando a série com Zabbix + Agentuino, vamos ver hoje como criar triggers e ações para criar alarmes com aviso por SMS e E-mail através do Zabbix. Quando a temperatura lida com o Arduino ultrapassar um certo limite o Zabbix lerá essa temperatura e disparará a trigger e as ações programadas.
Vamos lá!
O primeiro passo é criar a trigger associada ao host. Localize o host Arduino e assegure-se de que ele está se comunicando via SNMP com seu servidor Zabbix e fornecendo a temperatura.
Clique no botão Criar Trigger:
Na primeira aba Trigger escolha o nome da trigger e clique no botão Adicionar para criar a expressão que será avaliada para o disparo da trigger.
Abrirá uma janela pop-up e em seguida selecione o item do host (Temperatura) que faz a leitura da temperatura.
No campo Função escolha a opção: Último (mais recente) valor de T é > N.
No campo N digite 28.
Com isso a expressão criada será lida dessa forma: se o último valor de T (item Temperatura) for maior que N (28) dispara a trigger. Escolha o valor da temperatura que for mais conveniente.
Voltando a tela de criação da Trigger escolha uma Descrição da trigger de forma bem clara e concisa. Escolha o Tipo de Risco como Atenção. Clique em Salvar.
Está criada a trigger.
Com a trigger criada devemos criar as ações que serão realizadas quando esta trigger for ativada. Para isso vá em Configurações e clique em Acões. Depois clique em Criar Ação:
Crie um Nome para a ação. No campo Duração padrão de cada passo da operação digite 240 (segundos). e clique na caixa Mensagem de Recuperação. Nos demais campos deixar como está.
Vamos criar as condições em que a trigger será disparada. Colocaremos assim: se a severidade da Trigger (risco) for classificado como Atenção e o host for o Arduino a ação (ou ações) será(ão) executada(s).
Primeiramente remova as condições que vem por padrão:
Em Nova Condição selecione Severidade da Trigger e escolha Atenção na próxima caixa e depois clique em Salvar:
Escolha uma nova Condição, selecione Host e selecione o host (Arduino Sensor no meu caso) e depois clique em Adicionar.
Agora criaremos de fato as ações a serem executadas. Clique na aba Ações e clique em Nova:
Antes de prosseguir com as ações vamos criar o grupo de usuários para que as permissões sejam criadas. Clique em Administração, Usuários e escolha Grupo de Usuários e em seguida clique em Criar Grupo de usuários:
Dê um nome para o grupo (no caso coloquei como Arduinos) e clique em Salvar:
Agora vamos configurar um usuário Zabbix chamado Arduino sensor para que este receba os e-mails de alerta.
Clique em Administração, Usuários e escolha Usuários e em seguida Criar Usuário.
Dê um Apelido, Nome, Sobrenome e crie uma senha para o usuário. Clique em Adicionar:
Escolha o grupo Arduinos e clique em Selecionar:
Será criado o usuário Arduino sensor.
Agora vamos ativar as permissões do grupo de usuário Arduinos e assim o usuário Arduino sensor herdará as permissões.
Vá no grupo de usuários Arduinos e clique na aba Permissões. Vamos definir que o grupo Arduinos tenha permissão Somente leitura e que por consequencia o usuário Arduino sensor terá o mesmo privilégio. Em seguida clique em Salvar.
Com o usuário e grupo criados retomemos à criação das ações. A primeira ação que será criada funcionará assim: será enviado um e-mail para o e-mail cadastrado do usuário Arduino Sensor quando a trigger for disparada. Preencha os campos exatamente como aparecem na imagem abaixo e depois clique em Salvar:
Agora vamos criar a segunda ação que enviará SMS quando a trigger for disparada.
Clique em Nova e aparecerá a tela para configurar os detalhes da operação. Notem que o Tipo de operação está selecionado como Comando remoto e na Lista Alvo está selecionado Host Atual para indicar que a operação será no host em que a Trigger será disparada (no caso o host Arduino Sensor). Selecione o tipo como Script personalizado, e escolha a opção Executar em como Servidor Zabbix.
No campo Comandos está o caminho de execução do script sms.sh que enviará o SMS via Agenda do Google. Clique em Salvar.
Com isso as duas ações estão criadas.
No próximo post veremos como configurar o Google Agenda para enviar SMS quando o script sms.sh for acionado.
Até a próxima!
terça-feira, 25 de novembro de 2014
Agentuino + Zabbix - parte 2 - implementação do Zabbix
Olá pessoal,
No último post vimos o uso do Agentuino que implementa uma biblioteca para tornar o Arduino um agente SNMP e como ele disponibiliza informações coletadas pelo Arduino através de SNMP, fazendo que agentes de monitoramento SNMP (Zabbix, Nagios, etc) possam ser utilizados para verificar estas informações e disponibilizá-los para visualização e monitoramento. No caso do nosso projeto de monitoramento de temperatura vamos usar o Zabbix para visualizar e monitorar a temperatura.
Hoje veremos como utilizar o Zabbix para monitoramento SNMP:
Zabbix:
Deve-se instalar um Zabbix em uma máquina física ou através de máquina virtual. Lembrando que o Zabbix é open-source e é praticamente uma distro Linux especializada em monitoramento. A instalação é bem simples.
Download:
http://www.zabbix.com/download.php
Uma vez instalado o Zabbix devemos acessá-lo para configurar o monitoramento do Arduino:
Entre com o usuário Admin e senha configurada para o acesso admin. Uma vez logado vá em Configurações, Templates e clique no botão Criar Template:
Dê um nome para o template. No caso eu coloquei como SNMP Arduino. Clique em Salvar.
Em Configurações, Templates, selecione SNMP Arduino:
Clique em Itens:
Clique em Criar Item:
Preencha os campos:
- Nome: Nome do Item. Neste caso coloquei como Temperatura
- Tipo: Agente SNMPv1 (o Agentuino está implementado em SNMP v1).
- Chave: temp (é o campo disponibilizado pelo SNMP que contém a temperatura coletada).
- SNMP OID: é a OID que está armazenando a temperatura.
- Comunidade SNMP: public
Os demais campos pode deixar como estão. Dê um Salvar.
Agora vamos criar um gráfico para visualizarmos a temperatura. Clique em Gráficos:
Clique em Criar Gráfico:
Dê um nome para o Gráfico e clique em Adicionar (como mostra a figura):
Escolha o item Temperatura que foi criado anteriormente:
Clique em Salvar:
Clique na aba Visualizar:
Vamos criar o host agora. Vá em Configuração, Hosts e clique em Criar host:
Preencha os campos:
- Nome do host
- Nome de exibição
- Interfaces SNMP: coloque o endereço IP do Arduino.
Clique em Salvar.
Selecione a aba Templates e clique em Adicionar:
Selecione o template SNMP Arduino:
Clique em Salvar:
Clique em Macros e preencha os campos:
- Macro: {$SNMP_COMMUNITY}
- Valor: public
Clique em Salvar
Para visualizar a tela vá em Monitoramento, Telas e escolha a tela que você criou (Arduino Temperatura):
Com isso configuramos o Zabbix para mostrar a temperatura de forma gráfica. No próximo post vamos configurar Triggers (gatilhos) para avisar via e-mail ou SMS se a temperatura está acima do esperado.
Até a próxima!
No último post vimos o uso do Agentuino que implementa uma biblioteca para tornar o Arduino um agente SNMP e como ele disponibiliza informações coletadas pelo Arduino através de SNMP, fazendo que agentes de monitoramento SNMP (Zabbix, Nagios, etc) possam ser utilizados para verificar estas informações e disponibilizá-los para visualização e monitoramento. No caso do nosso projeto de monitoramento de temperatura vamos usar o Zabbix para visualizar e monitorar a temperatura.
Hoje veremos como utilizar o Zabbix para monitoramento SNMP:
Zabbix:
Deve-se instalar um Zabbix em uma máquina física ou através de máquina virtual. Lembrando que o Zabbix é open-source e é praticamente uma distro Linux especializada em monitoramento. A instalação é bem simples.
Download:
http://www.zabbix.com/download.php
Uma vez instalado o Zabbix devemos acessá-lo para configurar o monitoramento do Arduino:
Entre com o usuário Admin e senha configurada para o acesso admin. Uma vez logado vá em Configurações, Templates e clique no botão Criar Template:
Dê um nome para o template. No caso eu coloquei como SNMP Arduino. Clique em Salvar.
Em Configurações, Templates, selecione SNMP Arduino:
Clique em Itens:
Clique em Criar Item:
Preencha os campos:
- Nome: Nome do Item. Neste caso coloquei como Temperatura
- Tipo: Agente SNMPv1 (o Agentuino está implementado em SNMP v1).
- Chave: temp (é o campo disponibilizado pelo SNMP que contém a temperatura coletada).
- SNMP OID: é a OID que está armazenando a temperatura.
- Comunidade SNMP: public
Os demais campos pode deixar como estão. Dê um Salvar.
Agora vamos criar um gráfico para visualizarmos a temperatura. Clique em Gráficos:
Clique em Criar Gráfico:
Dê um nome para o Gráfico e clique em Adicionar (como mostra a figura):
Escolha o item Temperatura que foi criado anteriormente:
Clique em Salvar:
Preencha os campos:
- Nome do host
- Nome de exibição
- Interfaces SNMP: coloque o endereço IP do Arduino.
Clique em Salvar.
Selecione a aba Templates e clique em Adicionar:
Selecione o template SNMP Arduino:
Clique em Salvar:
Clique em Macros e preencha os campos:
- Macro: {$SNMP_COMMUNITY}
- Valor: public
Clique em Salvar
Observe que o host Arduino Sensor no ícone de Disponibilidade SNMP está em verde.
Vamos agora criar uma Tela de visualização. Vá em Configuração, Telas e clique em Criar tela:
Escolha um Nome para a tela e especifique o número de linhas e colunas. No caso é 1 x 1 pois é somente o gráfico que iremos exibir na tela.
Clique em Alterar:
Escolha como Recurso o Gráfico simples e clique no botão Selecionar do campo Parâmetro:
Nas caixas escolha o Grupo onde o host Arduino Sensor está e selecione o Host Arduino Sensor.
Selecione o item Temperatura:
Deixe os campos no padrão e clique em Salvar:
Para visualizar a tela vá em Monitoramento, Telas e escolha a tela que você criou (Arduino Temperatura):
Com isso configuramos o Zabbix para mostrar a temperatura de forma gráfica. No próximo post vamos configurar Triggers (gatilhos) para avisar via e-mail ou SMS se a temperatura está acima do esperado.
Até a próxima!
Assinar:
Postagens (Atom)