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

[ LOGIN ] [ Autores ]

Nome: Marcos Aparecido Chaves Ferreira
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

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.

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:

  1. 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.

  1. Arraste um nó inject e um nó http request para o canvas do Node-RED.
  2. Configure o nó inject para injetar a mensagem a cada 5 segundos.
  3. Configure o nó http request para fazer uma solicitação GET para a URL https://economia.awesomeapi.com.br/json/last/USD-BRL.
  4. Conecte o nó inject ao nó http request.
  5. Arraste um nó debug para o canvas do Node-RED e conecte-o ao nó http request.
  6. Clique em "Deploy" para salvar e implantar o fluxo.
  7. 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.

  1. Arraste um nó template para o canvas do Node-RED.
  2. 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}}.

  1. Conecte o nó http request ao nó template.
  2. Arraste um nó ui_template para o canvas do Node-RED e configure-o para exibir o conteúdo do nó template.
  3. Configure o nó ui_template para exibir o conteúdo HTML como texto.
  4. Clique em "Deploy" para salvar e implantar o fluxo.
  5. Abra o dashboard do Node-RED em uma nova guia do navegador. Acesse a URL http://localhost:1880/ui para visualizar o dashboard.
  6. 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 (arquivo1arquivo2)


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;
  1. 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:

  1. INT ou INTEGER: é um tipo de dados inteiro usado para armazenar números inteiros, com ou sem sinal.

  2. VARCHAR: é um tipo de dados de caractere usado para armazenar strings de comprimento variável. Este tipo de dados é ideal para armazenar texto.

  3. 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.

  4. DATE: é um tipo de dados usado para armazenar datas. As datas são armazenadas no formato AAAA-MM-DD.

  5. TIME: é um tipo de dados usado para armazenar horários. Os horários são armazenados no formato HH:MM:SS.

  6. 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.

  7. BOOLEAN: é um tipo de dados booleano usado para armazenar valores verdadeiros ou falsos.

  8. 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);

INSERT INTO clientes (nome, rg, cpf, endereco) VALUES ('Marcos Chaves', '32.323.323.323', '120120130140', 'Rua Quinze de Abril, 900');

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 ]