, ,

Decentlab Indoor Ambiance Monitor LoRaWAN Envirmoent Sensor 868MHz (CO2, TVOC, Bewegungsmelder, Temperatur, Druck)

Decentlab
Verfügbarkeit:

Verfügbar bei Nachlieferung


Lieferfrist: 3-5 Tage

CHF435.00 inkl. MWST

Verfügbar bei Nachlieferung

APPLICATIONS

  • Building automation
  • Activity and visitor frequency monitoring
  • Energy and HVAC optimization
  • Shop and workplace comfort enhancement

SENSORS

CO₂

Range: 0 … 10’000 ppm
Accuracy: ±50 ppm, ±3% of reading

TOTAL VOLATILE ORGANIC COMPOUNDS

Range: 0 … 60’000 ppb
Accuracy: typically 15% of measured value

TEMPERATURE

Range: -40 … + 125 °C
Accuracy: ±0.3 °C

RELATIVE HUMIDITY

Range: 0 … 100% RH
Accuracy: ±2% RH

BAROMETRIC PRESSURE

Range: 300 … 1’100 hPa
Accuracy: ±1 hPa absolute, ±0.12 hPa relative

AMBIENT LIGHT INTENSITY

Brightness indicator

MOTION

PIR motion sensor measuring activity level

DEVICE

  • LoRaWAN™ class A
  • 2 AA alkaline batteries
  • 12 cm x 8 cm x 2.5 cm
  • Reference DL-IAM
Artikelnummer: DL-IAM Kategorien: , ,
Marke

Features

, , , , , ,

Style

Diverse Formate: https://github.com/decentlab/decentlab-decoders/tree/master/DL-IAM

Downlink Encoder: https://github.com/decentlab/decentlab-decoders/blob/master/downlink-command-encoder.html

JavaScript Decoder:

/* https://www.decentlab.com/products/indoor-ambiance-monitor-including-co2-tvoc-and-motion-sensor-for-lorawan */

var decentlab_decoder = {
  PROTOCOL_VERSION: 2,
  SENSORS: [
    {length: 1,
     values: [{name: 'battery_voltage',
               displayName: 'Battery voltage',
               convert: function (x) { return x[0] / 1000; },
               unit: 'V'}]},
    {length: 2,
     values: [{name: 'air_temperature',
               displayName: 'Air temperature',
               convert: function (x) { return 175 * x[0] / 65535 - 45; },
               unit: '°C'},
              {name: 'air_humidity',
               displayName: 'Air humidity',
               convert: function (x) { return 100 * x[1] / 65535; },
               unit: '%'}]},
    {length: 1,
     values: [{name: 'barometric_pressure',
               displayName: 'Barometric pressure',
               convert: function (x) { return x[0] * 2; },
               unit: 'Pa'}]},
    {length: 2,
     values: [{name: 'ambient_light_visible_infrared',
               displayName: 'Ambient light (visible + infrared)',
               convert: function (x) { return x[0]; }},
              {name: 'ambient_light_infrared',
               displayName: 'Ambient light (infrared)',
               convert: function (x) { return x[1]; }},
              {name: 'illuminance',
               displayName: 'Illuminance',
               convert: function (x) { return Math.max(Math.max(1.0 * x[0] - 1.64 * x[1], 0.59 * x[0] - 0.86 * x[1]), 0) * 1.5504; },
               unit: 'lx'}]},
    {length: 3,
     values: [{name: 'co2_concentration',
               displayName: 'CO2 concentration',
               convert: function (x) { return x[0] - 32768; },
               unit: 'ppm'},
              {name: 'co2_sensor_status',
               displayName: 'CO2 sensor status',
               convert: function (x) { return x[1]; }},
              {name: 'raw_ir_reading',
               displayName: 'Raw IR reading',
               convert: function (x) { return x[2]; }}]},
    {length: 1,
     values: [{name: 'activity_counter',
               displayName: 'Activity counter',
               convert: function (x) { return x[0]; }}]},
    {length: 1,
     values: [{name: 'total_voc',
               displayName: 'Total VOC',
               convert: function (x) { return x[0]; },
               unit: 'ppb'}]}
  ],

  read_int: function (bytes, pos) {
    return (bytes[pos] << 8) + bytes[pos + 1];
  },

  decode: function (msg) {
    var bytes = msg;
    var i, j;
    if (typeof msg === 'string') {
      bytes = [];
      for (i = 0; i < msg.length; i += 2) {
        bytes.push(parseInt(msg.substring(i, i + 2), 16));
      }
    }

    var version = bytes[0];
    if (version != this.PROTOCOL_VERSION) {
      return {error: "protocol version " + version + " doesn't match v2"};
    }

    var deviceId = this.read_int(bytes, 1);
    var flags = this.read_int(bytes, 3);
    var result = {'protocol_version': version, 'device_id': deviceId};
    // decode payload
    var pos = 5;
    for (i = 0; i < this.SENSORS.length; i++, flags >>= 1) {
      if ((flags & 1) !== 1)
        continue;

      var sensor = this.SENSORS[i];
      var x = [];
      // convert data to 16-bit integer array
      for (j = 0; j < sensor.length; j++) {
        x.push(this.read_int(bytes, pos));
        pos += 2;
      }

      // decode sensor values
      for (j = 0; j < sensor.values.length; j++) {
        var value = sensor.values[j];
        if ('convert' in value) {
          result[value.name] = {displayName: value.displayName,
                                value: value.convert.bind(this)(x),
                                unit: value.unit};
        }
      }
    }
    return result;
  }
};

function main() {
  console.log(decentlab_decoder.decode("020bbd007f0b926a515d48bc4e0262006981c7000093d4000b0111"));
  console.log(decentlab_decoder.decode("020bbd006f0b926a515d48bc4e02620069000b0111"));
  console.log(decentlab_decoder.decode("020bbd00010b92"));
}

main();

Datasheet

Payload Tester: https://htmlpreview.github.io/?https://github.com/decentlab/decentlab-decoders/blob/master/payload-test.html

0.0 overall
0
0
0
0
0

Be the first to review “Decentlab Indoor Ambiance Monitor LoRaWAN Envirmoent Sensor 868MHz (CO2, TVOC, Bewegungsmelder, Temperatur, Druck)”

Es gibt noch keine Bewertungen.