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:
crontab -e
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.

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):
- ThingSpeakC – Upload de dados em C na Intel Edison
- Enviando temperatura dos núcleos da Raspberry Pi 3 para o ThingSpeak em C
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:
git clone https://github.com/phfbertoleti/ThingSpeakC.git cd ThingSpeakC rm main.c
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.
#include <stdio.h>
#include <stdlib.h>
#include "ThingSpeakLinux.h"
int main (int argc, char *argv[])
{
char ChaveEscritaThingSpeak[]="KKKKKKKKKKKKKKKK"; //coloque aqui a chave de escrita ThingSpeak
int i;
float TemperaturaARMCPU;
FILE *fp; //ponteiro de arquivo
//obtencao da temperatura dos nucleos da CPU
fp = fopen("/sys/class/thermal/thermal_zone0/temp","r");
if (!fp)
return 0;
fscanf(fp, "%f", &TemperaturaARMCPU);
fclose(fp);
//Enviando temperatura ao canal ThingSpeak.
SendDataToThingSpeak(1, &TemperaturaARMCPU,ChaveEscritaThingSpeak,sizeof(ChaveEscritaThingSpeak));
return 0;
}
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:
make
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:
sudo crontab -e
E, ao final do arquivo, adicione a seguinte linha:
* * * * * /root/ThingSpeakC/TempMonitorC
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.
Referências







