Giter VIP home page Giter VIP logo

s60sc / esp32-cam_mjpeg2sd Goto Github PK

View Code? Open in Web Editor NEW
751.0 40.0 186.0 8.96 MB

ESP32 Camera motion capture application to record JPEGs to SD card as AVI files and stream to browser as MJPEG. If a microphone is installed then a WAV file is also created. Files can be uploaded via FTP or downloaded to browser.

License: GNU General Public License v3.0

C++ 68.40% C 5.45% HTML 19.09% JavaScript 7.06%
esp32-cam sd-card mjpeg video-processing ov2640 esp32 motion-capture microphone avi wav

esp32-cam_mjpeg2sd's Introduction

ESP32-CAM_MJPEG2SD

Application for ESP32 / ESP32S3 with OV2640 / OV5640 camera to record JPEGs to SD card as AVI files and playback to browser as an MJPEG stream. The AVI format allows recordings to replay at correct frame rate on media players. If a microphone is installed then a WAV file is also created and stored in the AVI file.
The application supports:

The ESP32 cannot support all of the features as it will run out of heap space. For better functionality and performance, use one of the new ESP32S3 camera boards, eg Freenove ESP32S3 Cam, ESP32S3 XIAO Sense.

This is a complex app and some users are raising issues when the app reports an warning, but this is the app notifying the user that there is an problem with their setup, which only the user can fix. Be aware that some clone boards have different specs to the original, eg PSRAM size. Please only raise issues for actual bugs (ERR messages, unhandled library error or crash), or to suggest an improvement or enhancement. Thanks.

Changes in version 9.7:

  • WebDAV server to enable access to SD card content from client, eg Windows file explorer

Purpose

The application enables video capture of motion detection or timelapse recording. Examples include security cameras, wildlife monitoring, rocket flight monitoring, FPV vehicle control. This instructable by Max Imagination shows how to build a WiFi Security Camera using an earlier version of this code, plus a later video on how to install and use the app.

Saving a set of JPEGs as a single file is faster than as individual files and is easier to manage, particularly for small image sizes. Actual rate depends on quality and size of SD card and complexity and quality of images. A no-name 4GB SDHC labelled as Class 6 was 3 times slower than a genuine Sandisk 4GB SDHC Class 2. The following recording rates were achieved on a freshly formatted Sandisk 4GB SDHC Class 2 on a AI Thinker OV2640 board, set to maximum JPEG quality and highest clock rate.

Frame Size OV2640 camera max fps mjpeg2sd max fps Detection time ms
96X96 50 45 15
QQVGA 50 45 20
QCIF 50 45 30
HQVGA 50 45 40
240X240 50 45 55
QVGA 50 40 70
CIF 50 40 110
HVGA 50 40 130
VGA 25 20 80
SVGA 25 20 120
XGA 12.5 5 180
HD 12.5 5 220
SXGA 12.5 5 300
UXGA 12.5 5 450

The ESP32S3 (using Freenove ESP32S3 Cam board hosting ESP32S3 N8R8 module) runs the app about double the speed of the ESP32 mainly due to much faster PSRAM. It can record at the maximum OV2640 frame rates including audio for all frame sizes except UXGA (max 10fps).

Design

The application was originally based on the Arduino CameraWebServer example but is now independently coded, including contributions made by @gemi254.

The ESP32 Cam module has 4MB of PSRAM (8MB on ESP32S3) which is used to buffer the camera frames and the construction of the AVI file to minimise the number of SD file writes, and optimise the writes by aligning them with the SD card sector size. For playback the AVI is read from SD into a multiple sector sized buffer, and sent to the browser as timed individual frames. The SD card is used in MMC 1 line mode, as this is practically as fast as MMC 4 line mode and frees up pin 4 (connected to onboard Lamp), and pin 12 which can be used for eg a PIR.

The AVI files are named using a date time format YYYYMMDD_HHMMSS with added frame size, FPS recording rate, duration in secs, eg 20200130_201015_VGA_15_60.avi, and stored in a per day folder YYYYMMDD. If audio is included the filename ends with _S. If telemetry is available the filename ends with _M.
The ESP32 time is set from an NTP server or connected browser client.

Installation

Download github files into the Arduino IDE sketch folder, removing -master from the application folder name. Select the required ESP-CAM board using CAMERA_MODEL_ in appGlobals.h unless using the one of the defaults:

  • ESP32 Cam board - CAMERA_MODEL_AI_THINKER
  • Freenove ESP32S3 Cam board - CAMERA_MODEL_ESP32S3_EYE

Select the ESP32 or ESP32S3 Dev Module board and compile with PSRAM enabled and the following Partition scheme:

  • ESP32 - Minimal SPIFFS (...)
  • ESP32S3 - 8M with spiffs (...)

NOTE: If you get compilation errors you need to update your arduino-esp32 core library in the IDE to latest v2.0.14 (but not yet v3.0) using Boards Manager

NOTE: If you get error: Startup Failure: Check SD card inserted, or Camera init error 0x105 it is usually a camera board selection issue

NOTE: If you get error: Camera init error 0xffffffff, it is due to some cam boards being sold with only 2MB PSRAM which is insufficient for this app. Warning added to v9.6.

On first installation, the application will start in wifi AP mode - connect to SSID: ESP-CAM_MJPEG_..., to allow router and password details to be entered via the web page on 192.168.4.1. The configuration data file (except passwords) is automatically created, and the application web pages automatically downloaded from GitHub to the SD card /data folder when an internet connection is available.

Subsequent updates to the application, or to the /data folder files, can be made using the OTA Upload tab. The /data folder can also be reloaded from GitHub using the Reload /data button on the Edit Config tab, or by using a WebDAV client.

An alternative installation process by @ldijkman is described here.

Browser functions only tested on Chrome.

Main Function

A recording is generated either by the camera itself detecting motion, or by holding a given pin high (kept low by internal pulldown when released), eg by using an active high motion sensor such as PIR or RCWL-0516 microwave radar. In addition a recording can be requested manually using the Start Recording button on the web page.

To play back a recording, select the file using Playback & File Transfers sidebar button to select the day folder then the required AVI file. After selecting the AVI file, press Start Playback button to playback the recording. The Start Stream button shows a live video only feed from the camera.

Recordings can then be uploaded to an FTP or HTTPS server or downloaded to the browser for playback on a media application, eg VLC.

A time lapse feature is also available which can run in parallel with motion capture. Time lapse files have the format 20200130_201015_VGA_15_60_T.avi

Other Functions and Configuration

The operation of the application can be modified dynamically as below, by using the main web page, which should mostly be self explanatory.

Connections:

  • The FTP / HTTPS, Wifi, SMTP, and time zone parameters can be defined in Access Settings sidebar button.
    • for Time Zone use dropdown, or paste in values from second column here
  • To make the changes persistent, press the Save button
  • mdns name services in order to use http://[Host Name] instead of ip address.

To change the recording parameters:

  • Resolution is the pixel size of each frame
  • Frame Rate is the required frames per second
  • Quality is the level of JPEG compression which affects image size.

SD storage management:

  • Folders or files within folders can be deleted by selecting the required file or folder from the drop down list then pressing the Delete button and confirming.
  • Folders or files within folders can be uploaded to a remote server via FTP / HTTPS by selecting the required file or folder from the drop down list then pressing the File Upload button. Can be uploaded in AVI format.
  • Download selected AVI file from SD card to browser using Download button.
  • Delete, or upload and delete oldest folder when card free space is running out.

