Table of Contents

Indoor Air Quality (IAQ)

The RW/RLW line of IAQ sensors is designed for air quality measurements in houses, schools, office buildings, restaurants, factory halls and other similar objects. All sensors are placed in a handy white plastic box (IP20 protection) designed for on-wall installation by attaching it into a suitable wiring box (such as KU68).

Four variants in total are offered, featuring sensors of temperature, humidity, light intensity, barometric pressure and VOC (volatile organic compound) concentration. THC models are able to measure CO2 concentration with the indication LED changing its colour from green to red (green = low concentration, red = high concentration). On TH models the LED then serve for the indication of air quality index. The sensors feature measuring of up to six quantities in a single compact package. RLW variants have the same functionality as RW models, but additionally feature the LoRaWAN communication interface. All models are provided with RS485 and Wi-Fi interfaces.

Product datasheets, technical documentation and up-to-date firmware for indoor air quality sensors are available on this link.

Complete overview of individual variants:

Description of Unipi IAQ devices

The sensors are suitable for usage in offices, schools, commercial buildings, factory halls with internal *LoRa/Wi-Fi networks, but also for household applications. When combined with other technologies the sensors provide the option to maintain stable air quality, creating a comfortable environment for work or relaxation.

*LoRaWAN is available only for RLW-TH and RLW-THC variants

For more information about possible applications of Unipi IAQ sensors with LoRa interface, visit Integration of an IoT indoor air quality sensor with LoRa communication case study.

RW-TH

Examples of use:

Possible applications:

RW-THC

Examples of use:

Possible applications:

RLW-TH

Examples of use:

Possible applications:

RLW-THC

Examples of use:

Possible applications:

LoRa frame decoder code

Example of binary payload decoder. Function names are in accordance with The Things Network.

function getBit(number, bitPosition) {
  return (number & (1 << bitPosition)) === 0 ? 0 : 1;
}
function Decoder(bytes, port) {
  // Decode an uplink message from a buffer
  // (array) of bytes to an object of fields.
  var decoded = {};
  if (getBit(bytes[0],0)) {
    decoded.temperature = ((bytes[2] << 8) | bytes[1]) / 100 - 100;
    decoded.relative_humidity = bytes[3] / 2.5;
  }
  if (getBit(bytes[0],1)) decoded.pressure = ((bytes[5] << 8) | bytes[4]) / 100 + 800;
  if (getBit(bytes[0],2)) {
    decoded.voc_index = ((bytes[7] << 8) | bytes[6]) & 0x01FF;
    decoded.voc_accuracy = ((bytes[7] << 8) | bytes[6]) >> 9 & 0x0003;
  }
  if (getBit(bytes[0],3)) decoded.ambient_light = Math.exp(bytes[8] / 20) - 1;
  if (getBit(bytes[0],4)) decoded.co2 = ((bytes[10] << 8) | bytes[9]);
  if (getBit(bytes[0],5)) {
    decoded.pm10 = (((bytes[13] << 16) | (bytes[12] << 8) | bytes[11]) >> 12) & 0x000FFF / 4;
    decoded.pm2_5 = ((bytes[13] << 16) | (bytes[12] << 8) | bytes[11]) & 0x000FFF / 4;
  }
  if (getBit(bytes[0],6)) {
    decoded.noise_duration = (bytes[14] / 2);
    decoded.noise_intensity = (bytes[15] / 5) + 25;
  }
  return decoded;
}

Further info