New Technology Design

Arduino Library, SchreinWiFiParser

SchreinWiFiParser (Getting Started)

💡 Utilisation de base

Initialisation

#include <SchreinWiFiParser.h>

SchreinWiFiParser wifiParser;

void setup() {
    Serial.begin(115200);
    
    // Connexion WiFi
    if (wifiParser.begin("MonSSID", "MonMotDePasse")) {
        // Mode client
        wifiParser.initAsClient(IPAddress(192, 168, 1, 100), 8888);
        
        // Ou mode serveur
        // wifiParser.initAsServer(8888);
    }
}

void loop() {
    wifiParser.loop();
    
    if (wifiParser.isFrameAvailable()) {
        String value = wifiParser.getValue("monControl", "maKey");
        Serial.println("Valeur reçue: " + value);
    }
}


Envoi de données

// Envoyer une commande
String frame = SchreinWiFiParser::command("led", "state", "on");
wifiParser.sendFrame(frame);

// Envoyer vers une cible spécifique
wifiParser.sendFrameTo(frame, IPAddress(192, 168, 1, 50), 8888);


⚡ Gestion d’énergie

Mode économie

// Activer/désactiver le mode économie
wifiParser.setPowerSaving(true);

// Configurer le deep sleep
wifiParser.setDeepSleepDuration(300); // 5 minutes

// Forcer le deep sleep manuellement
wifiParser.enterDeepSleep();


Surveillance de la connexion

// Vérifier l'état de la connexion
if (wifiParser.isConnectionHealthy()) {
    Serial.println("Connexion stable");
}

// Obtenir la qualité du signal
int quality = wifiParser.getConnectionQuality();
Serial.println("Qualité: " + String(quality) + "%");


🔗 Callbacks

Exemple d’utilisation des callbacks

void onFrameParsed(String control, String key, String value) {
    Serial.println("Frame reçu - Control: " + control + ", Key: " + key + ", Value: " + value);
}

void onWiFiSignal(int rssi) {
    Serial.println("Signal WiFi: " + String(rssi) + " dBm");
}

void setup() {
    wifiParser.onFrameParsed(onFrameParsed);
    wifiParser.onWiFiSignalUpdate(onWiFiSignal);
    // ... autres callbacks
}


Callbacks disponibles

  • onError() – Erreurs système
  • onDataReceived() – Données brutes reçues
  • onFrameParsed() – Trame parsée
  • onNewClient() – Nouveau client connecté
  • onWiFiStatusChange() – Changement statut WiFi
  • onWiFiSignalUpdate() – Mise à jour signal
  • onDeepSleep() – Avant deep sleep
  • onPowerModeChange() – Changement mode économie
  • onConnectionQualityUpdate() – Mise à jour qualité


🛠️ Diagnostic

Output de debug

// Afficher les informations WiFi
wifiParser.debugOutput("wifiStatus");

// Afficher les clients connectés
wifiParser.debugOutput("clients");

// Afficher les statistiques de connexion
wifiParser.debugOutput("connectionStats");

// Réinitialiser les données
wifiParser.debugOutput("reset");


📖 Format des trames

Format de base

<[controlName|key|value]&checksum>

Exemple

<[led|state|on]&A7>

Construction de commande

String command = SchreinWiFiParser::command("motor", "speed", "255");
// Résultat: "motor=speed:255;"


⚙️ Configuration

Constantes modifiables

Dans SchreinWiFiParser.h :

#define POWER_SAVING_MODE 1          // Mode économie par défaut
#define MAX_CONSECUTIVE_WIFI_FAILURES 3  // Échecs avant deep sleep
#define DEEP_SLEEP_DURATION 300      // Durée deep sleep (secondes)
#define WIFI_RECONNECT_INTERVAL 10000 // Intervalle reconnexion (ms)
#define MAX_FRAME_SIZE 256           // Taille max des trames


🐛 Dépannage

Problèmes courants

  1. Échec de connexion WiFi
    • Vérifier SSID/mot de passe
    • Vérifier la portée du signal
    • Augmenter WIFI_CONNECT_TIMEOUT si nécessaire
  2. Trames non reçues
    • Vérifier le format des trames
    • Activer les logs de debug
    • Vérifier le checksum
  3. Déconnexions fréquentes
    • Désactiver le mode économie
    • Vérifier la stabilité du réseau
    • Ajuster les timeouts

Leave a Reply