View application log via web page, displayed using Show Log tab:

  • Select log type for display:
    • RTC RAM: Cyclic 7KB log saved in RTC RAM (default)
    • Websocket: log is dynamically output via websocket
    • SD card: Unlimited size log saved to SD card
  • Use slider to enable SD logging, but can slow recording rate
  • Use buttons to refresh or clear selected log

Configuration Web Page

More configuration details accessed via Edit Config tab, which displays further buttons:

Wifi: Additional WiFi and webserver settings.

Motion: See Motion detection by Camera section.

Peripherals eg:

  • Select if a PIR or radar sensor is to be used (which can also be used in parallel with camera motion detection).
  • Auto switch the lamp on for nightime PIR detection.
  • Control pan / tilt cradle for camera.
  • Connect a PDM or I2S microphone.
  • Connect a DS18B20 temperature sensor.
  • Monitor voltage of battery supply on ADC pin.
  • Wakeup on LDR after deep sleep at night.

Note that there are not enough free pins on the ESP32 camera module to allow all external sensors to be used. Pins that can be used (with some limitations) are: 3, 4, 12, 13, 33.

  • pin 3: Labelled U0R. Only use as input pin, as also used for flashing.
  • pin 4: Also used for onboard lamp. Lamp can be disabled by removing its current limiting resistor.
  • pin 12: Only use as output pin.
  • pin 13: Is weakly pulled high.
  • pin 33: Used by onboard red LED. Not broken out, but can repurpose the otherwise pointless VCC pin by removing its adjacent resistor marked 3V3, and the red LED current limiting resistor, then running a wire between the VCC pin and the red LED resistor solder tab.

Can also use the ESP32-IO_Extender repository.

The ESP32S3 Freenove board can support all of the above peripherals with its spare pins.
The ESP32S3 XIAO Sense board has fewer free pins but more than the ESP32.

On-board LEDs:

  • ESP32: Lamp 4, signal 33.
  • ESP32S3:
    • Freenove: Lamp 48, signal 2.
    • XIAO: Lamp n/a, signal 21.

Other: SD, email, telegram, etc management.

When a feature is enable or disabled, the Save button should be used to persist the change, and the ESP should be rebooted using Reboot ESP button.

Motion detection by Camera

An AVI recording can be generated by the camera itself detecting motion using the motionDetect.cpp file.
JPEG images of any size are retrieved from the camera and 1 in N images are sampled on the fly for movement by decoding them to very small grayscale bitmap images which are compared to the previous sample. The small sizes provide smoothing to remove artefacts and reduce processing time.

For movement detection a high sample rate of 1 in 2 is used. When movement has been detected, the rate for checking for movement stop is reduced to 1 in 10 so that the JPEGs can be captured with only a small overhead. The Detection time ms table shows typical time in millis to decode and analyse a frame retrieved from the OV2640 camera.

Motion detection by camera is enabled by default, to disable click off Enable motion detect in Motion Detect & Recording sidebar button.

Additional options are provided on the camera index page, where:

  • Motion Sensitivity sets a threshold for movement detection, higher is more sensitive.
  • Show Motion if enabled and the Start Stream button pressed, shows images of how movement is detected for calibration purposes. Grayscale images are displayed with red pixels showing movement.
  • Min Frames is the minimum number of frames to be captured or the file is deleted.

Audio Recording

An I2S microphone eg INMP441 is supported by both ESP32 and ESP32S3. A PDM microphone eg MP34DT01 is only supported on ESP32S3. Audio recording works fine on ESP32S3 but is not viable on ESP32 as it significantly slows down the frame rate.

The audio is formatted as 16 bit single channel PCM with sample rate of 16kHz. An I2S microphone needs 3 free pins, a PDM microphone needs 2 free pins (the I2S SCK pin must be set to -1). Pin values (predefined for XIAO Sense) and Use microphone selector are set under Peripherals button on the configuration web page.

The web page has a slider for Microphone Gain. The higher the value the higher the gain. Selecting 0 cancels the microphone.

OV5640

The OV5640 pinout is compatible with boards designed for the OV2640 but the voltage supply is too high for the internal 1.5V regulator, so the camera overheats unless a heat sink is applied.

For recording purposes the OV5640 should only be used with an ESP32S3 board. Motion detection above FHD framesize does not work due to esp_jpg_decode() decompression error.

Recordable frame rates for the OV5460 highest framesizes on an ESP32S3 are:

Frame Size FPS
QXSGA 4
WQXGA 5
QXGA 5
QHD 6
FHD 6
P_FHD 6

The OV3660 has not been tested.

MQTT

To enable MQTT, under Edit Config -> Others tab, enter fields:

  • Mqtt server ip to connect
  • Mqtt topic path prefix
  • optionally Mqtt user name and Mqtt user password
  • Then set Mqtt enabled

Mqtt will auto connect if configuration is not blank on ping success.

It will send messages e.g. Record On/Off Motion On/Off to the mqtt broker on channel /status.
topic: homeassistant/sensor/ESP-CAM_MJPEG_904CAAF23A08/status -> {"MOTION":"ON", "TIME":"10:07:47.560"}

You can also publish control commands to the /cmd channel in order to control camera.
topic: homeassistant/sensor/ESP-CAM_MJPEG_904CAAF23A08/cmd -> dbgVerbose=1;framesize=7;fps=1

Port Forwarding

To access the app remotely over the internet, set up port forwarding on your router for browser on HTTP port, eg:

image2

On remote device, enter url: your_router_external_ip:10880
To obtain your_router_external_ip value, use eg: https://api.ipify.org
Set a static IP address for your ESP camera device.
For security, Authentication settings should be defined in Access Settings sidebar button.

Telemetry Recording

This feature is better used on an ESP32S3 camera board due to performance and memory limitations on ESP32.

Telemetry such as environmental and motion data (eg from BMP280 and MPU9250 on GY-91 board) can be captured during a camera recording. It is stored in a separate CSV file for presentation in a spreadsheet. The CSV file is named after the corresponding AVI file. A subtitle (SRT) file is also created named after the corresponding AVI file. The CSV and SRT files are uploaded or deleted along with the corresponding AVI file. For downloading, the AVI, CSV and SRT files are bundled into a zip file. If the SRT file is in the same folder as the AVI file, telemetry data subtitles will be displayed by a media player.

The user needs to add the code for the required sensors to the file telemetry.cpp. Contains simple example for the GY-91 board.

To switch on telemetry recording, select the Use telemetry recording option bunder the Peripherals button. The frequency of data collection is set by Telemetry collection interval (secs).

Note: esp-camera library conflict if use Adafruit sensor library.

Telegram Bot

Only enable either Telegram or SMTP email.
Use IDBot to obtain your Chat ID.
Use BotFather to create a Telegram Bot and obtain the Bot Token.
In Edit Config page under Other tab, paste in Telegram chat identifier and Telegram Bot token and select Use Telegram Bot.
You may want to make the bot private.
Note that this feature uses a lot of heap space due to TLS.

The Telegram Bot will now receive motion alerts from the app showing a frame from the recording with a caption containing a command link for the associated recording (max 50MB) which can be downloaded and played.

Remote Control

Provides for remote control of device on which camera is mounted, e.g RC vehicle for FPV etc.
Best used with ESP32-S3 for frame rate and control responsiveness.

