xiaomi-mijia-lywsd03mmc

1.1.0 • Public • Published

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.

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.

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.

License

MIT

Package Sidebar

Install

npm i xiaomi-mijia-lywsd03mmc

Weekly Downloads

4

Version

1.1.0

License

MIT

Unpacked Size

19.1 kB

Total Files

8

Last publish

Collaborators

  • r-hede