Skip to main content

Remote Logging

Remote Logging allows ArmorLink modules to forward diagnostic information to the ArmorLink App through the Gateway.

It is designed to simplify development, troubleshooting and field diagnostics without requiring a USB cable or serial monitor.

Why Remote Logging?

In a modular ArmorLink setup, many ESP32 modules may be hidden inside armor parts, props or wearable systems.

Remote Logging allows you to inspect runtime behavior directly from the ArmorLink App.

Examples:

  • Debugging button presses
  • Monitoring sensor activity
  • Investigating communication issues
  • Detecting configuration problems
  • Capturing runtime errors

Logging Flow

Remote logs are always routed through the Gateway.

Module
|
v
Gateway
|
v
ArmorLink App

The Gateway acts as a transport layer and forwards log messages to connected App clients.

Log Levels

ArmorLink provides four log levels.

LevelPurpose
DebugDetailed developer information
InfoGeneral runtime information
WarnPotential problems
ErrorCritical failures

Examples:

ArmorLink.debug("Button pressed");
ArmorLink.info("Missile bay opened");
ArmorLink.warn("Battery voltage low");
ArmorLink.error("DFPlayer not detected");

Enabling Remote Logging

Remote Logging is disabled until requested by the ArmorLink App.

When enabled, ArmorLink begins forwarding log messages that match the currently selected log level.

App requests logging
|
v
Gateway enables logging
|
v
Module starts forwarding logs

This prevents unnecessary ESP-NOW traffic during normal operation.

Log Level Filtering

The ArmorLink App can control which log levels should be forwarded.

For example:

Remote Level = INFO

Results:

DEBUG -> ignored
INFO -> forwarded
WARN -> forwarded
ERROR -> forwarded

This allows developers to reduce log traffic while still receiving important information.

Warning and Error Messages

info

Warning and Error messages are considered important diagnostic events and are not rate-limited.

Even when large numbers of Debug or Info messages are being suppressed, Warnings and Errors are always treated as high-priority diagnostic information.

Recommended usage:

ArmorLink.warn("Battery below 20%");
ArmorLink.error("Servo initialization failed");

Remote Logging vs Serial Logging

Remote Logging and Serial Logging are independent.

Serial Logging

options.enableSerialLogging = true;

Messages are written to the serial monitor.

Remote Logging

Messages are forwarded through the ArmorLink network and displayed in the ArmorLink App.

Both systems can be enabled simultaneously.

Best Practices

Use Debug for Development

ArmorLink.debug("Received command");

Useful while developing and testing.

Use Info for State Changes

ArmorLink.info("Faceplate opened");

Useful for tracking normal operation.

Use Warn for Recoverable Problems

ArmorLink.warn("Battery voltage low");

The module continues operating but attention may be required.

Use Error for Failures

ArmorLink.error("DFPlayer initialization failed");

Use Error messages when functionality is unavailable or a critical fault occurs.

Example

void setup()
{
if (!dfplayer.begin(serial))
{
ArmorLink.error("DFPlayer initialization failed");
return;
}

ArmorLink.info("DFPlayer ready");
}

void handleBattery(float voltage)
{
if (voltage < 3.5f)
{
ArmorLink.warn("Battery voltage low");
}
}

Summary

Remote Logging provides wireless diagnostic information for ArmorLink systems.

Remote logs:

  • Are routed through the Gateway
  • Are displayed in the ArmorLink App
  • Support Debug, Info, Warn and Error levels
  • Can be filtered by log level
  • Help diagnose systems without a serial connection

Warning and Error messages are treated as important diagnostic events and should be used whenever abnormal conditions occur.