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!