Board: ESP32-CAM
esp32 library: 3.2.0
OS: Mac
Arduino IDE: 2.3.5
Hello, I'm getting the following error when trying to compile a sketch with multiple files. I can't figure out what the error is.
Compiling libraries...
Compiling library "NetworkClientSecure"
/Users/lucas/Library/Arduino15/packages/esp32/tools/esp-x32/2411/bin/xtensa-esp32-elf-g++ -MMD -c @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/cpp_flags -w -Os -Werror=return-type -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DARDUINO_PARTITION_huge_app "-DARDUINO_HOST_OS=\"macosx\"" "-DARDUINO_FQBN=\"esp32:esp32:esp32cam:CPUFreq=240,FlashFreq=80,FlashMode=qio,PartitionScheme=huge_app,DebugLevel=none,EraseFlash=none\"" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/defines -I/Users/lucas/arduino/greenhouse/esp32-cam -iprefix /Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/include/ @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/includes -I/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/qio_qspi/include -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/cores/esp32 -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/variants/esp32 -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/Network/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/HTTPClient/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/WiFi/src @/Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/build_opt.h @/Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/file_opts /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp -o /Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/libraries/NetworkClientSecure/NetworkClientSecure.cpp.o
/Users/lucas/Library/Arduino15/packages/esp32/tools/esp-x32/2411/bin/xtensa-esp32-elf-g++ -MMD -c @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/cpp_flags -w -Os -Werror=return-type -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DARDUINO_PARTITION_huge_app "-DARDUINO_HOST_OS=\"macosx\"" "-DARDUINO_FQBN=\"esp32:esp32:esp32cam:CPUFreq=240,FlashFreq=80,FlashMode=qio,PartitionScheme=huge_app,DebugLevel=none,EraseFlash=none\"" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/defines -I/Users/lucas/arduino/greenhouse/esp32-cam -iprefix /Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/include/ @/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/flags/includes -I/Users/lucas/Library/Arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.4-2f7dcd86-v1/esp32/qio_qspi/include -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/cores/esp32 -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/variants/esp32 -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/Network/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/HTTPClient/src -I/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/WiFi/src @/Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/build_opt.h @/Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/file_opts /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src/ssl_client.cpp -o /Users/lucas/Library/Caches/arduino/sketches/465026865CBDCA2F4E8AC5E1D7208529/libraries/NetworkClientSecure/ssl_client.cpp.o
In file included from /Users/lucas/arduino/greenhouse/esp32-cam/google_photos.h:4,
from /Users/lucas/arduino/greenhouse/esp32-cam/camera.h:6,
from /Users/lucas/arduino/greenhouse/esp32-cam/Server.h:5,
from /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/Network/src/NetworkServer.h:22,
from /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/Network/src/Network.h:13,
from /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src/NetworkClientSecure.h:25,
from /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:21:
/Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure/src/WiFiClientSecure.h:3:9: error: 'NetworkClientSecure' does not name a type; did you mean 'NetworkClientSecure_h'?
3 | typedef NetworkClientSecure WiFiClientSecure;
| ^~~~~~~~~~~~~~~~~~~
| NetworkClientSecure_h
Multiple libraries were found for "WiFi.h"
Used: /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/WiFi
Not used: /Users/lucas/Documents/Arduino/libraries/WiFiNINA
Using library NetworkClientSecure at version 3.2.0 in folder: /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/NetworkClientSecure
Using library Networking at version 3.2.0 in folder: /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/Network
Using library HTTPClient at version 3.2.0 in folder: /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/HTTPClient
Using library WiFi at version 3.2.0 in folder: /Users/lucas/Library/Arduino15/packages/esp32/hardware/esp32/3.2.0/libraries/WiFi
exit status 1
Here is my code:
// server.h
#ifndef SERVER_H
#define SERVER_H
#include "esp_http_server.h"
#include "camera.h"
#include "logging.h"
void start_server();
#endif
// camera.h
#ifndef CAMERA_H
#define CAMERA_H
#include "esp_camera.h"
#include "logging.h"
#include "google_photos.h"
esp_err_t camera_init();
void dailyCapture();
#endif
// google_photos.h
#ifndef GOOGLE_PHOTOS_H
#define GOOGLE_PHOTOS_H
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include "logging.h"
String getGoogleAccessToken();
bool uploadToGooglePhotos(camera_fb_t *fb, const String &filename);
bool createGooglePhotosMediaItem(const String &accessToken, const String &uploadToken, const String &filename);
#endif
// esp32-cam.ino
#include "camera.h"
#include "server.h"
#include "google_photos.h"
#include "wifi_setup.h"
#include "time_sync.h"
const int captureHour = 6; // Hour when daily capture occurs
const int captureMinute = 0; // Minute when daily capture occurs
int lastCaptureDay = -1; // To ensure one capture per day
void setup() {
Serial.begin(115200);
log("Serial started");
// Connect to WiFi
connectToWiFi("QF-Dachman", "Goldfish1");
// Synchronize time using NTP
synchronizeTime();
// Initialize the camera
if (camera_init() != ESP_OK) {
log("Camera init failed. Halting.");
while (true) {
delay(1000);
}
}
// Start the HTTP server
start_server();
}
void loop() {
// Check current time every second for daily capture
struct tm timeinfo;
if (getLocalTime(&timeinfo)) {
if (timeinfo.tm_hour == captureHour && timeinfo.tm_min == captureMinute && (lastCaptureDay != timeinfo.tm_mday)) {
dailyCapture();
lastCaptureDay = timeinfo.tm_mday; // Mark capture done for today
}
} else {
log("Failed to get local time");
}
delay(1000); // Check once every second
}