Skip to content

Commit facbeb7

Browse files
committed
CURL receive ESP32-CAM RSSI page content example
1 parent 38267b0 commit facbeb7

File tree

11 files changed

+88
-12
lines changed

11 files changed

+88
-12
lines changed

ESP32-CAM MJPEG Library/ESP32-CAM Library.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,19 @@ int ESP32_CAM::SendStream(CURL *curl_object,std::string function_url)
116116
return (int)return_code;
117117
}
118118

119+
std::string ESP32_CAM::GetRSSI()
120+
{
121+
std::string buffer;
122+
123+
curl_easy_setopt(curl_command,CURLOPT_WRITEFUNCTION,WriteCallback);
124+
curl_easy_setopt(curl_command,CURLOPT_WRITEDATA,&buffer);
125+
126+
if(SendStream(curl_command,std::string("/RSSI"))){
127+
}
128+
129+
return buffer;
130+
}
131+
119132
cv::Mat ESP32_CAM::GetFrame()
120133
{
121134
cv::Mat return_data;
@@ -187,6 +200,12 @@ void* memmem(const void *buf,size_t buf_len,const void *byte_sequence,size_t byt
187200
}
188201
#endif
189202

203+
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
204+
{
205+
((std::string*)userp)->append((char*)contents, size * nmemb);
206+
return size * nmemb;
207+
}
208+
190209
size_t CURLWriteMemoryVideoFrameCallback(void *ptr,size_t size,size_t nmemb,void *data)
191210
{
192211
if(!ptr){return 0;}

ESP32-CAM MJPEG Library/ESP32-CAM Library.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ void* VideoStreamThreadPasser(void*);
4444
DWORD VideoStreamThreadPasser(LPVOID);
4545
void* memmem(const void*,size_t,const void*,size_t);
4646
#endif
47+
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp);
4748
size_t CURLWriteMemoryVideoFrameCallback(void*,size_t,size_t,void*);
4849
void* CURLRealloc(void*,size_t);
4950

@@ -90,6 +91,7 @@ class ESP32_CAM
9091

9192
size_t GetFrameSize(){return frame.frame_size;}
9293

94+
std::string GetRSSI();
9395

9496
cv::Mat GetFrame();
9597

Firmware/.DS_Store

0 Bytes
Binary file not shown.

Firmware/ESP32-CAM/ESP32-CAM.ino

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "esp_camera.h"
22
#include <WiFi.h>
3+
#include "define.h"
34

45
//
56
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
@@ -27,6 +28,8 @@ IPAddress gateway(192, 168, 110, 1);
2728

2829
IPAddress subnet(255, 255, 255, 0);
2930

31+
int rssi = 0;
32+
3033
void startCameraServer();
3134

3235
/*
@@ -127,10 +130,11 @@ void setup() {
127130

128131
Serial.print("Camera Ready! Use 'http://");
129132
Serial.print(WiFi.localIP());
130-
Serial.println("' to connect");
133+
Serial.println("' to connect");
131134
}
132135

133136
void loop() {
134137
// put your main code here, to run repeatedly:
135-
delay(10000);
138+
rssi = WiFi.RSSI();
139+
Serial.println(rssi);
136140
}

Firmware/ESP32-CAM/app_httpd.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,19 @@ static esp_err_t status_handler(httpd_req_t *req){
639639
return httpd_resp_send(req, json_response, strlen(json_response));
640640
}
641641

642+
static esp_err_t RSSI_handler(httpd_req_t *req){
643+
static char json_response[1024];
644+
645+
char * p = json_response;
646+
647+
p+=sprintf(p, "%ddB", rssi);
648+
*p++ = 0;
649+
httpd_resp_set_type(req, "application/json");
650+
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
651+
return httpd_resp_send(req, json_response, strlen(json_response));
652+
}
653+
654+
642655
static esp_err_t index_handler(httpd_req_t *req){
643656
httpd_resp_set_type(req, "text/html");
644657
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
@@ -678,7 +691,14 @@ void startCameraServer(){
678691
.method = HTTP_GET,
679692
.handler = led_handler,
680693
.user_ctx = NULL
681-
};
694+
};
695+
696+
httpd_uri_t RSSI_uri = {
697+
.uri = "/RSSI",
698+
.method = HTTP_GET,
699+
.handler = RSSI_handler,
700+
.user_ctx = NULL
701+
};
682702

683703
httpd_uri_t capture_uri = {
684704
.uri = "/capture",
@@ -718,6 +738,7 @@ void startCameraServer(){
718738
httpd_register_uri_handler(camera_httpd, &index_uri);
719739
httpd_register_uri_handler(camera_httpd, &cmd_uri);
720740
httpd_register_uri_handler(camera_httpd, &led_uri);
741+
httpd_register_uri_handler(camera_httpd, &RSSI_uri);
721742
httpd_register_uri_handler(camera_httpd, &status_uri);
722743
httpd_register_uri_handler(camera_httpd, &capture_uri);
723744
}

Firmware/ESP32-CAM/define.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
#define RED_LED 33
55
#define FLASH_LED 4
66

7+
extern int rssi;
8+
79
#endif

examples/.DS_Store

0 Bytes
Binary file not shown.

examples/MAC/.DS_Store

0 Bytes
Binary file not shown.

examples/MAC/wxESP32-CAM/ESP32-CAM Library.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,19 @@ int ESP32_CAM::SendStream(CURL *curl_object,std::string function_url)
116116
return (int)return_code;
117117
}
118118

119+
std::string ESP32_CAM::GetRSSI()
120+
{
121+
std::string buffer;
122+
123+
curl_easy_setopt(curl_command,CURLOPT_WRITEFUNCTION,WriteCallback);
124+
curl_easy_setopt(curl_command,CURLOPT_WRITEDATA,&buffer);
125+
126+
if(SendStream(curl_command,std::string("/RSSI"))){
127+
}
128+
129+
return buffer;
130+
}
131+
119132
cv::Mat ESP32_CAM::GetFrame()
120133
{
121134
cv::Mat return_data;
@@ -187,6 +200,12 @@ void* memmem(const void *buf,size_t buf_len,const void *byte_sequence,size_t byt
187200
}
188201
#endif
189202

203+
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
204+
{
205+
((std::string*)userp)->append((char*)contents, size * nmemb);
206+
return size * nmemb;
207+
}
208+
190209
size_t CURLWriteMemoryVideoFrameCallback(void *ptr,size_t size,size_t nmemb,void *data)
191210
{
192211
if(!ptr){return 0;}

examples/MAC/wxESP32-CAM/ESP32-CAM Library.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ void* VideoStreamThreadPasser(void*);
4444
DWORD VideoStreamThreadPasser(LPVOID);
4545
void* memmem(const void*,size_t,const void*,size_t);
4646
#endif
47+
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp);
4748
size_t CURLWriteMemoryVideoFrameCallback(void*,size_t,size_t,void*);
4849
void* CURLRealloc(void*,size_t);
4950

@@ -90,6 +91,7 @@ class ESP32_CAM
9091

9192
size_t GetFrameSize(){return frame.frame_size;}
9293

94+
std::string GetRSSI();
9395

9496
cv::Mat GetFrame();
9597

0 commit comments

Comments
 (0)