Skip to content

Concepts

Mitra Ardron edited this page May 19, 2026 · 17 revisions

DRAFT - DO NOT ASSUME THIS IS CORRECT OR COMPLETE YET !

Frugal IoT Concepts

This document is intended to give a high level overview of some of the concepts in Frugal IoT for developers, so its a good place to start and there should be links to more detailed versions.

To be covered below:

  • System Architecture
  • Messages - the core of Frugal IoT
  • Naming - how messages are addressed
  • LoRa - how we'll handle longer range communications outside of WiFi range
  • Control - how parts are hooked together into control systems
  • Back Data / Logging - how we keep track of, and serve, old data
  • File System - the node's disk storage - and other memory retention (broker, logger, RTC)
  • Interrupts
  • Power
  • Processors - including adding new ones
  • Local Ops - own server on RPi etc
  • UX (both its ugliness and composability)
  • Loops, periodic and infrequent

Loops, periodic and infrequent

Most of the time the sensor is running in a loop but things can happen on three different levels of frequency:

In each main.cpp we call e.g. frugal_iot.configure_power(Power_Deep, 600000, 30000)

This sets our "period" as 600000ms (10 minutes)

In the definition of the

  • loop() is run every time the loop goes round. This happens very frequently - around once every 10ms.
  • periodic() is run once for each period we define in the power setup so here it would be every 10 minutes. If we are sleeping, this is always once every time after we wake up
  • infrequent() is run every time the loop goes round but it should check a timer to see whether it should run. Generally avoid using the timers unless necessary. See System_Discovery::infrequently() for an example.

Clone this wiki locally