To enable, in Edit Config page under Peripherals, select Enable remote control.
This will show an extra config button RC Config.
Pressing the RC Config button will allow pins to be defined for:

  • SG90 type steering servo
  • H-bridge motor control (tested with MX1508)
  • On / off lights
  • Further parameters for vehicle control.

The streaming view will now have a red button in the top left. Press this to show / hide overlaid steering and motor controls. Camera view buttons can be used to change to full screen. Tethered vehicles can also be controlled via a HW-504 type joystick. Camera view (and microphone and telemetry if enabled) can be recorded.
Motion detection should be disabled beforehand.

Only use this feature if you are familiar with coding and electronics, and can fix issues yourself

Machine Learning

Machine Learning AI can be used to further discriminate whether to save a recording when motion detection has occurred by classsifying whether the object in the frame is of interest, eg a human, type of animal, vehicle etc.

Only feasible on ESP32S3 due to memory use and built in AI Acceleration support.

Only use this feature if you are familiar with Machine Learning

The interface is designed to work with user models packaged as Arduino libraries by the Edge Impulse AI platform. More details in motionDetect.cpp.
Use 96x96 grayscale or RGB images and train the model with for example the following Transfer learning Neural Network settings:

Camera Hub

This tab enables the web interfaces of other ESP32-CAM_MJPEG2SD camera devices to be accessed. To show this tab, in Edit Config page under Other, select Show Camera Hub tab.

In the tab, enter IP address of another camera and press Add IP button, a screen showing an image from the camera is displayed with its IP address overlayed. Repeat for each camera to be monitored. Click on an image to open the web page for that camera.

Press X icon on image to remove that IP address. Press Delete All button to remove all IP addresses. Press Refresh button to update each screen with the latest image from that camera.

The IP addresses are stored in the browser local storage, not the app itself.

Stream to NVR

This feature is better used on an ESP32S3 camera board due to performance and memory limitations on ESP32.

Streams separate from the web browser are available for capture by a remote NVR. To enable these streams, under Edit Config -> Motion tab, select:

  • Enable Video stream on /sustain?video=1 for MJPEG stream
  • Enable Audio stream on /sustain?audio=1 for WAV stream (need to setup microphone beforehand).
  • Enable Subtitle stream on /sustain?srt=1 for SRT stream (need to setup telemetry beforehand, otherwise just a timestamp will be output).

Then save and reboot.

If multiple streams are enabled they need to be processed by an intermediate tool for synchronisation, eg go2rtc (but which does not handle subtitles yet?). See ESP32-CAM_Audio for go2rtc configuration examples. If a recording occurs during streaming it will take priority and the streams may stutter.

WebDAV

A simple WebDAV server is included. A WebDAV client such as Windows file explorer can be used to access and manage the SD card content. In a folder's address bar enter <ip_address>/webdav, eg 192.168.1.132/webdav
For Android, MacOS, Linux see webDav.cpp file.

esp32-cam_mjpeg2sd's People

Contributors

gemi254 avatar rjsachse avatar s60sc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32-cam_mjpeg2sd's Issues

on board lamp (power-LED) is always on

Hi ,after flashing the new release my problem is, that now the installed Lamp always is on. I can not swith it out. I do not use a microphon.
Can You help me agin ?
Best regards
Burkhard

Correct RAMSIZE for 16gb SD card

Hey first of all amazing job man ! Your work can actually be used as a CCTV camera or a portable handheld camera by people .

Coming to the question i am using a 16GB microsd card so what will be the correct RAMSIZE value for it ?

showing battery level?

Hello s60sc,

first of all I want to tell you that this is a fantastic work. Thank you very much for it.
I am running an ESP32 cam with a battery, Is it possible to show the battery level on the website?

Can not connect to SSID with spaces

Hello s60sc, first of all thank you very much for publishing your program code, it is exactly what I was looking for, I especially like the possibility to delete files on the SD card. Unfortunately I am not a programmer and have only very limited knowledge. But anyway, the installation of the code is successful and I can connect to the camera in AP mode. But if I enter my SSID either in the code (myConfig) or under 192.168.4.1 there is no connection to the router. I get in the monitor of the IDE the info "connectet to 0.0.0.0 . Then I found out that it works without spaces in my SSID.
Can you give me a hint what I am doing wrong.
Best regards
Burkhard

FTP server Upload

I can't upload file on ftp server. I keep receiving this error: Error opening ftp connection to ftp://192.168.36.137/:21.
I don't know if I'm doing something wrong. Could you help me please?

Feature Request: Rotate image 90 degrees

This is the only code for the ESP-Cam that I've been able to find that works correctly and doesn't have a huge lag. Well done sir!

It has a ton of features and settings, but there is one that I need that is not there - the ability to rotate the image. The case I am using for my ESP32-cam is oriented horizontally, so that's a problem for me using this code. Would it be too much to ask for a way to rotate the image by 90 degrees? Alternatively, if you point me to the best place to add it in the code I could give it a go myself.
Thanks!

uploading error

when i try to upload the code it gives me that error---------'class fs::File' has no member named 'path'------

The lamp does not light in Night Time mode.

Thank you for a great project. I am a beginner and I try to try all the features of the camera. If I understood correctly, in Night Time and Motion Capture mode, the lamp will light up when there is motion. I use a PIR sensor that responds to movement and recording is activated but without the lamp on. When manually on / off the lamp works properly. Is there anything else to set?
Thanks Palo.

Creating MJPEG from existing JPG files

Just discovered your project through the github suggestion panel and it looks great !

Looking at the code I was wondering how to use it as a basis to mjpeg-encode compressed images that aren't originated from an OVxxxx camera e.g. from a tft.readRect + bodmer's JpegEncoder or from normalized jpeg files found on the SD Card.

I'm also thinking about chaining this to the imgur uploader since the mjpeg format is supported by the imgur platform.

The reason why I'm investigating this is to produce mjpeg version of tft screen capture on ESP32 such as the one you can see on this project page, so it can spare the hassle of building the GIF manually.

Please let me know whether you'd like to inherit of those changes (and I'll make a fork + PR) or if it's okay with me creating a new repo (obviously with credits to your project in the readme).

camera web control

Hi,
Just a quick question. Is there a way to control the parameters externally when running. I'd like to turn motion detection on and off from Home Assistant
Regards
Craig

WiFi kill-switch via physical button/toggle switch ?

Hello,

I love your project! Been using it since August last year on 4 boards for simple home security and it's great.

I have a question - in one case one of my boards causes interference on my TV (aerial DVB-T) and I'd like to add a switch to simply turn the WiFi off when watching TV and then back on to review the recordings.

I know I could use pin 12 for the switch.
So far I was able to call WiFi.disconnect() and WiFi.mode(WIFI_OFF);, the interference stopped. When I turned WiFI back on, it seems it did not record anything.

Is there an easy way to do this properly?

is it possible to delete a complete directory file, e.g. a day, from the SD Card

This is not an error message, just a question: If you want to delete a complete directory (e.g. a day) from the SD card, this does not work. You first have to delete the contents of the directory file by file and then you can delete the entire directory.
This is of course very complicated. Is there another solution? Format the SD card, for example?
Many greetings
Burkhard

using pin 12 for recording - one question

Hallo, I like to use a PIR on the pin 12 to detect motion and start recording like in the instructions written down:

An MJPEG recording is generated by holding a given pin high (kept low by internal pulldown when released).
The pin to use is:

pin 12 when in 1 line mode
pin 33 when in 4 line mode

