Orange PI PC Plus H3: monitor on-line de temperatura do processador usando Cron

Cron

Introdução

 

A temperatura do processador é, sem dúvida, um dos indicadores mais importantes de sua "saúde" / integridade física, afinal se um processador operar sem dissipação de calor ou refrigeração adequada (e fora do range normal de temperatura), a vida útil dele será drasticamente reduzida.

 

Dada a importância da temperatura de um processador, este artigo mostra como fazer uma aplicação monitora (resultados mostrados on-line) para acompanhar a temperatura do processador da Orange PI PC Plus H3, utilizando como scheduler de medições o Cron.

 

Material necessário

 

Abaixo está a lista de materiais necessários para reproduzir o projeto:

  • Orange PI PC Plus H3, já funcional (ou seja, com distro ARMBian instalada e com conectividade à Internet operante). Para chegar nesse ponto com a placa, leia este artigo;
  • Fonte de alimentação (5V/3A), com conector P3.

 

Cron - O que é?

 

Em termos simples, o Cron é um scheduler de tarefas de sistemas Unix (e aqueles baseados em Unix, como o Linux, por exemplo). Ele é capaz de executar tarefas (programas, scripts, comandos, etc.) em períodos desejados, assumindo a responsabilidade de gerenciamento de tempo de execução. Trata-se de um recurso valioso para os programadores, pois este não precisa se preocupar com temporizações, deixando os programas / scripts mais limpos e diretos.

 

Como agendar a execução de um programa / script no crontab

 

Para "saber" quais tarefas executar e quando executá-los, o Cron utiliza um arquivo chamado crontab. O Arquivo crontab contém as tarefas a serem executadas, juntamente com a temporização desejada. Para editá-lo (ou criá-lo, caso ainda não exista), basta executar o comando abaixo:

 

 

Em seguida, será questionado qual o editor desejado para abrir o arquivo crontab. Basta escolher um dentre as opções disponíveis e o arquivo pode ser editado.

 

Montagem de uma string de temporização no crontab

 

No arquivo crontab, conforme foi dito no tópico anterior, ficam as instruções do que deve ser executado e quando deve ser executado. As instruções seguem a sintaxe:

 

[Temporização das execuções]  [Tarefa a ser executada]

 

A temporização das execuções também tem uma sintaxe pré-definida. Esta pode ser vista na Figura 1.

 

Sintaxe dos agendamentos do Cron no crontab
Figura 1: Sintaxe dos agendamentos no crontab (fonte: http://www.adminschoice.com/crontab-quick-reference).

 

Para melhor entendimento, segue abaixo alguns exemplos de temporização das instruções:

  • * * * * * : execução a cada minuto
    Leia-se: durantes todos os dias de todos os meses, em todas as horas e em todos os dias de semana, deve ser executada uma referida tarefa.
  • 45 3 * 3-11 1-5: execução, às 3:45 (45 3), de Março até Novembro (3-11), em qualquer dia do mês (*), de segunda à sexta-feira(1-5). 

 

Portanto, se desejarmos que um programa Teste localizado na pasta /home/pedro seja executado a cada minuto, a instrução a ser escrita no arquivo crontab seria:

 

***** /home/pedro/Teste

 

Envio de dados para o ThingSpeak em C

 

Para entender como é feito o envio de dados para o ThingSpeak (e o que precisa ser feito no ThingSpeak para isso), recomendo a leitura destes dois artigos (na ordem apresentada):

 

Estrutura de um programa a ser executado pelo Cron

 

Conforme visto nos tópicos anteriores deste artigo, o Cron se encarrega de executar tarefas programadas na temporização programada. Portanto, principalmente para programas que serão executadas com períodos curtos (um em um minuto, por exemplo), é importante que este programa não possua partes blocantes por períodos de tempo que excedam a temporização da execução do programa. Desta forma, é preciso que os programas sejam escritos de forma que "façam o que tem que fazer" e finalizem a execução (sem laços infinitos e coisas do tipo). Sendo assim, um programa a ser executado via Cron não deve ser estruturado como se rodasse em background e/ou com temporizações grandes.

 

Projeto

 

Agora chegou a hora de partir para o projeto. Primeiro, acesse a Orange Pi PC Plus H3 (via SSH, por exemplo) e faça login como root. Feito isso, deve ser clonado o repositório da biblioteca ThingSpeakC, este diretório deve ser acessado e o main.c (programa de teste da biblioteca) deve ser removido. Para isso, execute o comando abaixo:

 

 

Feito isso, agora é o momento de colocar o código-fonte. Para isso, copie o código-fonte abaixo e salve-o como main.c.

 

IMPORTANTE: Leia atentamente seus comentários, para maior entendimento.

 

 

Coloque sua chave de escrita do seu canal ThingSpeak no local indicado e salve este código-fonte como main.c. Compile-o com o comando abaixo:

 

 

Feito isso, para teste isolado do programa, execute-o uma vez e veja no ThingSpeak se chegou a medição de temperatura. Caso a temperatura não chegue, verifique se você colocou no código a chave de escrita correta do seu canal ThingSpeak.

 

Por fim, é hora de programar sua execução pelo Cron com a inserção da instrução no arquivo crontab. Para isso, abra o crontab em modo de edição com o seguinte comando:

 

 

E, ao final do arquivo, adicione a seguinte linha:

 

 

Salve o arquivo e reinicie (utilizando o comando reboot) a Orange PI PC Plus H3. Após rebootar, automaticamente, minuto a minuto, as medições de temperatura irão ser enviadas ao ThingSpeak, gerando um gráfico semelhante ao visto na Figura 2.

 

Exemplo de gráfico de temperatura do processador da Orange PI PC Plus H3.
Figura 2: Exemplo de gráfico de temperatura do processador da Orange PI PC Plus H3.

 

Referências

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Pedro Bertoleti
Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com desenvolvimento de sistemas embarcados em São Paulo capital. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de eletrônica e programação, em especial em desenvolvimento de firmware (área que mais gosto de trabalhar e estudar).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

Deixe um comentário

avatar
 
  Notificações  
Notificar