This commit is contained in:
jeanGaston 2024-05-05 21:27:17 +02:00
parent c3b6952017
commit 8acb6bfaf1
5 changed files with 79 additions and 48 deletions

View File

@ -1,56 +1,89 @@
#!/bin/bash #!/bin/bash
# Install Python3 and pip
sudo apt update
sudo apt install -y python3 python3-pip python3-flask python3-schedule python3-plotly python3-pandas
# Install required Python modules
pip3 install bluepy --break-system-packages
# Create env.py file # Install and enable SSH
echo -n "Enter database file name (default: data.db): " install_ssh() {
read db_file echo "Installing SSH..."
db_file=${db_file:-data.db} sudo apt update
echo -e "DBFILE = '$db_file'" >> Program/env.py sudo apt install -y openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
echo "SSH installed and enabled."
}
# Install and enable ProFTPD
install_ftp() {
echo "Installing ProFTPD..."
sudo apt update
sudo apt install -y proftpd
sudo systemctl start proftpd
sudo systemctl enable proftpd
echo "ProFTPD installed and enabled."
}
# Install Python3 and modules
install_python(){
sudo apt update
sudo apt install -y python3 python3-pip python3-flask python3-schedule python3-plotly python3-pandas
pip3 install bluepy --break-system-packages
}
# Create env.py file and add values
env_py() {
echo -n "Enter database file name (default: data.db): "
read db_file
db_file=${db_file:-data.db}
echo -e "DBFILE = '$db_file'" >> Program/env.py
echo -n "Enter smtp server address : " echo -n "Enter smtp server address : "
read smtp read smtp
echo -e "SMTP = '$smtp'" >> Program/env.py echo -e "SMTP = '$smtp'" >> Program/env.py
echo -n "Enter smtp port (default 25) : " echo -n "Enter smtp port (default 25) : "
read smtp_port read smtp_port
smtp_port=${smtp_portx:-25} smtp_port=${smtp_portx:-25}
echo -e "SMTP_PORT = $smtp_port" >> Program/env.py echo -e "SMTP_PORT = $smtp_port" >> Program/env.py
echo -n "Enter sender email address, used as smtp id : " echo -n "Enter sender email address, used as smtp id : "
read smtp_id read smtp_id
echo -e "SMTP_ID = '$smtp_id'" >> Program/env.py echo -e "SMTP_ID = '$smtp_id'" >> Program/env.py
echo -n "Enter sender password, used as smtp password : " echo -n "Enter sender password, used as smtp password : "
read smtp_pwd read smtp_pwd
echo -e "SMTP_PWD = '$smtp_pwd'" >> Program/env.py echo -e "SMTP_PWD = '$smtp_pwd'" >> Program/env.py
echo -n "Enter recipient email address : " echo -n "Enter recipient email address : "
read recipient read recipient
echo -e "RECIPIENT = '$recipient'" >> Program/env.py echo -e "RECIPIENT = '$recipient'" >> Program/env.py
echo -n "Enter Humidity rate alert threshold without percent symbol (default 70): " echo -n "Enter Humidity rate alert threshold without percent symbol (default 70): "
read hr_max read hr_max
hr_max=${hr_max:-70} hr_max=${hr_max:-70}
echo -e "MAX_HR= $hr_max" >> Program/env.py echo -e "MAX_HR= $hr_max" >> Program/env.py
echo -n "Enter temperature alert threshold without °c symbole (default 30) : " echo -n "Enter temperature alert threshold without °c symbole (default 30) : "
read temp_max read temp_max
temp_max=${temp_max:-30} temp_max=${temp_max:-30}
echo -e "MAX_TEMP= $temp_max" >> Program/env.py echo -e "MAX_TEMP= $temp_max" >> Program/env.py
echo -e "SENSORS = {'d6:c6:c7:39:a2:e8': 'DEMO3', 'd6:1c:bf:b7:76:62': 'DEMO1', 'd7:ef:13:27:15:29': 'DEMO2'}" >> Program/env.py
}
echo -e "SENSORS = {'d6:c6:c7:39:a2:e8': 'DEMO3', 'd6:1c:bf:b7:76:62': 'DEMO1', 'd7:ef:13:27:15:29': 'DEMO2'}" >> Program/env.py
# Execute main.py # Execute main.py
cd Program exec(){
python3 main.py cd Program
python3 main.py
}
install_ssh
install_ssh
install_python
env_py
exec

View File

@ -58,17 +58,14 @@ def dashboard():
def history(): def history():
data = fetch_all_sensor() data = fetch_all_sensor()
disp_data = [] disp_data = []
sensors_name = []
for mac, name in data: for mac, name in data:
disp_data += [fetch_data_by_sensor(name)] disp_data += [fetch_data_by_sensor(name)]
sensors_name.append[name]
""" S1 = fetch_data_by_sensor("DEMO1")
S2 = fetch_data_by_sensor("DEMO2")
S3 = fetch_data_by_sensor("DEMO3") """
return render_template('history.html', S1=disp_data[0], S2=disp_data[1], S3=disp_data[2]) return render_template('history.html', S1=disp_data[0], S2=disp_data[1], S3=disp_data[2], sensor=sensors_name)
@app.route('/adm', methods=['GET']) @app.route('/adm', methods=['GET'])
def admin(): def admin():

View File

@ -13,13 +13,14 @@ def BltDataScrap():
#print("Begin device scan") #print("Begin device scan")
devices = scanner.scan(timeout=3.0) devices = scanner.scan(timeout=3.0)
for device in devices: for device in devices:
if device.addr in SENSORS : if device.addr in sensor_dict :
#print( #print(
#f"Device found {device.addr} ({device.addrType}), " #f"Device found {device.addr} ({device.addrType}), "
#f"RSSI={device.rssi} dB" #f"RSSI={device.rssi} dB"
#) #)
for adtype, description, value in device.getScanData(): for adtype, description, value in device.getScanData():
if adtype == 22: if adtype == 22:
#print(value)
temp = int(value[24:28], 16) / 100 temp = int(value[24:28], 16) / 100
HR = int(value[28:32], 16) / 100 HR = int(value[28:32], 16) / 100
Bat = int(value[20:22], 16) Bat = int(value[20:22], 16)

View File

@ -60,7 +60,7 @@ tr:hover {
<a href="/adm" class="btn">Admin</a> <a href="/adm" class="btn">Admin</a>
</div> </div>
<h1>Database Contents</h1> <h1>Database Contents</h1>
<h2>Sensor 1</h2> <h2>{{ sensor[0] }}</h2>
<table border="1"> <table border="1">
<tr> <tr>
<th>Id</th> <th>Id</th>
@ -81,7 +81,7 @@ tr:hover {
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
<h2>Sensor 2</h2> <h2>{{ sensor[1] }}</h2>
<table border="1"> <table border="1">
<tr> <tr>
<th>Id</th> <th>Id</th>
@ -102,7 +102,7 @@ tr:hover {
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
<h2>Sensor 3</h2> <h2>{{ sensor[2] }}</h2>
<table border="1"> <table border="1">
<tr> <tr>
<th>Id</th> <th>Id</th>

View File

@ -98,7 +98,7 @@
Plotly.newPlot('graph_hr', HR_graphData.data, HR_graphData.layout); Plotly.newPlot('graph_hr', HR_graphData.data, HR_graphData.layout);
</script> </script>
<script> <script>
// Refresh the page every 10 seconds // Refresh the page every 20 seconds
setTimeout(function(){ setTimeout(function(){
location.reload(); location.reload();
}, 20000); }, 20000);