ESP8266 - MySQL
Este tutorial ensina você a usar o ESP8266 para inserir/atualizar dados em um banco de dados MySQL, ou ler os dados de um banco de dados MySQL

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
ESP8266 - MySQL
Há dois termos no MySQL que os iniciantes costumam confundir: Banco de Dados MySQL e servidor MySQL. Eles são diferentes. No entanto, se você é iniciante, pode assumir que são a mesma coisa. Mais tarde, você vai descobrir as diferenças durante o seu aprendizado.
O ESP8266 pode interagir com o banco de dados MySQL de duas maneiras:
- Diretamente: o ESP8266 se conecta diretamente ao servidor MySQL e interage com ele usando o protocolo MySQL
- Indiretamente: o ESP8266 se conecta indiretamente ao servidor MySQL por meio de um servidor web usando o protocolo HTTP/HTTPS.
Qual é a melhor para o ESP8266? Vamos descobrir!
O ESP8266 interage diretamente com o Servidor MySQL

Interagir com o MySQL diretamente parece simples, mas há muitas desvantagens:
- Temos que conceder permissões de acesso remoto a uma conta de usuário do MySQL ⇒ Isso é arriscado do ponto de vista da segurança, mesmo que concedamos privilégios limitados à conta de usuário.
- O ESP8266 DEVE armazenar e enviar consultas MySQL ao servidor MySQL ⇒ É preciso escrever muito código para o ESP8266 e, além disso, esgota os recursos do ESP8266 (uso de memória e de CPU).
- O ESP8266 DEVE processar uma resposta complexa do MySQL (em alguns casos, uma quantidade muito grande de dados) ⇒ Isso pode fazer o ESP8266 ficar sem memória
- O servidor MySQL deve processar os dados brutos ⇒ aumenta a complexidade do script MySQL.
- A maioria das bibliotecas MySQL para ESP8266 não suporta SSL/TLS ⇒ Os dados e o usuário/senha são enviados sem criptografia ⇒ outro problema de segurança.
O ESP8266 interage indiretamente com o Servidor MySQL via HTTP/HTTPS
Interagir com o MySQL indiretamente via HTTP/HTTPS resolve todos os problemas do acesso direto.
Como funciona
- Passo 1: O ESP8266 inclui os dados na requisição HTTP/HTTPS e envia a requisição ao servidor Web
- Passo 2: O servidor Web executa um script PHP que trata a requisição do ESP8266
- Passo 3: O script PHP extrai os dados da requisição HTTP, processa os dados e depois interage com o banco de dados MySQL.
- Passo 4: O script PHP processa o resultado e retorna ao ESP8266, via resposta HTTP, apenas o resultado necessário

Vamos instalar o servidor MySQL, o servidor Web e o PHP no PC. Na verdade, podemos instalá-los em um servidor dedicado ou em um serviço de nuvem, como o AWS EC2.
Abaixo está como a forma indireta resolve os problemas da forma direta.
- Podemos instalar o servidor HTTP e o servidor MySQL no mesmo servidor físico, e podemos dar um acesso limitado a uma conta de usuário do MySQL (por exemplo, acesso SOMENTE via localhost) ⇒ seguro
- O usuário/senha da conta MySQL fica armazenado no servidor ⇒ seguro.
- Os dados são processados por um script PHP ⇒ Isso reduz a carga e a complexidade para o ESP8266 e para o servidor MySQL.
- O script PHP consegue processar os dados com muito mais facilidade do que o código do ESP8266 e o script MySQL ⇒ Simplifica o código do ESP8266 e o script MySQL
- O script PHP pode processar os dados e enviar ao ESP8266 apenas os dados necessários (Passo 4) para evitar que o ESP8266 fique sem memória.
- O ESP8266 consegue fazer requisições HTTPS facilmente ⇒ os dados são criptografados.
Observe que a autenticação entre o ESP8266 e o Servidor Web deve ser independente da autenticação do MySQL. Por exemplo, o usuário/senha HTTP deve ser diferente do usuário/senha do MySQL.
Por causa dessas vantagens, este tutorial usará a forma indireta.
ESP8266 para MySQL via HTTP/HTTPS
Abaixo estão os passos que precisamos seguir:
- Instalar o pacote XAMPP, que inclui o servidor MySQL, o servidor Web e o PHP, no seu PC
- Criar uma conta de usuário do MySQL
- Criar um banco de dados MySQL
- Criar uma tabela MySQL
- Escrever um ou mais arquivos de script PHP
- Escrever o código do ESP8266
1. Instalando o servidor MySQL, o servidor Web e o PHP no seu PC
- Baixe e instale o XAMPP a partir deste link. Após a instalação, verifique a pasta C:\xampp\htdocs no seu PC. É nela que você coloca o código PHP (veja mais adiante).
- Abra o XAMPP Control Panel
- Clique nos botões Start para ativar o MySQL e o servidor Web (como na imagem abaixo)

