How it works
From a sensor on the wall to decisions you can defend.
Falyren Platform turns low-cost ESP32 sensor nodes into a live picture of every room — environment, occupancy, energy and the lamps and fans you control — and then into alerts, reports and AI recommendations grounded in that data.
The pipeline
Five steps from a reading to an insight.
1. The sensor node
An ESP32 reads its sensors — temperature and humidity (DHT22), light, motion (PIR), optional voltage/current — and knows the on/off state of the lamp and fan it controls.
2. Secure ingestion
Every few seconds the node posts one JSON frame over HTTPS to https://falyren.com. The request carries a device ingest key; unknown devices and bad payloads are rejected, never half-stored.
3. Structured storage
Each frame is validated against the published schema and written against the right organization → building → floor → room → device, so history stays queryable as the estate grows.
4. Live operations
Dashboards, room pages, the digital twin, live timeline and alerts update from the same stored telemetry — no demo values, and an explicit "no live data" state when a node goes quiet.
5. Analytics and AI
Duty cycles, occupancy, energy and carbon aggregates feed the AI analytics centre and recommendations, so advice is backed by frames the platform actually received.
Benefits
Why teams run their spaces on Falyren.
See every room, live
Temperature, humidity, light, occupancy and output states per room — refreshed continuously across the whole portfolio.
Cut wasted energy
Lamp and fan duty cycles are measured, not estimated, so you can see output left running in vacant rooms.
Know your hardware is healthy
Wi-Fi signal, uptime, free heap, firmware version and last-seen time score fleet health and surface failing nodes early.
Act before complaints
Threshold and anomaly alerts can be acknowledged and resolved with the telemetry that triggered them attached.
Report without spreadsheets
Filtered reports export to PDF and CSV with the same numbers the dashboards show.
Grow without rebuilding
One data model spans a single room to a multi-campus estate; firmware only ever needs the endpoint and the payload.
Deploy a device
Get an ESP32 reporting in an afternoon.
The ingestion API is plain HTTPS and JSON — no SDK, no broker, no agent. Payload schema v1.3 is additive-only, so firmware you flash today keeps working as new sensor groups are added.
What you need
- ESP32 dev board with Wi-Fi (2.4 GHz network)
- DHT22 temperature/humidity sensor (LDR, PIR and relay outputs optional)
- Arduino IDE or PlatformIO with a recent ESP32 core (TLS 1.2+)
- A Falyren account and the device ingest key from your administrator
The ingest key identifies your fleet — keep it in firmware, never in a public repository, and ask an administrator to rotate it if a board is lost.
- 1
Register the space and the device
Sign in and create the building and room under Management, then add the device with the exact ID the firmware will send (for example
ESP32-B1-104). Frames from unregistered IDs are refused, so registration comes first. - 2
Wire the node
DHT22 data to a GPIO with a 10 kΩ pull-up, PIR to any input GPIO, LDR on an ADC pin, and the lamp and fan relays on two output GPIOs. The node reports the lamp and fan states it drives, so the platform sees real output activity rather than an assumption.
- 3
Flash the firmware
Set your Wi-Fi credentials, the ingest URL, the ingest key and the device ID, then flash. Always post to
https://falyren.com— other hostnames answer with a redirect that simple HTTP clients silently drop. - 4
Check the connection
Confirm reachability with a plain GET to
https://falyren.com/api/public/health. A 200 means the network path and TLS are fine and only the payload or key can be at fault. - 5
Watch the data land
Open the room page for live readings, the ingestion health page for last-seen and lag, and the ingest monitor to inspect the exact payloads received. Sensor error values such as −999 are normalised to “no reading” instead of failing the frame.
Minimal Arduino sketch
#include <WiFi.h>
#include <HTTPClient.h>
const char* WIFI_SSID = "your-ssid";
const char* WIFI_PASS = "your-password";
const char* INGEST_URL = "https://falyren.com/api/public/ingest/telemetry";
const char* INGEST_KEY = "your-device-ingest-key";
const char* DEVICE_ID = "ESP32-B1-104";
void postFrame(float t, float h, bool motion, bool lamp, bool fan) {
HTTPClient http;
http.begin(INGEST_URL); // post to the primary domain
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
http.addHeader("Content-Type", "application/json");
http.addHeader("X-Ingest-Key", INGEST_KEY);
http.addHeader("X-Schema-Version", "1.3");
String body = String("{\"deviceId\":\"") + DEVICE_ID + "\","
+ "\"schemaVersion\":\"1.3\","
+ "\"environment\":{\"temperature\":" + t + ",\"humidity\":" + h
+ ",\"motion\":" + (motion ? "true" : "false") + "},"
+ "\"devices\":{\"lamp\":" + (lamp ? "true" : "false")
+ ",\"fan\":" + (fan ? "true" : "false") + "},"
+ "\"meta\":{\"firmwareVersion\":\"1.3.0\",\"wifiRssi\":" + WiFi.RSSI() + "}}";
int code = http.POST(body); // 200 = stored, 401 = bad key, 400 = payload
Serial.println(code);
http.end();
}Signed-in users get the full field reference, batch frames, diagnostics fields and error codes on the Device API page inside the platform.
Ready to bring your first room online?
Register the space, flash a node, and watch the readings arrive within minutes.

