BLOG - Sistemas Embarcados
Este blog tem como autores os participantes do projeto Smart Campus e alunos das disciplinas: Sistemas Embarcados(Engenharia de Controle e Automação) e Plataformas de prototipação para Internet das Coisas
(Especialização Lato Sensu em Internet das Coisas). O objetivo é a divulgação de trabalhos em desenvolvimento no campus que envolvam a utilização de conceitos de sistemas embarcados, internet das coisas, telemetria e outras tecnologias para a resolução de problemas da indústria, meio ambiente, cidades inteligentes, fazendas inteligentes, ....
Coordenação: Prof. Marcos Chaves
Registro Institucional: CT120893
Email: mchavesferreira@gmail.com
Email Institucional: mchavesferreira@ifsp.edu.br
GitHub:
URL Servidor na nuvem:
URL DNS Servidor na nuvem:
URL Dados em formato Json:
URL php/mysql: http://smartcampus.ctd.ifsp.edu.br/aula/php_app
URL projeto 1: http://smartcampus.ctd.ifsp.edu.br/aula/php_app/form.php
URL Dashboard:
numero de postagens:11
Busca:
Instalando MongoDB no Ubuntu
A sequência de instalação segue a documentação do MongoDB e o passo a passo é ilustrado neste vídeo.
Importe a chave pública usada pelo sistema de gerenciamento de pacotes.
Em um terminal, instale o gnupg se ainda não estiver disponível:
sudo apt-get install gnupg
Emita o seguinte comando para importar a chave GPG pública do MongoDB de https://pgp.mongodb.com/server-6.0.asc :
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --querido
[ID:130] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2023-05-19 10:18:05 - [ Compartilhar ]
Detector de presença do celular de Luiz
Nos últimos anos, a Internet das Coisas (IoT) tem se tornado uma tendência crescente, possibilitando a conexão de dispositivos do cotidiano à internet, trazendo praticidade e automação para diversas áreas. Neste texto, vamos explorar a criação de um detector IoT que utiliza a plataforma ESP32, o protocolo MQTT e o Node-RED para detectar o celular do Luiz Eduardo, um aluno do curso.
Desenvolvimento: O ESP32 é um microcontrolador poderoso e versátil amplamente utilizado no desenvolvimento de projetos IoT. Ele combina capacidade de processamento, conectividade Wi-Fi e Bluetooth, e pode ser programado com a linguagem Arduino IDE, o que o torna uma excelente escolha para nosso projeto.
O protocolo MQTT (Message Queuing Telemetry Transport) é um protocolo leve de troca de mensagens projetado para comunicação entre dispositivos IoT. Ele funciona em um modelo de publicação/assinatura, onde os dispositivos enviam mensagens para tópicos específicos e outros dispositivos podem se inscrever nesses tópicos para receber as mensagens.
Para implementar nosso detector celular por meio da leitura de comunicação bluetooth, podemos utilizar um sensor de proximidade conectado ao ESP32. Quando o sensor detectar a presença de um objeto próximo, indicando que o celular do Luiz Eduardo está próximo, o ESP32 irá publicar uma mensagem em um tópico MQTT específico.
Em seguida, podemos usar o Node-RED, uma ferramenta de programação visual baseada em fluxos, para receber as mensagens MQTT e executar ações com base nelas. No Node-RED, podemos configurar um nó MQTT de entrada para se inscrever no tópico em que o ESP32 publica as mensagens. Assim que uma mensagem for recebida, podemos definir uma ação, como acionar um alarme sonoro ou enviar uma notificação para um aplicativo no celular do Luiz Eduardo.
O Node-RED também oferece uma interface gráfica intuitiva para criar regras e interações mais complexas. Podemos adicionar lógica adicional, como acionar um registro de presença em um banco de dados, enviar um e-mail ou até mesmo ligar luzes automaticamente quando o celular do Luiz Eduardo for detectado pelo ESP32.
Conclusão: Com a combinação do ESP32, MQTT e Node-RED, é possível criar um detector IoT para detectar o celular do Luiz Eduardo de forma eficiente. Através do sensor de proximidade conectado ao ESP32, podemos publicar mensagens MQTT que serão recebidas e processadas pelo Node-RED. Isso permite uma variedade de ações personalizadas, como acionar alarmes, enviar notificações ou executar automações específicas quando o celular for detectado. A implementação dessa solução pode trazer praticidade e segurança ao ambiente do curso, permitindo que o Luiz Eduardo seja identificado de forma automática e precisa.
[ID:129] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2023-05-17 19:49:58 - [ Compartilhar ]
Banco de dados para IoT: Mongodb ou Mysql
Tanto o MongoDB quanto o MySQL são bancos de dados populares e amplamente utilizados em projetos de IoT. Aqui estão algumas das vantagens e desvantagens de cada um deles:
MongoDB: Vantagens:
- Esquema flexível: o MongoDB é um banco de dados NoSQL, o que significa que ele é mais flexível em relação à definição do esquema de dados. Isso torna mais fácil trabalhar com dados estruturados e não estruturados, o que é uma vantagem em muitos projetos de IoT.
- Escalabilidade: O MongoDB é altamente escalável, com a capacidade de lidar com grandes quantidades de dados e um grande número de conexões simultâneas. Isso é importante em projetos de IoT, onde muitos dispositivos podem estar enviando dados ao banco de dados ao mesmo tempo.
- Consultas rápidas: o MongoDB é projetado para ser rápido, com consultas que podem ser executadas em segundos ou menos, mesmo em grandes conjuntos de dados. Isso é importante em projetos de IoT, onde é necessário acessar rapidamente os dados enviados pelos dispositivos.
Desvantagens:
- Requer mais recursos: o MongoDB é geralmente mais intensivo em recursos do que o MySQL e pode exigir mais recursos do sistema para executar.
- Menor adoção: o MongoDB é menos comum do que o MySQL e pode ser mais difícil encontrar suporte e recursos de aprendizado.
MySQL: Vantagens:
- Suporte robusto: o MySQL é amplamente utilizado em todo o mundo e possui uma grande comunidade de usuários e desenvolvedores, o que significa que há muitos recursos e suporte disponíveis.
- Escalabilidade: O MySQL é escalável e pode lidar com grandes quantidades de dados e muitas conexões simultâneas, o que é importante em projetos de IoT.
- Confiabilidade: o MySQL é conhecido por ser confiável e estável em condições de carga pesada, o que é importante em projetos de IoT, onde há muitos dispositivos enviando dados ao banco de dados.
Desvantagens:
- Esquema rígido: o MySQL é um banco de dados relacional, o que significa que ele exige um esquema rígido para a definição dos dados. Isso pode dificultar a inclusão de dados não estruturados em projetos de IoT.
- Desempenho: o MySQL pode ser um pouco mais lento do que o MongoDB em certas situações, especialmente em grandes conjuntos de dados e em consultas mais complexas.
Em resumo, o MongoDB pode ser mais adequado para projetos de IoT que envolvem grandes quantidades de dados não estruturados e precisam de uma alta escalabilidade. Por outro lado, o MySQL pode ser mais adequado para projetos de IoT que precisam de um esquema rígido e confiabilidade comprovada. No entanto, a escolha entre eles depende do projeto específico e das necessidades do negócio.
[ID:128] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2023-05-06 13:14:47 - [ Compartilhar ]
Serviços em Nuvem (Cloud)
Os serviços de tecnologia em cloud(nuvem) podem ser muito úteis para o desenvolvimento de sistemas embarcados e Internet das Coisas (IoT). Os sistemas embarcados são computadores dedicados a uma função específica, como um termostato inteligente ou um sistema de controle de segurança, e muitas vezes são limitados em recursos de processamento e armazenamento. Com o uso de serviços cloud, é possível armazenar dados coletados por esses dispositivos em servidores em nuvem, realizar análises em tempo real e fornecer atualizações de software remotamente.
Os serviços de tecnologia em cloud fornecem três modelos que podem resolver nossos problemas de negócios. A seguir está uma lista de serviços de tecnologia em nuvem.
- Platform as a Service (PaaS)
- Infrastructure as a Service (IaaS)
- Software as a Service (SaaS)
PaaS (Plataforma como Serviço) é um modelo de serviço em nuvem em que os provedores de nuvem oferecem uma plataforma completa para que os desenvolvedores possam criar, testar, implantar e gerenciar aplicativos em nuvem. Os desenvolvedores podem usar ferramentas de desenvolvimento baseadas em nuvem e ambientes de execução, bem como serviços de banco de dados e gerenciamento de recursos. Com o PaaS, os desenvolvedores podem se concentrar no desenvolvimento de aplicativos sem se preocupar com a infraestrutura subjacente.
IaaS (Infraestrutura como Serviço) é um modelo de serviço em nuvem em que os provedores de nuvem oferecem recursos de infraestrutura, como servidores virtuais, armazenamento, redes e sistemas operacionais, aos clientes. Os clientes podem usar esses recursos para implantar e executar seus próprios aplicativos e serviços em nuvem, sem precisar gerenciar a infraestrutura física subjacente. Com o IaaS, os clientes têm controle total sobre a configuração e o gerenciamento de seus recursos em nuvem.
SaaS (Software como Serviço) é um modelo de serviço em nuvem em que os provedores de nuvem oferecem aplicativos de software baseados em nuvem para os clientes. Os clientes podem acessar e usar esses aplicativos por meio de um navegador da web ou de um aplicativo móvel, geralmente pagando uma taxa de assinatura mensal ou anual. Com o SaaS, os clientes não precisam instalar ou manter o software em seus próprios computadores ou dispositivos móveis, e as atualizações são feitas automaticamente pelo provedor de nuvem.
Companhias e outros serviços para IoT
[ID:127] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2023-04-28 08:56:12 - [ Compartilhar ]
Troca de mensagens em formato Json
JSON (JavaScript Object Notation) é um formato de dados leves e muito utilizado para troca de informações entre sistemas em aplicações web. Ele é baseado em um subconjunto da linguagem JavaScript e é facilmente legível por humanos e por computadores.
O JSON é um protocolo que permite a transferência de dados entre sistemas de forma estruturada. Ele utiliza uma sintaxe simples e padronizada para representar objetos e dados, como strings, números, booleanos, listas e dicionários.
O JSON é amplamente utilizado em aplicações web, principalmente em serviços de API (Application Programming Interface) para troca de dados entre diferentes sistemas, como aplicações web e mobile. Ele é uma alternativa popular para o protocolo XML, por ser mais fácil de ler e escrever, além de ser mais leve e eficiente.
Exemplos de aplicação:
<?php
$url = 'https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia';
$data = file_get_contents($url);
$json = json_decode($data);
$cotacao = $json->value[0]->cotacaoVenda;
echo "Cotação do dólar: R$ " . $cotacao;
?>
Nesse código, a função file_get_contents
é utilizada para obter os dados da API do Banco Central. Em seguida, a função json_decode
é utilizada para transformar os dados em um objeto PHP. Finalmente, o valor da cotação é extraído do objeto e exibido na tela.
[ID:126] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2023-03-27 18:35:14 - [ Compartilhar ]
Node-Red Cursos
Sugestões para se capacitar em Node-Red
Instalação de nodes extras
- Node-RED Dashboard extra nodes
Node-RED Dashboard extra nodes (collection) - Node-RED (nodered.org)
Introdução ao Node-RED
O que é o Node-RED?
Node-RED é uma plataforma de programação visual para conectar dispositivos de IoT e criar fluxos de dados. Ele é baseado na linguagem JavaScript e é executado no Node.js.
Como instalar o Node-RED?
Para instalar o Node-RED, siga os seguintes passos:
- Instale o Node.js na sua máquina, se ainda não estiver instalado. Você pode baixá-lo no site oficial do Node.js.
Criando um fluxo básico no Node-RED
Agora vamos criar um fluxo básico para buscar uma cotação de dólar em formato JSON e exibi-la em um dashboard.
- Arraste um nó
inject
e um nóhttp request
para o canvas do Node-RED. - Configure o nó
inject
para injetar a mensagem a cada 5 segundos. - Configure o nó
http request
para fazer uma solicitação GET para a URLhttps://economia.awesomeapi.com.br/json/last/USD-BRL
. - Conecte o nó
inject
ao nóhttp request
. - Arraste um nó
debug
para o canvas do Node-RED e conecte-o ao nóhttp request
. - Clique em "Deploy" para salvar e implantar o fluxo.
- Abra a guia "Debug" na interface do Node-RED para ver a resposta da solicitação HTTP.
Exibindo a cotação do dólar em um dashboard
Agora que temos a cotação do dólar em formato JSON, vamos exibi-la em um dashboard.
- Arraste um nó
template
para o canvas do Node-RED. - Configure o nó
template
para exibir a cotação do dólar em um formato agradável. Por exemplo:
O preço atual do dólar é {{payload.USD_BRL.high}}.
- Conecte o nó
http request
ao nótemplate
. - Arraste um nó
ui_template
para o canvas do Node-RED e configure-o para exibir o conteúdo do nótemplate
. - Configure o nó
ui_template
para exibir o conteúdo HTML como texto. - Clique em "Deploy" para salvar e implantar o fluxo.
- Abra o dashboard do Node-RED em uma nova guia do navegador. Acesse a URL
http://localhost:1880/ui
para visualizar o dashboard. - O valor da cotação do dólar deve ser exibido no dashboard.
Este é apenas um exemplo básico de como usar o Node-RED para buscar dados de uma API e exibi-los em um dashboard. Existem muitos outros recursos disponíveis no Node-RED, como bancos de dados, integração com outros
Exemplos em scripts flow
Script 1: elaboração de um script flow que busque uma informação de cotação de dolar em formato json e exiba em dashboard.
Exemplo com uso dos módulos Netio
https://www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x
Cursos:
Desenvolvimento de aplicações integrando serviços Web, fontes de dados e dispositivos IoT com o uso do Node-RED. Ministrantes: Celso Alberto Saibel Santos e Jordano Ribeiro Celestrin (pdf) (github). Curso USP com reposítório e exemplos básicos json.
[2] Curso Udemy de Reginaldo Santos. Do Zero ao Node-Red (Prototipagem rápida). Assista ao curso liberado no Canal Youtube do Autor [playlist youtube] [aula 1-4 som editado] (Seção 7 Front End )
( Seção 8 Construindo Estação )
[3] HowTo: Node Red – Creating a User Interface with Dashboard Nodes
[4] Slide aplicaões: https://sesam-world.com/_pdf/sesam-134/05-IBM.pdf
[5] Passe, Fernando et al . Perspectivas para o uso do Node-Red no Ensino de IoT
[6] da Silva, Esdras Barbosa Lima J. Node-RED KNoT: Um módulo de integração da ferramenta Node-RED com a meta plataforma KNoT
[ID:50] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-05-17 23:32:34 - [ Compartilhar ]
Conheça o MQTT- Protocolo de Comunicação
O Protocolo Mqtt permite a comunicação entre os dispositivos para Internet das Coisas.
Teoria: Link 1, link 2
O seguinte tutorial, embora explica como instalar um broker Mosquitto no Ubuntu, sendo realizado os testes na instância Ubuntu cloud AWS.
Referência: https://www.vultr.com/docs/how-to-install-mosquitto-mqtt-broker-server-on-ubuntu-16-04
$ sudo apt-get update
$ sudo apt-get install mosquitto
$ sudo apt-get install mosquitto-clients
Habilite o redirecionamento de portas utilzando ufw
$ sudo apt install ufw $ sudo ufw allow 1883 $ sudo ufw allow 22 $ sudo ufw enable
Para testar mensagem assine (subscribe o tópico "test"
$ mosquitto_sub -t "test"
Publicando mensagem:
mosquitto_pub -m "message from mosquitto_pub client" -t "test"
Para segurança do broker, permita conexão apenas de usuários com senha. Crie o scrpit:
$ sudo nano /etc/mosquitto/conf.d/default.conf
Preencha o arquivo com o seguinte texto:
allow_anonymous false
password_file /etc/mosquitto/passwd
Execute o comando:
$ sudo systemctl restart mosquitto
Configure senha para o usuário por exemplo "dave"
$ sudo mosquitto_passwd -c /etc/mosquitto/passwd dave
Password: password
Reinicie a instância e repita os testes:
$ mosquitto_sub -t "test" -u "dave" -P "password"
$ mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password"
O MQTT.fx é um Software Cliente versão Windows, onde é possivel testar protocolo MQTT. Com ele é possível publicar e assinar tópicos.
https://mqttfx.jensd.de/index.php/download
Existem diversos aplicativos para celular, utilizar o protocolo mqtt para suas aplicações IOT. O aplicativo android: MQTT Dash é muito simples de operar.
IOT com Smarphone
Este projeto da IBM, descreve uma aplicação de ensaios utilizando o giroscópio do celular como sensor IOT enviando para o Broker público HiveMQ
https://developer.ibm.com/tutorials/iot-mobile-phone-iot-device-bluemix-apps-trs/
Utilizando Arduino com MQTT
Enviando valores através de mensagens no formato Json para um broker mqtt
Utilize a biblioteca para implementar o serviço mqtt em exemplos com Arduino. A bilioteca oferece funções para leitura e publicação de mensagens em formato Json. O seguinte exemplo mostra uma função que prepara uma mensagem Json para ser publicada no broker.
Links:
[1] Utilizando MQTT com Node Red
[2] Video aula Teams, apresentando o MQTT.
[ID:48] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-05-11 18:28:53 - [ Compartilhar ]
Node-Red, apresentação e instalação
Node RED, é a principal ferramenta de programação para a internet das coisas.
Construída em node.js, utiliza programação gráfica através de blocos (conhecidos como nós) com funções predefinidas para a realiação de tarefas por meio de um fluxo (flows).
A programação é realizada por meio de browser com acesso a back-end do framework.
Ambiente de programação
Há basicamente três tipos de nós.
nós de entrada (permitem que os dados sejam inseridos em uma aplicação),
nós de saída (permitem o envio de dados para fora de uma aplicação) e
nós de processamento (permitem a manipulação dos dados que entram nos mesmos afim de disponibilizar novos dados para o estágio posterior).
Há um vasta variedade de nós para as mais diversas aplicações possíveis instalados através do menu Manager.
Maiores informações sobre a aplicação e exemplos de códigos (flows) visite a pagina oficial: https://nodered.org
Instalação do Node-Red |
Para instalação do Node-red, sugerimos os seguintes links com tutorial. O primeiro link embora direciona para instalação em Debian, funcionou para instalação Ubuntu no AWS. A primeira etapa deve-se conectar com o servidor para utilizar os comandos prompt de atualização de pacotes:
$ sudo apt-get update
$ sudo apt-get upgrade -y
Passo 2: Instale NPM e NodeJS
$sudo apt install npm
$ sudo apt-get install nodejs
Verificar versão instalada
$ node -v
Atualizar versão node
Há um pacote chamado n, que nos ajuda a alterar a versão do Node
$ sudo npm install -g n
$ sudo n stable
Reinicie seu terminal para que as mudanças tenham efeito.
Instalando Node-red com npm
$ sudo npm install -g --unsafe-perm node-red
$ sudo n stable
Node-red em linha de comando criando usuario admin
$ sudo npm install -g --unsafe-perm node-red-admin
Script para adicionar o Node-red na inicialização ( link)
$ sudo nano /etc/systemd/system/nodered.service
Debian: Passos e respondendo as perguntas em cada passo: https://roveeb.com/post/como-instalar-o-node-red-como-um-servico-em-distribuicoes-baseadas-no-debian/
Para iniciá-lo toda vez que o sistema reiniciar, é necessário rodar o comando sudo systemctl enable nodered.service
O serviço Node-Red funcionará na porta 1880 de seu servidor. Edite as configurações de entrada no serviço AWS acrescentando a porta 1880. Utilize as orientações deste link (https://www.techunits.com/topics/setup-guides/step-by-step-guide-to-install-node-red-on-ubuntu-18-04-lts/) para alocar a porta para este serviço.
$ sudo ufw allow 1880
Embora no final da instalação apareça um endereço de ip local (127.0.0.0), confira o serviço funcionando em http://(ip_seu_servidor):1880
Colocando senha para acesso aos flows |
Esta instalação porém não ativa uma senha para bloquear o acesso aos seus flows.
Para colocar uma senha de segurança de acesso aos flows.
https://nodered.org/docs/user-guide/runtime/securing-node-red
Instale o módulo de segurança como root (super usuário)
$ sudo ufw allow 1880
$ sudo su
$ npm install -g --unsafe-perm node-red-admin
Crie uma senha para o login "admin"
$ node-red admin hash-pw
Copie esta senha que será inserida no script de credenciais.
Acesse a pasta oculta
Edite o arquivo ainda com root
$ cd .node-red
$ nano settings.js
Localize o seguinte trecho no arquivo ./node-red/settings.js , para retirar os comentarios e cole a senha criptografada.
CRTL+X para salvar o arquivo. Reinicie o servidor utilizando o comando reboot ou a na área de administração das instâncias AWS.
Links:
[1] Video aula Teams Prof. Marcos Chaves.
[ID:45] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-05-05 00:55:05 - [ Compartilhar ]
Redirecionamento DDNS com DuckDns para AWS ou Raspberry
Redirecionamento DDNS
Crie uma conta no Duckdns para traduzir a URL IP em formato amigável com nomes.
O Duck DNS é um serviço que permite traduzir o endereço IP dinâmico de seu servidor na nuvem (AWS) ou local (Raspberry, computador ou outro equipamento) que está utilizando um endereço de URL fornecido pela operaadora (VIVO, Claro, etc). para um nome ex: http://embarcadosifsp.duckdns.org. Este serviço está alojado na plataforma de cloud de Amazon e o código do serviço está disponível sob a licença GNU GPLv3. Visite o site http://www.duckdns.org , conecte-se utilizando uma rede social ou github. Criado a conta, copie o Token (YOUR_TOKEN). Adicione um domínio (domains YOUR_DOMAIN) que será apontado. Os domínios apontaram para o mesmo ip se os servidores estiverem na mesma rede e ip público. Cabe instalar um script para conectar, e utilizar portas diferentes em cada domínio configurando o modem/roteador para o ip correto interno.
Para que o Duck DNS atualize automaticamente, é preciso que seu servidor rode um pequeno script periodicamente e informe o servidor DuckDns. Como estamos utilizando linux para nosso os desenvolvimentos de projetos, vamos utilizar o serviço CRON que automaticamente rodará o script .sh em intervalos de tempos pré definidos.
Crie uma pasta para instalar o script:
mkdir /home/pi/duckdns
cd /home/pi/duckdns
nano duck.sh
Dentro do arquivo insira o seguinte texto:
echo url="https://www.duckdns.org/update?domains=[YOUR_DOMAIN]&token=[YOUR_TOKEN]&ip=" | curl -k -o ~/duckdns/duck.log -K -
Salve o arquivo e dê permissão de execução
chmod 700 duck.sh Agora acesso o seriço Crontab para configurar a execução em intervalos de tempo. crontab -e
Insira este texto para executar o script a cada 5 minutos. Pode-se aumentar o intervalo.
*/5 * * * * /home/pi/duckdns/duck.sh >/dev/null 2>&1
Confira a execução e log
./duck.sh cat duck.log sudo service cron start
Formatação do CRONTAB
Comandos:
crontab -l # Viewing the cronjobs as currently logged in user crontab -e # Edit the cronjob for currently logged in user
Exemplos de configuração CRONTAB
Todos os dias as 6 am
0 6 * * * /home/eazylinux/script.sh
A cada 5 minutos
*/5 * * * * /home/eazylinux/script.sh
Ajustar o horário do servidor Ubuntu
timedatectl é uma ferramenta para controle de data e horário do sistema. Pode ser usado para alterar o relógio e suas configurações. Definindo fuso horário como São Paulo:
$ sudo timedatectl set-timezone America/Sao_Paulo
Referências:
Criando uma conta DNS https://pplware.sapo.pt/informacao/duck-dns-servico-dns-dinamico-totalmente-gratuito/
Configurando Cron e duck.sh: https://www.wundertech.net/how-to-setup-duckdns-on-a-raspberry-pi/
Crontab tips and tricks https://www.eazylinux.com/crontab-tips-and-tricks/
[ID:30] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-04-27 16:07:13 - [ Compartilhar ]
Construindo uma API e uma dashboard PHP + AJAX + JSON
Utilizando scripts do repositório: https://github.com/mchavesferreira/ajaxdados podemos construir uma dashboard básica.
O script temperaturasendjson.php publica os últimos dado de um banco de dados no formato JSON.
O script buscajson.php exemplifica uma API simples em PHP que separa em uma nova hieraquia e campos desejados de uma JSON.
O script index.php exemplifica a utilização de javascript e php para geração de Ajax.
Ajax é uma forma atualizar apenas uma parte da página ou campo de pagina sem precisar de uma atualização da pagina inteira, gerando chamadas assíncronas. Este exemplo utiliza a biblioteca JQuery, simplificando o uso de códigos. O script embutido no corpo do código html, realiza o método GET em duas URL. Uma URL é código que busca em nosso banco de dados ( temperaturasendjson.php) e a outra URL busca dados de cotação do Bitcoin em formato Json. O script separa os campos desejados e substitui no corpo do texto os campos da classe
por exemplo.
Baixe o repositório direto no linux: git clone https://github.com/mchavesferreira/ajaxdados
Referências:
Códigos de resposta do HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP/status
Video 1: Tutorial AJAX + JSON com Java Script puro https://www.youtube.com/watch?v=YzMTXID1U9Q
Requisições AJAX com JQUERY + JSON https://www.youtube.com/watch?v=4v0PhQs08DI&
[ID:29] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-04-27 15:08:12 - [ Compartilhar ]
Utilizando banco de dados Mysql e os comandos SQL básicos
Esta aula explicaremos o que é um banco de dados, revisão de métodos GET e POST para envio de dados utilizando o nodemcu para armazenar dados na nuvem. Para começar é preciso ter um servidor linux com serviço de web e bancos de dados com acessos a comandos padrões SQL. Utilizaremos o serviço de instância AWS, porém pode ser realizado localmente em sua rede intranet, desde que o nodemcu e o servidor web tenham acesso entre si. A seguir apresentamos a video aula gravada no TEAMS, e disponilizamos os códigos necessários para implementar no repositório Github e os comandos básicos de SQL utilizados para construir este exemplo de aplicação.
Repositório de arquivos: https://github.com/mchavesferreira/php_app
Para instalação utilizar o comando: git clone https://github.com/mchavesferreira/php_app
Aula síncrona TEAMS Banco de dados e requisições POST e GET
5:59 Protocolo Http, www, TCP/IP, DNS
12:05 Requisições GET e POST
15:44 Projeto NodeMcu
22:28 Introdução ao Mysql.
38:31 Repositório projeto php_app Comentários sobre arquivos
41:01 - Criando base de dados, uso de comandos SQL
56:20 Utilizando RDS com base de dados e uso do repositório php_app
1:06:30 Inserindo dados via POST e GET via php
1:09:59 Uso de um código .ino para envio de dados via GET e POST (arquivo1 e arquivo2)
Comandos básicos Mysql
utilizando exemplos de códigos. Aqui estão alguns comandos mais utilizados:
// conecta com o banco de dados via terminal localmente
mysql -u root -p
Acesso remoto utilizando rds
mysql -u admin -h database-1.cscbnowewjwj.sa-east-1.rds.amazonaws.com -p
Criar um banco de dados:
Para criar um banco de dados, utilize o comando "CREATE DATABASE", seguido do nome do banco de dados que deseja criar:
CREATE DATABASE nome_do_banco_de_dados;
Listar os bancos de dados:
Para listar todos os bancos de dados disponíveis, utilize o comando "SHOW DATABASES":
SHOW DATABASES;
Selecionar um banco de dados:
Para selecionar um banco de dados específico, utilize o comando "USE", seguido do nome do banco de dados:
USE nome_do_banco_de_dados;
Criar uma tabela:
Para criar uma tabela em um banco de dados, utilize o comando "CREATE TABLE", seguido do nome da tabela e das colunas que ela terá:
CREATE TABLE nome_da_tabela ( coluna1 TIPO_DE_DADO, coluna2 TIPO_DE_DADO, coluna3 TIPO_DE_DADO );
Listar as tabelas:
Para listar todas as tabelas em um banco de dados, utilize o comando "SHOW TABLES":
SHOW TABLES;
- Criar uma tabela
CREATE TABLE nome_da_tabela (
coluna1 TIPO_DE_DADO,
coluna2 TIPO_DE_DADO,
coluna3 TIPO_DE_DADO
);
Com id:
CREATE TABLE clientes (
id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(50) NOT NULL,
rg VARCHAR(20) NOT NULL,
cpf VARCHAR(14) NOT NULL,
endereco VARCHAR(100) NOT NULL
);
Na criação de tabelas em MySQL, os tipos mais comuns de dados que você encontrará são:
-
INT ou INTEGER: é um tipo de dados inteiro usado para armazenar números inteiros, com ou sem sinal.
-
VARCHAR: é um tipo de dados de caractere usado para armazenar strings de comprimento variável. Este tipo de dados é ideal para armazenar texto.
-
CHAR: é um tipo de dados de caractere usado para armazenar strings de comprimento fixo. Este tipo de dados é útil quando você precisa armazenar strings com um comprimento fixo.
-
DATE: é um tipo de dados usado para armazenar datas. As datas são armazenadas no formato AAAA-MM-DD.
-
TIME: é um tipo de dados usado para armazenar horários. Os horários são armazenados no formato HH:MM:SS.
-
DATETIME: é um tipo de dados usado para armazenar datas e horários. As datas e horários são armazenados no formato AAAA-MM-DD HH:MM:SS.
-
BOOLEAN: é um tipo de dados booleano usado para armazenar valores verdadeiros ou falsos.
-
FLOAT: é um tipo de dados de ponto flutuante usado para armazenar números decimais com pontos flutuantes.
Esses são apenas alguns dos tipos de dados mais comuns usados na criação de tabelas em MySQL. É importante selecionar o tipo de dados correto para cada coluna, com base nos requisitos de dados e no tamanho do conjunto de dados.
Descrever características da base de dados
Describe nome_da_tabela;
Inserir dados em uma tabela:
Para inserir dados em uma tabela, utilize o comando "INSERT INTO", seguido do nome da tabela e dos valores a serem inseridos
INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3) VALUES (valor1, valor2, valor3);
Atualizar dados em uma tabela:
Para atualizar dados em uma tabela, utilize o comando "UPDATE", seguido do nome da tabela e das colunas a serem atualizadas
UPDATE nome_da_tabela SET coluna1 = novo_valor WHERE condição;
Excluir dados em uma tabela:
Para excluir dados em uma tabela, utilize o comando "DELETE FROM", seguido do nome da tabela e da condição para excluir os registros desejados
DELETE FROM nome_da_tabela WHERE condição;
Consultar dados em uma tabela:
Para consultar dados em uma tabela, utilize o comando "SELECT", seguido das colunas que deseja visualizar e da tabela que deseja consultar:
SELECT coluna1, coluna2, coluna3 FROM nome_da_tabela WHERE condição;
Esses são apenas alguns exemplos de códigos mais utilizados para gerenciar bancos de dados em MySQL. Existem muitos outros comandos disponíveis, dependendo das suas necessidades específicas. É importante ter um conhecimento sólido desses comandos para garantir que está gerenciando seus dados de forma eficaz e segura.
// Outros exemplo de comandos para seleção de dados todas as linhas da base de dados
SELECT * FROM tempLogo;
SELECT temperature FROM tempLogo;
SELECT * FROM tempLogo limit 1; // limita 1 linha
SELECT * FROM tempLogo limit 2,3; // limita 1 linha
SELECT * FROM tempLogo order by timeStamp ASC;
SELECT * FROM tempLogo order by timeStamp DESC;
SELECT * FROM tempLogo where temperature=23;
SELECT * FROM tempLogo WHERE DATE(timeStamp) = CURDATE();
SELECT * FROM tempLogo WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY);
//apagar linhas da tabela por seleção
DELETE from tempLogr where humidity=50;
// apagar tabela completa
DROP TABLE tempLogr;
// alterar um campo na tabela
UPDATE users SET nome = Marcos, email =xxxxx@gmail.com WHERE ra=CTxxxxx;
// adicionar colunas mysql
ALTER TABLE users ADD COLUMN urljson VARCHAR(120);
ALTER TABLE blogusers ADD COLUMN summary TEXT;
// deletar coluna da tabela
ALTER
TABLE nome_da_tabela
DROP COLUMN ;
//modificar coluna
ALTER TABLE blogusers MODIFY title varchar(60);
//Realizando exportação de uma base de dados para um arquivo backup.sql
mysqldump -u admin -p nomedabase > backup_sensor.sql
// Copiando tabelas específicas de uma base
mysqldump nomedabase tabela1 tabela2 tabela3 > dump.sql
// Importando uma base de dados de um arquivo para o banco de dados mysql
mysql -u root -p -h localhost nomedabase
Exemplo de aplicação com ESP32 como cliente http e conectando a API para armazenamento em mysql (exemplo)
Referências:
http://www.artfulsoftware.com/infotree/qrytip.php?id=78
https://www.w3schools.com/sql/sql_datatypes.asp
ESP32/ESP8266 Insert Data into MySQL Database using PHP and Arduino IDE: https://randomnerdtutorials.com/esp32-esp8266-mysql-database-php/
Guia Mysql: https://dev.mysql.com/doc/refman/8.0/en/creating-tables.html
Playlist Curso de Banco de daos Mysql. Curso em Vídeo https://www.youtube.com/playlist?list=PLHz_AreHm4dkBs-795Dsgvau_ekxg8g1r
[ID:28] Autor:Marcos Aparecido Chaves Ferreira - Criado em: 2021-04-27 11:29:51 - [ Compartilhar ]