Search and get data from nearby sensors.
Only works with the Xiaomi Mijia Bluetooth temperature and humidity sensor (LYWSD03MMC).
Developed and tested with love on Raspberry Pi 4 and Raspberry Pi Zero W.
The sudo command is not required.
npm i xiaomi-mijia-lywsd03mmc
const lywsd03mmc = require('xiaomi-mijia-lywsd03mmc')
// Get an array with the MAC addresses of the nearby sensors
lywsd03mmc.getSensors().then((res) => {
res.forEach(sensorAddress => {
// Get an object with the sensor data
lywsd03mmc.getData(sensorAddress).then((res) => {
// {
// address: 'XX:XX:XX:XX:XX:XX',
// humidityLevel: XX,
// temperature: XX,
// batteryLevel: XX
// }
console.log(res)
}).catch((err) => {
console.error(`[xiaomi-mijia-lywsd03mmc] Unable to get data (address: ${sensorAddress}, error: ${err})`)
})
})
}).catch((err) => {
console.error(`[xiaomi-mijia-lywsd03mmc] Unable to get sensors (error: ${err})`)
})
- getSensors(timeoutDuration) ⇒
Promise.<Array.<string>>
Scan and get the MAC addresses of the nearby sensors.
- getData(sensorAddress, tempInFahrenheit, timeoutDuration) ⇒
Promise.<Object>
Get the data from the specified sensor (temperature, humidity level, battery level) every 20 seconds during 2 minutes. Stops when data are got.
Scan and get the MAC addresses of the nearby sensors.
Kind: global function
Returns: Promise.<Array.<string>>
- Promise containing an array with the MAC addresses of the detected sensors.
Param | Type | Default | Description |
---|---|---|---|
timeoutDuration | number |
10 |
Maximum time in seconds assigned to the scan |
Example
getSensors().then((res) => {
console.log(res) // ['XX:XX:XX:XX:XX:XX', 'XX:XX:XX:XX:XX:XX', ..]
}).catch((err) => {
console.error(`Unable to get sensors (error: ${err})`)
})
Get the data from the specified sensor (temperature, humidity level, battery level) every 20 seconds during 2 minutes. Stops when data are got.
Kind: global function
Returns: Promise.<Object>
- Promise containing an object with the requested data.
Param | Type | Default | Description |
---|---|---|---|
sensorAddress | string |
MAC address of the sensor to connect | |
tempInFahrenheit | boolean |
false |
Temperature output format (Celsius/Fahrenheit) |
timeoutDuration | number |
2 |
Maximum time in minutes assigned to the connection |
Example
// Replace with a valid MAC address of a nearby sensor
var sensorAddress = 'XX:XX:XX:XX:XX:XX'
getData(sensorAddress).then((res) => {
// {
// address: 'XX:XX:XX:XX:XX:XX',
// humidityLevel: XX,
// temperature: XX,
// batteryLevel: XX
// }
console.log(res)
}).catch(() => {
console.error(`[xiaomi-mijia-lywsd03mmc] Unable to get data (address: ${sensorAddress}, error: ${err})`)
})
This project adheres to Semantic Versioning.
Every release is documented on the GitHub Releases page.