File size: 4,030 Bytes
de47619 0cba9cf de47619 f7c72f1 0cba9cf de47619 0cba9cf f7c72f1 de47619 0cba9cf f7c72f1 de47619 0cba9cf f7c72f1 0cba9cf de47619 0cba9cf f7c72f1 de47619 0cba9cf f7c72f1 0cba9cf de47619 0cba9cf de47619 0cba9cf f7c72f1 0cba9cf f7c72f1 0cba9cf f7c72f1 0cba9cf f7c72f1 0cba9cf de47619 0cba9cf fb3f213 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
import gradio as gr
import numpy as np
import pandas as pd
from tensorflow import keras
from firebase import firebase
# إعداد Firebase (ضع بياناتك هنا)
config = {
'apiKey': "AIzaSyDZCCMjd003FcPDRcik5jCHCEQL56pkeFY",
'authDomain': "jsonfile-esp32-mohiot.firebaseapp.com",
'databaseURL': "https://jsonfile-esp32-mohiot-default-rtdb.europe-west1.firebasedatabase.app",
'projectId': "jsonfile-esp32-mohiot",
'storageBucket': "jsonfile-esp32-mohiot.firebasestorage.app",
'messagingSenderId': "710233105459",
'appId': "1:710233105459:web:6a5dd9b611e6f558c36f46"
}
firebase = firebase.FirebaseApplication(config['databaseURL'], None)
# تحميل بيانات السكر
csv_data = pd.read_csv('sugar_level.csv')
sugar_levels = csv_data['Sugar level']
current_csv_index = 0
# تحميل النماذج
try:
Seizure_Detection_model = keras.models.load_model("seizure_detection.h5", compile=False)
Seizure_Detection_model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
Fall_Detection_model = keras.models.load_model("Fall_Detection.h5", compile=False)
Fall_Detection_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
except Exception as e:
print(f"Error loading models: {e}") # طباعة الخطأ لتصحيحه
exit() # إيقاف البرنامج إذا لم يتم تحميل النماذج
# دالة جلب مستوى السكر التالي
def get_next_sugar_level():
global current_csv_index
if current_csv_index >= len(sugar_levels):
return sugar_levels.iloc[-1]
value = sugar_levels.iloc[current_csv_index]
current_csv_index += 1
return value
# دالة التنبؤ
def process_sensor_data():
try:
data = firebase.get('/sensors', None)
if not data:
return {"message": "لم يتم استقبال بيانات من Firebase"} # رسالة خطأ بتنسيق JSON
heart_rate = data.get('MAX30102', 88)
spo2 = data.get('MAX30102', 98) # قيمة افتراضية أفضل
Temperature = data.get('MAX30205', 37) # قيمة افتراضية أفضل
Distance = data.get('VL53L0X', 100) # قيمة افتراضية أفضل
sugar_level = get_next_sugar_level()
GSR = data.get('GSR', 0)
# التنبؤ بالنوبات
X_test_seizure = np.array([[heart_rate, Temperature, spo2]])
seizure_prediction = Seizure_Detection_model.predict(X_test_seizure)
seizure_result = "يوجد نوبة" if seizure_prediction[0][0] > 0.5 else "لا يوجد نوبة"
# التنبؤ بالسقوط
X_test_fall = np.array([[Distance, heart_rate, sugar_level, spo2]])
fall_prediction = Fall_Detection_model.predict(X_test_fall)
fall_class = np.argmax(fall_prediction, axis=1)[0]
fall_result = {0: "لا يوجد سقوط", 1: "احتمال سقوط", 2: "تم السقوط"}.get(fall_class, "غير معروف")
return {
"معدل_ضربات_القلب": heart_rate,
"نسبة_الأكسجين_في_الدم": spo2,
"درجة_الحرارة": Temperature,
"مستوى_السكر": sugar_level,
"معدل_التعرق": GSR,
"حالة_النوبات": seizure_result,
"حالة_السقوط": fall_result
}
except Exception as e:
return {"error": str(e)} # إرجاع خطأ بتنسيق JSON
# إنشاء Gradio UI
iface = gr.Interface(
fn=process_sensor_data,
inputs=[],
outputs="json", # هام: تحديد نوع الخرج ك JSON
title="نموذج الذكاء الاصطناعي للكشف عن النوبات والسقوط",
description="يتم جلب البيانات من Firebase وإجراء التنبؤات باستخدام نماذج الذكاء الاصطناعي."
)
# تشغيل التطبيق
iface.launch(server_name="0.0.0.0", server_port=7860, share=True) |