Skip to content

A robust solution to manage Wi-Fi connections in embedded systems using the Moddable SDK.

Notifications You must be signed in to change notification settings

ScreamZ/wifi-connection-manager

Repository files navigation

Embedded : WiFi connection manager

Important

This module is ESM only and only available for usage with the Moddable SDK as it uses core dependencies. Learn how to setup an Embedded JavaScript project using xs-dev.

A robust solution to manage Wi-Fi connections in embedded systems using the Moddable SDK. WiFiConnectionManager simplifies the process of maintaining an active connection to a Wi-Fi access point.

Features

  • Auto-reconnect: Automatically retries connection if unavailable at startup or dropped during runtime.
  • Connection lifecycle management: Allows clean disconnection using close.
  • Redundant message suppression: Filters out repetitive WiFi.disconnect messages.
  • Convenient readiness check: Use the ready getter to quickly determine if Wi-Fi is connected.
  • Connection timeout handling: Forces a disconnect and retries if no IP address is assigned within a configurable timeout.
  • Graceful recovery: Waits a configurable duration after an unforced disconnect for a clean reconnect.
  • Multiple access points: Attempts connection to access points in order from a provided list.

Installation

npm install @embedded-js/wifi-connection-manager
import Net from "net"; // From moddable SDK
import { WiFiConnectionManager } from "@embedded-js/wifi-connection-manager";

const manager = new WiFiConnectionManager(
  [
    // First access point to attempt
    {
      ssid: "Freebox-ScreamZ",
      password: "invalid!", // Invalid password for testing in a simulator
    },
    // Second access point to attempt
    {
      ssid: "Freebox-ScreamZ",
      password: "good_password",
    },
  ],
  (message) => {
    switch (msg) {
      case WiFiConnectionManager.connected:
        break; // still waiting for IP address
      case WiFiConnectionManager.gotIP:
        trace(`IP address ${Net.get("IP")}\n`);
        break;
      case WiFiConnectionManager.disconnected:
        break; // connection lost
    }
  }
);

// Example: Checking if connected (procedural way)
if (manager.ready) {
  console.log("Wi-Fi is connected!");
}

// Close connection when needed
manager.close();

About

A robust solution to manage Wi-Fi connections in embedded systems using the Moddable SDK.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published