UNPKG

node-red-contrib-mi-sensors

Version:

A set of nodes to control some of the popular Xiaomi sensors which are connected to the Xiaomi Gateway, and the Gateway itself.

52 lines (43 loc) 1.82 kB
const miDevicesUtils = require('../src/utils'); module.exports = (RED) => { // sensor_ht, weather.v1 function XiaomiHtNode(config) { RED.nodes.createNode(this, config); this.gateway = RED.nodes.getNode(config.gateway); this.sid = config.sid; this.status({fill:"grey", shape:"ring", text:"battery - na"}); if (this.gateway) { this.on('input', (msg) => { let payload = msg.payload; // Input from gateway if (payload.sid) { if (payload.sid == this.sid) { miDevicesUtils.setStatus(this, payload.data); let data = miDevicesUtils.get(node) ["temperature", "humidity", "pressure"].forEach((dataType) => { if(payload.data[dataType]) { data[dataType] = parseInt(payload.data[dataType])/100; } }); if (payload.data.batteryLevel) { data['batteryLevel'] = payload.data.batteryLevel } miDevicesUtils.set(node, data) payload.data = data } else { msg = null; } } // Prepare for request else { miDevicesUtils.prepareForGatewayRequest(this, msg); let data = miDevicesUtils.get(node) msg.payload.data = data } this.send(msg); }); } } RED.nodes.registerType("xiaomi-ht", XiaomiHtNode); };