When I connect a PIR sensor to the pin 12 nothing is happen. Only the motion detection by camera works.
Question: is there any command in the sketch , e.g. "false" or "thrue" which I must change that the camera detect the PIR signal or works it in parallel , PIR and Motion Detection by camera ?
Best Regards
Burkhard

assert failed: tcpip_send_msg_wait_sem IDF/components/lwip/lwip/src/api/tcpip.c:455 (Invalid mbox)

After loading, this code seems to work great! But after running the camera continually from an external wall wart for several hours (maybe a day even), it stops responding to web requests. Connecting it to my laptop and running the serial monitor shows this error:

[00:06:15.189 setup] =============== Starting ===============
[00:06:15.235 prepSD_MMC] SD ready in 1-line mode 
[00:06:15.236 infoSD] SD card type SDHC, Size: 29818MB, Used space: 801MB, Total space: 29809MB
[00:06:15.437 setup] Camera init OK
[00:06:15.485 loadConfig] Loading config..
E (1174) cam_hal: EV-EOF-OVF
[00:06:15.488 loadConfig] Loaded ssid: tinyhouse pass: buteomontHill
[00:06:15.491 remote_log_init] Enabling logging mode 2

assert failed: tcpip_send_msg_wait_sem IDF/components/lwip/lwip/src/api/tcpip.c:455 (Invalid mbox)


Backtrace:0x40083ca9:0x3ffb24a00x400905cd:0x3ffb24c0 0x4009658d:0x3ffb24e0 0x40103ea9:0x3ffb2610 0x40116c91:0x3ffb2640 0x40116cf1:0x3ffb2660 0x4010365d:0x3ffb26b0 0x400e309e:0x3ffb26d0 0x400e3732:0x3ffb2700 0x400d35eb:0x3ffb2760 0x400ec876:0x3ffb2820 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1324
ho 0 tail 12 room 4
load:0x40078000,len:13508
load:0x40080400,len:3604
entry 0x400805f0

The ESP32 will reboot over and over, repeating this error.
Reloading the code to the ESP32 will not fix the problem. The only way I have found to fix it is to completely erase the ESP32 and reload the code. In that case it will run fine for a while until the problem occurs again and I must erase and reload it again to get it to work.
It is possible that a glitch in my home router's wifi is triggering this scenario. From my web searches, others that have experienced similar problems claim to fix it by properly initializing the wifi on the ESP32 at startup, but I have not been able to find any details on how to do this.

Thanks!

Frame rate change do not apply

The frame rate change is not applied cause hardcoded in mjpeg2sd.cpp frameData[]

extern const frameStruct frameData[] = { {"96X96", 96, 96, 30, 1, 1}, {"QQVGA", 160, 120, 30, 1, 1}, {"QCIF", 176, 144, 30, 1, 1}, {"HQVGA", 240, 176, 30, 2, 1}, {"240X240", 240, 240, 30, 2, 1}, {"QVGA", 320, 240, 30, 2, 1}, {"CIF", 400, 296, 30, 2, 1}, {"HVGA", 480, 320, 30, 2, 1}, {"VGA", 640, 480, 20, 3, 1}, {"SVGA", 800, 600, 20, 3, 1}, {"XGA", 1024, 768, 5, 3, 1}, {"HD", 1280, 720, 5, 3, 1}, {"SXGA", 1280, 1024, 5, 3, 1}, {"UXGA", 1600, 1200, 5, 3, 1} };

As example, it's not possible to set HQVGA with 10 fps.
Regards

OV7725 support

Would it be possible to edit the code so it converts cameras which do not support JPEG? The OV7725 does not support JPEG but is very sensitive to infra-red light. Could you undertake a conversion to JPEG before the frames are used for the web stream and the MJPEGs?

A finally AVI file into SD card

Hi
I'm wondering if it is possible to merge the MJPEG file and WAV file and put them together into the SD card and not into the ftp server?

Unable to turn off motion detect

It appears with todays build there is an issue (not sure if new) where the switch to turn off motion capture operates, but does not actually turn off motion capture.
Tested in Chrome and Safari

screen.ESP32CAM.480.mov

esp32CAM log.txt
.

Assigning Ip address

Hello sir,
This project is running very nice.
But I have two following questions:-

  1. When I am connecting with my wifi (Jio Fiber) for the first time it displays IP but after restart of the device, it gives another IP. So, I want static IP how can I do this in code??

  2. I want to see its output over the internet. So, I am using ngrok but it displays "headers are too long to handle" .
    How can I use it over the internet any suggestions or tools?

Please reply sir very important...
Thanks!

[00:00:11.112 WARN setup] Need PSRAM to be enabled

[00:00:11.112 WARN setup] Need PSRAM to be enabled
another problem here i have tried to make it with default sketch and also the tasmota sketch and it worked perfectly but for this one it shows this error idk why ?

GPIO33 is available?

Hello, first of thanks for this amazing project you pulled off!
From the schematic of the ESP32-Cam the GPIO33 only connects to an LED (the small one on the back of the board), so it is safe to use it for something else, right?
If it can be used it will be handy to control a fan based on the ESP32 temperature.

SD Card mount failed!

Hello
This project is really awesome.

But showing this issue...

E (902) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
E (00:00:23.605) mjped2sd: SD mount failed for 1-line mode
SD card initialization failed!!, Will restart after 10 secs
ets Jun 8 2016 00:22:57

Can you please help me to solve this issue??

Unable to Compile class fs:File has no member path

Hi

I'm trying to build the project, but get the following compiler errors:

D:\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void listDir(const char*, char*)':
mjpeg2sd.cpp:662:54: error: 'class fs::File' has no member named 'path'
sprintf(optionHtml, ""%s":"%s",", file.path(), file.name());
^
mjpeg2sd.cpp:677:62: error: 'class fs::File' has no member named 'path'
sprintf(optionHtml, ""%s":"%s %0.1fMB",", file.path(), file.name(), (float)file.size() / ONEMEG);

Is there a different version of the SD library I should be using rather than the built in one?

error during compiling

Hi, I'm trying to install the latest release and get this error information
Arduino: 1.8.12 (Mac OS X), Board: "AI Thinker ESP32-CAM"

sketch/app_httpd.cpp.o:(.literal._ZL14stream_handlerP9httpd_req+0x48): undefined reference to openSDfile()' sketch/app_httpd.cpp.o:(.literal._ZL14status_handlerP9httpd_req+0x118): undefined reference to readDStemp(bool)'
sketch/app_httpd.cpp.o: In function stream_handler(httpd_req*)': Mehrere Bibliotheken wurden fรผr "WiFi.h" gefunden Benutzt: /Users/marlisdrechsler/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/libraries/WiFi Nicht benutzt: /Applications/Arduino.app/Contents/Java/libraries/WiFi /Users/marlisdrechsler/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-80-g6c4433a-5.2.0/xtensa-esp32-elf/include/c++/5.2.0/bits/shared_ptr_base.h:127: undefined reference to openSDfile()'
sketch/app_httpd.cpp.o: In function status_handler(httpd_req*)': /Users/marlisdrechsler/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-80-g6c4433a-5.2.0/xtensa-esp32-elf/include/c++/5.2.0/bits/shared_ptr_base.h:127: undefined reference to readDStemp(bool)'
collect2: error: ld returned 1 exit status
exit status 1
Fehler beim Kompilieren fรผr das Board AI Thinker ESP32-CAM.

The older file is compiling without problems
Best regards
Burkhard

Heating & schematic

Sorry iam really beginner, can you help me and other beginners with drawing schemes for wiring (PIR & other sensor) in this sketch.

