openHAB - Particulate Matter Bricklet

This is the description of the openHAB API bindings for the Particulate Matter Bricklet. General information and technical specifications for the Particulate Matter Bricklet are summarized in its hardware description.

An installation guide for the openHAB API bindings is part of their general description.

Thing

UID:
  • tinkerforge:brickletparticulatematter:[UID]
Required firmware version:
  • 2.0.0
Firmware update supported:
  • yes
Channels:
Actions:
Parameters:
  • PM Concentration Update Interval – Type: integer, Default: 1000, Unit: ms, Min: 0, Max: 4294967295
  • Specifies the update interval for all PM concentration data in milliseconds. A value of 0 disables automatic updates.

  • PM Count Update Interval – Type: integer, Default: 1000, Unit: ms, Min: 0, Max: 4294967295
  • Specifies the update interval for all PM count data in milliseconds. A value of 0 disables automatic updates.

  • Status LED Config – Type: Choice, Default: Show Status
  • The status LED configuration. By default the LED shows communication traffic between Brick and Bricklet, it flickers once for every 10 received data packets. You can also turn the LED permanently on/off or show a heartbeat. If the Bricklet is in bootloader mode, the LED is will show heartbeat by default.
  • Options: Off, On, Show Heartbeat, Show Status

Channels

PM 1.0 Concentration

The particulate matter 1.0 concentration. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Density
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPM10Concentration
Read only:
  • Yes
Unit:
  • Microgram Per Cubicmetre
PM 2.5 Concentration

The particulate matter 2.5 concentration. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Density
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPM25Concentration
Read only:
  • Yes
Unit:
  • Microgram Per Cubicmetre
PM 10.0 Concentration

The particulate matter 10.0 concentration. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Density
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPM100Concentration
Read only:
  • Yes
Unit:
  • Microgram Per Cubicmetre
Particulates Greater 0.3µm

The number of particulates greater than 0.3µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount3
Read only:
  • Yes
Particulates Greater 0.5µm

The number of particulates greater than 0.5µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount5
Read only:
  • Yes
Particulates Greater 1.0µm

The number of particulates greater than 1.0µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount10
Read only:
  • Yes
Particulates Greater 2.5µm

The number of particulates greater than 2.5µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount25
Read only:
  • Yes
Particulates Greater 5.0µm

The number of particulates greater than 5.0µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount50
Read only:
  • Yes
Particulates Greater 10.0µm

The number of particulates greater than 10.0µm in 100 ml of air. If the sensor is disabled then the last known good values from the sensor are returned.

Type:
  • Number:Dimensionless
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterPartCount100
Read only:
  • Yes
Sensor Enabled

Enables/Disables the fan and the laser diode of the sensors.

The sensor takes about 30 seconds after it is enabled to settle and produce stable values.

The laser diode has a lifetime of about 8000 hours. If you want to measure in an interval with a long idle time (e.g. hourly) you should turn the laser diode off between the measurements.

Type:
  • Switch
UID:
  • tinkerforge:brickletparticulatematter:[UID]:BrickletParticulateMatterSensorEnabled
Read only:
  • No

Actions

Actions can be used in rules by creating an action object. All actions return a Map<String, Object>. Returned values can be accessed by name, sometimes the type deduction needs some hints, as shown below:

val actions = getActions("tinkerforge", "tinkerforge:brickletparticulatematter:[UID]")
val hwVersion = actions.brickletParticulateMatterGetIdentity().get("hardwareVersion") as short[]
logInfo("Example", "Hardware version: " + hwVersion.get(0) + "." + hwVersion.get(1) + "." + hwVersion.get(2))

Basic Actions

brickletParticulateMatterGetPMConcentration()
Return Map:
  • pm10 – Type: int, Unit: 1 µg/m³, Range: [0 to 216 - 1]
  • pm25 – Type: int, Unit: 1 µg/m³, Range: [0 to 216 - 1]
  • pm100 – Type: int, Unit: 1 µg/m³, Range: [0 to 216 - 1]

Returns the particulate matter concentration, broken down as:

  • PM1.0,
  • PM2.5 and
  • PM10.0.

If the sensor is disabled (see Sensor Enabled) then the last known good values from the sensor are returned.

If you want to get the values periodically, it is recommended to use the PM 1.0 Concentration channel. You can set the channel configuration with the thing configuration.

brickletParticulateMatterGetPMCount()
Return Map:
  • greater03um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]
  • greater05um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]
  • greater10um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]
  • greater25um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]
  • greater50um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]
  • greater100um – Type: int, Unit: 10000 1/m³, Range: [0 to 216 - 1]

