Mostrando postagens com marcador Raspberry Pi. Mostrar todas as postagens
Mostrando postagens com marcador Raspberry Pi. Mostrar todas as postagens

sábado, 9 de maio de 2020

Agendamento Tarefas no Linux com Crontab

É comum precisarmos que o computador realize tarefas periódicas ou mesmo que ele rode determinado script após a inicialização do sistema operacional.

Este tópico apresenta uma das formas de realizar esse tipo de tarefa, utilizando o Cron.

O Crontab é um software do linux que permite a execução em horário e dias específicos e descarta, por exemplo, a necessidade de edição do arquivo rc.local para criação de tarefas de inicialização no sistema.

Como duas ferramentas principais de seu uso, temos a ferramenta de visualização das tarefas já agendadas e a segunda ferramenta de edição.

Para visualizar as tarefas agendadas, execute o comando:

crontab -l



No exemplo acima, podemos ver duas tarefas agendadas, a primeira será executada todo dia às 9:30 da manhã e fará a execução de um script de python.

A segunda, executa diariamente a mesma tarefa, às 13:25.

Para agendar a tarefa para ser realizada na inicialização do sistema, por exemplo você poderia criar a tarefa:
@restart python3 /caminho/script.py

A sintaxe do crontab, segue a seguinte ideia:
m h diadomes mes diadasemana
Para o dia do mes, mes e dia da semana, se você colocar o flag *, o mesmo será executado todos os dias.
Abaixo listo alguns exemplos:
30 0 1 * * python3 /caminho/script.py => Executa o script sempre no dia 01 do mês, às 0:30.
30 0 1 4 * python3 /caminho/script.py => Executa o script sempre no dia 01 do mês de abril, às 0:30.
0 12 * * 1 python3/caminho/script.py => Executa o script sempre às segundas feiras.

Conhecendo a sintaxe é hora então de criar sua tarefa. Para criar um novo agendamento, portanto, você deve executar o comando:

crontab -e

Por padrão ele abrirá o editor nano. Tudo o que precisa fazer é adicionar a linha desejada ao fim do arquivo. Você verá na barra inferior, alguns atalhos do nano. Lembre-se que a marcação ^ significa control no Linux.
Portanto, para salvar o arquivo pressione Ctrl + O.
Para sair do editor do crontab pressione Ctrl + X.

Boa sorte! Qualquer dúvida, mande mensagem.

quarta-feira, 15 de agosto de 2018

Consumo de energia - Raspberry Pi + MySQL + NodeRED + ESP8266 + MQTT


Finalizada mais uma funcionalidade do meu projeto pessoal! Integrados Raspberry Pi + MySQL + NodeMCU, utilizando o protocolo de comunicação MQTT para publicar dados de energia.

Inicialmente elaborei uma interface, utilizando NodeRED, que supervisionava temperatura e umidade da cidade. Como me mudei há poucos meses para Natal-RN, me surgiu a curiosidade de saber a amplitude da temperatura utilizando minhas próprias mãos (e não indicações vindas dos aplicativos de Tempo).

Pois bem, implementada a primeira etapa, comprei um TC (transformador de corrente) e um NodeMCU para iniciar a implementação de um sistema de medição de consumo da minha residência. Estava acostumado a implementar outros tipos de protocolos (Modbus, por exemplo) e para este projeto,não haveria necessidade de um protocolo deste tipo. Pesquisando sobre tendências de IOT e protocolos utilizados neste meio, conheci o MQTT.

Apartir deste ponto, decidi utilizar meu Raspberry Pi que já estava fazendo aquisição de dados de temperatura e umidade, como Broker MQTT. Para quem não conhece, o Broker é uma espécie de servidor de dados, que escuta as informações que estão sendo disponibilidades pelo "Publisher" e disponibiliza esta mesma informação para um "Subscriber" interessado em utilizá-las.

