1.1.0 • Published 3 years ago

xiaomi-mijia-lywsd03mmc v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Xiaomi Mijia LYWSD03MMC

Xiaomi Mijia LYWSD03MMC

Build Status Coverage Status Code style Version License

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.

ParamTypeDefaultDescription
timeoutDurationnumber10Maximum 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.

ParamTypeDefaultDescription
sensorAddressstringMAC address of the sensor to connect
tempInFahrenheitbooleanfalseTemperature output format (Celsius/Fahrenheit)
timeoutDurationnumber2Maximum 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.

License

MIT