sábado, 23 de abril de 2022

Zero Tier Raspberry

 

curl https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/zerotierone-archive-keyring.gpg >/dev/null

 

RELEASE=$(lsb_release -cs)

 

echo "deb [signed-by=/usr/share/keyrings/zerotierone-archive-keyring.gpg] http://download.zerotier.com/debian/$RELEASE $RELEASE main" | sudo tee /etc/apt/sources.list.d/zerotier.list

 

sudo apt update

 

sudo apt install -y zerotier-one

 

sudo zerotier-cli join nomerede

domingo, 13 de dezembro de 2020

Hamachi VPN - Raspbian Linux

 Abaixo, listo sequência para instalação e conexão de um cliente Hamachi em ambiente Linux (processadores ARM).

Baixe a versão compatível com seu dispositivo e faça a instalação do hamachi.

Com o Hamachi instalado, execute os processos abaixo (como root):

# hamachi login

O comando de login inicia a conexão do seu cliente com o Hamachi.

# hamachi set-nick NOMEDESEJADO

Escolha um nome desejado para se conectar ao hamachi. Caso não seja setado o nickname, o Hamachi automaticamente usará o nome do seu dispositivo na conexão. Sendo assim, este comando não é essencial.

# hamachi do-login REDE

Este comando conecta efetivamente seu cliente à rede de destino. Ao executá-lo, será solicitada senha de acesso. Com o acesso concedido, você já estará online e pronto para se conectar a dispositivos remotos.

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.

sexta-feira, 1 de maio de 2020

IP Fixo Raspberry Pi 3

Para setar o IP fixo na interface desejada, é necessário editar o arquivo /etc/dhcpcd.conf, conforme indicado abaixo.
O arquivo dhcpcd.conf já vem com algumas linhas exemplo comentadas, mas para correto funcionamento, deve-se deixar conforme abaixo.
interface wlan0
static ip_address=192.168.0.150/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
Lembrar que para o raspberry Pi 3, existem duas interfaces. eth0 se refere a placa de rede (física), enquanto a interface wlan0 se refere a interface Wifi. 
No exemplo acima, está sendo setado o IP 192.168.0.150 na interface Wifi.

quarta-feira, 29 de abril de 2020

Apache + MySQL + PHP + phpmyAdmin Raspberry PI [Parte 02]

PHP 
Para instalação do PHP e sua respectiva funcionalidade no Apache, execute.

sudo apt install php libapache2-mod-php

O pacote php instala o PHP efetivamente e o libapache2-mod-php, garante que o Apache carregue as configurações do PHP e este serviço passe a funcionar.

MYSQL

Para instalar o MySQL, execute a sequência abaixo.
sudo apt install mariadb-server

Depois de concluir a instalação, execute os procedimentos de segurança na instalação, através do
comando.
sudo mysql_secure_installation

Certifique-se de definir uma senha segura para o usuário root e preferencialmente responda "Sim" para todas as perguntas a seguir.

Se desejar instalar o acesso ao mySQL via PHP, instale tamb
sudo apt install php-mysql

PHPMYADMIN

Instale o PHPMyAdmin através do comando:
sudo apt install phpmyadmin

Durante a instalação, você deverá selecionar o servidor em que o PHPMyadmin estará hospedado. Selecione Apache.

Após a confirmação anterior, a instalação vai informar que é obrigatório associar um banco de dados ao phpmyadmin. Entre com a senha definida inicialmente na instalação do MySQL e a instalação seguirá até o fim.

Após a instalação, é bem provável que você não verá a pasta phpmyadmin dentro da pasta /var/www/html. Para o phpmyadmin passar a funcionar normalmente, você precisa criar um link de sua pasta para a pasta do Apache. Para isso, execute:

sudo ln -s /usr/share/phpmyadmin /var/www/html

Em tempo, se ao executar o phpmyadmin em seu navegador, você receber mensagens como privilégio insuficiente e/ou dificuldades para fazer o login, será necessário garantir privilégios ao usuário root. Para isso, execute os seguintes comandos

Entre no MySQL
sudo mysql -u root -p

Execute o query para dar privilégios
GRANT ALL PRIVILEGES ON *.* to root@localhost IDENTIFIED BY 'suasenha';

Atualize os privilegios
FLUSH PRIVILEGES;

Agora, tudo estará funcionando corretamente!

Qualquer dúvida, entre em contato.


domingo, 15 de dezembro de 2019

Net Shell - Configurações de rede utilizando terminal

A cada nova geração do Windows, é possível notar que o acesso às configurações de rede estão ficando mais "escondidas".

A primeira dica é o uso do comando
ncpa.cpl

Este comando proporciona acesso imediato às conexões de rede do seu windows.

As vezes, porém, você pode sentir a necessidade de usar o prompt de comando para executar tarefas costumeiras do dia a dia. (mudar IP, gateway, etc). Para isso, seguem dicas abaixo:

Mostra as configurações atuais da sua placa de rede Wi-Fi.
netsh wlan show interface

