Configuração de Serviços e Broker MQTT em Raspberry Pi

A automatização de aplicações em dispositivos embarcados como o Raspberry Pi exige uma configuração robusta de inicialização. Abaixo, detalhamos o fluxo para registrar um executável como serviço nativo, configurar um broker de mensageria local e otimizar imagens de armazenamento.

Registro de Aplicação no Gerenciador de Serviços

Para garantir que sua solução execute automaticamente após o boot, utilize o systemd. Primeiro, compile o código e gere o binário ou script autônomo. Transfira o arquivo para o diretório de aplicações do usuário, por exemplo, /home/pi/.local/share/aplicacoes/.

Crie a unidade de serviço via terminal:

sudo nano /etc/systemd/system/app-simulador.service

Preencha com a seguinte estrutura, adaptada para garantir dependências de rede, ambiente gráfico e resiliência contra falhas:

[Unit]
Description=Serviço de Simulação Industrial
After=network-online.target display-manager.service mosquitto.service
Wants=network-online.target

[Service]
Type=simple
User=pi
Group=pi
Environment=DISPLAY=:0
ExecStartPre=/usr/bin/sleep 15
ExecStart=/home/pi/.local/share/aplicacoes/app-simulador
Restart=always
RestartSec=10
StartLimitIntervalSec=60
StartLimitBurst=3
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=graphical.target

Atualize o gerenciador e ative a persistência no inicializador:

sudo systemctl daemon-reload
sudo systemctl enable app-simulador
sudo systemctl start app-simulador

Para monitoramento e controle operacional:

  • Verificar estado atual: sudo systemctl status app-simulador
  • Acompanhar fluxo de logs em tempo real: journalctl -u app-simulador -f
  • Interromper execução manualmente: sudo systemctl stop app-simulador
  • Deastivar reinício automático (modo debug): execute sudo systemctl edit app-simulador e insira [Service]\nRestart=no no override.

Implantação do Broker MQTT

A comunicação entre módulos frequentemente utiliza o protocolo MQTT. A instalação do Mosquitto pode ser realizada através dos repositórios padrão:

sudo apt update
sudo apt install mosquitto mosquitto-clients -y
sudo systemctl status mosquitto

Por padrão, o broker pode restringir conexões externas e exigir autenticação. Para liberar o acesso anônimo e permitir requisições de toda a rede local, edite o arquivo de configuração principal:

sudo nano /etc/mosquitto/mosquitto.conf

Insira ou descomente as seguintes diretivas na seção global:

allow_anonymous true
listener 1883 0.0.0.0

Reinicie o serviço para aplicar as alterações: sudo systemctl restart mosquitto.

Otimização e Recuperação de Imagens de Armazenamento

Ferramentas como o Win32DiskImager são comuns para clonagem, mas geram arquivos com o tamanho exato do cartão físico. Para reduzir o peso final do backup, é necessário diminuir a partição ativa antes da extração. Utilitários gráficos como o DiskGenius permitem visualizar e redimensionar blocos logicamente sem perda de metadados.

Operações de redimensionamento interrompidas, remoção brusca do dispositivo ou gravação de imagem sem sincronização podem corromper a tabela de inodes ou o superbloco. Quando isso ocorre, o kernel pode negar o mount. A correção deve ser feita em um ambiente Linux estável:

  1. Conecte o cartão de memória a uma estação Linux.
  2. Identifique o dispositivo físico e suas partições:
lsusb
dmesg -w | tail -n 20
lsblk -f
sudo fdisk -l

Localize o caminho do bloco alvo (ex: /dev/sdb2). Antes de qualquer operação de reparo, é obrigatório desmontar o volume e liberar mapeamentos ativos:

mount | grep sdb
sudo umount /dev/sdb2
sudo kpartx -dv /dev/sdb

Finalmente, execute o verificador de sistema de arquivos ext4 para corrigir inconsistências estruturais:

sudo e2fsck -p -f /dev/sdb2

Após a conclusão do procedimento, o sistema restaura a integridade dos metadados, permitindo o remontagem segura e o redimensionamento subsequente da partição.

Tags: raspberry-pi systemd MQTT mosquitto otimizacao-de-imagens

Publicado em 10-25 06:24