Elsys is a Swedish company that makes compact, battery-powered LoRaWAN sensors widely used in smart buildings, offices, and environmental monitoring. The ERS (Environment & Room Sensor), ELT (External Light Sensor), EMS (Environment Monitoring Sensor), and ESENS series cover temperature, humidity, CO2, light, occupancy, and external probe inputs.
Elsys sensors are plug-and-play from a hardware standpoint: power on and they start transmitting. The integration work is connecting that LoRaWAN data to an application platform. This guide shows how to route Elsys sensor data through TTN into TagoIO for storage, dashboards, and alerting.
What you need before you start
- A TagoIO account (free plan available)
- Elsys sensors (ERS CO2, ERS Sound, ELT-2, EMS, or similar)
- A LoRaWAN gateway with TTN coverage
- A TTN account at console.cloud.thethings.network
Step 1: Register Elsys sensors on TTN
Elsys sensors appear in the TTN Device Repository, which simplifies registration.
- In your TTN Application, click Register end device.
- Search the device repository for Elsys and select your model (e.g., ERS CO2).
- Select the firmware version and frequency plan.
- Enter the JoinEUI, DevEUI, and AppKey from the sensor label or the Elsys Sensor Settings app (Bluetooth configuration).
- Save the device.
Elsys sensors support OTAA by default. On first power-on after registration, they will join the network and start sending data.
Step 2: Create a device in TagoIO
- Log in to admin.tago.io.
- Go to Devices → Add Device.
- Search for The Things Network v3 and select it.
- Name the device to match your Elsys sensor (e.g.,
elsys-ers-co2-floor-3). - Copy the Webhook URL and Authorization Token.
Device docs: docs.tago.io/docs/tagoio/devices
Step 3: Add the TTN webhook to TagoIO
- In your TTN Application, go to Integrations → Webhooks → + Add webhook → Custom webhook.
- Set the Base URL to the TagoIO Webhook URL.
- Add header:
Authorization: YOUR_TAGOIO_TOKEN. - Enable Uplink message.
- Save.
Step 4: Write the Payload Parser
Elsys uses a well-documented binary payload format called the Elsys Payload Specification. Each data point consists of a 1-byte type identifier followed by the value bytes. Elsys publishes a reference decoder on GitHub.
Here is a parser for the ERS CO2 (temperature, humidity, light, motion, CO2):
const raw = Buffer.from(payload.uplink_message.frm_payload, "base64");
const result = [];
let i = 0;
while (i < raw.length) {
const type = raw[i++];
switch (type) {
case 0x01: // Temperature (2 bytes, signed, /10)
result.push({ variable: "temperature", value: raw.readInt16BE(i) / 10, unit: "C" });
i += 2;
break;
case 0x02: // Humidity (1 byte, unsigned, /2)
result.push({ variable: "humidity", value: raw.readUInt8(i) / 2, unit: "%" });
i += 1;
break;
case 0x05: // Light (2 bytes)
result.push({ variable: "light", value: raw.readUInt16BE(i), unit: "lux" });
i += 2;
break;
case 0x06: // Motion (1 byte)
result.push({ variable: "motion", value: raw.readUInt8(i) });
i += 1;
break;
case 0x08: // CO2 (2 bytes)
result.push({ variable: "co2", value: raw.readUInt16BE(i), unit: "ppm" });
i += 2;
break;
case 0x0B: // Battery voltage (2 bytes, /1000)
result.push({ variable: "battery_voltage", value: raw.readUInt16BE(i) / 1000, unit: "V" });
i += 2;
break;
default:
i = raw.length; // Stop on unknown type
}
}
payload = result;
This parser handles the most common Elsys sensor types. Add cases for additional types (sound, pressure, GPS) as needed, using the Elsys payload specification.
Payload Parser docs: docs.tago.io/docs/tagoio/devices/payload-parser
Step 5: Verify in the Live Inspector
Open the Live Inspector in TagoIO. Trigger a reading from your Elsys sensor (short-press the button for an immediate transmission on most models). Confirm that all variables decode correctly.
Live Inspector docs: docs.tago.io/docs/tagoio/devices/live-inspector
Step 6: Manage a fleet of Elsys sensors
Elsys sensors are typically deployed in groups: a floor, a building, or a campus. Use TagoIO’s Blueprint Dashboards to manage this at scale.
How Blueprint Dashboards work with Elsys:
- Create one TagoIO device per Elsys sensor.
- Tag each device by location:
building:a,floor:3,room:conference-01. - Create a Blueprint Dashboard that uses a tag selector to pull data for the currently selected device.
- Every sensor gets its own dashboard view using the same layout: no duplication.
Blueprint Dashboard docs: docs.tago.io/docs/tagoio/dashboards/blueprint-dashboard
Step 7: Set up alerts
Use Actions for:
- CO2 above 1000 ppm in any room → notify facilities via email
- Temperature outside 19-26°C band → HVAC alert
- Motion detected outside business hours → security notification
- Battery voltage below 2.5V → maintenance reminder
Actions docs: docs.tago.io/docs/tagoio/actions
Use case examples
Smart office air quality
ERS CO2 sensors in every meeting room and open area. TagoIO Blueprint Dashboard gives facilities a floor-by-floor CO2, temperature, and humidity view. Actions trigger ventilation when CO2 climbs above 1000 ppm. Weekly air quality report auto-generated by Analysis script.
Energy and occupancy correlation
ERS sensors with motion detection. TagoIO Analysis scripts cross-reference occupancy data with energy meter readings, generating correlation reports showing energy cost per occupied hour per zone.
Compliance monitoring
EMS sensors in food storage and pharmaceutical areas. TagoIO stores readings with timestamps for regulatory audit trails. Reports generate automatically for compliance submissions.
Taking it further with AI
TagoIO’s MCP server connects Claude and other AI assistants to your Elsys data. Ask natural language questions: “Which rooms had CO2 above 1000 ppm this week?” or “What’s the average temperature across all sensors on Floor 2?”
MCP docs: docs.tago.io/docs/tagoio/getting-started/tagoio-mcp-ai-powered-iot-data-integration
Summary
Elsys sensors connect to TagoIO through TTN in four steps: register on TTN, create a TagoIO TTN device, add the webhook, and write the Elsys payload parser. The parser follows Elsys’s published binary format specification. Once data flows, TagoIO handles storage, Blueprint Dashboards for fleet management, and real-time alerting.
- TagoIO Devices: docs.tago.io/docs/tagoio/devices
- Payload Parser: docs.tago.io/docs/tagoio/devices/payload-parser
- Blueprint Dashboards: docs.tago.io/docs/tagoio/dashboards/blueprint-dashboard
- Actions: docs.tago.io/docs/tagoio/actions
- MCP: docs.tago.io/docs/tagoio/getting-started/tagoio-mcp-ai-powered-iot-data-integration