Mostra todas as interfaces de rede (IPV4) disponíveis no Windows
netsh interface ipv4 show config

Altera configurações de IP da placa Wi-Fi (usar prompt como admin)
netsh interface ipv4 set address name="Wi-Fi" static 192.168.0.8 255.255.255.0 192.168.0.1

os parâmetros seguem a seguinte ordem lógica.

  • Endereço IP local
  • Máscara de rede
  • Gateway

quinta-feira, 8 de novembro de 2018

Apache + MySQL + PHP + phpmyAdmin Raspberry PI [Parte 01]

Antes de mais nada, certifique-se que seu sistema esteja atualizado. Para isso, execute
sudo apt update
sudo apt upgrade

APACHE

Uma vez que seu sistema operacional esteja atualizado, comece instalando o servidor http Apache.

sudo apt install apache2

Neste momento já é possível verificar se seu webserver está funcionando corretamente. Para isso, você pode acessá-lo pelo próprio web browser do raspberry Pi, através do endereço http://localhost ou http://127.0.0.1

Após instalar o apache, seus arquivos web ficarão localizados na pasta /var/www/html .  Por padrão, essa pasta não tem permissão de escrita para todos os usuários. Dessa forma, vamos liberá-la para facilitar a criação e novos arquivos.

sudo chown -R pi:www-data /var/www/html/ 
sudo chmod -R 770 /var/www/html/

PHP 

Após verificar que seu apache foi instalado corretamente, ..

continua aqui..



sábado, 1 de setembro de 2018

ESP8266 - Resolvendo problema de queda de comunicação MQTT usando biblioteca PubSubClient

Há algumas semanas, publiquei a conclusão de uma etapa do meu projeto pessoal de supervisão de temperatura/umidade e energia do meu apartamento (veja aqui)

Como havia comentado, tive problemas com quedas do MQTT seguidas de falhas de reconexão. Inicialmente estava imaginando que o problema era queda com link WiFi, mas após alguns testes notei que sempre que o ESP perdia sinal do WiFi, a reconexão ocorria com sucesso (independente do tempo da perda).


Apartir de então, comecei a pesquisar possíveis causas para o problema. Encontrei alguns problemas parecidos:


Em resumo, algumas fontes diziam que alguns Brokers MQTT derrubam propositalmente um ID após 24h, outras diziam ser a versão de firmware que estava rodando o ESP8266 e outras diziam que havia problema na biblioteca PubSubClient do MQTT.

Com o objetivo de descartar o problema de desconexão por desconexão automática após 24h, fiz a primeira alteração no software. Programei o ESP para se desconectar e reconectar de forma cíclica, sempre alterando o ID de forma randômica. Em paralelo verifiquei as configurações do Mosquitto e não encontrei nenhum parâmetro ao qual se referia a tempo máximo de conexão.

Então, como imaginado, mesmo com esta alteração o resultado não foi satisfatório.

Como segunda opção, parti para readequação na biblioteca PubSubClient. Aliada a novas tratativas de reconexão em meu software, as readequações listadas abaixo surtiram efeito e desde então, não houve mais problema.

Sendo assim, se você está usando a lib PubSubClient do MQTT e está enfrentando problemas, sugiro realizar as seguintes readequações.

Adicionar a instrução yield(); na linha 212 do arquivo "PubSubClient.cpp".



Adicionar um delay de 10ms, no função de loop da biblioteca. Isso também deve ser feio no "PubSubClient.cpp", como indicado abaixo.



Ainda sobre as possíveis causas, alterei as versões do ESP8266 de 2.3.0, para 2.4.0 e 2.4.2 (estou usando a mais atual) e independente da versão o comportamento foi semelhante.

Faça então bom uso da biblioteca PubSubClient e não se esqueça destas pequenas readequações!

Luis Fernando

quinta-feira, 30 de agosto de 2018

Problema de comunicação S7-1200 com SCADA

Para quem trabalha, já trabalhou ou teve necessidade de se comunicar com um CLP, sabe que é necessário configurar a base de dados do sistema supervisório ou qualquer outro cliente da comunicação corretamente. Sem esta configuração básica, é certo de que haverá problemas.

No entanto, CLP's da série 1200 da Siemens (mais especificamente os S7-1214C) podem trazer uma dificuldade a mais. Este CLP, naturalmente trabalha com uma opção desabilitada (por padrão), que bloqueia o acesso de clientes externos à sua base. Ou seja, não é possível estabelecer comunicação através de sua porta 102 (padrão) e enviar os frames de requisição.

Para estabelecer comunicação, portanto, é necessário habilitar a opção "Permit access with PUT/GET communication from remote partner". Esta opção, pode ser encontrada através da "Device View". Para tanto, clique na CPU, acesse sua aba General -> Protection & Security -> Connection mechanisms.

Ao habilitar esta opção, reinicie a CPU (STOP - RUN) e logo em seguida seu SCADA estará comunicando perfeitamente.



Sem isso, será impossível realizar comunicação por qualquer client, seja ele Elipse E3, IGS, Matrikon entre outros. Faça bom proveito!

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.