EngTig commited on
Commit
3e1bd64
·
verified ·
1 Parent(s): 8a21cd7

Create app.py

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