Ilham26/ann_algorithm
0
1from flask import Flask, request, jsonify2import numpy as np3from tensorflow.keras.models import load_model4import joblib5import os6 7app = Flask(__name__)8 9# Memuat model dan scaler saat server menyala10model = load_model('model_baterai_ann.keras')11scaler = joblib.load('scaler_baterai.pkl')12 13@app.route('/')14def home():15 return "API ANN Baterai Solar Aktif"16 17@app.route('/api/predict', methods=['POST'])18def predict():19 try:20 # Menangkap data JSON dari Laravel21 data = request.get_json()22 23 if not data or 'voltage' not in data:24 return jsonify({"error": "Data 'voltage' wajib dikirim"}), 40025 26 voltage = float(data['voltage'])27 28 # Menyiapkan data untuk ANN29 live_data = np.array([[voltage]])30 live_data_scaled = scaler.transform(live_data)31 32 # Prediksi33 prediction = model.predict(live_data_scaled)[0][0]34 35 # Berdasarkan training: angka > 0.5 berarti TETAP (1), angka <= 0.5 berarti PINDAH (0)36 decision = "TETAP" if prediction > 0.5 else "PINDAH"37 38 return jsonify({39 "status": "success",40 "voltage_received": voltage,41 "decision": decision,42 "confidence_score": float(prediction)43 })44 45 except Exception as e:46 return jsonify({"error": str(e)}), 50047 48# Konfigurasi port untuk server Cloud49if __name__ == '__main__':50 port = int(os.environ.get('PORT', 5000))51 app.run(host='0.0.0.0', port=port)