Selasa, 28 Desember 2021

Kirim gambar Dan Sensor Ke Server

 

Kisi2 Kirim Data Dan Gambar ke Server  

#include <Arduino.h>

#include <WiFi.h>

#include "soc/soc.h"

#include "soc/rtc_cntl_reg.h"

#include "esp_camera.h"


const char* ssid = "pikachu";

const char* password = "123asdfghjkl";


String serverName = "192.168.0.104:8080";

String serverPath="/bimbel/Nusamandiri/MonitoringCCTV/simpan.php" ;


const int serverPort = 80;


WiFiClient client;


// CAMERA_MODEL_AI_THINKER

#define PWDN_GPIO_NUM     32

#define RESET_GPIO_NUM    -1

#define XCLK_GPIO_NUM      0

#define SIOD_GPIO_NUM     26

#define SIOC_GPIO_NUM     27


#define Y9_GPIO_NUM       35

#define Y8_GPIO_NUM       34

#define Y7_GPIO_NUM       39

#define Y6_GPIO_NUM       36

#define Y5_GPIO_NUM       21

#define Y4_GPIO_NUM       19

#define Y3_GPIO_NUM       18

#define Y2_GPIO_NUM        5

#define VSYNC_GPIO_NUM    25

#define HREF_GPIO_NUM     23

#define PCLK_GPIO_NUM     22


const int timerInterval = 30000;    // time between each HTTP POST image

unsigned long previousMillis = 0;   // last time image was sent

String inputString = "";         // a String to hold incoming data

bool stringComplete = false;  // whether the string is complete


void setup() {

  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);

  Serial.begin(115200);


  WiFi.mode(WIFI_STA);

  Serial.println();

  Serial.print("Connecting to ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }

  Serial.println();

  Serial.print("ESP32-CAM IP Address: ");

  Serial.println(WiFi.localIP());


  camera_config_t config;

  config.ledc_channel = LEDC_CHANNEL_0;

  config.ledc_timer = LEDC_TIMER_0;

  config.pin_d0 = Y2_GPIO_NUM;

  config.pin_d1 = Y3_GPIO_NUM;

  config.pin_d2 = Y4_GPIO_NUM;

  config.pin_d3 = Y5_GPIO_NUM;

  config.pin_d4 = Y6_GPIO_NUM;

  config.pin_d5 = Y7_GPIO_NUM;

  config.pin_d6 = Y8_GPIO_NUM;

  config.pin_d7 = Y9_GPIO_NUM;

  config.pin_xclk = XCLK_GPIO_NUM;

  config.pin_pclk = PCLK_GPIO_NUM;

  config.pin_vsync = VSYNC_GPIO_NUM;

  config.pin_href = HREF_GPIO_NUM;

  config.pin_sscb_sda = SIOD_GPIO_NUM;

  config.pin_sscb_scl = SIOC_GPIO_NUM;

  config.pin_pwdn = PWDN_GPIO_NUM;

  config.pin_reset = RESET_GPIO_NUM;

  config.xclk_freq_hz = 20000000;

  config.pixel_format = PIXFORMAT_JPEG;


  // init with high specs to pre-allocate larger buffers

  if (psramFound()) {

    config.frame_size = FRAMESIZE_UXGA;

    config.jpeg_quality = 10;  //0-63 lower number means higher quality

    config.fb_count = 2;

  } else {

    config.frame_size = FRAMESIZE_SVGA;

    config.jpeg_quality = 12;  //0-63 lower number means higher quality

    config.fb_count = 1;

  }


  // camera init

  esp_err_t err = esp_camera_init(&config);

  if (err != ESP_OK) {

    Serial.printf("Camera init failed with error 0x%x", err);

    delay(1000);

    ESP.restart();

  }

  pinMode(4, OUTPUT);

  digitalWrite(4, HIGH);

  delay(100);

  digitalWrite(4, LOW);


}


void loop() {

  //  unsigned long currentMillis = millis();

  //  if (currentMillis - previousMillis >= timerInterval) {

  //    sendPhoto();

  //    previousMillis = currentMillis;

  //  }


  if (Serial.available()) {

    // ard.write("Test");

    // Serial.write(Serial.read());

    char inChar = (char)Serial.read();

    inputString += inChar;


    if (inChar == '\n') {

      stringComplete = true;

    }


    if (stringComplete) {

      digitalWrite(4, HIGH);

      delay(100);

      digitalWrite(4, LOW);

      Serial.println(inputString);

      Serial.println("Preparing photo");

      sendPhoto();

      inputString = "";

      stringComplete = false;

    }


  }


}


