blynkkk / blynk-library

Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc.
https://blynk.io
MIT License
3.81k stars 1.38k forks source link

Blynk issue with ESP32CAM #537

Closed hms-11 closed 2 years ago

hms-11 commented 3 years ago

Blynk library version: 1.0.0 IDE: Arduino IDE version: 2.0 Beta 7 Board type: ESP32-CAM AI-THINKER Model Additional modules: N/A

Scenario, steps to reproduce

This problem has to failure modes, and two different ways to reproduce: 1) New Sketch - If you start with the BlynkEdgent example sketch, and include in the driver/header file for an ESP-32CAM using the Espressif provided driver (esp_camera.h) the sketch will fail to comply, with many errors (a sample is in "actual result").

2) If you attempt to adapt a previously working "Old" Blynk program to "New" Blynk by adding in the device template and device name, along with the appropriate authentication token the sketch will compile with no errors, the device will connect to wifi and the internet, but will not connect to the Blynk servers. If you go back to using "Old" Blynk auth token and remove the template and device defines, the program again works properly with the "Old" Blynk app.

Expected Result

Error 1) I feel there is a library conflict between something involving the new Blynk and the Espressif camera driver esp_camera.h (https://github.com/espressif/esp32-camera/blob/master/driver/include/esp_camera.h). The inclusion of this library causes the program to not compile.

Error 2) I expect it to connect to the Blynk servers as directed, again, it seems as if there is a conflict between something involving connecting to the new Blynk server when combined with esp_camera.h

Actual Result

Error 1) Compile errors, attached:

In file included from c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\BlynkEdgent.h:8:0,
                 from c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Edgent_ESP32.ino:16:
c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Settings.h:49:28: error: expected identifier before numeric constant
 #define LEDC_CHANNEL_1     1
                            ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:64:5: note: in expansion of macro 'LEDC_CHANNEL_1'
     LEDC_CHANNEL_1,     /*!< LEDC channel 1 */
     ^
c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Settings.h:49:28: error: expected '}' before numeric constant
 #define LEDC_CHANNEL_1     1
                            ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:64:5: note: in expansion of macro 'LEDC_CHANNEL_1'
     LEDC_CHANNEL_1,     /*!< LEDC channel 1 */
     ^
c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Settings.h:49:28: error: expected unqualified-id before numeric constant
 #define LEDC_CHANNEL_1     1
                            ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:64:5: note: in expansion of macro 'LEDC_CHANNEL_1'
     LEDC_CHANNEL_1,     /*!< LEDC channel 1 */
     ^
In file included from C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp32-camera/esp_camera.h:69:0,
                 from c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Edgent_ESP32.ino:17:
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:72:3: error: 'ledc_channel_t' does not name a type
 } ledc_channel_t;
   ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:110:5: error: 'ledc_channel_t' does not name a type
     ledc_channel_t channel;         /*!< LEDC channel (0 - 7) */
     ^
In file included from C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/esp32-camera/esp_camera.h:69:0,
                 from c:\Users\COREY~1.HOT\AppData\Local\Temp\.arduinoIDE-unsaved202167-13968-r5encq.i0jcs\Edgent_ESP32\Edgent_ESP32.ino:17:
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:172:52: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_update_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
                                                    ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:185:62: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_pin(int gpio_num, ledc_mode_t speed_mode, ledc_channel_t ledc_channel);
                                                              ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:199:45: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_stop(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t idle_level);
                                             ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:244:61: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_duty_with_hpoint(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty, uint32_t hpoint);
                                                             ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:255:45: error: 'ledc_channel_t' has not been declared
 int ledc_get_hpoint(ledc_mode_t speed_mode, ledc_channel_t channel);
                                             ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:274:49: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_duty(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty);
                                                 ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:286:48: error: 'ledc_channel_t' has not been declared
 uint32_t ledc_get_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
                                                ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:305:49: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_fade(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty, ledc_duty_direction_t fade_direction,
                                                 ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:412:59: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_fade_with_step(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t scale, uint32_t cycle_num);
                                                           ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:434:59: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_fade_with_time(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, int max_fade_time_ms);
                                                           ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:468:51: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_fade_start(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_fade_mode_t fade_mode);
                                                   ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:481:60: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_duty_and_update(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty, uint32_t hpoint);
                                                            ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:499:64: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_fade_time_and_start(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t max_fade_time_ms, ledc_fade_mode_t fade_mode);
                                                                ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:518:64: error: 'ledc_channel_t' has not been declared
 esp_err_t ledc_set_fade_step_and_start(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t scale, uint32_t cycle_num, ledc_fade_mode_t fade_mode);
                                                                ^
C:\Users\Corey.HOTCHSDC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/driver/driver/ledc.h:520:1: error: expected declaration before '}' token
 }
 ^

Error 2) The device continually attempts to connect to Blynk servers after establishing a wifi connection and fails.

hms-11 commented 2 years ago

I solved my issue, it isn't Edgent itself, my mistake, it is the included indicator.h file that causes the conflict.

I removed the

#include indicator.h

in the

BlynkEdgent.h

tab and all defines for it in

settings.h
// #define LEDC_CHANNEL_1     1
// #define LEDC_CHANNEL_2     2
// #define LEDC_CHANNEL_3     3
// #define LEDC_TIMER_BITS    10
// #define LEDC_BASE_FREQ     12000

and it successfully compiled. I don't have access to my field test board until tomorrow but I'm fairly confident in a successful load. Hopefully I can connect to the cloud as well.