"""Module 9 — Bluetooth Low Energy (BLE).""" from outils import boite, fleche, sequence, toile from style import BLEU, ENCRE, GRIS, ORANGE, VERT, Figure def hierarchie_gatt(): fig, ax = toile(16, 7.0) boite(ax, 5.6, 3.5, 10.8, 6.6, couleur=BLEU, fond="#f5f8fe") ax.text(0.5, 6.4, "Serveur BLE — l'ESP32-S3", fontsize=9.5, fontweight="bold", color=BLEU) ax.text(0.5, 6.0, 'BLEDevice::init("ESP32-S3-Formation")', fontsize=7.5, color=GRIS, family="monospace") boite(ax, 5.6, 3.15, 10.0, 5.1, couleur=ORANGE) ax.text(0.9, 5.25, "Service", fontsize=9, fontweight="bold", color=ORANGE) ax.text(0.9, 4.9, "UUID 4fafc201-1fb5-459e-8fcc-c5c9c331914b", fontsize=7.5, color=ENCRE, family="monospace") boite(ax, 5.6, 2.55, 9.2, 3.1, couleur=VERT) ax.text(1.3, 3.75, "Caractéristique", fontsize=9, fontweight="bold", color=VERT) ax.text(1.3, 3.4, "UUID beb5483e-36e1-4688-b7f5-ea07361b26a8", fontsize=7.5, color=ENCRE, family="monospace") for i, (p, c) in enumerate((("READ", BLEU), ("WRITE", ORANGE), ("NOTIFY", VERT))): boite(ax, 2.0 + i * 1.75, 2.6, 1.5, 0.55, p, couleur=c, taille=7.5, gras=True) boite(ax, 8.4, 2.6, 2.6, 0.8, 'valeur : "rouge"', couleur=GRIS, taille=8) ax.text(5.6, 1.4, "(un service peut contenir plusieurs caractéristiques)", ha="center", fontsize=7.3, color=GRIS, style="italic") boite(ax, 14.1, 3.5, 2.8, 2.0, "Client BLE\nsmartphone\n(nRF Connect)", couleur=GRIS, taille=8.5) fleche(ax, (12.7, 3.0), (11.0, 3.0), "écrit", couleur=ORANGE, taille=7.5, decalage=0.08) fleche(ax, (11.0, 2.2), (12.7, 2.2), "notifie", couleur=VERT, taille=7.5, decalage=0.08) fleche(ax, (12.7, 4.1), (11.0, 4.1), "lit", couleur=BLEU, taille=7.5, decalage=0.08) return fig def sequence_ble(): acteurs = ["ESP32-S3 (serveur)", "Smartphone (client)"] messages = [ ("ESP32-S3 (serveur)", "Smartphone (client)", "annonce (advertising) « ESP32-S3-Formation »", True), ("Smartphone (client)", "ESP32-S3 (serveur)", "connexion"), ("Smartphone (client)", "ESP32-S3 (serveur)", "découverte des services et caractéristiques"), ("Smartphone (client)", "ESP32-S3 (serveur)", "WRITE « rouge »"), ("ESP32-S3 (serveur)", "ESP32-S3 (serveur)", "onWrite() → LED rouge"), ("ESP32-S3 (serveur)", "Smartphone (client)", "NOTIFY « 21.5 » (température)", True), ("ESP32-S3 (serveur)", "Smartphone (client)", "NOTIFY « 21.6 » … toutes les 5 s", True), ] fig, ax = sequence(acteurs, messages, largeur_cm=15, pas_cm=0.85, couleurs={"Smartphone (client)": GRIS}) return fig FIGURES = [ Figure("m09-hierarchie-gatt", hierarchie_gatt), Figure("m09-sequence-ble", sequence_ble), ]