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.

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!

quarta-feira, 20 de junho de 2018

Temperatura em tempo real - NATAL/RN

Recentemente me mudei para Natal-RN e durante os últimos dias fiz uma pequena implementação de supervisão em tempo real da temperatura da cidade, utilizando node-red+raspberry Pi 3.

http://luisalves.duckdns.org:1880

Nesta página, é possível monitorar a temperatura e umidade em tempo real e ver, de forma gráfica, seu comportamento nas últimas 24h. Além disso, é possível visualizar dados históricos, acessando a opção de relatórios através do menu da aplicação.

Quer ter um sistema similar em sua cidade? Me procure!

quarta-feira, 13 de junho de 2018

VNC Raspberry PI

O raspberry PI, vem com o real VNC instalado como default. No entanto, é necessário habilitá-lo para que seja possível estabelecer conexões remotas. Para isso, acesso o Raspberry PI Configuration, através do menu "Preferences -> Interfaces". Feito isto, basta habilitá-lo, conforme indicado abaixo.



Pronto! Já estará pronto para conectar ao seu raspberry através do seu computador, tablet ou celular. Vale lembrar que para se conectar ao raspberry, você precisa saber qual é o IP dele na rede. Para isso, execute o comando "ifconfig", conforme figura abaixo.



No caso acima, meu raspberry estava conectado via Wifi com o endereço 192.168.0.32 (interface wlan0). Caso ele estivesse conectado na rede por cabo, seria necessário olhar a interface eth0 do raspi.

Feito os passos acima, basta escolher seu cliente VNC. Existem diversos no mercado, como o Real VNC, TightVNC, UltraVNC, entre outros. 



No meu caso, instalei o Real VNC (VNC Viewer) e conectei ao IP do meu raspberry. Por padrão, o usuário de acesso é pi e sua senha é raspberry .

Façam bom proveito!

Reconfigurar relógio Raspberry PI

Pessoal,

para quem comprou seu raspberry e ficou muito tempo sem usar, pode ser que encontre problemas com o sincronismo do relógio, ao religá-lo e ficar sem acesso a internet. Naturalmente, o raspberry PI já vem presetado para sincronismo NTP com servidores Debian. De qualquer forma, se enfrentarem este problema basta executar o seguinte comando.

sudo dpkg-reconfigure tzdata

Ao executá-lo, você será encaminhado a tela de definição de seu local/moradia. Não tem segredo!

quinta-feira, 10 de maio de 2018

Enable New Potential - Base unit Siemens

Trabalhando em um novo projeto com uma ET200SP da Siemens, me deparei com um problema apresentado no diagnóstico na CPU. 

Após alguns testes, notei que os BaseUnits que haviam sido comprados eram diferentes. Consultando o manual da ET200SP, verifiquei que os Dark base Unit, compartilham a referência de sinal entre os cartões. Ou seja, este base unit deve ser usado sempre quando há o mesmo referencial 24VDC/Comum vindo de campo.

O base unit claro (Light Base Unit) pode ser utilizado da mesma forma ou pode ser utilizado para iniciar um novo potencial (fonte diferente). Para facilitar o entendimento, coloco abaixo exemplo na diferença entre as Base Units.  



No exemplo indicado acima, os dois Light Base Unit foram utilizados para abrir definir um novo potencial. 

É importante, portanto, informar que o tipo de ligação que será feito no Light Base Unit deve ser informado na configuração de Hardware, conforme indicado abaixo.




Então lembre-se: É essencial que esta configuração esteja de acordo para que o barramento funcione adequadamente.

segunda-feira, 5 de fevereiro de 2018

Pinagem - Cabo FBS Altus

Cabo de programação para CLP's FBs, que possuem interface RS232 e conector Mini-DIN na port0.




Esta pinagem pode ser encontrada gratuitamente nos manuais do CLP, disponibilizados pela Altus. Se tiver alguma dificuldade em montar o cabo, estou a disposição!

sábado, 7 de outubro de 2017

Comunicando Elipse E3 com Siemens S7-300 (NET TO PLCSIM)

Há alguns meses, publiquei um procedimento de utilização do Nettoplcsim, com o objetivo de poder emular um CLP e tornar disponível a visualização de dados por um sistema supervisório. Não se recorda? Acesse aqui.

Com referência no post já publicado, darei sequência no tema, ensinando o procedimento básico para configuração do supervisório. Para esta ocasião, irei ensinar a configuração do driver MPROT do sistema supervisório Elipse E3.

Para fazer o download do Elipse E3 e do driver de comunicação, acesse o site da Elipse Sofware, faça o login e faça o download! Tudo isto pode ser feito gratuitamente.

Como o foco não é ensinar Elipse e sim como realizar a comunicação, publico abaixo o passo a passo. Se eventualmente, surgirem dúvidas em seu processo de configuração, fique a vontade em entrar em contato comigo!

Passo a passo:
1. Ao adicionar o driver MPROT, abra o IOkit do Elipse e certifique-se de que a configuração esteja conforme abaixo. É importante que esteja configurado como ISOTCP. As configurações abaixo são configurações padrão para uma conexão com CLPs S7-300. Caso esteja utilizando outro hardware, o rack/slot pode variar conforme posicionamento da CPU.


2. Na aba Setup, configure a camada física como Ethernet.


3. Configure o IP onde o simulador esteja rodando. Não há necessidade de alterar a porta de comunicação, que neste protocolo é 102, por padrão.


4. Adicione os TAGS no driver. Uma das maneiras mais fáceis de referenciamento deste driver é utilizar o ParamItem (Item) do driver E3. Para este protocolo, a sintaxe é:

PosicaoCPU:Endereco

Exemplo: CPU localizada na posição 2 do rack e acesso a variável DBX0.0 localizada na DB1.
2:DB1.DBX0.0

Abaixo segue uma configuração básica de 3 pontos.




5. Nesta etapa o Elipse E3 já está apto a fechar a comunicação com o nettoplcsim. Você pode montar uma Variable Table no Step 7 e monitorar as variáveis desejadas.
6. Rode o driver do Elipse e a comunicação deverá ser estabelecida, conforme figura abaixo. 


Bom trabalho e faça bom uso desta ferramenta! Com ela você poderá poupar o custo de adquirir o hardware (CLP) para uma etapa de testes!

Abs.,
Luís FSA