EngTig commited on
Commit
f7c72f1
·
verified ·
1 Parent(s): fb3f213

Update app.py

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