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)