{"version":3,"sources":["jsdelivr-header.js","/npm/homebridge-edison@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,OAAS,QAAQ,UACjB,MAAQ,QAAQ,SAEtB,IAAI,QAAS,eAQb,SAAS,WAAW,EAAK,GACrB,KAAK,IAAM,EACX,KAAK,KAAO,EAAa,KACzB,KAAK,OAAS,EAEd,KAAK,OAAS,IAAI,OAAO,CACrB,GAAI,KAAK,OAAW,GACpB,GAAI,KAAK,OAAW,GACpB,IAAK,KAAK,OAAY,IACtB,QAAS,MAGb,KAAK,OAAO,GAAG,aAAa,KACxB,KAAK,IAAI,KAAK,+BAA+B,IAGjD,KAAK,OAAO,GAAG,gBAAgB,KAC3B,KAAK,IAAI,KAAK,oCAAoC,IAGtD,KAAK,OAAO,GAAG,SAAS,IACpB,KAAK,IAAI,KAAK,8BAA+B,EAAM,IAGvD,KAAK,YAAc,MAAM,OAAO,CAAC,EAAM,KACnC,WACI,EAAS,MAET,UACU,KAAK,OAAO,gBACZ,KAAK,OAAO,IAAI,EAC1B,CAAE,MAAO,GACL,KAAK,IAAI,KAAK,0BAA4B,EAAE,WAChD,CACH,EATD,EASI,GACL,GAEH,KAAK,IAAK,EACV,KAAK,WAAa,GAElB,KAAK,QAAU,IAAI,QAAQ,UAAU,KAAK,MAE1C,KAAK,QAAQ,kBAAkB,eAAe,IACzC,GAAG,MAAO,KAAK,MAAM,KAAK,OAC1B,GAAG,MAAO,KAAK,MAAM,KAAK,OAE/B,KAAK,QAAQ,kBAAkB,eAAe,YACzC,GAAG,MAAO,KAAK,cAAc,KAAK,OAClC,GAAG,MAAO,KAAK,cAAc,KAAK,MAC3C,CAvDA,OAAO,QAAU,SAAS,GACtB,QAAU,EAAW,IAAI,QACzB,eAAiB,EAAW,IAAI,eAChC,EAAW,kBAAkB,oBAAqB,SAAU,WAChE,EAsDA,WAAW,UAAU,MAAQ,SAAS,GAClC,EAAS,KAAM,KAAK,GACxB,EAGA,WAAW,UAAU,MAAQ,SAAS,EAAI,GAClC,IAAO,KAAK,IAKhB,KAAK,GAAK,EACV,KAAK,YAAY,KAAK,CAAC,IAAK,KAAM,IAAK,GAAK,IALxC,EAAS,KAMjB,EAGA,WAAW,UAAU,cAAgB,SAAS,GAC1C,EAAS,KAAM,KAAK,WACxB,EAGA,WAAW,UAAU,cAAgB,SAAS,EAAY,GACtD,GAAmB,IAAf,EAGA,OAFA,KAAK,WAAa,OAClB,EAAS,MAKT,IAAe,KAAK,YAKxB,KAAK,WAAa,EAClB,KAAK,YAAY,KAAK,CAAC,IAAK,KAAM,IAAmB,GAAb,GAAmB,IALvD,EAAS,KAMjB,EAEA,WAAW,UAAU,YAAc,WAC/B,MAAO,CAAC,KAAK,QACjB","file":"/npm/homebridge-edison@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/homebridge-edison@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const TuyAPI = require('tuyapi');\nconst async = require(\"async\");\n\nlet Service, Characteristic;\n\nmodule.exports = function(homebridge) {\n    Service = homebridge.hap.Service;\n    Characteristic = homebridge.hap.Characteristic;\n    homebridge.registerAccessory(\"homebridge-edison\", \"edison\", controller);\n}\n\nfunction controller(log, config) {\n    this.log = log;\n    this.name = config[\"name\"];\n    this.config = config;\n\n    this.device = new TuyAPI({\n        ip: this.config[\"ip\"],\n        id: this.config[\"id\"],\n        key: this.config[\"key\"],\n        version: 3.3\n    });\n\n    this.device.on('connected', () => {\n        this.log.info('[edison] Connected to device');\n    });\n\n    this.device.on('disconnected', () => {\n        this.log.info('[edison] Disconnected from device');\n    });\n\n    this.device.on('error', error => {\n        this.log.warn('[edison] Error from device:', error);\n    });\n\n    this.queueUpdate = async.queue( (data, callback) => {\n        (async () => {\n            callback(null);\n\n            try {\n                await this.device.connect();\n                await this.device.set(data);\n            } catch (e) {\n                this.log.warn('[edison] Caught Error: ' + e.toString());\n            }\n        })();\n    }, 1);\n\n    this.on = false;\n    this.brightness = 10;\n\n    this.service = new Service.Lightbulb(this.name);\n\n    this.service.getCharacteristic(Characteristic.On)\n        .on('get', this.getOn.bind(this))\n        .on('set', this.setOn.bind(this));\n\n    this.service.addCharacteristic(Characteristic.Brightness)\n        .on('get', this.getBrightness.bind(this))\n        .on('set', this.setBrightness.bind(this));\n}\n\n// get the status\ncontroller.prototype.getOn = function(callback) {\n    callback(null, this.on);\n}\n\n// set the status\ncontroller.prototype.setOn = function(on, callback) {\n    if (on === this.on) {\n        callback(null);\n        return;\n    }\n\n    this.on = on;\n    this.queueUpdate.push({dps: '20', set: on}, callback);\n}\n\n// get the brightness\ncontroller.prototype.getBrightness = function(callback) {\n    callback(null, this.brightness);\n}\n\n// set the brightness\ncontroller.prototype.setBrightness = function(brightness, callback) {\n    if (brightness === 0) {\n        this.brightness = brightness;\n        callback(null);\n        return;\n    }\n\n    // Brightness already set\n    if (brightness === this.brightness) {\n        callback(null);\n        return;\n    }\n\n    this.brightness = brightness;\n    this.queueUpdate.push({dps: '22', set: (brightness * 10)}, callback);\n}\n\ncontroller.prototype.getServices = function() {\n    return [this.service];\n}\n"]}