2. Criando uma conta de Usuário do MySQL
Vamos criar uma conta MySQL com permissão de acesso somente via localhost.
- Mesmo que invasores saibam o usuário/senha, eles não conseguem acessar seu banco de dados MySQL, a menos que assumam o controle do seu PC.
- Esse usuário/senha será usado pelo PHP para se conectar ao banco de dados MySQL.
Este tutorial cria uma conta de usuário do MySQL cujo usuário e senha são ESP8266 e newbiely.com, respectivamente:
- Abra o Prompt de Comando no seu PC. Não o feche até o final do tutorial.
- Digite o seguinte comando no Prompt de Comando:
- Por padrão, o MySQL tem a conta root sem senha. É altamente recomendável definir a senha da conta root (por exemplo, YOUR_ROOT_PASSWORD) por motivos de segurança. Digite o comando abaixo no Prompt de Comando:
- Digite o comando abaixo no Prompt de Comando para fazer login no servidor MySQL:
- Digite YOUR_ROOT_PASSWORD e pressione Enter
- Vamos criar uma conta de usuário do MySQL cujo usuário e senha são ESP8266 e newbiely.com, respectivamente, copiando os comandos abaixo e colando no Prompt de Comando:
Você criou uma conta de usuário do MySQL com sucesso. Anote o usuário/senha. Eles serão usados no script PHP.
3. Criando um banco de dados MySQL
Crie um banco de dados db_esp8266 digitando o seguinte comando no Prompt de Comando:
4. Criando uma tabela MySQL
Crie uma tabela tbl_temp copiando os comandos abaixo e colando no Prompt de Comando:
6. Escreva os arquivos de script PHP
Crie um arquivo insert_temp.php usando qualquer editor de texto (por exemplo, Bloco de Notas/Notepad++). Vamos escrever o script nesse arquivo para extrair o valor da temperatura da Requisição HTTP e inserir o valor da temperatura no banco de dados.
- Coloque este arquivo dentro da pasta C:\xampp\htdocs
- Descubra o endereço IP do seu PC. Se você não sabe como, pesquise no Google.
- Teste o código PHP abrindo um navegador web (por exemplo, Chrome) e acessando este link: http://192.168.0.19/insert_temp.php?temperature=26.2. Observe que você precisa substituir o endereço IP acima pelo endereço do seu PC.
- O navegador web mostra o seguinte:

- Verifique se os dados foram armazenados no banco de dados digitando o seguinte comando no Prompt de Comando:
Como você pode ver, a temperatura de 26.2 está armazenada no banco de dados. O próximo passo é escrever o código do ESP8266 que faz uma Requisição HTTP ao servidor web no seu PC.
7. Escreva o código do ESP8266
O código ESP8266 abaixo faz uma requisição HTTP ao seu PC para inserir uma temperatura de 30.5°C no banco de dados
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP8266, veja como configurar o ambiente para o ESP8266 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP8266 ao seu PC por meio de um cabo micro USB
- Altere o endereço IP no código para o endereço IP do seu PC
- Compile e faça o upload do código para o ESP8266
- Abra o Serial Monitor no Arduino IDE
- O resultado no Serial Monitor
- Verifique se os dados foram armazenados no banco de dados usando o seguinte comando no Prompt de Comando:
Como você pode ver, a temperatura 30.5 está armazenada no banco de dados.
Como o ESP8266 insere, atualiza ou obtém dados de/para o banco de dados MySQL
O exemplo acima mostra como inserir dados no banco de dados MySQL. É semelhante para atualizar e ler dados do banco de dados. Você só precisa modificar a consulta MySQL no código PHP. Você pode aprender mais em W3Schools.com