xiaomi-mijia-lywsd03mmc
v1.1.0
Published
Search and get data from nearby sensors. Only works with the Xiaomi Mijia Bluetooth temperature and humidity sensor (LYWSD03MMC).
Downloads
13
Maintainers
Readme
Xiaomi Mijia LYWSD03MMC
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.
Installation
npm i xiaomi-mijia-lywsd03mmc
Quick Start Example
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})`)
})
Documentation
getSensors(timeoutDuration) ⇒ Promise.<Array.<string>>
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})`)
})
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.
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})`)
})
Change Log
This project adheres to Semantic Versioning.
Every release is documented on the GitHub Releases page.