UNPKG

@switchbot/homebridge-switchbot

Version:

The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.

319 lines • 12.7 kB
// deviceCommandMapper.ts // Maps HAP/Matter commands to node-switchbot device methods for all supported device types export const deviceTypeCommandMap = { // SwitchBot AI Hub (read-only/generic) 'ai hub': {}, // SwitchBot Cameras (read-only/generic) 'indoor cam': {}, 'pan/tilt cam': {}, 'pan/tilt cam 2k': {}, 'pan/tilt cam plus 2k': {}, 'pan/tilt cam plus 3k': {}, // SwitchBot Air Purifiers (read-only/generic) 'air purifier pm2.5': {}, 'air purifier table pm2.5': {}, 'air purifier voc': {}, 'air purifier table voc': {}, // SwitchBot Home Climate Panel (read-only/generic) 'home climate panel': {}, // SwitchBot WoIOSensor (read-only/generic) 'woiosensor': {}, // SwitchBot Candle Warmer Lamp 'candle warmer lamp': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot Hubs (read-only/generic) 'hub': {}, 'hub 2': {}, 'hub 3': {}, 'hub mini': {}, 'hub plus': {}, // SwitchBot Robot Vacuum Cleaner K20 Plus Pro 'robot vacuum cleaner k20 plus pro': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner S1 'robot vacuum cleaner s1': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner S1 Plus 'robot vacuum cleaner s1 plus': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner S10 'robot vacuum cleaner s10': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner S20 'robot vacuum cleaner s20': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Relay Switch 2PM 'relay switch 2pm': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot K10+ 'k10+': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot K10+ Pro 'k10+ pro': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner K10+ Pro Combo 'robot vacuum cleaner k10+ pro combo': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot Robot Vacuum Cleaner K11+ 'robot vacuum cleaner k11+': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // SwitchBot MeterPro(CO2) (read-only) 'meterpro(co2)': {}, // SwitchBot Water Detector (read-only) 'water detector': {}, // SwitchBot Garage Door Opener 'garage door opener': { open: async (device) => device.open(), close: async (device) => device.close(), stop: async (device) => device.stop(), }, // SwitchBot Relay Switch 1 'relay switch 1': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot Relay Switch 1PM 'relay switch 1pm': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot Smart Radiator Thermostat (read-only or not directly controllable) 'smart radiator thermostat': {}, // SwitchBot Humidifier2 'humidifier2': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setMode: async (device, body) => device.setMode(body?.parameter), setHumidity: async (device, body) => device.setHumidity(body?.parameter), }, // SwitchBot MeterPlus (read-only) 'meterplus': {}, // SwitchBot Meter Pro (read-only) 'meter pro': {}, // SwitchBot MeterPro (read-only) 'meterpro': {}, // SwitchBot RGBICWW Floor Lamp 'rgbicww floor lamp': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot RGBICWW Strip Light 'rgbicww strip light': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot Circulator Fan 'circulator fan': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setSpeed: async (device, body) => device.setSpeed(body?.parameter), swing: async (device) => device.swing(), }, // SwitchBot Battery Circulator Fan 'battery circulator fan': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setSpeed: async (device, body) => device.setSpeed(body?.parameter), swing: async (device) => device.swing(), }, // SwitchBot Standing Circulator Fan 'standing circulator fan': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setSpeed: async (device, body) => device.setSpeed(body?.parameter), swing: async (device) => device.swing(), }, // SwitchBot Bot 'bot': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), press: async (device) => device.press(), }, // SwitchBot Curtain 'curtain': { open: async (device) => device.open(), close: async (device) => device.close(), pause: async (device) => device.pause(), setPosition: async (device, body) => device.setPosition(body?.parameter), }, // SwitchBot Blind Tilt 'blind tilt': { open: async (device) => device.open(), close: async (device) => device.close(), pause: async (device) => device.pause(), setPosition: async (device, body) => device.setPosition(body?.parameter), }, // SwitchBot Roller Shade 'roller shade': { open: async (device) => device.open(), close: async (device) => device.close(), pause: async (device) => device.pause(), setPosition: async (device, body) => device.setPosition(body?.parameter), }, // SwitchBot Plug 'plug': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot Strip Light 3 'strip light 3': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot Floor Lamp 'floor lamp': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot RGBIC Neon Rope Light 'rgbic neon rope light': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot RGBIC Neon Wire Rope Light 'rgbic neon wire rope light': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot Plug Mini 'plug mini': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), }, // SwitchBot Color Bulb 'color bulb': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot Light Strip 'light strip': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setBrightness: async (device, body) => device.setBrightness(body?.parameter), setColor: async (device, body) => device.setColor(body?.parameter), }, // SwitchBot Fan 'fan': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setSpeed: async (device, body) => device.setSpeed(body?.parameter), swing: async (device) => device.swing(), }, // SwitchBot Lock 'lock': { lock: async (device) => device.lock(), unlock: async (device) => device.unlock(), }, // SwitchBot Curtain 3 'curtain3': { open: async (device) => device.open(), close: async (device) => device.close(), pause: async (device) => device.pause(), setPosition: async (device, body) => device.setPosition(body?.parameter), }, // SwitchBot Meter 'meter': {}, // Read-only // SwitchBot Motion Sensor 'motion sensor': {}, // Read-only // SwitchBot Contact Sensor 'contact sensor': {}, // Read-only // SwitchBot Humidifier 'humidifier': { turnOn: async (device) => device.turnOn(), turnOff: async (device) => device.turnOff(), setMode: async (device, body) => device.setMode(body?.parameter), setHumidity: async (device, body) => device.setHumidity(body?.parameter), }, // SwitchBot Vacuum 'vacuum': { start: async (device) => device.start(), stop: async (device) => device.stop(), pause: async (device) => device.pause(), dock: async (device) => device.dock(), resume: async (device) => device.resume(), locate: async (device) => device.locate(), }, // Add more device types and commands as needed }; // Helper to get the handler for a device type and command export function getDeviceCommandHandler(deviceType, command) { const typeKey = deviceType.toLowerCase(); const typeMap = deviceTypeCommandMap[typeKey]; if (!typeMap) { return undefined; } return typeMap[command]; } //# sourceMappingURL=deviceCommandMapper.js.map