camera_fb_t * fb = NULL;
fb = esp_camera_fb_get();
if(!fb) {
Serial.println("Camera capture failed");
delay(1000);
ESP.restart();
}
Serial.print("Размер фото:");
Serial.println(fb->len);
//Serial.print("Ширина фото:");
//Serial.println(fb->width);
//Serial.print("Высота фото:");
//Serial.println(fb->height);
if ((WiFi.status() == WL_CONNECTED))
{
long size_photo = fb->len; //Размер фотографии
long num_start = 0; //Стартовый номер байта
long num_end = 0; //Конечный номер байта
HTTPClient http;
http.begin("
https://service-gps-potok.ru/api/send/photo?crm_device_number_1=24405", root_ca); //Укажите URL-адрес и сертификат
http.addHeader("Content-Type", "image/jpeg");
int summ_packet = size_photo/16000+1;
for (int i = 0; i < summ_packet; i++)
{
send_packet[0]=(size_photo&0x000000FF);
send_packet[1]=(size_photo&0x0000FF00)>>8;
send_packet[2]=(size_photo&0x00FF0000)>>16;
send_packet[3]=(size_photo&0xFF000000)>>24;
//Вносим общий размер фотографии
if (num_end == 0)
{
num_start = 0;
}
else
{
num_start = num_end + 1;
}
Serial.println("Начальная точка");
Serial.println(num_start);
send_packet[4]=(num_start&0x000000FF);
send_packet[5]=(num_start&0x0000FF00)>>8;
send_packet[6]=(num_start&0x00FF0000)>>16;
send_packet[7]=(num_start&0xFF000000)>>24;
//Вносим начальное положение байта массива
if (size_photo <= 16000)
{
num_end = size_photo;
}
else
{
if(num_start == 0)
{
num_end = 16000;
}
else
{
num_end = num_start + 16000;
if (num_end >= size_photo)
{
num_end = size_photo;
}
}
}
send_packet[8]=(num_end&0x000000FF);
send_packet[9]=(num_end&0x0000FF00)>>8;
send_packet[10]=(num_end&0x00FF0000)>>16;
send_packet[11]=(num_end&0xFF000000)>>24;
Serial.println("Конечная точка");
Serial.println(num_end);
//Вносим конечное положение байта массива
size_send_packet = 12;
for (num_start; num_start < num_end; num_start++)
{
send_packet[num_start+11] = fb->buf[num_start];
size_send_packet++;
}
Serial.println("Размер буфера отправки");
Serial.println(size_send_packet);
int httpResponseCode = http.sendRequest("POST", send_packet, size_send_packet);
for (int j = 0; j< 16012; j++)
{
send_packet[j] = 0;
}
Serial.println("Код ответа");
Serial.println(httpResponseCode);
if(httpResponseCode!=200)
{
Serial.println("Работа камеры прервана");
break;
}
if(num_end == size_photo)
{
Serial.println("Конец файла");
break;
}
}
http.end(); //Освобождение ресурсов
esp_camera_fb_return(fb);
}