Skip to content

Environment sensors ​

An environment sensor measures the air or the room around it: temperature, humidity, CO₂ and other pollutants, light, pressure, noise, or water where it should not be. This page covers what each kind gives you in Omaya, where to put it, and how to check it is working.

For how full a tank or a bin is (ultrasonic or laser level), see Distance sensors: the Milesight EM310-UDL, EM400 and EM500-UDL report a distance and get the same Distance calibration panel as the MOKO SO2R.

What each kind gives you ​

The field names are what the device's View panel shows under Latest reading, and what a rule reads with Sensor reading (any field).

KindExample modelsFieldsWhere they end up
Temperature and humidityBluetooth: Minew S1, MOKO H4 Pro, MOKO BXP-DH. LoRaWAN: Milesight EM300-TH, EM320-TH, TS201. Home Assistant: any climate sensor, e.g. Aqara FP300temperature (°C, shown in your organisation's unit), humidity (%RH), battery_percentReports → Environment, Live tab; the Compliance tab; the Temperature and Humidity rule metrics; Custom Reports
Air qualityLoRaWAN: Milesight AM307, AM308, AM319, EM500-CO2. Home Assistant: CO₂ and particulate sensorsco2 (ppm), tvoc, pm25, pm10, plus the same sensor's temperature, humidity, pressure, and occupied from its PIREnvironment report (one card per pollutant measured, and the Compliance tab for CO₂); Custom Reports
LightMilesight EM500-LGT; Aqara FP300illuminance (lux)Environment report (Light)
NoiseA sound-level meter through Home Assistant; a LoRaWAN sensor whose decoder names the field noise, sound, sound_level or loudness; a sensor you onboarded with a noise_dba fieldnoise_dbaEnvironment report (Noise Level), noise rules
Water leakLoRaWAN: Milesight EM300-SLD (spot), EM300-ZLD (rope), EM300-MLD (membrane), WS303. Home Assistant: any moisture sensor. A toilet-supply leak probeleak_detected (1 = water, 0 = dry), plus temperature and humidity on the EM300-SLD/ZLDRules; the device's latest reading

One gap worth knowing before you buy

Formaldehyde and ozone (AM319-HCHO, AM319-O3), and the AM-series light level. These are not read. The AM-series sends light as a 0–5 level, not lux, so it is left out on purpose rather than shown as a dark room.

A reading belongs to where the sensor is ​

A reading is per sensor, not per room. A sensor beside a vent, a window, a door to the street or in the sun is being right about where it is and wrong about the room. Put it where the reading is supposed to represent.

Give it a zone. A fixed sensor with a Location set reports into its own zone, and only a fixed sensor can stand for a room on the Compliance tab. A tag that happens to have a thermometer is filed against the room it was last placed in, and marked as a tag reading.

Where to mount a CO2 or temperature sensor in a room A side view of a meeting room. The sensor is on an inside wall about 1.5 metres above the floor, in the room's general air. Marked as places to avoid: under the air-conditioning outlet in the ceiling, beside the window in direct sun, and next to the door, where corridor air comes in. CEILINGFLOORWINDOW✕ sun, cold glassAIRCON OUTLET✕ in the draughtDOOR✕ corridor air✓ sensorinside wall, in the room's air≈ 1.5 m
A reading is per sensor, not per room. Mount it on an inside wall at about 1.5 m, in the air people breathe, and keep it out of the aircon draught, direct sun and the air that comes in through the door. (Milesight's AM300 guidance: at least 1.5 m from the floor, away from windows, vents, fans and air-conditioners.)

How many, and where ​

SpaceHow manyWhere
Meeting room, classroom1 air-quality sensor (CO₂, temperature, humidity)Inner wall, about 1.5 m up, away from the door, the window and the air-conditioning outlet
Open-plan office1 per area of desks that shares an air supply; more where the layout changes (a window wall, a corner)On a column or partition at desk height, not under a supply diffuser
Server or comms room1 temperature/humidity sensor at the cold aisle intake; a second at the hot side if you want the differenceAt the height of the equipment intakes, not on the wall by the door
Cold room, fridge, freezer1 temperature sensor insideMiddle of the space, away from the door and the evaporator fan
Toilet1 if you want humidity or smell (TVOC)High on the wall, away from the hand dryer
Pantry, plant room, under a sink1 leak probe per place water can collectOn the floor at the lowest point, where water reaches first

Milesight's guidance for the AM300 series is at least 1.5 m from the floor, away from windows, vents, fans and air-conditioners, and away from heat and cold sources such as an oven or a refrigerator. For leak probes, Milesight recommends drain pans, floor drains, pits and any place water will reach first or pool; use more than one when the possible leak points are spread out.

Put a leak probe at the lowest point, where water reaches first A side view under a sink cabinet. The floor slopes slightly towards one corner, where a small pool of water collects first. The leak probe lies flat on the floor in that corner with both metal pins touching the floor, fixed so it cannot be kicked away. The sensor body is fixed on the wall above, clear of the water. A second probe drawn on the high side of the floor is marked as wrong: water would have to fill the whole floor before it reached it. SINK / CABINETPIPEHIGH SIDEwater collects here first →sensor bodyON THE WALL, DRY✓probe✕ high side: water must cover the floor first
Lay the probe flat with its pins on the floor at the lowest point, where water reaches first or pools, and fix it with a screw or tape. Keep the sensor body above, out of the water. If water could appear in several places, use a probe for each.

Setting up a Bluetooth sensor (Minew S1, MOKO H4 Pro, BXP-DH) ​

On the bench ​

  1. Note the MAC address from the label or the vendor app.
  2. Turn on the frame that carries the reading. Which frames a beacon broadcasts is set in its own app (MOKO's BeaconX Pro app for the H4 Pro and BXP-DH; Minew's BeaconSET Plus for the S1): make sure the temperature-and-humidity slot is enabled. A slot that is off sends nothing to decode.
  3. Leave the broadcast interval at the vendor default unless your Omaya operator asks for something else. On the MOKO H4 Pro and BXP-DH it can be changed later from the sensor's Configure page in Omaya; the Minew S1 only with its app.
  4. MOKO H4 Pro: switch on its battery broadcast. Without it the H4 Pro reports no battery at all. On the sensor's Configure page in Omaya, under Readings and battery, set Broadcast battery & health to On and save. It puts battery voltage, board temperature and uptime into a free broadcast slot, once every 60 seconds; nothing the sensor already broadcasts changes. (Broadcast readings, in the same group, does the same for temperature and humidity.) To switch either off again, use the MOKO app.

Mount it ​

  1. Wall, about 1.5 m up (seated head height), on an inside wall.
  2. Not in direct sun, not above a radiator or under an air-conditioning outlet, not next to a door that opens to the outside.
  3. In a cold room or fridge: on a shelf or bracket in the middle, not on the door.

Register it ​

Device → Sensor → Add Sensor, from the top of the form:

  1. Sensor Name: the place, e.g. L3 Comms Room — intake.
  2. MAC Address.
  3. Brand / Vendor and Sensor Model (Minew → S1, Moko Smart → H4 Pro, Moko Smart → BXP-DH). Check What This Device Provides shows Temperature and Humidity.
  4. Location, Venue, Zone: the room. Set the zone yourself; left empty, Omaya copies the zone of the first gateway that hears the sensor.
  5. Save.

Check it works ​

  1. View the sensor. Last seen should be seconds or minutes ago.
  2. Latest reading shows temperature and humidity. Breathe on it: the humidity rises within a minute or two.
  3. Within the hour, Reports → Environment (Live tab) shows the zone.

Setting up a LoRaWAN sensor (Milesight EM300, EM500, AM300 series) ​

These need a LoRaWAN gateway and network server that pass their readings to Omaya. If you have not done that yet, start with Milesight LoRaWAN gateways.

On the bench ​

  1. Note the DevEUI from the label (16 characters).
  2. Configure it with Milesight's ToolBox app (hold the phone's NFC against the sensor): switch it on, check the LoRaWAN band and keys match your gateway, and set the reporting interval. Ten minutes is a sensible start for comfort monitoring; a shorter interval costs battery. Once it is installed, the reporting interval can also be changed from Omaya (see below).
  3. Add it to the network server (the gateway's embedded server, or ChirpStack) with the decoder for the model, as in the gateway guide.
  4. Power: the AM307 and AM308 run on USB-C or batteries; the AM319 needs USB-C power, so plan a socket.

Mount it ​

As for Bluetooth sensors above. For a leak probe: the probe flat on the floor at the lowest point, fixed with a screw or tape so it cannot be kicked away; the sensor body on the wall above, clear of the water.

Register it ​

Device → Sensor → Add Sensor:

  1. Sensor Name.
  2. MAC Address: the DevEUI (16 characters, no separators needed).
  3. Brand / Vendor Milesight, Sensor Model (e.g. AM307 Ambience Monitoring Sensor, EM500-CO2 CO₂, EM300-TH Temperature & Humidity).
  4. Location, Venue, Zone.
  5. Save.

Check it works ​

  1. Wait one reporting interval (or press the sensor's button, if it has one, to send an uplink now).
  2. View: Latest reading shows the fields above. If it shows only battery_percent, the network server is passing data that Omaya cannot name; check that the decoder in the network server is the Milesight one.
  3. Reports → Environment shows it within the hour. CO₂ shows as its own card, and is checked on the Compliance tab against the room's profile (Office comfort when the room has none).

Change the reporting interval later ​

Open the sensor (View) and press Configure: How often it reports and Restart. The change is sent through your network server, so the gateway must be set to take changes from Omaya — on a Milesight UG56 or UG65 that is the Downlink data topic (step); with ChirpStack, the MQTT integration. A LoRaWAN sensor listens only for a moment after it reports, so the change reaches it with its next report, and Omaya marks it Done once two reports in a row arrive at the new interval. See Configuring devices from Omaya.

Setting up through Home Assistant ​

  1. Pair the sensor with Home Assistant, and give it a clear name.
  2. In Omaya, Connectors → Smart Home Bridge → Entity mappings → Fetch entities from Home Assistant, then group the sensor's entities and Activate as device… (Create device).
  3. Device → Sensor: edit the new device and set Location, Venue and Zone. Readings from a device without a zone are dropped and raise a configuration alert, because Home Assistant fronts the whole building.
  4. Check: Latest reading fills after the next poll.
  5. Settings that Home Assistant offers for the device can be changed from its Configure page in Omaya.

Omaya names Home Assistant entities by what they measure: temperature, humidity, illuminance, pressure, CO₂, CO, NO₂, PM2.5, PM10 and VOC each land in their own place; a sound pressure entity becomes noise_dba.

First rules ​

GoalWatchConditionRecipe
A stuffy meeting roomthe room's zoneco2 greater than 1000, with people in itStuffy meeting rooms
A cold room or server room warming upthe sensorTemperature greater than the limit, held for 10 minutesKeeping the building running
A water leak becomes a jobthe leak probeleak_detected Becomes 1A water leak becomes a job
A noise logthe zoneNoise Level greater than a limitA noise log

Use a held for condition on temperature and CO₂: a door opening, or someone breathing on the sensor, should not page anyone.

Questions and problems ​

Two sensors in the same room disagree. Each is right about where it is. The one by the window, the door or the air outlet is the odd one; move it.

The reading is filed under the wrong room. The sensor has the wrong zone, or none (and took the first gateway's zone). Edit it and set Zone.

The Environment report shows nothing for a room with a sensor. Check Last seen. For a Bluetooth beacon, check that its temperature slot is on in the vendor app. For LoRaWAN, check that the network server decodes the uplink: Latest reading should show more than the battery.

An H4 Pro shows no battery on the Battery or Tag Health report. Its battery broadcast is off. Switch on Broadcast battery & health on its Configure page (see On the bench). If Configure says every broadcast slot is in use, free one in the MOKO app first.

Noise Level says no sensor with a microphone reports here. None of the sensors in that place sends a noise reading. See the noise row in the table at the top for what can.

A CO₂ reading is very high after installation. CO₂ sensors settle and self-calibrate over the first days; also check that nobody is standing close to it, and that it is not in a corner with no air movement.

The leak sensor never alarms. Open the device on Devices and look at its latest reading: leak_detected should be there, 0 while dry. Touch the probe's contacts with a wet cloth; within one report it should read 1. No leak_detected at all means the uplink is not being decoded: for LoRaWAN, check the network server's codec for the sensor is installed; for Home Assistant, check the entity is mapped on the bridge's Mappings page. A rule on it uses Becomes 1.

Last updated:

Omaya platform documentation