Templating output by mustache

This section provides an exhaustive mapping of the JSON sensor payload schema to Mustache template tags, followed by integration rules for SMS (Plain Text) and Email (HTML) notification channels.

Let’s take this stored data output as an example: :

{
  "metadata": {
    "source": "urn:lo:nsid:lora:4883C7DF3001114B",
    "encoding": "siconia_temperature_humidity_pressure",
    "group": {
        "path": "/",
        "id": "root"
    },
    "device": {
      "location": {
        "provider": "static",
        "lon": 2.545599,
        "lat": 48.82198
      }
    },
    "network": {
      "lora": {
        "rssi": -110,
        "esp": -111.76,
        "ack": false,
        "fcnt": 27517,
        "devEUI": "20635F0108000C8D",
        "frequency": 868.5,
        "signalLevel": 5,
        "gatewayCnt": 5,
        "sf": 10,
        "messageType": "UNCONFIRMED_DATA_UP",
        "port": 10,
        "snr": 3,
        "location": {
          "provider": "lora",
          "alt": 0,
          "accuracy": 10000,
          "lon": 2.526197,
          "lat": 48.83361
        },
        "roaming" : {
            "operatorNetId": "600031",
            "operatorName": "Stratis IoT"
        },
        "missingFcnt": 0
      }
    }
  },
  "streamId": "urn:lora:20635F0108000C8D!uplink",
  "created": "2021-05-30T19:02:46.789Z",
  "extra": {
    "_outdoor_source_alt_lat_lon",
  },
  "location": {
    "provider": "static",
    "alt": null,
    "accuracy": null,
    "lon": 2.545599,
    "lat": 48.82198
  },
  "model": "lora_v0",
  "id": "60b3e15603b409370d2d2b10",
  "value": {
    "payload": "e17aae4133333942bc8b0100",
    "temperature": 21.81,
    "humidity": 46.3,
    "pressure": 1013.08
  },
  "timestamp": "2021-05-30T19:02:46.161Z",
  "tags": []
}

Exhaustive JSON field mapping

Root variables

JSON Path Mustache Tag Data Type Description

id

{{id}}

String

Unique identifier of the devicce.

streamId

{{streamId}}

String

Unique identifier of the data stream.

model

{{model}}

String

Data model identifier for datamessage indexing.

created

{{created}}

String (ISO Date)

Datamessage insertion timestamp.

timestamp

{{timestamp}}

String (ISO Date)

Datamessage push timestamp (Device).

Telemetry readings (value)

JSON Path Mustache Tag Data Type Description

value.payload

{{value.payload}}

String (Hex)

Raw uplink payload from the device (lora).

value.temperature

{{value.temperature}}

Float

Measured ambient temperature.

value.humidity

{{value.humidity}}

Float

Measured relative humidity percentage.

value.pressure

{{value.pressure}}

Float

Measured atmospheric pressure in hPa.

Device geolocation (location)

JSON Path Mustache Tag Data Type Description

location.provider

{{location.provider}}

String

Type of location solver used.

location.alt

{{location.alt}}

Null

Altitude (if resolved).

location.accuracy

{{location.accuracy}}

Null

Accuracy radius (if resolved).

location.lon

{{location.lon}}

Float

Longitude coordinates.

location.lat

{{location.lat}}

Float

Latitude coordinates.

General metadata (metadata)

JSON Path Mustache Tag Data Type Description

metadata.source

{{metadata.source}}

String

Source identifier of the device.

metadata.encoding

{{metadata.encoding}}

String

Decoder identifier.

metadata.group.path

{{metadata.group.path}}

String

Group path in the asset tree.

metadata.group.id

{{metadata.group.id}}

String

Group ID in the asset tree.

metadata.device.location.provider

{{metadata.device.location.provider}}

String

Device location provider.

metadata.device.location.lon

{{metadata.device.location.lon}}

Float

Provisioned longitude.

metadata.device.location.lat

{{metadata.device.location.lat}}

Float

Provisioned latitude.

LoRaWAN network infos (metadata.network.lora)

