Start ESP32 webcam on GUI load

This commit is contained in:
Theo Arends 2020-05-04 17:13:14 +02:00
parent a32682ba94
commit 8bdd46a965
2 changed files with 24 additions and 9 deletions

View File

@ -367,7 +367,7 @@ struct {
uint8_t free_esp32_446[10]; // 446 uint8_t free_esp32_446[10]; // 446
uint8_t esp32_webcam_resolution; // 450 - not used yet uint8_t esp32_webcam_resolution; // 450
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
char serial_delimiter; // 451 char serial_delimiter; // 451

View File

@ -591,7 +591,7 @@ void detect_motion(void) {
void wc_show_stream(void) { void wc_show_stream(void) {
#ifndef USE_SCRIPT #ifndef USE_SCRIPT
if (CamServer) { if (CamServer) {
WSContentSend_P(PSTR("<p><center><img src='http://%s:81/stream' alt='Webcam stream' style='width:99%%;'></center></p><br>"), WSContentSend_P(PSTR("<p></p><center><img src='http://%s:81/stream' alt='Webcam stream' style='width:99%%;'></center><p></p>"),
WiFi.localIP().toString().c_str()); WiFi.localIP().toString().c_str());
} }
#endif #endif
@ -623,6 +623,11 @@ uint32_t wc_set_streamserver(uint32_t flag) {
return 0; return 0;
} }
void WcStreamControl(uint32_t resolution) {
wc_set_streamserver(resolution);
wc_setup(resolution);
}
void wc_loop(void) { void wc_loop(void) {
if (CamServer) { CamServer->handleClient(); } if (CamServer) { CamServer->handleClient(); }
if (wc_stream_active) { handleMjpeg_task(); } if (wc_stream_active) { handleMjpeg_task(); }
@ -661,28 +666,34 @@ flash led = gpio4
red led = gpio 33 red led = gpio 33
*/ */
void WcInit(void) {
if (Settings.esp32_webcam_resolution > 10) {
Settings.esp32_webcam_resolution = 0;
}
}
/*********************************************************************************************\ /*********************************************************************************************\
* Commands * Commands
\*********************************************************************************************/ \*********************************************************************************************/
#define D_CMND_WC "Webcam" #define D_CMND_WEBCAM "Webcam"
const char kWCCommands[] PROGMEM = "|" // no prefix const char kWCCommands[] PROGMEM = "|" // no prefix
D_CMND_WC D_CMND_WEBCAM
; ;
void (* const WCCommand[])(void) PROGMEM = { void (* const WCCommand[])(void) PROGMEM = {
&CmndWC, &CmndWebcam,
}; };
void CmndWC(void) { void CmndWebcam(void) {
uint32_t flag = 0; uint32_t flag = 0;
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 10)) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 10)) {
wc_set_streamserver(XdrvMailbox.payload); Settings.esp32_webcam_resolution = XdrvMailbox.payload;
wc_setup(XdrvMailbox.payload); WcStreamControl(Settings.esp32_webcam_resolution);
} }
if (CamServer) { flag = 1; } if (CamServer) { flag = 1; }
Response_P(PSTR("{\"" D_CMND_WC "\":{\"Streaming\":\"%s\"}"),GetStateText(flag)); Response_P(PSTR("{\"" D_CMND_WEBCAM "\":{\"Streaming\":\"%s\"}"),GetStateText(flag));
} }
/*********************************************************************************************\ /*********************************************************************************************\
@ -700,11 +711,15 @@ bool Xdrv39(uint8_t function) {
wc_pic_setup(); wc_pic_setup();
break; break;
case FUNC_WEB_ADD_MAIN_BUTTON: case FUNC_WEB_ADD_MAIN_BUTTON:
WcStreamControl(Settings.esp32_webcam_resolution);
wc_show_stream(); wc_show_stream();
break; break;
case FUNC_COMMAND: case FUNC_COMMAND:
result = DecodeCommand(kWCCommands, WCCommand); result = DecodeCommand(kWCCommands, WCCommand);
break; break;
case FUNC_PRE_INIT:
WcInit();
break;
} }
return result; return result;
} }