String sendPhoto() {

  String getAll;

  String getBody;


  camera_fb_t * fb = NULL;

  fb = esp_camera_fb_get();

  if (!fb) {

    Serial.println("Camera capture failed");

    delay(1000);

    ESP.restart();

  }


  Serial.println("Connecting to server: " + serverName);


  if (client.connect(serverName.c_str(), serverPort)) {

    Serial.println("Connection successful!");

    String head = "--RandomNerdTutorials\r\nContent-Disposition: form-data; name=\"fileToUpload\"; filename=\"ktp.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n";

    String tail = "\r\n--RandomNerdTutorials--\r\n";


    uint32_t imageLen = fb->len;

    uint32_t extraLen = head.length() + tail.length();

    uint32_t totalLen = imageLen + extraLen;

   

    inputString.trim();

String sensors = "?id_alat=" + String(idalat) + "&asap=" + String(stasap) + "&api=" + String(stapi) + "&ket=ok";  

    String url = serverName+serverPath+sensors; 

    client.println("POST " + url + " HTTP/1.1");

    client.println("Host: " + serverName);

    client.println("Content-Length: " + String(totalLen));

    client.println("Content-Type: multipart/form-data; boundary=RandomNerdTutorials");

    client.println();

    client.print(head);


    uint8_t *fbBuf = fb->buf;

    size_t fbLen = fb->len;

    for (size_t n = 0; n < fbLen; n = n + 1024) {

      if (n + 1024 < fbLen) {

        client.write(fbBuf, 1024);

        fbBuf += 1024;

      }

      else if (fbLen % 1024 > 0) {

        size_t remainder = fbLen % 1024;

        client.write(fbBuf, remainder);

      }

    }

    client.print(tail);


    esp_camera_fb_return(fb);


    int timoutTimer = 10000;

    long startTimer = millis();

    boolean state = false;


    while ((startTimer + timoutTimer) > millis()) {

      Serial.print(".");

      delay(100);

      while (client.available()) {

        char c = client.read();

        if (c == '\n') {

          if (getAll.length() == 0) {

            state = true;

          }

          getAll = "";

        }

        else if (c != '\r') {

          getAll += String(c);

        }

        if (state == true) {

          getBody += String(c);

        }

        startTimer = millis();

      }

      if (getBody.length() > 0) {

        break;

      }

    }

    Serial.println();

    client.stop();

    Serial.println(getBody);

  }

  else {

    getBody = "Connection to " + serverName +  " failed.";

    Serial.println(getBody);

  }

  return getBody;

}

+++++++++++++++++++++

<?php
session_start();
unset($_SESSION["rfid"]);
unset($_SESSION["gate"]);

require_once"konmysqli.php";
date_default_timezone_set("Asia/Jakarta");
$tanggal=date("Y-m-d");
$jam=date("H:i:s");

//saat TAP1
//tap1.php?rfid=115-42-107-121&image=ktp1.jpg&gate=1&ket=ok

//if(isset($_POST["rfid"])){
$NF=$_FILES["fileToUpload"]["name"];
$rfid=trim(htmlentities($_REQUEST["rfid"]));
$gate=trim(htmlentities($_REQUEST["gate"]));

$target_dir = "ypathfile/";
$datum = date('H-i-s')." ".date('d-m-Y');
$image=$datum . basename($NF);//KTP PICTURE
$target_file = $target_dir . $image;


$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
  
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}
 
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}
 
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}

echo $sql="INSERT INTO `tb_aktifitas` (`tanggal`, `jam`,`tanggal2`, `jam2`, `rfid`, `image1`,`load`,`status`,`keterangan`) VALUES ('$tanggal', '$jam','$tanggal', '$jam', '$rfid', '$image', '0','Datang','Gate $gate')";
$simpan=processM($conn,$sql);

//}

//DATANG-PROSES-PULANG
//->0(datang)
//->1(tap ke-2 agar bs di load ajax) =where load='0', jk ada lalu diubah mnjadi 1 
//->2(saat diload ajax) =where load=1
//load1.php?gate=1 and `load`=1 menampilkan WELCOME (Selama LOAD=1):ARTINYA GAK BS Uyel2an...
//simpankunjungan.php  =, Update laod dari 1 mnjadi 2


//tap1.php?rfid=115-42-107-121&gate=1&image=ktp1.jpg&ket=ok
//tap2.php?rfid=115-42-107-121&gate=1&image=pic1.jpg&ket=ok




?>