Methane and carbon monoxide measurement for underground mining, read over Modbus RTU and reported alongside position.
Gas sensing is specific to the Smart Lamp Locator and to underground mining use cases. No other device model in the line carries it.
Which sensors are fitted is recorded in the SL_CONFIG characteristic (0x8308) at manufacture, and it determines which keys appear in messages. Pressure and temperature are packaged with the gas options rather than being independent:
SL_CONFIG | Fitted | Keys reported |
|---|---|---|
0 | none | — |
1 | methane | Methane, MethaneALM |
2 | CO | CO, COALM |
3 | methane + CO | all four |
4 | methane + pressure + temperature | Methane, MethaneALM, Pressure, LocatorTemp |
5 | CO + pressure + temperature | CO, COALM, Pressure, LocatorTemp |
Read SL_CONFIG rather than inferring capability from traffic. An absent key means no sensor fitted, which is not the same as a zero reading — and the two call for opposite responses.
The two gases are scaled differently and neither carries its unit in the message:
| Key | Format | Unit |
|---|---|---|
Methane | decimal, two places | percent by volume |
CO | integer, no decimals | ppm |
Pressure | integer | pascals |
LocatorTemp | decimal, one place | degrees Celsius |
When a sensor does not answer, the device emits the JSON string"-.--"where the numeric value would be:A parser that assumes a numeric type fails on exactly the messages that matter most. Check the type before converting, and treat the string form as no reading rather than as zero."Methane": 1.35 sensor answering "Methane": "-.--" sensor not answering
Substituting zero would be worse than failing: zero is a perfectly plausible gas concentration, so a silent sensor would look like clean air.
MethaneALM and COALM are the sensor's raw status word, passed through from the Modbus RTU register unchanged. It is not a boolean, and it is split by byte:
| High byte | Meaning |
|---|---|
0 | OK |
1 | Zero point not set |
2 | Not calibrated |
3 | Low sensitivity |
4 | Malfunction |
16 | Warming up |
A status word of 0x1100 is the not-ready state that accompanies a "-.--" reading. Health and threshold being separate is what lets an operator distinguish the air is dangerous from the instrument cannot currently tell you — and those call for different responses.
Gas readings appear in two places, and they are not redundant:
| Topic | Carries | When |
|---|---|---|
/RTLS | the reading — Methane, CO | routine position reporting |
/OutSos | reading and status words and SOS | an alarm has been raised |
The alarm status words appear only on/OutSos. A routine position message carries the concentration but notMethaneALMorCOALM. A backend watching only/RTLSsees gas levels rise but never sees the device declare a threshold breach.
The alarm message is a position report with the readings attached, so an operator receives where, what and how bad as one message rather than having to correlate a position with a separate alarm. See MQTT for the full payload.
The gas sensors are not parts on the RTLS module's own board. They belong to the cap lamp controller, and their readings reach the module over the internal Modbus RTU bus — the lamp writes them into the module's registers, and the module forwards them to the server:
| Modbus register | Becomes |
|---|---|
1 | Methane |
2 | MethaneALM |
3 | CO — or LocatorTemp, depending on the fitted option |
4 | COALM |
9, 10 | Pressure — high and low words |
Two consequences follow from that topology. The fitted-option matrix is a manufacturing choice rather than a firmware one, because it describes what is wired to the lamp. And the status word is passed through exactly as the sensor reports it rather than being reduced to a flag — the module is a courier here, not an interpreter.
Register3is dual-purpose. It carries CO concentration on a CO build and temperature on a methane-pressure-temperature build, so a decoder must knowSL_CONFIGbefore reading it. Alarm thresholds live on the bus too, at registers5and6, and are not forwarded to MQTT — read them over Modbus if an integration needs to know what the trip points are.
The Smart Lamp Locator page covers the surrounding behaviour — SOS, acknowledgement and two-way messaging to the lamp display.
/RTLS and /OutSos.