ESP32 CAM и FastBot2 отправка снимка

Pavel_net

✩✩✩✩✩✩✩
22 Фев 2022
2
0
Приветствую всех участников.
Решил я сделать что то вроде домофона на esp32-cam с отправкой фото звонящего в телегу. И т.к. мы не ищем легких путей, то вместо простого копирования по мануалу Telegram: ESP32-CAM Take and Send Photo решил я это дело собрать с использованием FastBot2 от уважаемого нами Гайвера.
C++:
String sendPhotoTelegram() {
  //здесь делается первый снимок, т.к. первый снимок вроде как не очень
  camera_fb_t * fbcam = NULL;
  fbcam = esp_camera_fb_get();
  esp_camera_fb_return(fbcam); // очищается буфер

  // Делается новой фото
  fbcam = NULL;
  fbcam = esp_camera_fb_get();
  if(!fbcam) {
    Serial.println("Camera capture failed");
    delay(1000);
    ESP.restart();
    return "Camera capture failed";
  }
    uint8_t *fbBuf = fbcam->buf;
    size_t fbLen = fbcam->len;
    //Код ниже из мануала для Universal Telegram Bot Library
    /*for (size_t n=0;n<fbLen;n=n+1024) {
      if (n+1024<fbLen) {
        clientTCP.write(fbBuf, 1024);
        fbBuf += 1024;
      }
      else if (fbLen%1024>0) {
        size_t remainder = fbLen%1024;
        clientTCP.write(fbBuf, remainder);
      }
     */
    // Собственно отправка фото из буфера в телеграмм.
      fb::File f("esp32-cam.jpg", fb::File::Type::photo, fbBuf, fbLen);
      f.chatID = chat_id;
      bot.sendFile(f, false);
   
    esp_camera_fb_return(fbcam);
}
Так вот при отправке фото esp32-cam уходит в перезагрузку и всё.

Как я понял camera_fb_t * fbcam это структура, в которой содержится:
unit8_t * buf - указатель на данные снимка (Pointer to the pixel data)
size_t len - длина буфера в байтах

Возможно я как то не так передаю ссылку на буфер с фото, но я с этими указателями и ссылками не очень дружу, поэтому и прошу помощи.
 
Изменено:

Pavel_net

✩✩✩✩✩✩✩
22 Фев 2022
2
0
Если кому интересно. Не отправляло разрешение выше VGA. Что бы отправлять любые разрешения камеры обновите gyverhttp до текущей версии и используйте пример из FastBot2 .