Firmware para ESP32 com suporte a integração com WebService e configuração via WiFiManager
Se você chegou até aqui e esta boiando sobre o que originou este projeto, recomendo ver os posts que fiz no Grupo Arduino Brasil no Facebook!
- WiFi
- WebServer
- Ticker
- HTTPClient
- Preferences
- WiFiManager
- SPIFFS
- ESP-DASH
- AsyncTCP
- ESPAsyncWebServer
- ESPAsyncTCP
- Time
- ArduinoJson
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.
- 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
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() {
}
X tarefas são criadas. Elas serão distribuidas e gerenciadas através do RTOS de forma automática.
Página de configuração via wifi manager
Como brincadeira adicional acabei conhecendo o projeto 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
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.