Somnwave

Prototype Audio Sûr
Appuyez P pour Play/Pause

Générez votre plan de nuit

Ce prototype crée des paysages sonores (bruit rose + battements binauraux doux) adaptés à votre profil. Volume plafonné et arrêt d'urgence intégrés.

Commencer

⚠️ Audio non médical. Pas de paramètres électromagnétiques. Pour tout trouble sévère (apnée, parasomnies), consultez un professionnel.

Questionnaire Sommeil

Rythme

Symptômes

Habitudes & Environnement

Objectifs & Préférences

Les données restent locales (localStorage). Vous pouvez exporter/supprimer à tout moment.
Exemple d'API FastAPI – /api/assess
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI()

class Answers(BaseModel):
    bedtime_week: Optional[str] = None
    sleep_latency: Optional[int] = 0
    noct_awakenings: Optional[int] = 0
    goal_primary: Optional[str] = "Endormissement"
    sensitivity: Optional[str] = "Moyenne"

@app.post("/api/assess")
def assess(answers: Answers):
    # Reprend la même logique que le client (règles explicables)
    def to_minutes(hhmm):
        h,m = map(int, hhmm.split(':'))
        return h*60+m
    def minutes_to_hhmm(mins):
        mins %= 24*60
        return f"{mins//60:02d}:{mins%60:02d}"
    sens = (answers.sensitivity or 'Moyenne').lower()
    vol_map = { 'faible':40,'moyenne':35,'élevée':25 }
    base_vol = vol_map.get(sens,35)
    bedtime_min = to_minutes(answers.bedtime_week or '22:30')
    latency = answers.sleep_latency or 0
    awak = answers.noct_awakenings or 0
    plan=[]
    plan.append({"id":"pre","label":"Pré-dodo","start":minutes_to_hhmm(bedtime_min-30),"duration_min":20,"audio":{"pink":True,"binaural":False,"diffHz":0},"volume":base_vol})
    if latency>20:
        plan.append({"id":"onset","label":"Endormissement","start":minutes_to_hhmm(bedtime_min-10),"duration_min":15,"audio":{"pink":True,"binaural":True,"diffHz":4},"volume":max(base_vol-5,20)})
    plan.append({"id":"stable","label":"Sommeil stable","start":minutes_to_hhmm(bedtime_min+10),"duration_min":120,"audio":{"pink":True,"binaural":False,"diffHz":0},"volume":max(base_vol-10,18)})
    if awak>=2:
        plan.append({"id":"maintenance","label":"Réduction micro-réveils","start":minutes_to_hhmm(bedtime_min+90),"duration_min":10,"audio":{"pink":True,"binaural":True,"diffHz":3},"volume":max(base_vol-8,18)})
    plan.append({"id":"late","label":"Fin de nuit","start":minutes_to_hhmm(bedtime_min+190),"duration_min":20,"audio":{"pink":True,"binaural":False,"diffHz":0},"volume":max(base_vol-12,15)})
    profile = {"goal":answers.goal_primary or 'Endormissement',"sensitivity":answers.sensitivity or 'Moyenne',"risk_insomnia":"élevé" if latency>30 else ("modéré" if latency>15 else "faible"),"awakenings":awak}
    return {"profile":profile,"plan":plan}

Bandeau / Appareil (BLE)

Connexion Web Bluetooth (si supportée). Sinon, mode simulation pour tester l'envoi du programme.

Statut: non connecté

Caractéristiques (GATT)

  • program_mode: calm/relax/rem/off
  • session_start: ISO datetime
  • session_length_min: uint16
  • volume_hint: 0–100

Ces valeurs sont non-médicales. Les paramètres EM restent désactivés.

Programme personnalisé

Aucun plan pour l’instant. Remplissez le questionnaire ou cliquez « Générer un plan démo ».

Vie privée & sécurité

Minimisation

Pas de données de santé sensibles. Réponses stockées localement (localStorage) par défaut.

Consentement

Case à cocher explicite. Export/suppression disponibles. Aucune publicité comportementale.

Avertissements

Audio non médical. Volume limité. Consultez un professionnel en cas d'apnée, ronflements sévères, douleurs ou somnolence diurne.

Lecteur de programme

Volume plafonné, arrêt d’urgence, aperçu bloc par bloc.

Volume 35 dB (approx.)