Skip to content

Instantly share code, notes, and snippets.

@obiltschnig
Created July 16, 2020 16:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save obiltschnig/ce196655acfdd94c9b1f7029c779fe91 to your computer and use it in GitHub Desktop.
Save obiltschnig/ce196655acfdd94c9b1f7029c779fe91 to your computer and use it in GitHub Desktop.
Access Xiaomi Mijia Temperature/Humidity Sensor via Bluetooth LE (macchina.io)
var sensorRef = serviceRegistry.findByName('io.macchina.btle.peripheral.58:2D:34:35:D7:1D');
var sensor = sensorRef.instance();
const CHAR_BATTERY_LEVEL = 0x0018; // characteristic for reading battery level (0-99)
const CHAR_NOTIFICATION = 0x0010; // characteristic for enabling temperature/humidity notifications
console.log('connecting...');
function parseValue(str)
{
var parts = str.split('=');
if (parts.length == 2)
return parseFloat(parts[1]);
else
return 0.0;
}
sensor.on('connected', ev => {
console.log('connected');
sensor.on('notificationReceived', function(ev) {
var values = ev.data.data.decodeString();
// "T=25.2 H=52.2"
var parts = values.split(' ');
if (parts.length == 2)
{
var temp = parseValue(parts[0]);
var hum = parseValue(parts[1]);
console.log('Temperature: %f C, Humidity: %f %', temp, hum);
}
});
console.log('manufacturerName: %s', sensor.manufacturerName());
console.log('modelNumber: %s', sensor.modelNumber());
console.log('serialNumber: %s', sensor.serialNumber());
console.log('hardwareRevision: %s', sensor.hardwareRevision());
console.log('firmwareRevision: %s', sensor.firmwareRevision());
var battery = sensor.readUInt8(CHAR_BATTERY_LEVEL);
console.log('battery = %d', battery);
sensor.writeInt16(CHAR_NOTIFICATION, 0x0001);
});
sensor.on('disconnected', ev => {
console.log('disconnected');
setTimeout(() => {
sensor.connectAsync();
}, 5000);
});
sensor.on('error', ev => {
console.error(ev.data);
});
sensor.connectAsync();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment