Proyek ini adalah aplikasi backend yang dibangun menggunakan Flask untuk mengelola data suhu dan kelembapan yang diperoleh dari sensor. Aplikasi ini terhubung ke database MySQL untuk menyimpan, memperbarui, dan mengambil data sensor melalui tiga endpoint RESTful: POST untuk menyimpan data, PUT untuk memperbarui data berdasarkan ID, dan GET untuk mengambil semua data. Dengan menggunakan aplikasi ini, pengguna dapat memantau dan mengelola informasi suhu dan kelembapan secara efisien.
Proyek ini bertujuan untuk membangun aplikasi backend sederhana yang mengelola data suhu dan kelembapan dari sensor menggunakan Flask dan MySQL. Aplikasi ini menyediakan antarmuka RESTful dengan tiga endpoint utama yang memungkinkan pengguna untuk berinteraksi dengan data sensor secara efisien.
Simulasi Wokwi
Flask di VM 3
Proses Pengiriman Data
Kode Simulasi Wokwi
#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", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
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:5003/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();
} else {
Serial.println("WiFi not connected");
}
delay(5000);
}
Kode Flask
from flask import Flask, request, jsonify
import mysql.connector
app = Flask(__name__)
def db_connection():
connection = mysql.connector.connect(
host='localhost',
user='root', # Ganti dengan username MySQL
password='password', # Ganti dengan password MySQL
database='sensor_data'
)
return connection
@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
@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
@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=5003, debug=True)
Endpoint POST /data: Endpoint ini menerima data suhu dan kelembapan dalam format JSON dari klien dan menyimpannya dalam tabel readings di database MySQL. Setelah berhasil menyimpan data, aplikasi mengembalikan respons dengan status sukses dan pesan konfirmasi.
Endpoint PUT /data/<int:id>: Endpoint ini memungkinkan pengguna untuk memperbarui data suhu dan kelembapan berdasarkan ID tertentu yang diberikan. Data baru juga diterima dalam format JSON dan, setelah berhasil diperbarui, aplikasi memberikan respons yang menunjukkan bahwa pembaruan telah berhasil dilakukan.
Endpoint GET /data: Endpoint ini mengambil semua data yang tersimpan dalam tabel readings dan mengembalikannya dalam format JSON, memungkinkan pengguna untuk mendapatkan ringkasan dari semua data sensor yang telah disimpan.
Aplikasi ini menggunakan fungsi db_connection() untuk mengatur koneksi dengan database, dan dijalankan pada host 0.0.0.0 dengan port 5003 dalam mode debug, sehingga memudahkan pengembangan dan pengujian. Dengan struktur ini, proyek ini menyediakan solusi yang efektif untuk pemantauan dan pengelolaan data sensor suhu dan kelembapan, yang dapat diterapkan dalam berbagai aplikasi IoT dan lingkungan pemantauan.
0 Orang Menyukai Karya Ini