Com o broker funcionando, foi a vez de programar o NodeMCU para publicar a corrente e cálculo de energia ativa acumulada. Nesta etapa enfrentei problemas razoáveis, com relação a estabilidade da conexão MQTT. Inicialmente o NodeMCU (Publisher) deixava de enviar dados sempre após 24h dado o primeiro envio. Fiz algumas correções sugeridas na WEB, na biblioteca MQTT e precisei fazer alguns rearranjos para garantir que o NodeMCU nunca deixasse de se conectar ao meu Raspberry P.

Por fim o resultado é o mostrado abaixo. Em breve irei implementar novas funcionalidades, mas até o momento o portal me atende perfeitamente para o dia a dia!


O sistema pode ser visualizado no link acima. Se tiver dúvidas sobre o que foi utilizado para desenvolvimento, fique a vontade em perguntar e me mandar um email.

sexta-feira, 13 de julho de 2018

NTP Client Raspberry PI

Para habilitar o sincronismo de horário do raspberry, com servidores NTP, primeiro precisamos instalar o serviço de ntp.

sudo apt install ntp

As novas versões do Raspbian tem o serviço timesyncd instalado. Este serviço é utilizado com o mesmo propósito do cliente NTP, mas você não pode executá-lo ao mesmo tempo. Dessa forma, é necessário desabilitá-lo, conforme indicado abaixo.

systemctl stop systemd-timesyncd
systemctl disable systemd-timesyncd
/etc/init.d/ntp stop
/etc/init.d/ntp start

Basicamente é isto. O seu raspberry já estará sincronizado a servidores NTP. No entanto, por padrão ele utiliza servidores que podem estar distantes. Se for de seu interesse, pode acessar o site pool.ntp.org e verificar o servidor mais próximo.

Ao localizar o servidor mais próximo, copie a URL e o adicione no arquivo /etc/ntp.conf

quarta-feira, 11 de julho de 2018

Raspberry Pi esquecer WiFi

Uma das maneiras de fazer com que seu Raspberry Pi deixe de se conectar em uma rede WiFi, é excluir as redes em que se conectou no arquivo wpa_supplicant.conf.

Para isto, execute os passos abaixo.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Obs.: utilize o editor de texto de sua preferência para alterar o arquivo.

Ao abrir o arquivo, remova as redes desejadas. No exemplo abaixo, é possível verificar que o raspberry se conectou a rede #NET-CLARO-WIFI.

network={
ssid="#NET-CLARO-WIFI"
key_mgmt=NONE

}

segunda-feira, 9 de julho de 2018

Desabilitando descanso (TFT) Raspberry Pi

No raspberry Pi 3, abra o arquivo lightdm.conf

sudo gedit /etc/lightdm/lightdm.conf

Adicione a linha a seguir na seção [SeatDefaults]

xserver-command=X -s 0 dpms

Faça bom proveito!

domingo, 8 de julho de 2018

Definindo uma senha para o Node RED

Antes de iniciar o passo a passo, certifique-se de instalar o pacote node-red-admin. Para isso, em seu raspberry, execute o comando a seguir.

sudo npm install -g node-red-admin


Com o node-red-admin instalado, para definir uma senha em seu node red, acesse sua pasta e localize o arquivo settings.js.


Antes de editar o arquivo, pare o node-red.


node-red stop


Encontre no arquivo, a propriedade adminAuth, conforme indicado abaixo


    //adminAuth: {
    //    type: "credentials",
    //    users: [{
    //        username: "admin",
    //        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
    //        permissions: "*"
    //    }]
    //},
 

Por padrão, o nodered vem desprotegido e por isso, tem suas linhas comentadas. Desta forma, não se esqueça de descomentar as linhas (retirando os //).

No próximo passo, você deve gerar uma nova senha, utilizando o comando a seguir.

node-red-admin hash-pw

A partir de agora, você tem sua senha criptografada. Copie a senha gerada e a substitua no campo password, localizada na propriedade adminAuth do arquivo settings.js. Reinicie o node-red!

node-red start

Faça bom uso!