UNPKG

node-red-contrib-broadlink-control

Version:

Node Red nodes to control the Broadlink RM devices and other Broadlink home automation nodes.

98 lines (93 loc) 5.63 kB
module.exports = function (RED) { var Broadlink = require("./Broadlink.js"); function broadlinkNode(config) { RED.nodes.createNode(this, config); var node = this; this.on('input', function (msg) { node.status({fill:"blue",shape:"ring",text:"Discovering Devices"}); var b = new Broadlink(); b.discover(); setTimeout(function () { var dev = []; function getType(devtype) { if (devtype == 0) return 'SP1'; else if (devtype == 0x2711) return 'SP2'; else if (devtype == 0x2719 || devtype == 0x7919 || devtype == 0x271a || devtype == 0x791a) return 'Honeywell SP2'; else if (devtype == 0x2720) return 'SPMini'; else if (devtype == 0x753e) return 'SP3'; else if (devtype == 0x7D00) return 'OEM branded SP3'; else if (devtype == 0x947a || devtype == 0x9479) return 'SP3s'; else if (devtype == 0x2728) return 'SPMini2'; else if (devtype == 0x2733 || devtype == 0x273e) return 'OEM branded SPMini'; else if (devtype == 0x7530 || devtype == 0x7918) return 'OEM branded SPMini2'; else if (devtype == 0x2736) return 'SPMiniPlus'; else if (devtype == 0x2712) return 'RM2'; else if (devtype == 0x2737) return 'RM Mini'; else if (devtype == 0x273d) return 'RM Pro Phicomm'; else if (devtype == 0x2783) return 'RM2 Home Plus'; else if (devtype == 0x277c) return 'RM2 Home Plus GDT'; else if (devtype == 0x272a) return 'RM2 Pro Plus'; else if (devtype == 0x2787) return 'RM2 Pro Plus2'; else if (devtype == 0x279d) return 'RM2 Pro Plus3'; else if (devtype == 0x27a9) return 'RM2 Pro Plus300'; else if (devtype == 0x278b) return 'RM2 Pro Plus BL'; else if (devtype == 0x2797) return 'RM2 Pro Plus HYC'; else if (devtype == 0x27a6) return 'RM2 Pro PP'; else if (devtype == 0x278f) return 'RM Mini Shate'; else if (devtype == 0x27c2) return 'RM Mini 3'; else if (devtype == 0x2714) return 'A1'; else if (devtype == 0x4EB5) return 'MP1'; else if (devtype == 0x4ef7) return 'Honyar OEM MP1'; else if (devtype == 0x2722) return 'S1(SmartOne Alarm Kit)'; else if (devtype == 0x6026) return 'RM4 Pro'; else if (devtype == 0x7d11) return 'SP Mini 3'; else if (devtype == 0x27d1) return 'New RM Mini 3'; else if (devtype == 0x4e97) return 'RM4 Mini'; else if (devtype == 0x5f36) return 'RM Mini 3 newer'; else if (devtype == 0x51da) return 'RM4b'; else if (devtype == 0x610e) return 'RM4 Mini'; else if (devtype == 0x648d) return 'RM4 Mini'; else if (devtype == 0x610f) return 'RM4c'; else if (devtype == 0x61a2) return 'RM4 Pro'; else if (devtype == 0x62bc) return 'RM4c'; else if (devtype == 0x62be) return 'RM4c'; else if (devtype == 0x6539) return 'RM4c Mini'; else if (devtype == 0x649b) return 'RM4 Pro'; else if (devtype == 0x653c) return 'RM4 Pro'; else if (devtype == 0x653a) return 'RM4 Mini'; else if (devtype == 0x7547) return 'SC1 - Use the SP2 Node'; else if (devtype == 0x5213) return 'RM4 Pro'; else if (devtype == 0xa56c) return 'SmartPlug4'; else if (devtype == 0x520b) return 'RM4 Pro'; else if (devtype == 0x520d) return 'RM4c Mini'; else if (devtype == 0x5216) return 'RM4c Mini'; else if (devtype == 0x648a) return 'RM4c Mini'; else if (devtype == 0x648d) return 'RM4c Mini'; else if (devtype == 0x5209) return 'RM4 Pro'; else return 'Broadlink: Unconfigured Device Type: Log an issue with the device details and typeid returned as this may be a new device type.'; } for (var device in b.devices) { dev.push( { mac: device, ip: b.devices[device].address, typeid: b.devices[device].type.toString(16), type: getType(b.devices[device].type), name: b.devices[device].name, cloud: b.devices[device].cloud, msgdata: b.devices[device].fullmsg }); } if (dev.length == 0) { node.status({fill:"red",shape:"ring",text:"No Devices Found"}); } else { node.status({fill:"green",shape:"ring",text:"Found Some Devices"}); msg.payload = dev; node.send(msg); } }, 3000);//timeout }); } RED.nodes.registerType("Discover", broadlinkNode); }