This is the best sketch I've ever tried, but I'm experiencing overheating with this sketch. especially in the orange & red part of the picture.

IMG_20210606_012655

can only the heatsink help to cooling down or need a fan? Its temperature reaches 80ยฐC in 20 minutes.
Did u have channel on yt for this project?
Maybe can help people like me learn more.

hope you can provide an answer.
Thank you very much

fixed IP-address not working

hi, I tried to use this project, put my credentials in myconfig.h.
Result: fixed IP-address is not taken into use, it takes it from DHCP.
Accepting that and use the camera for a while, it leaves the LAN sometimes after a few minutes but also after a few days of solid work.
My 2 questions are:

  1. Why does it not take the IP-address presenting in myconfig.h? (noted "192.168.1.246")
  2. Why does it goes of grid where I have taken spcial precautions to a good reception of Wifi?

Suggestion: small improvement on checkMotion

Hi,

I think if we change the if (changeCount> moveThreshold) code, in motionDetect.cpp-> checkMotion (), into the loop for (int i = 0; i <num_pixels; i ++) , the motion detection will be faster, in the cases where the changes are at the "beginning" of the frame, because it will not be necessary to go through the entire frame.

Thanks for sharing your work.

FTP Uploading only one file / doesn't upload complete folder

Hi,
when i try to ftp upload a whole folder with several files, only one file is uploaded.
This happens either when i upload or move.
When i move, the file is uploaded and deleted from sd as expected, but only one file.
When i move again, the next file is uploaded and deleted, but not all the files in the folder.

I will upload the log from serial monitor.

ERROR: pSRAM must be enabled

Does anyone know how to get around this error? I have tried two different boards "AI Thinker" Clones and both get this error. the pSRAM is on the devices. This looks like another Arduino IDK and Espressif esp32 board definition issue.

Camera init OK
SD ready in 1-line mode
SD card type SDHC, Size: 3796MB, Used space: 0MB, Total space: 3763MB
Loading config..
..
ERROR: pSRAM must be enabled
Unable to continue, SD card fail,

the board hangs on reboot and no wifi Router available!

Don't call me Mr Bug, but I like your scrip and I play with it a lot.
I discovered there is a situation the board don't start anymore.
If the board reboot and there is no router available, then the board starts the AP but never starts the server.
Because there are stored credentials, it create the keepWiFiAliveTask() and the task starts the AP and delete the task... but it never finish the setup :(
To replicate this, unplug the router and reboot the board...
I found a way to prevent this by adding some check before it starts the keepWiFiAliveTask() and starts the keepWiFiAliveTask only if connects to WiFi router.

bool startWifi() {
  WiFi.persistent(false); //prevent the flash storage WiFi credentials
  WiFi.setAutoReconnect(false); //Set whether module will attempt to reconnect to an access point in case it is disconnected
  WiFi.setAutoConnect(false);
  LOG_INF("Setting wifi hostname: %s", hostName);
  WiFi.setHostname(hostName);
  if (strlen(ST_SSID) > 0) { 
    LOG_INF("Got stored router credentials. Connecting to: %s", ST_SSID);
    if (strlen(ST_ip) > 1) {
      LOG_INF("Setting config static ip :%s, %s, %s, %s", ST_ip,ST_gw,ST_sn, ST_ns1);
      IPAddress _ip, _gw, _sn, _ns1, _ns2;
      _ip.fromString(ST_ip);
      _gw.fromString(ST_gw);
      _sn.fromString(ST_sn);
      _ns1.fromString(ST_ns1);
      _ns2.fromString(ST_ns2);
      //set static ip
      WiFi.config(_ip, _gw, _sn, _ns1); // need DNS for SNTP
    } else {LOG_INF("Getting ip from dhcp..");}
    WiFi.mode(WIFI_STA);
    
>    WiFi.begin(ST_SSID, ST_Pass);
>     unsigned long startAttemptTime = millis();
>     while (WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < WIFI_TIMEOUT_MS)  {
>       Serial.print(".");
>       delay(500);
>       Serial.flush();
>     }
> 
>     if (WiFi.status() == WL_CONNECTED) {
>       setupHost();
>       create_keepWiFiAliveTask();
>     } else {
>       LOG_INF("Can't connected to router. Starting Access point.");
>       // Start AP config portal
>       return setWifiAP();
>     }

  } else {
    LOG_INF("No stored Credentials. Starting Access point.");
    // Start AP config portal
    return setWifiAP();
  }
  return true;
}

and i moved #define WIFI_TIMEOUT_MS (30 * 1000) above the startWifi()
:) nice done, you implemented keepWiFiAliveTask() and made the code nicer.
Keep the good work.

SD delet

Hello, I implemented the project and was surprised how powerful the ESP32 cam is. I've been testing the application for a few days now and noticed that recording stops when the SD memory card is full. I had thought that when the memory capacity is reached, the oldest files will be overwritten. Can you tell me what is correct : 1. memory card full means end of recording until manual deletion.
OR
2. the memory card should be automatically overwritten when it is full.

I'am using the ESP32-cam motion variant
Best regards
Burkhard

compilation Error in Arduino ide

when i am trying to compile the code it is showing the error : 'esp_log_system_timestamp' was not declared in this scope

Arduino: 1.8.19 (Windows 10), Board: "AI Thinker ESP32-CAM, 240MHz (WiFi/BT), QIO, 80MHz"

Compiling sketch...

"C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/config" "-

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool sendFtpCommand(const char*, const char*, const char*)':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:33:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Sent cmd: %s%s", cmd, param);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:39:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Timed out waiting for client response");

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:50:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Rx code: %s, resp: %s", respCodeRx, rspBuf);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:54:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Command %s got wrong response: %s", cmd, rspBuf);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool ftpConnect()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:63:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("FTP connected at %s:%s", ftp_server, ftp_port);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:65:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Error opening ftp connection to %s:%s", ftp_server, ftp_port);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool createFtpFolder(const char*)':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:78:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Check for folder %s", folderName);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool openDataPort()':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:109:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Failed to parse data port");

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:115:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Data port: %i", dataPort);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:117:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Data connection failed");   

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool ftpStoreFile(fs::File&)':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:131:3: note: in expansion of macro 'LOG_INF'

LOG_INF("Upload file: %s, size: %0.1fMB", ftpSaveName, (float)(fileSize)/ONEMEG);

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp: In function 'bool isAVI(fs::File&)':

avi.cpp:146:28: error: 'class fs::File' has no member named 'path'

 audSize = soundFile(fh.path()); // get audio file size if present

                        ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:6:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'bool updateConfigMap(const char*, const char*)':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:42:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Key %s not found", variable);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ESP32-CAM_MJPEG2SD.ino:9:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ESP32-CAM_MJPEG2SD.ino: In function 'void setup()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ESP32-CAM_MJPEG2SD.ino:17:3: note: in expansion of macro 'LOG_INF'

LOG_INF("=============== Starting ===============");

^

mic.cpp:46:27: error: 'I2S_COMM_FORMAT_STAND_I2S' was not declared in this scope

.communication_format = I2S_COMM_FORMAT_STAND_I2S,

                       ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp:37:0:

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp:147:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Formatting as AVI %s", audSize ? " - with audio" : "");

 ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp:151:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Formatting as MJPEG");

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void controlFrameTimer(bool)':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:103:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("Frame timer interval %ums for FPS %u", frameInterval/10, FPS); 

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp: In function 'bool isNight(uint8_t)':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:44:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("Night time"); 

   ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

