Posté(e) 8 novembre 20258 nov. Chapitre 1 : Pourquoi intégrer son CPAP à Home Assistant ?L’apnée du sommeil touche 1 personne sur 5 après 50 ans. Ton appareil ResMed CPAP (AirSense 10, 11, AirCurve…) envoie déjà ses données à myAir, l’application officielle. Mais Home Assistant va plus loin :AvantagesExemples concretsDashboard santé centraliséScore, AHI, fuites, usage en un coup d’œilAlertes intelligentesNotification si AHI > 5 ou usage < 4hHistoriques longsGraphiques sur 1 mois, 3 mois, 1 anIntégration domotiqueAllume une lampe rouge si fuites élevéesMotivation quotidienneBadges de streak, gamificationChapitre 2 : Créer ton compte myAir (EU)Lien direct : https://myair.resmed.eu/Étapes pas à pasAccède au site → Clique sur "S’inscrire"Remplis le formulaire :Email → sera ton identifiant Home AssistantMot de passe : 8+ caractères, 1 majuscule, 1 chiffrePays : FranceValide ton email (lien reçu en 2 min)Ajoute ton CPAP :Numéro de série (au dos de la machine)Modèle (ex: AirSense 11 AutoSet)Active Wi-Fi ou modem cellulaireAstuce : Télécharge l’app mobile myAir pour forcer la première synchro : iOS | AndroidVérificationAprès une nuit de sommeil :Score myAir visibleAHI affichéTemps d’utilisation > 0Chapitre 3 : Installer l’intégration via HACSRepo officiel : github.com/prestomation/resmed_myair_sensors Version actuelle : v0.1.18 (05/11/2025)PrérequisHome Assistant 2025.10+HACS installéCompte myAir actifInstallationHACS → Integrations → Explore & Download RepositoriesRecherche : ResMed myAirClique sur "Download" → Redémarre Home AssistantSettings > Devices & Services > + Add IntegrationTape ResMed → sélectionne ResMed myAir CPAP SensorsRemplis :Username: [email protected] Password: ******** Region: EU (ou Auto) Scan interval: 30 minutesProblème ?Rafraîchis la page, redémarre HA, ou vérifie les logs (resmed_myair).Chapitre 4 : Les capteurs disponibles (v0.1.18)EntitéNomUnitéDescriptionsensor.cpap_ahi_events_per_hourAHIévénements/hApnée + hypopnéesensor.cpap_usage_minutesUtilisationminTemps masque portésensor.cpap_mask_on_off_countRetrait masquecountNombre d’enlèvementssensor.cpap_mask_leak_percentileFuites%Percentile 95sensor.cpap_myair_scoreScore myAir/100Score globalsensor.cpap_device_modelModèletexteAirSense 11, etc.sensor.cpap_current_data_dateDate donnéesdateDernière nuitsensor.cpap_sleep_data_last_collectedCollectedatetimeDernier syncChapitre 5 : Dashboard Lovelace complet (Mushroom + Flex + ApexCharts)Cartes requises (via HACS) :Mushroom CardsFlex Horseshoe CardApexCharts CardMini Graph CardCode YAML complet de ma CARTEtype: sections max_columns: 6 title: Santé CPAP path: sante icon: mdi:heart-pulse theme: transparentblue sections: # === 1. RÉSUMÉ QUOTIDIEN === - type: grid cards: - type: custom:mushroom-title-card title: "" subtitle: Résumé quotidien - type: grid square: false columns: 2 cards: - type: custom:mushroom-entity-card entity: sensor.cpap_current_data_date name: Dernière nuit icon: mdi:calendar icon_color: blue primary_info: state secondary_info: last_changed layout: horizontal - type: custom:mushroom-entity-card entity: sensor.cpap_usage_minutes name: Utilisation masque icon: mdi:face-mask icon_color: green primary_info: state secondary_info: last_changed layout: horizontal - type: grid square: false columns: 3 cards: - type: custom:mushroom-title-card title: "" subtitle: Score myAir alignment: center - type: custom:mushroom-title-card title: "" subtitle: AHI alignment: center - type: custom:mushroom-title-card title: "" subtitle: Retrait masque alignment: center - type: grid square: false columns: 3 cards: - type: custom:flex-horseshoe-card entities: - entity: sensor.cpap_myair_score decimals: 0 unit: "" show: { horseshoe_style: autominmax } layout: states: - id: 0 entity_index: 0 xpos: 50 ypos: 66 styles: { font-size: 6.5em; } horseshoe_scale: { min: 0, max: 100 } color_stops: "70": red "85": orange "90": green - type: custom:flex-horseshoe-card entities: - entity: sensor.cpap_ahi_events_per_hour decimals: 1 unit: /h show: { horseshoe_style: autominmax } layout: states: - id: 0 entity_index: 0 xpos: 50 ypos: 60 styles: { font-size: 5.5em; } horseshoe_scale: { min: 0, max: 30 } color_stops: "5": green "15": orange "30": red - type: custom:flex-horseshoe-card entities: - entity: sensor.cpap_mask_on_off_count decimals: 0 unit: fois show: { horseshoe_style: autominmax } layout: states: - id: 0 entity_index: 0 xpos: 50 ypos: 57 styles: { font-size: 4.5em; } horseshoe_scale: { min: 0, max: 7 } color_stops: "2": green "4": orange "7": red - type: custom:mini-graph-card entities: - entity: sensor.cpap_mask_leak_percentile name: Fuites masque (95e percentile) show: { name: true, icon: false, fill: true } color_thresholds: - { value: 0, color: "#43A047" } - { value: 24, color: "#FF9800" } - { value: 40, color: "#E53935" } hours_to_show: 168 # === 2. REVUE HEBDOMADAIRE === - type: grid cards: - type: custom:mushroom-title-card title: "" subtitle: Revue hebdomadaire - type: custom:apexcharts-card graph_span: 7d header: { show: true, title: Utilisation CPAP } series: - entity: sensor.cpap_usage_minutes type: column name: Minutes/jour group_by: { func: max, duration: 1d } show: { as_duration: minute, datalabels: true } - type: custom:apexcharts-card graph_span: 14d header: { show: true, title: Score myAir } series: - entity: sensor.cpap_myair_score type: column group_by: { func: max, duration: 1d } color_threshold: - { value: 0, color: "#E53935" } - { value: 85, color: "#FFB300" } - { value: 90, color: "#43A047" } - type: custom:apexcharts-card graph_span: 14d header: { show: true, title: AHI } series: - entity: sensor.cpap_ahi_events_per_hour type: column group_by: { func: max, duration: 1d } color_threshold: - { value: 5, color: "#43A047" } - { value: 15, color: "#FFB300" } - { value: 30, color: "#E53935" } # === 3. REVUE MENSUELLE === - type: grid cards: - type: custom:mushroom-title-card title: "" subtitle: Revue mensuelle (moyenne hebdo) - type: custom:apexcharts-card graph_span: 1month series: - entity: sensor.cpap_myair_score type: column name: Score moyen group_by: { func: avg, duration: 1week } color_threshold: - { value: 85, color: "#43A047" } - { value: 70, color: "#FFB300" } - { value: 0, color: "#E53935" } header: card: type: markdown content: | # Santé CPAP - {{ user }} Dernière mise à jour : {{ states('sensor.cpap_sleep_data_last_collected') | timestamp_custom('%H:%M') }}Chapitre 6 : Automatisations utiles1. Alerte AHI élevé- alias: "Alerte AHI > 5" trigger: - platform: numeric_state entity_id: sensor.cpap_ahi_events_per_hour above: 5 action: - service: notify.mobile_app_iphone data: title: "CPAP - AHI élevé" message: "AHI = {{ states('sensor.cpap_ahi_events_per_hour') }} /h"2. Rappel usage faible- alias: "Rappel CPAP < 4h" trigger: - platform: time at: "08:00:00" condition: - condition: numeric_state entity_id: sensor.cpap_usage_minutes below: 240 action: - service: notify.mobile_app_iphone data: title: "CPAP oublié" message: "Usage hier : {{ states('sensor.cpap_usage_minutes') }} min"Chapitre 7 : Dépannage & problèmes courantsProblèmeSolution401 UnauthorizedVérifie mot de passe / région429 Too Many Requestsscan_interval: 3600Pas de donnéesVérifie modem CPAP + app myAirIntégration absenteRedémarre HA après HACS2FA activéDésactive-le (non supporté)Chapitre 8 : Conclusion & perspectivesTu as maintenant un suivi médical pro dans Home Assistant :Dashboard clair et motivantDonnées fiables et quotidiennesAlertes automatiquesLimite : API non officielle → risque de rupture (mais stable depuis 2021).À faire ensuitePartage ton dashboard sur le forum HAAjoute un capteur de température chambre pour corréler avec AHICrée un badge de streak (7 nuits > 4h) Modifié 8 novembre 20258 nov. par XAV59213
Posté(e) 10 novembre 202510 nov. Ah pas mal ! Je n'aurai pas pensé à ca, mais ca peut être super intéressant pour ceux qui ont ce soucis, en effet !
Rejoindre la conversation
Vous pouvez commenter maintenant et vous inscrire plus tard. Si vous possédez un compte, connectez-vous.