maj fastapi
This commit is contained in:
@@ -1,17 +0,0 @@
|
|||||||
from machine import Pin,ADC
|
|
||||||
|
|
||||||
|
|
||||||
ldr_sensor_pin = 35
|
|
||||||
adc = ADC(Pin(ldr_sensor_pin))
|
|
||||||
adc.width(ADC.WIDTH_10BIT)
|
|
||||||
adc.atten(ADC.ATTN_11DB)
|
|
||||||
|
|
||||||
def luminosite_detection():
|
|
||||||
while True:
|
|
||||||
luminosite = adc.read()
|
|
||||||
print (luminosite)
|
|
||||||
if luminosite > 300:
|
|
||||||
led_verte_luminosite.on()
|
|
||||||
else:
|
|
||||||
led_verte_luminosite.off()
|
|
||||||
utime.sleep(0.5)
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
from machine import Pin,PWM
|
|
||||||
|
|
||||||
buzzer_pin = 11
|
|
||||||
|
|
||||||
buzzer = PWM(Pin(buzzer_pin), freq=440, duty=0)
|
|
||||||
|
|
||||||
def activate_alarm():
|
|
||||||
for _ in range(3):
|
|
||||||
buzzer.duty(512)
|
|
||||||
utime.sleep(0.5)
|
|
||||||
buzzer.duty(0)
|
|
||||||
utime.sleep(0.5)
|
|
||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
from gpiozero import LED
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
led = LED(17)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
led.on()
|
|
||||||
sleep(1)
|
|
||||||
led.off()
|
|
||||||
sleep(1)
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
"""
|
|
||||||
code adapté un une utilisation avec mcp3008 pour ldr
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
import time
|
|
||||||
from gpiozero import LED, Button, PWMOutputDevice, AngularServo
|
|
||||||
from gpiozero import MCP3008
|
|
||||||
|
|
||||||
|
|
||||||
led_verte = LED(12)
|
|
||||||
led_verte_luminosite = LED(25)
|
|
||||||
led_rouge = LED(13)
|
|
||||||
led_bleue = LED(14)
|
|
||||||
led_rouge_gas = LED(10)
|
|
||||||
servo = AngularServo(32, min_angle=0, max_angle=180)
|
|
||||||
pir_sensor = Button(33)
|
|
||||||
gas_sensor = Button(34)
|
|
||||||
buzzer = PWMOutputDevice(11)
|
|
||||||
ldr_sensor = MCP3008(channel=0)
|
|
||||||
|
|
||||||
|
|
||||||
def activate_alarm():
|
|
||||||
for _ in range(3):
|
|
||||||
buzzer.value = 0.5
|
|
||||||
time.sleep(0.5)
|
|
||||||
buzzer.value = 0
|
|
||||||
time.sleep(0.5)
|
|
||||||
|
|
||||||
|
|
||||||
def pir_detection():
|
|
||||||
while True:
|
|
||||||
if pir_sensor.is_pressed:
|
|
||||||
led_bleue.on()
|
|
||||||
time.sleep(3)
|
|
||||||
led_bleue.off()
|
|
||||||
time.sleep(0.1)
|
|
||||||
|
|
||||||
def luminosite_detection():
|
|
||||||
while True:
|
|
||||||
luminosite = ldr_sensor.value * 1023
|
|
||||||
print(luminosite)
|
|
||||||
if luminosite > 300:
|
|
||||||
led_verte_luminosite.on()
|
|
||||||
else:
|
|
||||||
led_verte_luminosite.off()
|
|
||||||
time.sleep(0.5)
|
|
||||||
|
|
||||||
import threading
|
|
||||||
threading.Thread(target=pir_detection, daemon=True).start()
|
|
||||||
threading.Thread(target=luminosite_detection, daemon=True).start()
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
from machine import Pin
|
|
||||||
|
|
||||||
pir_sensor = Pin(33, Pin.IN)
|
|
||||||
|
|
||||||
|
|
||||||
def pir_detection():
|
|
||||||
while True:
|
|
||||||
if pir_sensor.value() == 1:
|
|
||||||
led_bleue.on()
|
|
||||||
utime.sleep(3)
|
|
||||||
led_bleue.off()
|
|
||||||
utime.sleep(0.1)
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
from fastapi import FastAPI
|
|
||||||
import RPi.GPIO as GPIO
|
|
||||||
|
|
||||||
GPIO.setmode(GPIO.BCM)
|
|
||||||
GPIO.setwarnings(False)
|
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
||||||
composants = os.path.join(BASE_DIR, "composants", "byPanda")
|
|
||||||
sys.path.insert(0, composants)
|
|
||||||
|
|
||||||
from lumieres import SystemeLumieres
|
|
||||||
from thermostat import SystemeThermostat
|
|
||||||
#from volets import SystemeVolets
|
|
||||||
from etatsystemes import EtatSysteme
|
|
||||||
from septsegments import afficher_temperature
|
|
||||||
|
|
||||||
app = FastAPI(title="Loustiques API - Pi 2")
|
|
||||||
|
|
||||||
controleur_lumieres = SystemeLumieres()
|
|
||||||
controleur_thermostat = SystemeThermostat()
|
|
||||||
#controleur_volet = SystemeVolets()
|
|
||||||
etatSysteme = EtatSysteme()
|
|
||||||
|
|
||||||
@app.get("/up_led")
|
|
||||||
async def allumer_led():
|
|
||||||
try:
|
|
||||||
controleur_lumieres.allumerLumieres()
|
|
||||||
controleur_lumieres.modeManuel = True
|
|
||||||
etatSysteme.signalerOk()
|
|
||||||
return {"success": True, "message": "Lumière allumée par le Pi 2"}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
etatSysteme.signalerProbleme()
|
|
||||||
return {"success": False, "message": str(e)}
|
|
||||||
|
|
||||||
@app.get("/down_led")
|
|
||||||
async def eteindre_led():
|
|
||||||
try:
|
|
||||||
controleur_lumieres.eteindreLumieres()
|
|
||||||
controleur_lumieres.modeManuel = True
|
|
||||||
etatSysteme.signalerOk()
|
|
||||||
return {"success": True, "message": "Lumière éteinte par le Pi 2"}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
etatSysteme.signalerProbleme()
|
|
||||||
return {"success": False, "message": str(e)}
|
|
||||||
|
|
||||||
@app.get("/temperature")
|
|
||||||
async def read_temp():
|
|
||||||
try:
|
|
||||||
temp = controleur_thermostat.lireTemperature()
|
|
||||||
if temp is None:
|
|
||||||
etatSysteme.signalerProbleme()
|
|
||||||
return {"success": False, "message": "Impossible de lire le capteur DHT11"}
|
|
||||||
|
|
||||||
etatSysteme.signalerOk()
|
|
||||||
afficher_temperature(temp)
|
|
||||||
return {"success": True, "temperature": temp}
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
etatSysteme.signalerProbleme()
|
|
||||||
return {"success": False, "message": str(e)}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
import uvicorn
|
|
||||||
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
|
|
||||||
185
fastapi/main.sh
Executable file
185
fastapi/main.sh
Executable file
@@ -0,0 +1,185 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cat << 'EOF'
|
||||||
|
|
||||||
|
_______ ________ ___ ___ _______ ________
|
||||||
|
|\ ___ \ |\ __ \|\ \|\ \|\ ___ \ |\ ____\
|
||||||
|
\ \ __/|\ \ \|\ \ \ \\\ \ \ __/|\ \ \___|
|
||||||
|
\ \ \_|/_\ \ ____\ \ __ \ \ \_|/_\ \ \
|
||||||
|
\ \ \_|\ \ \ \___|\ \ \ \ \ \ \_|\ \ \ \____
|
||||||
|
\ \_______\ \__\ \ \__\ \__\ \_______\ \_______\
|
||||||
|
\|_______|\|__| \|__|\|__|\|_______|\|_______|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# Script de configuration automatique Raspberry Pi - Projet IoT
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SEPARATOR="=============================================="
|
||||||
|
|
||||||
|
print_step() {
|
||||||
|
echo ""
|
||||||
|
echo "$SEPARATOR"
|
||||||
|
echo " $1"
|
||||||
|
echo "$SEPARATOR"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Vérification des droits sudo
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo " Ce script doit être exécuté avec sudo"
|
||||||
|
echo " Utilisation : sudo ./main.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_step " Lancement du programme de configuration IoT"
|
||||||
|
print_step " Lancement du programme de configuration IoT"
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# 1. Mise à jour du système
|
||||||
|
# ----------------------------
|
||||||
|
print_step " Mise à jour du système (apt update & upgrade)"
|
||||||
|
print_step " Mise à jour du système (apt update & upgrade)"
|
||||||
|
if ! apt update && apt upgrade -y; then
|
||||||
|
echo " Erreur lors de la mise à jour du système"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Système mis à jour"
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------
|
||||||
|
# 2. Installation de MariaDB x phpmyadmin
|
||||||
|
#------------------------------
|
||||||
|
bash DB/main.sh
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------
|
||||||
|
# 3. Exportation des DB
|
||||||
|
#--------------------------------
|
||||||
|
read -p "Voulez-vous exporter des DB existantes ? (y/n) : " choix
|
||||||
|
|
||||||
|
if [ "$choix" = "y" ]; then
|
||||||
|
bash "$(dirname "$0")/export_db.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'je sais ya un problème de numéro mais wola aller lire le script db/export_db.sh je suis claquax au sol sur terre'
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# 2. Installation de Python
|
||||||
|
# ----------------------------
|
||||||
|
print_step "Vérification / Installation de Python3"
|
||||||
|
if ! apt install python3 python3-pip python3-venv -y; then
|
||||||
|
echo "Erreur lors de l'installation de Python3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PYTHON_VERSION=$(python3 --version 2>&1)
|
||||||
|
echo " $PYTHON_VERSION installé"
|
||||||
|
echo " $PYTHON_VERSION installé"
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# 3. Recherche des venvs existants
|
||||||
|
# ----------------------------
|
||||||
|
print_step "Recherche des environnements virtuels (venv) existants..."
|
||||||
|
|
||||||
|
SEARCH_DIRS=("$(pwd)")
|
||||||
|
VENV_LIST=()
|
||||||
|
|
||||||
|
for dir in "${SEARCH_DIRS[@]}"; do
|
||||||
|
if [ -d "$dir" ]; then
|
||||||
|
# Un venv valide contient bin/activate et bin/python
|
||||||
|
while IFS= read -r -d '' activate_path; do
|
||||||
|
venv_dir=$(dirname "$(dirname "$activate_path")")
|
||||||
|
if [ -f "$venv_dir/bin/python" ]; then
|
||||||
|
VENV_LIST+=("$venv_dir")
|
||||||
|
fi
|
||||||
|
done < <(find "$dir" -name "activate" -path "*/bin/activate" 2>/dev/null -print0)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
if [ ${#VENV_LIST[@]} -eq 0 ]; then
|
||||||
|
echo " Aucun environnement virtuel trouvé dans : $(pwd)"
|
||||||
|
else
|
||||||
|
echo "${#VENV_LIST[@]} environnement(s) virtuel(s) trouvé(s) :"
|
||||||
|
for i in "${!VENV_LIST[@]}"; do
|
||||||
|
venv="${VENV_LIST[$i]}"
|
||||||
|
python_ver=$("$venv/bin/python" --version 2>&1)
|
||||||
|
echo ""
|
||||||
|
echo " [$((i+1))] Chemin : $venv"
|
||||||
|
echo " Python : $python_ver"
|
||||||
|
echo " ▶ Activer : source $venv/bin/activate"
|
||||||
|
done
|
||||||
|
SELECTED_VENV="${VENV_LIST[0]}"
|
||||||
|
echo "$SELECTED_VENV" > ./.venv_path
|
||||||
|
echo ""
|
||||||
|
echo "Venv sélectionné et enregistré : $SELECTED_VENV"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# 4. Créer un nouveau venv ?
|
||||||
|
# ----------------------------
|
||||||
|
print_step " Créer un nouvel environnement virtuel ?"
|
||||||
|
echo "Voulez-vous créer un nouveau venv ? (o/n)"
|
||||||
|
read -r CREATE_VENV
|
||||||
|
|
||||||
|
if [[ "$CREATE_VENV" =~ ^[oO]$ ]]; then
|
||||||
|
VENV_PATH="$SEARCH_DIRS/venv"
|
||||||
|
if python3 -m venv $SEARCH_DIRS/venv; then
|
||||||
|
echo ""
|
||||||
|
echo "Venv créé avec succès !"
|
||||||
|
echo " Chemin : $VENV_PATH"
|
||||||
|
echo " ▶ Activer : source $VENV_PATH/bin/activate"
|
||||||
|
|
||||||
|
|
||||||
|
echo "$VENV_PATH" > ./.venv_path
|
||||||
|
echo "Chemin enregistré dans .venv_path"
|
||||||
|
|
||||||
|
|
||||||
|
"$VENV_PATH/bin/pip" install --upgrade pip
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f "./requirements.txt" ]; then
|
||||||
|
echo "Installation des dépendances depuis requirements.txt..."
|
||||||
|
"$VENV_PATH/bin/pip" install -r ./requirements.txt
|
||||||
|
echo " Dépendances installées"
|
||||||
|
echo " Dépendances installées"
|
||||||
|
else
|
||||||
|
echo " Aucun requirements.txt trouvé, installation des dépendances ignorée"
|
||||||
|
echo " Aucun requirements.txt trouvé, installation des dépendances ignorée"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " Erreur lors de la création du venv à : $VENV_PATH"
|
||||||
|
echo " Erreur lors de la création du venv à : $VENV_PATH"
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " Création ignorée"
|
||||||
|
echo " Création ignorée"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Fin
|
||||||
|
# ----------------------------
|
||||||
|
print_step " Configuration terminée"
|
||||||
|
print_step " Configuration terminée"
|
||||||
|
echo ""
|
||||||
|
if [ -f "./.venv_path" ]; then
|
||||||
|
echo "Venv configuré : $(cat ./.venv_path)"
|
||||||
|
echo " Pour l'activer manuellement : source $(cat ./.venv_path)/bin/activate"
|
||||||
|
else
|
||||||
|
echo " Aucun venv enregistré — relancez le script et créez un venv"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
fastapi
|
fastapi
|
||||||
uvicorn
|
uvicorn
|
||||||
rpi.gpio
|
rpi.gpio
|
||||||
|
python-tm1637
|
||||||
|
Adafruit_DHT
|
||||||
68
fastapi/run_api.sh
Executable file
68
fastapi/run_api.sh
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cat << 'EOF'
|
||||||
|
=============================
|
||||||
|
_______ ________ ___ ___ _______ ________
|
||||||
|
|\ ___ \ |\ __ \|\ \|\ \|\ ___ \ |\ ____\
|
||||||
|
\ \ __/|\ \ \|\ \ \ \\\ \ \ __/|\ \ \___|
|
||||||
|
\ \ \_|/_\ \ ____\ \ __ \ \ \_|/_\ \ \
|
||||||
|
\ \ \_|\ \ \ \___|\ \ \ \ \ \ \_|\ \ \ \____
|
||||||
|
\ \_______\ \__\ \ \__\ \__\ \_______\ \_______\
|
||||||
|
\|_______|\|__| \|__|\|__|\|_______|\|_______|
|
||||||
|
=============================
|
||||||
|
EOF
|
||||||
|
cat << 'EOF'
|
||||||
|
===============================
|
||||||
|
Vérification de la présence de python
|
||||||
|
=================================
|
||||||
|
EOF
|
||||||
|
|
||||||
|
VERSION_PYTHON=$(python3 --version 2>&1)
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Python est installé"
|
||||||
|
echo "Voici la version : $VERSION_PYTHON"
|
||||||
|
else
|
||||||
|
apt install -y python3
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << 'EOF'
|
||||||
|
===================================================
|
||||||
|
Vérification de la présence de la bibliothèque FLASK
|
||||||
|
====================================================
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if venv/bin/python -m pip list | grep -qi 'flask'; then
|
||||||
|
echo "Flask existe bien"
|
||||||
|
else
|
||||||
|
echo "Flask n'est pas installé..."
|
||||||
|
echo "Lancement de l'installation..."
|
||||||
|
sleep 1
|
||||||
|
venv/bin/python -m pip install flask
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << 'EOF'
|
||||||
|
=================================
|
||||||
|
Vérification des certificats SSL
|
||||||
|
==================================
|
||||||
|
EOF
|
||||||
|
|
||||||
|
bash ../web_secu/ssl.sh
|
||||||
|
|
||||||
|
cat << 'EOF'
|
||||||
|
=============================
|
||||||
|
Vérification du daemin Avahi
|
||||||
|
============================
|
||||||
|
EOF
|
||||||
|
bash ../web_secu/avahi.sh
|
||||||
|
|
||||||
|
|
||||||
|
cat << 'EOF'
|
||||||
|
================================
|
||||||
|
Lancement du serveur FLASK
|
||||||
|
================================
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
touch /var/log/loustique.log
|
||||||
|
chown ${SUDO_USER}:${SUDO_USER} /var/log/loustique.log
|
||||||
|
venv/bin/python main
|
||||||
Reference in New Issue
Block a user