"C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/config" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/app_trace" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/app_update" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/asio" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/bootloader_support" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/bt" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/coap" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/console" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/efuse" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp-tls" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp32" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_adc_cal" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_event" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_http_client" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_http_server" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_https_ota" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_https_server" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_ringbuf" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp_websocket_client" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/espcoredump" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/ethernet" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/expat" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/fatfs" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/freemodbus" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/freertos" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/heap" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/idf_test" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/jsmn" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/json" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/libsodium" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/log" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/lwip" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/mbedtls" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/mdns" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/micro-ecc" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/mqtt" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/newlib" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/nghttp" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/nvs_flash" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/openssl" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/protobuf-c" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/protocomm" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/pthread" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/sdmmc" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/smartconfig_ack" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/soc" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/spi_flash" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/spiffs" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/tcp_transport" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/tcpip_adapter" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/ulp" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/unity" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/vfs" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/wear_levelling" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/wifi_provisioning" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/wpa_supplicant" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/xtensa-debug-module" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp-face" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp32-camera" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp-face" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -MMD -c -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD="ESP32_DEV"" "-DARDUINO_VARIANT="esp32"" -DESP32 -DCORE_DEBUG_LEVEL=0 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\variants\esp32" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\ESPmDNS\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Preferences\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD_MMC\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\FS\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SPIFFS\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Update\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WebServer\src" "-IC:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi\src" "C:\Users\Lenovo\AppData\Local\Temp\arduino_build_24916\sketch\uitilsSD.cpp" -o "C:\Users\Lenovo\AppData\Local\Temp\arduino_build_24916\sketch\uitilsSD.cpp.o"

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:51:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("Day time");

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ds18b20.cpp:14:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ds18b20.cpp: In function 'void tryDS18B20()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ds18b20.cpp:76:20: note: in expansion of macro 'LOG_INF'

if (DS18Bfound) {LOG_INF("DS18B20 available");}

                ^

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ds18b20.cpp:77:9: note: in expansion of macro 'LOG_WRN'

else {LOG_WRN("DS18B20 device not found");} // in case not working

     ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'void uploadFolderOrFileFtp()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:163:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("Root or null is not allowed %s", sdPathName);  

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:6:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'bool retrieveConfigMap(const char*, char*)':

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:53:3: note: in expansion of macro 'LOG_WRN'

LOG_WRN("Key %s not found", variable);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp:15:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp: In function 'void stopMic()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp:83:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Stopped I2S_NUM_1 port");

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void openMjpeg()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:122:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("File opening time: %ums", oTime);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp: In function 'bool checkMotion(camera_fb_t*, bool)':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:76:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("motionDetect: jpg2rgb() failed");

 ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:87:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("JPEG to greyscale conversion %u bytes in %lums", num_pixels, millis() - dTime);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:114:24: note: in expansion of macro 'LOG_ERR'

if (rgb_buf == NULL) LOG_ERR("Memory leak, heap now: %u, pSRAM now: %u", ESP.getFreeHeap(), ESP.getFreePsram());

                    ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:117:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Detected %u changes, threshold %u, light level %u, in %lums", changeCount, moveThreshold, lightLevel, millis() - dTime);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp:15:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp: In function 'void prepMic()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp:131:3: note: in expansion of macro 'LOG_INF'

LOG_INF("Sound recording is %s", USE_MIC ? "On" : "Off");

^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:121:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("### Change detected");

 ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:125:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("***** Motion - START");

   ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:135:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("***** Motion - STOP after %u frames", motionCnt);

   ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:140:21: note: in expansion of macro 'LOG_DBG'

if (motionStatus) LOG_DBG("*** Motion - ongoing %u frames", motionCnt);

                 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void timeLapse()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:164:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("Started time lapse file %s, interval %u, for %u frames", mjpegFileName, intervalMark, requiredFrames);

   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp: In function 'size_t readClientBuf(fs::File&, byte*, size_t)':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp:240:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Processed %d of %d frames", framePtr, frameCnt);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:146:7: note: in expansion of macro 'LOG_ERR'

   LOG_ERR("motionDetect: fmt2jpg() failed");

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:17:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp:154:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("Created changeMap JPEG %d bytes in %lums", jpg_len, millis() - dTime);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:183:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("Finished time lapse");

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:167:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Unable to make ftp connection");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'void loadKeyVal(std::__cxx11::string)':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:64:12: note: in expansion of macro 'LOG_ERR'

 } else LOG_ERR("Unable to parse <%s>, len %u", keyValPair.c_str(), keyValPair.length());

        ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp: In function 'void finishAudio(const char*, bool)':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mic.cpp:166:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("Captured %d audio samples with gain factor %i", totalSamples, gainFactor);

   ^

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:172:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Failed to open: %s", sdPathName);

 ^

ftp.cpp:178:28: error: 'class fs::File' has no member named 'path'

 if (getFolderName(root.path())) ftpStoreFile(root); 

                        ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void saveFrame()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:221:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("SD storage time %u ms", wTime);

^

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\avi.cpp:309:15: note: in expansion of macro 'LOG_ERR'

           LOG_ERR("AVI conversion failed on frame: %u", framePtr);

           ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:225:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("Frame processing time %u ms", fTime);

^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:5:0:

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:181:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Uploading folder: ", root.name()); 

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'bool closeMjpeg()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:232:3: note: in expansion of macro 'LOG_INF'

LOG_INF("Capture time %u, min seconds: %u ", captureTime, minSeconds);

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp: In function 'bool ftpFileOrFolder(const char*)':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\ftp.cpp:221:10: note: in expansion of macro 'LOG_ERR'

} else LOG_ERR("Unable to upload %s as another upload in progress", fileFolder);

      ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\motionDetect.cpp: In function 'bool jpg2rgb(const uint8_t*, size_t, uint8_t**, uint8_t)':

motionDetect.cpp:240:60: error: 'jpg_scale_t' was not declared in this scope

esp_err_t res = esp_jpg_decode(src_len, jpg_scale_t(scale), _jpg_read, _rgb_write, (void*)&jpeg);

                                                        ^

motionDetect.cpp:240:98: error: 'esp_jpg_decode' was not declared in this scope

esp_err_t res = esp_jpg_decode(src_len, jpg_scale_t(scale), _jpg_read, _rgb_write, (void*)&jpeg);

                                                                                              ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'void saveConfigMap()':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:79:14: note: in expansion of macro 'LOG_ERR'

if (!file) LOG_ERR("Failed to save to configs file");

          ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:88:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Config file saved");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'boolean processFrame()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:328:9: note: in expansion of macro 'LOG_INF'

     LOG_INF("Capture started by %s%s%s", captureMotion ? "Motion " : "", capturePIR ? "PIR" : "",forceRecord ? "Button" : "");

     ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:340:11: note: in expansion of macro 'LOG_INF'

       LOG_INF("Auto closed recording after %u frames", MAX_FRAMES);

       ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'bool savePrefs()':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:110:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Failed to save preferences");

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:350:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("============================");

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:353:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Failed to get frame");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'esp_err_t updateStatus(const char*, const char*)':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:164:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("%s motion detection", useMotion ? "Enabling" : "Disabling");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void openSDfile(const char*)':

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:437:5: note: in expansion of macro 'LOG_WRN'

 LOG_WRN("Playback refused - capture in progress");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp: In function 'bool loadConfig()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\prefs.cpp:295:3: note: in expansion of macro 'LOG_INF'

