https://github.com/douglaszuqueto/esp32-http-firmware
Firmware para ESP32 com suporte a integração com WebService e configuração via WiFiManager
https://github.com/douglaszuqueto/esp32-http-firmware
esp32 espressif http iot webservice wifimanager
Last synced: over 1 year ago
JSON representation
Firmware para ESP32 com suporte a integração com WebService e configuração via WiFiManager
- Host: GitHub
- URL: https://github.com/douglaszuqueto/esp32-http-firmware
- Owner: douglaszuqueto
- Created: 2019-03-20T20:00:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-03-30T22:55:41.000Z (over 7 years ago)
- Last Synced: 2025-03-25T19:21:20.859Z (over 1 year ago)
- Topics: esp32, espressif, http, iot, webservice, wifimanager
- Language: C++
- Homepage: https://github.com/douglaszuqueto/esp32-http-firmware
- Size: 896 KB
- Stars: 14
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ESP32 HTTP Firmware - V1.2.0 (em desenvolvimento)
Firmware para ESP32 com suporte a integração com WebService e configuração via WiFiManager
## Versões
* [V1](https://github.com/douglaszuqueto/esp32-http-firmware/releases/tag/1.0.0)
* [V1.1.0](https://github.com/douglaszuqueto/esp32-http-firmware/releases/tag/1.1.0)
## Posts relacionados
Se você chegou até aqui e esta boiando sobre o que originou este projeto, recomendo ver os posts que fiz no [Grupo Arduino Brasil](https://www.facebook.com/groups/arduino.br) no Facebook!
* [1º post](https://www.facebook.com/groups/arduino.br/permalink/2228450170527406/)
* [2º post](https://www.facebook.com/groups/arduino.br/permalink/2231466933559063/)
* [3º post](https://www.facebook.com/groups/arduino.br/permalink/2234227333283023/)
* [4º post](https://www.facebook.com/groups/arduino.br/permalink/2237258569646566/)
* [5º post](https://www.facebook.com/groups/arduino.br/permalink/2241613079211115/)
## Bibliotecas
* [WiFi](https://github.com/espressif/arduino-esp32/tree/master/libraries/WiFi)
* [WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer)
* [Ticker](https://github.com/espressif/arduino-esp32/tree/master/libraries/Ticker)
* [HTTPClient](https://github.com/espressif/arduino-esp32/tree/master/libraries/HTTPClient)
* [Preferences](https://github.com/espressif/arduino-esp32/tree/master/libraries/Preferences)
* [WiFiManager](https://github.com/tzapu/WiFiManager)
* [SPIFFS](https://github.com/espressif/arduino-esp32/tree/master/libraries/SPIFFS)
* [ESP-DASH](https://github.com/ayushsharma82/ESP-DASH)
* [AsyncTCP](https://github.com/me-no-dev/AsyncTCP)
* [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer)
* [ESPAsyncTCP](https://github.com/me-no-dev/ESPAsyncTCP)
* [Time](https://github.com/espressif/arduino-esp32/blob/master/tools/sdk/include/newlib/time.h)
* [ArduinoJson](https://arduinojson.org/)
## Arquitetura/Organização
Firmware dividido em arquivos. Cada arquivo com sua responsabilidade. Tudo isso visando melhor organização e facilidade em manter o código a longo prazo.

## Diagrama de fluxo

## Funcionalidades
* Configuração WiFi/Device via WifiManager
* Storage(Preferences)
* Ticker
* Cache(carregado no setup) - token, device_id, device_token, client_id
* Integração com webservice
* Autenticação e Autorização
* Renovação de token apenas quando expirado
* Suporte a debug
* Suporte a deepsleep
* Visualização através do webapp embarcado
* Multi-tarefas
## Código principal
```c
void setup() {
pinMode(LED, OUTPUT);
ticker.attach(0.3, tick);
initSerial();
openStorage();
setupWifiManager();
setupWiFi();
makeCache();
showConfig();
//
API_AUTH = API_URL + "/auth";
API_SEND_DATA = API_URL + "/device/" + device_id;
//
requestAccess();
ticker.detach();
digitalWrite(LED, LOW);
#if ESP_DASH
initEspDash();
#endif
#if DEEP_SLEEP
sendData();
closeStorage();
DEBUG_PRINTLNC(F("[ESP] Sleeping..."));
ESP.deepSleep(sleep_time);
#endif
delay(1000);
initTasks();
}
void loop() {
}
```
## Tasks
X tarefas são criadas. Elas serão distribuidas e gerenciadas através do RTOS de forma automática.

## WifiManager
Página de configuração via wifi manager

## ESP-DASH
Como brincadeira adicional acabei conhecendo o projeto [ESP-DASH](https://github.com/ayushsharma82/ESP-DASH) em um grupo, dei uma olhada e gostei bastante das funcionalidades e da arquitetura que foi aplicada no projeto.
Ainda não tem nenhuma integração real, mas o mesmo possui uma tarefa no qual os dados são atualizados de X em X tempo. Também possui um botão no qual possui integração com o led.
É um projeto muito bacana, pois foi embarcado um WebAPP desenvolvido em VueJS e o build('compilação') desse webapp é embarcado dentro do esp através do SPIFFS - uma técnica deveras interessante que pode agregar muito nos projetos!
Outro fato legal que eu gostei bastante, é que toda comunicação ocorre em 'tempo real' através do uso de websockets. Então além do ESP32 atuar como webserver servindo o webapp também cria um servidor de websockets, interessante não é?!
* Dashboard

* Stats

## Monitor serial
Um pouco do fluxo que ocorre após o salvamento das configurações no wifi manager.
No monitor serial houve uma melhoria que agora possibilita ver em qual core as tasks estão rodando em tempo de execução.

## Referências
* [Espressif - Arduino ESP32](https://github.com/espressif/arduino-esp32)
* [WiFi Manager](https://github.com/tzapu/WiFiManager)
* [WiFi Manager ESP32](https://github.com/zhouhan0126/WIFIMANAGER-ESP32)
* [ESP32 com Arduino IDE - Programação Multi-Core](https://www.fernandok.com/2018/04/esp32-com-arduino-ide-programacao-multi.html)