AI Assistant
Detail Karya Portofolio

Python Backend dan Frontend untuk IoT Monitoring

Nurul Fatimah Oleh: Nurul Fatimah

Deskripsi & Detail Proyek

PYTHON BACKEND DAN FRONTEND UNTUK IOT MONITORING PADA WOKWI

Simulasi di Wokwi

  
 

Flask di VM3

  
 


 

Simulasi ketikawokwi dijalankan dan mengirim data ke server(vm3), lalu pengecekan menggunakan postman, dapat dilihat proses pengiriman  data berhasil dengan response code 201 

  
 


 

 

 


 

Berikut tampilan GET di Postman, data tersebut merupakan data yang sudah di masukkan ke database

  
 


 

 

Berikut tampilan database pada server

 

Berikut tampilan POST melaluiPostman, POST berhasil denganresponse code 201

 

  
 


 

Dan ini adalah ketikamelakukan PUT, dapat dilihat responsecode 200

  
 


 

 

 

Berikut Kode simulasi wokwi dengan menggunakan esp 32 dengan dht22 terhubung pada pin 15

 

#include <WiFi.h>

#include <HTTPClient.h>

#include "DHT.h"

 

#define DHTPIN 15

#define DHTTYPE DHT22

 

DHT dht(DHTPIN, DHTTYPE);

 

void setup() {

  Serial.begin(9600);

  dht.begin();

 

  WiFi.begin("Wokwi-GUEST", "");

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

    delay(500);

    Serial.print(".");

  }

  Serial.println(" Connected!");

}

 

void loop() {

  float temperature = dht.readTemperature();

  float humidity = dht.readHumidity();

 

  if (WiFi.status() == WL_CONNECTED) {

    HTTPClient http;

    String serverName = "http://110.239.71.90:5002/data";

    http.begin(serverName);

    http.addHeader("Content-Type", "application/json");

 

    String httpRequestData = "{"temperature": " + String(temperature) + ", "humidity": " + String(humidity) + "}";

    int httpResponseCode = http.POST(httpRequestData);

 

    Serial.print("Temperature: ");

    Serial.print(temperature);

    Serial.print(" °C, Humidity: ");

    Serial.print(humidity);

    Serial.print(" %, Response code: ");

    Serial.println(httpResponseCode);

 

    http.end();

  }

  delay(2000);

}

 

Kode Python flask yang digunakan dengan menggunakan endpointdata

from flask import Flask, request, jsonify

import mysql.connector

 

app = Flask(__name__)

 

# Fungsi untuk koneksi ke database

def db_connection():

   connection = mysql.connector.connect(

       host='localhost',

       user='root',         # Ganti dengan username MySQL Anda

       password='', # Ganti dengan password MySQL Anda

       database='sensor_dataa'

    )

    return connection

 

# Endpoint untuk menerima data (POST)

@app.route('/data', methods=['POST'])

def receive_data():

    data = request.get_json()

   temperature = data.get('temperature')

   humidity = data.get('humidity')

   

   connection = db_connection()

    cursor = connection.cursor()

   cursor.execute(

       "INSERT INTO readings (temperature, humidity) VALUES (%s, %s)", 

       (temperature, humidity)

    )

   connection.commit()

   cursor.close()

   connection.close()

    return jsonify({"status": "success", "message": "Data inserted"}), 201

 

# Endpoint untuk memperbarui data (PUT)

@app.route('/data/<int:id>', methods=['PUT'])

def update_data(id):

    data = request.get_json()

   temperature = data.get('temperature')

   humidity = data.get('humidity')

   

   connection = db_connection()

    cursor = connection.cursor()

   cursor.execute(

       "UPDATE readings SET temperature = %s, humidity = %s WHERE id = %s", 

       (temperature, humidity, id)

    )

   connection.commit()

   cursor.close()

   connection.close()

    return jsonify({"status": "success", "message": "Data updated"}), 200

 

# Endpoint untuk mendapatkan data (GET)

@app.route('/data', methods=['GET'])

def get_data():

   connection = db_connection()

    cursor = connection.cursor(dictionary=True)

   cursor.execute("SELECT * FROM readings")

    results = cursor.fetchall()

   cursor.close()

   connection.close()

    return jsonify(results), 200

 

if __name__ == '__main__':

   app.run(host='0.0.0.0', port=5002, debug=True)