LOG_INF("Loading config..");

^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:441:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("Playing %s", mjpegFileName);

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void readSD()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:462:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("SD read time %lu ms", millis() - rTime);

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'size_t* getNextFrame()':

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:490:3: note: in expansion of macro 'LOG_DBG'

LOG_DBG("http send time %lu ms", millis() - hTime);

^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:497:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("SD wait time %lu ms", millis()-mTime);

   ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:501:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("memcpy took %lu ms for %u bytes", millis()-mTime, readLen);

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:509:7: note: in expansion of macro 'LOG_ERR'

   LOG_ERR("streamOffset %u + skipOver %u > buffLen %u", streamOffset, skipOver, buffLen);

   ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:516:7: note: in expansion of macro 'LOG_DBG'

   LOG_DBG("frame search time %lu ms", millis()-mTime);

   ^

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:523:9: note: in expansion of macro 'LOG_DBG'

     LOG_DBG("frame timer wait %lu ms", millis()-mTime);

     ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:9:0:

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:547:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("Force close playback");

   ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:551:7: note: in expansion of macro 'LOG_INF'

   LOG_INF("******** MJPEG playback stats ********");

   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void stopPlaying()':

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:584:7: note: in expansion of macro 'LOG_WRN'

   LOG_WRN("Force closed playback");

   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'bool prepMjpeg()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:618:3: note: in expansion of macro 'LOG_INF'

LOG_INF("To record new MJPEG, do one of:");

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp: In function 'void startSDtasks()':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\mjpeg2sd.cpp:630:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Insufficient memory to create playbackTask");

 ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'void infoSD()':

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:12:30: note: in expansion of macro 'LOG_WRN'

