From 9edcafb6886206dbfa360fb5ed78203b82adf2f1 Mon Sep 17 00:00:00 2001 From: rajivibnudarojad Date: Mon, 19 Aug 2024 13:55:29 +0700 Subject: [PATCH] Upload files to "/" --- camera-set.php | 26 ++++ camera.php | 186 ++++++++++++++++++++++++++ con1.php | 69 ++++++++++ config.php | 14 ++ final1.ino | 347 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 642 insertions(+) create mode 100644 camera-set.php create mode 100644 camera.php create mode 100644 con1.php create mode 100644 config.php create mode 100644 final1.ino diff --git a/camera-set.php b/camera-set.php new file mode 100644 index 0000000..fc7e4d2 --- /dev/null +++ b/camera-set.php @@ -0,0 +1,26 @@ +query("UPDATE $table SET otomatis='$otomatis'"); + if(intval($otomatis)){ + //$query = $conn->query("UPDATE $table SET auto = 1"); + } + + } + + if(isset($_POST["otomatis-set"])) { + $otomatis_set = $_POST["otomatis-set"]; + $query = $conn->query("UPDATE $table SET otomatis_set='$otomatis_set'"); + $query = $conn->query("UPDATE $table SET auto = 1"); + } + + if(isset($_POST["status-kamera"])) { + $status_kamera = $_POST["status-kamera"]; + $query = $conn->query("UPDATE $table SET status_kamera='$status_kamera'"); + } +?> \ No newline at end of file diff --git a/camera.php b/camera.php new file mode 100644 index 0000000..c2df6b2 --- /dev/null +++ b/camera.php @@ -0,0 +1,186 @@ +query("SELECT * FROM $table ORDER BY `id` DESC LIMIT 1"); + + $row_data = mysqli_fetch_assoc($query_data); + $camera_mode = $row_data['otomatis']; + + // monitor foto manual + $query_foto = $conn->query("SELECT * FROM $table_foto ORDER BY `timestamp` DESC LIMIT 1"); + + $row_foto = mysqli_fetch_assoc($query_foto); + + // monitor foto auto + $query_foto_auto = $conn->query("SELECT * FROM $table_foto_auto ORDER BY `timestamp` DESC LIMIT 1"); + + $row_foto_auto = mysqli_fetch_assoc($query_foto_auto); +?> + +
+
+
+
+
+ >Otomatis + +
+
+ >Manual + +
+
+
+
+
> +
+
+
+ +
+
+
+ + + + +
+
> + +
+
+
+
+
+
Hasil Foto
+
+
+
+
> +
+ +
+
+
> +
+ +
+
+
+
+
+
+ + + diff --git a/con1.php b/con1.php new file mode 100644 index 0000000..20ee661 --- /dev/null +++ b/con1.php @@ -0,0 +1,69 @@ + 500000) { + echo "Sorry, your file is too large."; + $uploadOk = 0; +} + +// Allow certain file formats +if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" +&& $imageFileType != "gif" ) { + echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; + $uploadOk = 0; +} + +// Check if $uploadOk is set to 0 by an error +if ($uploadOk == 0) { + echo "Sorry, your file was not uploaded."; +// if everything is ok, try to upload file +} +else { + if (move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) { + //echo "The file ". basename( $_FILES["imageFile"]["name"]). " has been uploaded."; + echo $target_files; + + $mysqli = new mysqli("localhost","labandroid_plantscam","plantscamPwd","labandroid_plantscam"); + + if ($mysqli -> connect_errno) { + echo "Failed to connect to MySQL: " . $mysqli -> connect_error; + } + + $sql="INSERT INTO plantscamiot_foto_auto (filename) VALUES ('".$target_files."')"; + $mysqli -> query($sql); + + } + else { + echo "Sorry, there was an error uploading your file."; + } +} +?> diff --git a/config.php b/config.php new file mode 100644 index 0000000..ea2ca32 --- /dev/null +++ b/config.php @@ -0,0 +1,14 @@ +connect_error) { + die("Database Connection failed: " . $conn->connect_error); + } +?> \ No newline at end of file diff --git a/final1.ino b/final1.ino new file mode 100644 index 0000000..ac3fdf1 --- /dev/null +++ b/final1.ino @@ -0,0 +1,347 @@ +#include +#include +#include "DHT.h" +#include +#include +#include +#include +#include "soc/soc.h" +#include "soc/rtc_cntl_reg.h" +#include "esp_camera.h" + +const char *ssid = "monitor"; +const char *password = "monitor2021"; + +String serverName = "lab-android.com"; + +String serverPath = "/plantscam/con.php"; +String serverPath1 = "/plantscam/con1.php"; + +const int serverPort = 443; + +#define DHTPIN 13 +#define sda 14 +#define scl 15 + +#define DHTTYPE DHT11 + +DHT dht(DHTPIN, DHTTYPE); +BH1750 lightMeter; + +WiFiClientSecure 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 + +boolean statusPhoto=true; + +int Status; + +void setup() { + + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); + + delay(1000); + Serial.begin(115200); + WiFi.mode(WIFI_OFF); + delay(1000); + WiFi.mode(WIFI_STA); + + WiFi.begin(ssid, password); + Serial.println(""); + + Serial.print("Connecting"); + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + Wire.begin(sda, scl); + lightMeter.begin(); + + dht.begin(); + + 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_SVGA; + config.jpeg_quality = 10; //0-63 lower number means higher quality + config.fb_count = 2; + } else { + config.frame_size = FRAMESIZE_CIF; + 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(); + } +} + +boolean Type=0; + + +int tempt; +int temph; +void loop() { + + + String getData, Link; + + float h = dht.readHumidity(); + float t = dht.readTemperature(); + + float lux = lightMeter.readLightLevel(); + + Serial.print("Light: "); + Serial.print(lux); + Serial.println(" lx"); + + if (isnan(h) || isnan(t)) { + //Serial.println(F("Failed to read from DHT sensor!")); + //return; + t=tempt; + h=temph; + }else{ + tempt=t; + temph=h; + } + + + Serial.print(F("Humidity: ")); + Serial.print(h); + Serial.print(F("% Temperature: ")); + Serial.print(t); + Serial.println(F("°C ")); + delay(2000); + + HTTPClient http; + + Type=!Type; + getData = "?data1='" + String(t) + "'&data2='" + String(h) + "'&data3='" + String(lux) + "'&data4=" + String(Type); + Link = "http://lab-android.com/uploads/plantiot.php" + getData; + + http.begin(Link); + + int httpCode = http.GET(); + String payload = http.getString(); + if(httpCode==200){ + Status=payload.toInt(); + if(Type){ + if(Status){ + Serial.println("manual"); + sendPhoto(); + } + }else{ + if(Status){ + Serial.println("auto"); + sendPhoto1(); + } + } + } + + //http.end(); + + + +} +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); + + client.setInsecure(); //skip certificate validation + if (client.connect(serverName.c_str(), serverPort)) { + Serial.println("Connection successful!"); + String head = "--RandomNerdTutorials\r\nContent-Disposition: form-data; name=\"imageFile\"; filename=\"esp32-cam.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; + + client.println("POST " + serverPath + " 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; n0) { + 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; +} +String sendPhoto1() { + 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); + + client.setInsecure(); //skip certificate validation + if (client.connect(serverName.c_str(), serverPort)) { + Serial.println("Connection successful!"); + String head = "--RandomNerdTutorials\r\nContent-Disposition: form-data; name=\"imageFile\"; filename=\"esp32-cam.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; + + client.println("POST " + serverPath1 + " 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; n0) { + 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; +}