Returns the number of particulates in 100 ml of air, broken down by their diameter:

  • greater 0.3µm,
  • greater 0.5µm,
  • greater 1.0µm,
  • greater 2.5µm,
  • greater 5.0µm and
  • greater 10.0µm.

If the sensor is disabled (see Sensor Enabled) then the last known good value from the sensor is returned.

If you want to get the values periodically, it is recommended to use the Particulates Greater 0.3µm channel. You can set the channel configuration with the thing configuration.

Advanced Actions

brickletParticulateMatterGetSensorInfo()
Return Map:
  • sensorVersion – Type: int, Range: [0 to 255]
  • lastErrorCode – Type: int, Range: [0 to 255]
  • framingErrorCount – Type: int, Range: [0 to 255]
  • checksumErrorCount – Type: int, Range: [0 to 255]

Returns information about the sensor:

  • the sensor version number,
  • the last error code reported by the sensor (0 means no error) and
  • the number of framing and checksum errors that occurred in the communication with the sensor.
brickletParticulateMatterSetEnable(boolean enable)
Parameters:
  • enable – Type: boolean, Default: true

Enables/Disables the fan and the laser diode of the sensors.

The sensor takes about 30 seconds after it is enabled to settle and produce stable values.

The laser diode has a lifetime of about 8000 hours. If you want to measure in an interval with a long idle time (e.g. hourly) you should turn the laser diode off between the measurements.

brickletParticulateMatterGetEnable()
Return Map:
  • enable – Type: boolean, Default: true

Returns the state of the sensor as set by Sensor Enabled.

brickletParticulateMatterGetChipTemperature()
Return Map:
  • temperature – Type: int, Unit: 1 °C, Range: [-215 to 215 - 1]

Returns the temperature as measured inside the microcontroller. The value returned is not the ambient temperature!

The temperature is only proportional to the real temperature and it has bad accuracy. Practically it is only useful as an indicator for temperature changes.

brickletParticulateMatterGetStatusLEDConfig()
Return Map:
  • config – Type: int, Range: See constants, Default: 3

Returns the configuration as set by the thing configuration

The following constants are available for this function:

For config:

  • val STATUS_LED_CONFIG_OFF = 0
  • val STATUS_LED_CONFIG_ON = 1
  • val STATUS_LED_CONFIG_SHOW_HEARTBEAT = 2
  • val STATUS_LED_CONFIG_SHOW_STATUS = 3
brickletParticulateMatterGetSPITFPErrorCount()
Return Map:
  • errorCountAckChecksum – Type: long, Range: [0 to 232 - 1]
  • errorCountMessageChecksum – Type: long, Range: [0 to 232 - 1]
  • errorCountFrame – Type: long, Range: [0 to 232 - 1]
  • errorCountOverflow – Type: long, Range: [0 to 232 - 1]

Returns the error count for the communication between Brick and Bricklet.

The errors are divided into

  • ACK checksum errors,
  • message checksum errors,
  • framing errors and
  • overflow errors.

The errors counts are for errors that occur on the Bricklet side. All Bricks have a similar function that returns the errors on the Brick side.

brickletParticulateMatterGetIdentity()
Return Map:
  • uid – Type: String, Length: up to 8
  • connectedUid – Type: String, Length: up to 8
  • position – Type: char, Range: ['a' to 'h', 'z']
  • hardwareVersion – Type: short[], Length: 3
    • 0: major – Type: short, Range: [0 to 255]
    • 1: minor – Type: short, Range: [0 to 255]
    • 2: revision – Type: short, Range: [0 to 255]
  • firmwareVersion – Type: short[], Length: 3
    • 0: major – Type: short, Range: [0 to 255]
    • 1: minor – Type: short, Range: [0 to 255]
    • 2: revision – Type: short, Range: [0 to 255]
  • deviceIdentifier – Type: int, Range: [0 to 216 - 1]

Returns the UID, the UID where the Bricklet is connected to, the position, the hardware and firmware version as well as the device identifier.

The position can be 'a', 'b', 'c', 'd', 'e', 'f', 'g' or 'h' (Bricklet Port). A Bricklet connected to an Isolator Bricklet is always as position 'z'.

The device identifier numbers can be found here

Internal Actions

brickletParticulateMatterReadUID()
Return Map:
  • uid – Type: long, Range: [0 to 232 - 1]

Returns the current UID as an integer. Encode as Base58 to get the usual string version.