JSON Path Mustache Tag Data Type Description

metadata.network.lora.devEUI

{{metadata.network.lora.devEUI}}

String

End-device unique global identifier.

metadata.network.lora.messageType

{{metadata.network.lora.messageType}}

String

LoRaWAN MType layer classification.

metadata.network.lora.port

{{metadata.network.lora.port}}

Integer

LoRaWAN FPort.

metadata.network.lora.fcnt

{{metadata.network.lora.fcnt}}

Integer

Datamessage uplink counter (povided by device).

metadata.network.lora.missingFcnt

{{metadata.network.lora.missingFcnt}}

Integer

Count of dropped datemessages detected.

metadata.network.lora.rssi

{{metadata.network.lora.rssi}}

Integer

Received Signal Strength Indicator (dBm).

metadata.network.lora.snr

{{metadata.network.lora.snr}}

Integer

Signal-to-Noise Ratio (dB).

metadata.network.lora.esp

{{metadata.network.lora.esp}}

Float

Estimated Signal Power (dBm).

metadata.network.lora.signalLevel

{{metadata.network.lora.signalLevel}}

Integer

Computed link quality metric.

metadata.network.lora.sf

{{metadata.network.lora.sf}}

Integer

Spreading Factor configuration.

metadata.network.lora.frequency

{{metadata.network.lora.frequency}}

Float

Uplink channel frequency in MHz.

metadata.network.lora.gatewayCnt

{{metadata.network.lora.gatewayCnt}}

Integer

Number of gateways that demodulated the device datamessage trafic.

metadata.network.lora.ack

{{metadata.network.lora.ack}}

Boolean

Acknowledgment requirement flag.

LoRa network-based geolocation
JSON Path Mustache Tag Data Type Description

metadata.network.lora.location.provider

{{metadata.network.lora.location.provider}}

String

Network triangulation provider.

metadata.network.lora.location.alt

{{metadata.network.lora.location.alt}}

Integer

Estimated altitude.

metadata.network.lora.location.accuracy

{{metadata.network.lora.location.accuracy}}

Integer

Network accuracy radius in meters.

metadata.network.lora.location.lon

{{metadata.network.lora.location.lon}}

Float

Network estimated longitude.

metadata.network.lora.location.lat

{{metadata.network.lora.location.lat}}

Float

Network estimated latitude.

Network operator (Roaming)
JSON Path Mustache Tag Data Type Description

metadata.network.lora.roaming.operatorNetId

{{metadata.network.lora.roaming.operatorNetId}}

String

Network Operator NetID.

metadata.network.lora.roaming.operatorName

{{metadata.network.lora.roaming.operatorName}}

String

Human-readable roaming operator name.

Line break implementation guidelines

Because Mustache is logic-less, it cannot format line breaks automatically. Developers must structuralize the template or pre-format variables according to the specific protocol layout restrictions.

Channel A: SMS notifications (Plain Text)

SMS clients parse standard text line breaks natively.

  • Rule: Insert literal newlines directly inside the Mustache template editor, or feed strings containing escaped \n characters from the JSON backend.

Mustache SMS Template Example
[ALERT] Device {{metadata.network.lora.devEUI}}
Temp: {{value.temperature}}°C
Humidity: {{value.humidity}}%

Channel B: Email notifications (HTML Format)

Email applications completely discard text file carriage returns (\n) or template editor newlines inside HTML bodies, causing text to collapse into a single horizontal block.

  • Rule: Explicitly inject <br /> HTML tags to establish vertical line breaks.

  • Security Notice: If the JSON source string injects raw HTML snippets (like <br />) within an incoming variable, bypass standard Mustache sanitization escaping by wrapping the property using triple curly braces ({{{variable}}}) instead of double ones.

Mustache Email HTML Template Example
<h3>Sensor Report</h3>
<p>
  <strong>Device EUI:</strong> {{metadata.network.lora.devEUI}}<br />
  <strong>Temperature:</strong> {{value.temperature}} °C<br />
  <strong>Pressure:</strong> {{value.pressure}} hPa
</p>