Skip to main content

Overview

The WiFi module provides comprehensive cloud connectivity including WiFi management, MQTT messaging, Firebase integration, and Google Sheets API for ESP32/ESP8266 platforms.

WiFi Connection

WiFiHandler

Basic WiFi connection management with auto-reconnect.
#define ENABLE_MODULE_WIFI_HANDLER
#include "Kinematrix.h"

WiFiHandler wifi;

void reconnectCallback() {
  Serial.println("Reconnecting to WiFi...");
}

void setup() {
  if (wifi.connectToWiFi("MySSID", "MyPassword", reconnectCallback)) {
    Serial.println("Connected!");
    Serial.println(WiFi.localIP());
  }
}

void loop() {
  if (!wifi.isConnect()) {
    wifi.connectToWiFi("MySSID", "MyPassword", reconnectCallback);
  }
}
connectToWiFi
bool
Connect to WiFi network
isConnect
bool
Check WiFi connection status

MQTT Messaging

MQTTManager

Comprehensive MQTT client with auto-reconnect and JSON support.
#define ENABLE_MODULE_MQTT_MANAGER
#include "Kinematrix.h"

MQTTManager mqtt;

void messageReceived(char* topic, byte* payload, unsigned int length) {
  Serial.printf("Message on %s: ", topic);
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void setup() {
  mqtt.beginWiFi("MySSID", "MyPassword");
  mqtt.beginMQTT("mqtt.server.com", 1883, "user", "pass");
  mqtt.setCallback(messageReceived);
  
  if (mqtt.connect()) {
    mqtt.subscribe("sensor/temperature");
    mqtt.publish("device/status", "online");
  }
}

void loop() {
  mqtt.loop();
}
beginWiFi
bool
Initialize WiFi connection
beginMQTT
bool
Initialize MQTT connection
setCallback
void
Set message callback
connect
bool
Connect to MQTT broker
publish
bool
Publish message
publishJson
bool
Publish JSON document
subscribe
bool
Subscribe to topic
reconnect
bool
Attempt reconnection
loop
void
Process MQTT messages (call in loop)
setWill
void
Set last will message
enableAutoReconnect
void
Enable automatic reconnection

Firebase Integration

FirebaseV3Application

Modern Firebase SDK integration with multiple authentication methods.
#define ENABLE_MODULE_FIREBASE_V3
#include "Kinematrix.h"

FirebaseV3Application* firebase = FirebaseV3Application::getInstance();

void authCallback(AsyncResult& result) {
  if (result.isEvent()) {
    Serial.println("Authentication event");
  }
}

void setup() {
  // Email/password authentication
  firebase->begin("API_KEY", "[email protected]", "password", 
                  "project-id", authCallback);
  
  // Wait for ready
  while (!firebase->isReady()) {
    firebase->loop();
    delay(100);
  }
  
  Serial.println("Firebase ready!");
}

void loop() {
  firebase->loop();
}
getInstance
FirebaseV3Application*
Get singleton instance
begin
bool
Initialize Firebase with authentication
loop
void
Process Firebase events (call in loop)
isReady
bool
Check if Firebase is ready
getProjectId
String
Get Firebase project ID
getApp
FirebaseApp&
Get FirebaseApp reference for services

Google Sheets API

GoogleSheetClient

Google Sheets integration for data logging and retrieval.
#define ENABLE_MODULE_GOOGLE_SHEETS
#include "Kinematrix.h"

GoogleSheetClient sheets;

void setup() {
  sheets.addAP("MySSID", "MyPassword");
  
  // Service account credentials
  sheets.begin("[email protected]",
               "project-id",
               "-----BEGIN PRIVATE KEY-----\n...");
               
  while (!sheets.ready()) {
    sheets.process();
    delay(100);
  }
  
  // Append data
  FirebaseJson valueRange;
  valueRange.set("values/[0]/[0]", "Temperature");
  valueRange.set("values/[0]/[1]", 25.5);
  
  sheets.appendValues("SPREADSHEET_ID", "Sheet1!A1", &valueRange);
}

void loop() {
  sheets.process();
}
begin
bool
Initialize Google Sheets client
addAP
void
Add WiFi access point
process
void
Process API requests (call in loop)
ready
bool
Check if client is ready
updateValues
bool
Update cell values
appendValues
bool
Append values to sheet
getValues
String
Get cell values
createSpreadsheet
String
Create new spreadsheet

Example: Complete IoT Logger

#define ENABLE_MODULE_MQTT_MANAGER
#define ENABLE_MODULE_GOOGLE_SHEETS
#include "Kinematrix.h"

MQTTManager mqtt;
GoogleSheetClient sheets;
float temperature = 0;

void messageReceived(char* topic, byte* payload, unsigned int length) {
  String msg = String((char*)payload).substring(0, length);
  temperature = msg.toFloat();
  
  // Log to Google Sheets
  FirebaseJson values;
  values.set("values/[0]/[0]", millis());
  values.set("values/[0]/[1]", temperature);
  sheets.appendValues("SPREADSHEET_ID", "Sheet1!A1", &values);
}

void setup() {
  mqtt.beginWiFi("SSID", "Password");
  mqtt.beginMQTT("mqtt.server.com");
  mqtt.setCallback(messageReceived);
  mqtt.connect();
  mqtt.subscribe("sensor/temp");
  
  sheets.addAP("SSID", "Password");
  sheets.begin("[email protected]",
               "project-id", "private-key");
}

void loop() {
  mqtt.loop();
  sheets.process();
}

Platform Support

WiFi modules are only available on ESP32 and ESP8266 platforms. Code is conditionally compiled with #if defined(ESP32) || defined(ESP8266).

ESP32

Full support - recommended platform

ESP8266

Full support with memory optimization

Build docs developers (and LLMs) love