if (cardType == CARD_NONE) LOG_WRN("No SD card attached");

                          ^

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:23:5: note: in expansion of macro 'LOG_INF'

 LOG_INF("SD card type %s, Size: %lluMB, Used space: %lluMB, of total: %lluMB",

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'bool prepSD_MMC()':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:49:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("SD card mount failed");

 ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'void getOldestDir(char*)':

uitilsSD.cpp:58:36: error: 'class fs::File' has no member named 'path'

if (file) strcpy(oldestDir, file.path()); // initialise oldestDir

                                ^

uitilsSD.cpp:62:34: error: 'class fs::File' has no member named 'path'

   if (strcmp(oldestDir, file.path()) > 0) {

                              ^

uitilsSD.cpp:63:30: error: 'class fs::File' has no member named 'path'

   strcpy(oldestDir, file.path()); 

                          ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:5:0:

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'bool checkFreeSpace()':

myConfig.h:294:77: error: 'esp_log_system_timestamp' was not declared in this scope

#define INF_FORMAT(format) "[%s %s] " format "\n", esp_log_system_timestamp(), FUNCTION

                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:39: note: in expansion of macro 'INF_FORMAT'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:82:3: note: in expansion of macro 'LOG_INF'

LOG_INF("Card free space: %uMB", freeSize);

^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'bool listDir(const char*, char*, size_t, const char*)':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:114:16: note: in expansion of macro 'LOG_ERR'

 if (!root) LOG_ERR("Failed to open directory %s", fname);

            ^

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:115:30: note: in expansion of macro 'LOG_ERR'

 if (!root.isDirectory()) LOG_ERR("Not a directory %s", fname);

                          ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:5:0:

myConfig.h:300:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define DBG_FORMAT(format) LOG_COLOR_DBG "[%s DEBUG @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:301:55: note: in expansion of macro 'DBG_FORMAT'

#define LOG_DBG(format, ...) if (dbgVerbose) logPrint(DBG_FORMAT(format), ##VA_ARGS)

                                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:116:5: note: in expansion of macro 'LOG_DBG'

 LOG_DBG("Retrieving %s in %s", returnDirs ? "folders" : "files", fname);

 ^

uitilsSD.cpp:126:50: error: 'class fs::File' has no member named 'path'

     sprintf(partJson, "\"%s\":\"%s\",", file.path(), file.name());

                                              ^

uitilsSD.cpp:133:60: error: 'class fs::File' has no member named 'path'

       sprintf(partJson, "\"%s\":\"%s %0.1fMB\",", file.path(), file.name(), (float)file.size() / ONEMEG);

                                                        ^

In file included from C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:5:0:

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:149:9: note: in expansion of macro 'LOG_ERR'

     LOG_ERR("Too many folders/files to list %u+%u in %u bytes", strlen(jsonBuff), strlen(partJson), jsonBuffLen);

     ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp: In function 'void deleteFolderOrFile(const char*)':

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:163:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Failed to open %s", deleteThis);

 ^

myConfig.h:298:115: error: 'esp_log_system_timestamp' was not declared in this scope

#define ERR_FORMAT(format) LOG_COLOR_ERR "[%s ERROR @ %s:%u] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), pathToFileName(FILE), LINE

                                                                                                               ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:299:39: note: in expansion of macro 'ERR_FORMAT'

#define LOG_ERR(format, ...) logPrint(ERR_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:169:5: note: in expansion of macro 'LOG_ERR'

 LOG_ERR("Deletion of %s not permitted", deleteThis);

 ^

myConfig.h:296:109: error: 'esp_log_system_timestamp' was not declared in this scope

#define WRN_FORMAT(format) LOG_COLOR_WRN "[%s WARN %s] " format LOG_NO_COLOR "\n", esp_log_system_timestamp(), FUNCTION

                                                                                                         ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:297:39: note: in expansion of macro 'WRN_FORMAT'

#define LOG_WRN(format, ...) logPrint(WRN_FORMAT(format), ##VA_ARGS)

                                   ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\uitilsSD.cpp:172:3: note: in expansion of macro 'LOG_WRN'

LOG_WRN("Deleting : %s", deleteThis);

^

uitilsSD.cpp:178:58: error: 'class fs::File' has no member named 'path'

   if (file.isDirectory()) LOG_INF("  DIR : %s", file.path());

                                                      ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:61: note: in definition of macro 'LOG_INF'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                                         ^

uitilsSD.cpp:179:62: error: 'class fs::File' has no member named 'path'

   else LOG_INF("  FILE : %s SIZE : %uMB %sdeleted", file.path(), file.size() / ONEMEG, 

                                                          ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:61: note: in definition of macro 'LOG_INF'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                                         ^

uitilsSD.cpp:180:28: error: 'class fs::File' has no member named 'path'

     SD_MMC.remove(file.path()) ? "" : "not ");

                        ^

C:\Users\Lenovo\OneDrive\Documents\Arduino\ESP32-CAM_MJPEG2SD\myConfig.h:295:61: note: in definition of macro 'LOG_INF'

#define LOG_INF(format, ...) logPrint(INF_FORMAT(format), ##VA_ARGS)

                                                         ^

Multiple libraries were found for "WiFi.h"

Used: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi

Not used: C:\Program Files (x86)\Arduino\libraries\WiFi

Using library ESPmDNS at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\ESPmDNS

Using library Preferences at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Preferences

Using library SD_MMC at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD_MMC

Using library FS at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\FS

Using library SPIFFS at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SPIFFS

Using library Update at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Update

Using library WebServer at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WebServer

Using library WiFi at version 1.0 in folder: C:\Users\Lenovo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi

exit status 1

'esp_log_system_timestamp' was not declared in this scope

remove directory from sd-card

This is not an error message, just a question: If you want to delete a complete directory (e.g. a day) from the SD card, this does not work. You first have to delete the contents of the directory file by file and then you can delete the entire directory.
This is of course very complicated. Is there another solution? Format the SD card, for example?
Many greetings
Burkhard

Unprotected WIFI AP after Reboot

All works nice and well, thank you for this.
...but, there is a problem, after I set my SSID and PASSWORD for my wireless Network, I reboot the board and... there I see a new AP in my Network manager, an OPEN unprotected network, ESP_64XXXX, It's not the initial CAM_ + ESP_getChipId().

What should I do to have the AP protected?

video record without SD

hi, your project is very fantastic.
i'd like to start from your project for record a video without sd and sent it on a cloud. can you suggest me?

audio support?

Do you think it'd be feasible to add support for a microphone? Either externally connected or using one of the esp-cam like boards that contain onboard i2c microphones (TTGO ect)? I'm thinking about attempting this but I think it might be a bit above my technical ability. Would there be sufficient pins?
Thanks

USE_DS18B20 not working

Hello, I have been using your old SW for a while and it works very well. Thank you very much for sharing.
Now I wanted to compile V2.5 and I get this error when I comment "define USE_DS18B20". Without " define USE_DS18B20" everything is fine.

/Users/marlisdrechsler/Documents/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h:161:26: error: 'rtc_gpio_desc' was not declared in this scope
uint32_t rtc_reg(rtc_gpio_desc[pin].reg);
^~~~~~~~~~~~~
/Users/marlisdrechsler/Documents/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h:161:26: note: suggested alternative: 'rtc_io_desc'
uint32_t rtc_reg(rtc_gpio_desc[pin].reg);
^~~~~~~~~~~~~
rtc_io_desc
/Users/marlisdrechsler/Documents/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h: In function 'void directModeOutput(uint32_t)':
/Users/marlisdrechsler/Documents/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h:189:26: error: 'rtc_gpio_desc' was not declared in this scope
uint32_t rtc_reg(rtc_gpio_desc[pin].reg);
^~~~~~~~~~~~~
/Users/marlisdrechsler/Documents/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h:189:26: note: suggested alternative: 'rtc_io_desc'
uint32_t rtc_reg(rtc_gpio_desc[pin].reg);
^~~~~~~~~~~~~
rtc_io_desc
Compilation error: Error: 13 INTERNAL: exit status 1

Any Ideas ?
Best Regards
Burkhard

Will not compile

Hi
I came to this repository by way of the instructable by Max Imagination.
https://www.instructables.com/How-to-Make-a-WiFi-Security-Camera-ESP32-CAM-DIY-R/
The instructable was written December 28 last year and it seems you have changed a lot of the code since then, and I cannot get the code to compile using the Arduino IDE nor using VSCode with PlatformIO.

I am sure there will be other people who struggle which is a shame as the code appears to be well written and comprehensive.

I have attached the Arduino compiler output - any assistance would be appreciated

Regards,
Paul

compiler output.txt

Modifications to use Active-High PIR

Excellent program!

Here are the mods for an active high pir, for anyone using one of those.
Three small changes in mjpeg2sd.cpp file.

//jz pinMode(PIRpin, INPUT_PULLUP); // pulled high for inactive
pinMode(PIRpin, INPUT_PULLDOWN); // mod for active high pir
showInfo("To record new MJPEG, attach PIR to pin %u or simulate by powering pin %u", PIRpin, PIRpin);

//jz mjpegStatus = (digitalRead(PIRpin)) ? 0 : 2; // in case PIR off missed
mjpegStatus = (!digitalRead(PIRpin)) ? 0 : 2; // mod for active high pir

//jz mjpegStatus = !digitalRead(PIRpin);
mjpegStatus = digitalRead(PIRpin); // mod for active high pir

Get fps API

Hi, your project is very wonderful. So, I would like to view fps API by http_GET when I configured it in arduino code. Can you suggest me ? Thank you so much !

Offline operation

Hello,
Thanks for sharing this new firmware, it is really amazing.
Even the colors of the camera look better now, I have no clue why.

Could it be added an option on the code (or on the webserver) that would make the ESP32-Cam operate offline ?

Also, the code does not clean the SD card automatically, does it? Would you mind if I add that on a pull request? I'm just unsure where this verification should be triggered.

Since this isn't really an issue I'll close it as soon as anyone answers.

HTML fails to load

Using today's build (Feb 10 2022)
AP opens and I can connect. The video stream is available but no HTML at 192.168.4.1
Message from AP: File does not exist or cannot be opened

Can't connect Pin 12 PIR until after boot-up

Thanks for this great project! Use it to capture birds (using a PIR) in the garden and works a treat!
I was just wondering whether there is any code that could be added so that PIR can remain connected on Pin 12 at boot-up ?

Streaming fails when "show motion" is toggled and no movement occurs

I apologize if I'm overusing this issue facility, but I really like this software and want it to be successful!
There are actually a few (admittedly minor) issues that I'd like to see fixed:

  1. If the show motion switch is toggled on and then off, with no motion occurring in the FOV, then streaming stops and can't be restarted without rebooting the ESP32.
  2. It apparently is not possible to stream the video to multiple destinations. I realize we are resource-constrained here but it should be possible with a reduced frame rate. Trying to stream to multiple destinations, starting and stopping each, sometimes will hang the stream like in item #1 above.
  3. When Logging Mode is set to SD card log.txt the log file is erased when the ESP32 is rebooted. Perhaps it needs a "Clear Log File" option instead?
  4. The Verbose logging switch is not saved and maintained over reboots, but is turned off automatically on reboot.

Thanks again for the only decent software available for this camera!

Multiple definition errors in WiFi sections

I am getting the following errors when trying to compile with fresh install of Arduino 1.8.13 and

sketch\utils.cpp.o: In function ipToString(IPAddress)': C:\Users\lajac\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\FS\src/FS.h:47: multiple definition of ipToString(IPAddress)'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:sketch/myConfig.h:212: first defined here
sketch\utils.cpp.o: In function setWifiAP()': utils.cpp:(.text._Z9setWifiAPv+0x0): multiple definition of setWifiAP()'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:ESP32-CAM_MJPEG2SD.ino.cpp:(.text._Z9setWifiAPv+0x0): first defined here
sketch\utils.cpp.o: In function setupHost()': utils.cpp:(.text._Z9setupHostv+0x0): multiple definition of setupHost()'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:ESP32-CAM_MJPEG2SD.ino.cpp:(.text._Z9setupHostv+0x0): first defined here
sketch\utils.cpp.o:(.bss.tmReboot+0x0): multiple definition of tmReboot' sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:(.bss.tmReboot+0x0): first defined here sketch\utils.cpp.o:(.bss.tmConn+0x0): multiple definition of tmConn'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:(.bss.tmConn+0x0): first defined here
sketch\utils.cpp.o: In function checkConnection()': utils.cpp:(.text._Z15checkConnectionv+0x0): multiple definition of checkConnection()'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:ESP32-CAM_MJPEG2SD.ino.cpp:(.text._Z15checkConnectionv+0x0): first defined here
sketch\utils.cpp.o:(.bss.dnsAPServer+0x0): multiple definition of dnsAPServer' sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:(.bss.dnsAPServer+0x0): first defined here sketch\utils.cpp.o: In function startWifi()':
utils.cpp:(.text._Z9startWifiv+0x0): multiple definition of `startWifi()'
sketch\ESP32-CAM_MJPEG2SD.ino.cpp.o:ESP32-CAM_MJPEG2SD.ino.cpp:(.text._Z9startWifiv+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.