@switchbot/homebridge-switchbot 3.7.1-beta.1 → 3.7.1-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/config.schema.json +7 -1
- package/dist/device/blindtilt.d.ts +3 -1
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js +61 -28
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot.d.ts +1 -0
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +102 -80
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts +1 -0
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.js +53 -28
- package/dist/device/ceilinglight.js.map +1 -1
- package/dist/device/colorbulb.d.ts +1 -0
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +53 -28
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.d.ts +1 -0
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js +53 -28
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts +2 -0
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js +74 -43
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +247 -394
- package/dist/device/device.js.map +1 -1
- package/dist/device/fan.d.ts +1 -0
- package/dist/device/fan.d.ts.map +1 -1
- package/dist/device/fan.js +53 -28
- package/dist/device/fan.js.map +1 -1
- package/dist/device/hub.d.ts +1 -0
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js +53 -28
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts +1 -0
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js +53 -28
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts +1 -0
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js +53 -28
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts +1 -0
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js +53 -28
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts +1 -0
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +54 -29
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +1 -0
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +53 -28
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +1 -0
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js +53 -28
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/motion.d.ts +1 -0
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js +53 -28
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts +1 -0
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js +54 -29
- package/dist/device/plug.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts +1 -0
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +53 -28
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/device/waterdetector.d.ts +1 -0
- package/dist/device/waterdetector.d.ts.map +1 -1
- package/dist/device/waterdetector.js +53 -28
- package/dist/device/waterdetector.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js +30 -133
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/platform.d.ts +19 -18
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +369 -524
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +1 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/package.json +13 -13
- package/src/device/blindtilt.ts +59 -27
- package/src/device/bot.ts +98 -77
- package/src/device/ceilinglight.ts +51 -27
- package/src/device/colorbulb.ts +50 -26
- package/src/device/contact.ts +50 -26
- package/src/device/curtain.ts +71 -40
- package/src/device/device.ts +283 -395
- package/src/device/fan.ts +50 -26
- package/src/device/hub.ts +50 -26
- package/src/device/humidifier.ts +50 -26
- package/src/device/iosensor.ts +50 -26
- package/src/device/lightstrip.ts +50 -26
- package/src/device/lock.ts +51 -27
- package/src/device/meter.ts +50 -26
- package/src/device/meterplus.ts +50 -26
- package/src/device/motion.ts +50 -26
- package/src/device/plug.ts +51 -27
- package/src/device/robotvacuumcleaner.ts +50 -26
- package/src/device/waterdetector.ts +50 -26
- package/src/irdevice/irdevice.ts +54 -134
- package/src/platform.ts +379 -529
- package/src/settings.ts +1 -0
package/dist/settings.d.ts
CHANGED
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC9G;;GAEG;AACH,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,WAAW,oCAAoC,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,OAAO,4CAA4C,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,YAAY,yDAAyD,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,YAAY,yDAAyD,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,aAAa,0DAA0D,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,aAAa,0DAA0D,CAAC;AAIrF,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,EAAE,qBAAqB,CAAC;IACpC,oBAAoB,EAAE,6BAA6B,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,UAAU,QAAQ;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,UAAU,GAAG;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,OAAO;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,OAAO;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,MAAM;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,SAAS;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,KAAK,IAAI,GAAG,MAAM,CAAC;AAEnB,UAAU,IAAI;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,GAAG;IACX,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,OAAO;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,yCAAyC,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAEnF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAEnF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,uDAAuD,CAAC;AAErF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,yCAAyC,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAEnF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,sDAAsD,CAAC;AAEnF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,uDAAuD,CAAC;AAErF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,uDAAuD,CAAC;AA8BpF,CAAC;AAoDD,CAAC;AAMD,CAAC;AASD,CAAC;AAKD,CAAC;AAYD,CAAC;AAYD,CAAC;AAOD,CAAC;AAMD,CAAC;AAID,CAAC;AAKD,CAAC;AAKD,CAAC;AAKD,CAAC;AAOD,CAAC;AAOD,CAAC;AAmCD,CAAC;AAID,CAAC;AAWD,CAAC;AAID,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "SwitchBot",
|
|
3
3
|
"name": "@switchbot/homebridge-switchbot",
|
|
4
|
-
"version": "3.7.1-beta.
|
|
4
|
+
"version": "3.7.1-beta.10",
|
|
5
5
|
"description": "The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "SwitchBot",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"engineStrict": true,
|
|
28
28
|
"engines": {
|
|
29
|
-
"homebridge": "^1.8.4 || ^2.0.0-beta.8",
|
|
29
|
+
"homebridge": "^1.8.4 || ^2.0.0 || ^2.0.0-beta.8",
|
|
30
30
|
"node": "^18 || ^20 || ^22"
|
|
31
31
|
},
|
|
32
32
|
"main": "dist/index.js",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"lint": "eslint src/**/*.ts",
|
|
37
37
|
"watch": "npm run build && npm run plugin-ui && npm link && nodemon",
|
|
38
38
|
"plugin-ui": "rsync ./src/homebridge-ui/public/index.html ./dist/homebridge-ui/public/",
|
|
39
|
-
"build": "
|
|
39
|
+
"build": "npm run clean && tsc && npm run plugin-ui",
|
|
40
40
|
"prepublishOnly": "npm run lint && npm run build && npm run plugin-ui ",
|
|
41
41
|
"postpublish": "npm run clean",
|
|
42
|
-
"clean": "
|
|
42
|
+
"clean": "shx rm -rf ./dist",
|
|
43
43
|
"test": "npm run lint",
|
|
44
44
|
"docs": "typedoc",
|
|
45
45
|
"lint-docs": "typedoc --emit none --treatWarningsAsErrors"
|
|
@@ -81,29 +81,29 @@
|
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@homebridge/plugin-ui-utils": "^1.0.3",
|
|
83
83
|
"async-mqtt": "^2.6.3",
|
|
84
|
-
"fakegato-history": "^0.6.
|
|
84
|
+
"fakegato-history": "^0.6.5",
|
|
85
85
|
"homebridge-lib": "^7.0.4",
|
|
86
86
|
"rxjs": "^7.8.1",
|
|
87
|
-
"undici": "^6.19.
|
|
87
|
+
"undici": "^6.19.5"
|
|
88
88
|
},
|
|
89
89
|
"optionalDependencies": {
|
|
90
90
|
"node-switchbot": "2.3.0"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@eslint/js": "^9.
|
|
94
|
-
"@stylistic/eslint-plugin": "^2.
|
|
93
|
+
"@eslint/js": "^9.8.0",
|
|
94
|
+
"@stylistic/eslint-plugin": "^2.4.0",
|
|
95
95
|
"@types/eslint__js": "^8.42.3",
|
|
96
|
-
"@types/node": "^
|
|
97
|
-
"eslint": "^9.
|
|
96
|
+
"@types/node": "^22.0.0",
|
|
97
|
+
"eslint": "^9.8.0",
|
|
98
98
|
"globals": "^15.8.0",
|
|
99
|
-
"homebridge": "^
|
|
99
|
+
"homebridge": "^1.8.4",
|
|
100
100
|
"homebridge-config-ui-x": "4.56.4",
|
|
101
101
|
"nodemon": "^3.1.4",
|
|
102
102
|
"npm-check-updates": "^16.14.20",
|
|
103
|
-
"
|
|
103
|
+
"shx": "^0.3.4",
|
|
104
104
|
"ts-node": "^10.9.2",
|
|
105
105
|
"typedoc": "^0.26.5",
|
|
106
106
|
"typescript": "^5.5.4",
|
|
107
|
-
"typescript-eslint": "^8.0.0-alpha.
|
|
107
|
+
"typescript-eslint": "^8.0.0-alpha.60"
|
|
108
108
|
}
|
|
109
109
|
}
|
package/src/device/blindtilt.ts
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { deviceBase } from './device.js';
|
|
6
6
|
import { BlindTiltMappingMode } from '../utils.js';
|
|
7
|
+
/*
|
|
8
|
+
* For Testing Locally:
|
|
9
|
+
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
10
|
+
*/
|
|
7
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot';
|
|
8
12
|
import { Subject, debounceTime, interval, skipWhile, take, tap } from 'rxjs';
|
|
9
13
|
|
|
@@ -57,7 +61,8 @@ export class BlindTilt extends deviceBase {
|
|
|
57
61
|
setNewTargetTimer!: NodeJS.Timeout;
|
|
58
62
|
|
|
59
63
|
// Updates
|
|
60
|
-
|
|
64
|
+
blindTiltMoving: boolean;
|
|
65
|
+
blindTiltUpdateInProgress: boolean;
|
|
61
66
|
doBlindTiltUpdate: Subject<void>;
|
|
62
67
|
|
|
63
68
|
constructor(
|
|
@@ -75,6 +80,7 @@ export class BlindTilt extends deviceBase {
|
|
|
75
80
|
|
|
76
81
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
77
82
|
this.doBlindTiltUpdate = new Subject();
|
|
83
|
+
this.blindTiltMoving = false;
|
|
78
84
|
this.blindTiltUpdateInProgress = false;
|
|
79
85
|
this.setNewTarget = false;
|
|
80
86
|
|
|
@@ -190,12 +196,28 @@ export class BlindTilt extends deviceBase {
|
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
// Retrieve initial values and updateHomekit
|
|
193
|
-
|
|
194
|
-
|
|
199
|
+
try {
|
|
200
|
+
this.debugLog('Retrieve initial values and update Homekit');
|
|
201
|
+
this.refreshStatus();
|
|
202
|
+
} catch (e: any) {
|
|
203
|
+
this.errorLog(`failed to retrieve initial values and update Homekit, Error: ${e}`);
|
|
204
|
+
}
|
|
195
205
|
|
|
196
|
-
//regisiter webhook event handler
|
|
197
|
-
|
|
198
|
-
|
|
206
|
+
//regisiter webhook event handler if enabled
|
|
207
|
+
try {
|
|
208
|
+
this.debugLog('Registering Webhook Event Handler');
|
|
209
|
+
this.registerWebhook();
|
|
210
|
+
} catch (e: any) {
|
|
211
|
+
this.errorLog(`failed to registerWebhook, Error: ${e}`);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
//regisiter platform BLE event handler if enabled
|
|
215
|
+
try {
|
|
216
|
+
this.debugLog('Registering Platform BLE Event Handler');
|
|
217
|
+
this.registerPlatformBLE();
|
|
218
|
+
} catch (e: any) {
|
|
219
|
+
this.errorLog(`failed to registerPlatformBLE, Error: ${e}`);
|
|
220
|
+
}
|
|
199
221
|
|
|
200
222
|
// Start an update interval
|
|
201
223
|
interval(this.deviceRefreshRate * 1000)
|
|
@@ -206,6 +228,7 @@ export class BlindTilt extends deviceBase {
|
|
|
206
228
|
|
|
207
229
|
// update slide progress
|
|
208
230
|
interval(this.deviceUpdateRate * 1000)
|
|
231
|
+
.pipe(skipWhile(() => !this.blindTiltMoving))
|
|
209
232
|
.subscribe(async () => {
|
|
210
233
|
if (this.WindowCovering.PositionState === this.hap.Characteristic.PositionState.STOPPED) {
|
|
211
234
|
return;
|
|
@@ -251,6 +274,7 @@ export class BlindTilt extends deviceBase {
|
|
|
251
274
|
await this.infoLog('Checking Status ...');
|
|
252
275
|
}
|
|
253
276
|
if (this.setNewTarget && this.serviceData.inMotion) {
|
|
277
|
+
this.blindTiltMoving = true;
|
|
254
278
|
await this.setMinMax();
|
|
255
279
|
if (Number(this.WindowCovering.TargetPosition) > this.WindowCovering.CurrentPosition) {
|
|
256
280
|
await this.debugLog(`Closing, CurrentPosition: ${this.WindowCovering.CurrentPosition}`);
|
|
@@ -269,6 +293,7 @@ export class BlindTilt extends deviceBase {
|
|
|
269
293
|
await this.debugLog('Stopped, PositionState', this.WindowCovering.PositionState);
|
|
270
294
|
}
|
|
271
295
|
} else {
|
|
296
|
+
this.blindTiltMoving = false;
|
|
272
297
|
await this.debugLog(`Standby, CurrentPosition: ${this.WindowCovering.CurrentPosition}`);
|
|
273
298
|
this.WindowCovering.TargetPosition = this.WindowCovering.CurrentPosition;
|
|
274
299
|
this.WindowCovering.PositionState = this.hap.Characteristic.PositionState.STOPPED;
|
|
@@ -381,7 +406,7 @@ export class BlindTilt extends deviceBase {
|
|
|
381
406
|
async refreshStatus(): Promise<void> {
|
|
382
407
|
if (!this.device.enableCloudService && this.OpenAPI) {
|
|
383
408
|
await this.errorLog(`refreshStatus enableCloudService: ${this.device.enableCloudService}`);
|
|
384
|
-
} else if (this.BLE
|
|
409
|
+
} else if (this.BLE) {
|
|
385
410
|
await this.BLERefreshStatus();
|
|
386
411
|
} else if (this.OpenAPI && this.platform.config.credentials?.token) {
|
|
387
412
|
await this.openAPIRefreshStatus();
|
|
@@ -392,6 +417,30 @@ export class BlindTilt extends deviceBase {
|
|
|
392
417
|
}
|
|
393
418
|
|
|
394
419
|
async BLERefreshStatus(): Promise<void> {
|
|
420
|
+
await this.debugLog('BLERefreshStatus');
|
|
421
|
+
const switchbot = await this.switchbotBLE();
|
|
422
|
+
if (switchbot === undefined) {
|
|
423
|
+
await this.BLERefreshConnection(switchbot);
|
|
424
|
+
} else {
|
|
425
|
+
// Start to monitor advertisement packets
|
|
426
|
+
(async () => {
|
|
427
|
+
// Start to monitor advertisement packets
|
|
428
|
+
const serviceData = await this.monitorAdvertisementPackets(switchbot) as blindTiltServiceData;
|
|
429
|
+
// Update HomeKit
|
|
430
|
+
if (serviceData.model === SwitchBotBLEModel.BlindTilt && serviceData.modelName === SwitchBotBLEModelName.BlindTilt) {
|
|
431
|
+
this.serviceData = serviceData;
|
|
432
|
+
await this.BLEparseStatus();
|
|
433
|
+
await this.updateHomeKitCharacteristics();
|
|
434
|
+
} else {
|
|
435
|
+
await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
|
|
436
|
+
await this.BLERefreshConnection(switchbot);
|
|
437
|
+
}
|
|
438
|
+
})();
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
async registerPlatformBLE(): Promise<void> {
|
|
443
|
+
await this.debugLog('registerPlatformBLE');
|
|
395
444
|
if (this.config.options?.BLE) {
|
|
396
445
|
await this.debugLog('is listening to Platform BLE.');
|
|
397
446
|
this.device.bleMac = this.device.deviceId!.match(/.{1,2}/g)!.join(':').toLowerCase();
|
|
@@ -407,26 +456,7 @@ export class BlindTilt extends deviceBase {
|
|
|
407
456
|
}
|
|
408
457
|
};
|
|
409
458
|
} else {
|
|
410
|
-
await this.debugLog('is
|
|
411
|
-
const switchbot = await this.switchbotBLE();
|
|
412
|
-
if (switchbot === undefined) {
|
|
413
|
-
await this.BLERefreshConnection(switchbot);
|
|
414
|
-
} else {
|
|
415
|
-
// Start to monitor advertisement packets
|
|
416
|
-
(async () => {
|
|
417
|
-
// Start to monitor advertisement packets
|
|
418
|
-
const serviceData = await this.monitorAdvertisementPackets(switchbot) as blindTiltServiceData;
|
|
419
|
-
// Update HomeKit
|
|
420
|
-
if (serviceData.model === SwitchBotBLEModel.BlindTilt && serviceData.modelName === SwitchBotBLEModelName.BlindTilt) {
|
|
421
|
-
this.serviceData = serviceData;
|
|
422
|
-
await this.BLEparseStatus();
|
|
423
|
-
await this.updateHomeKitCharacteristics();
|
|
424
|
-
} else {
|
|
425
|
-
await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
|
|
426
|
-
await this.BLERefreshConnection(switchbot);
|
|
427
|
-
}
|
|
428
|
-
})();
|
|
429
|
-
}
|
|
459
|
+
await this.debugLog('is not listening to Platform BLE');
|
|
430
460
|
}
|
|
431
461
|
}
|
|
432
462
|
|
|
@@ -792,6 +822,7 @@ export class BlindTilt extends deviceBase {
|
|
|
792
822
|
}
|
|
793
823
|
|
|
794
824
|
if (this.setNewTarget) {
|
|
825
|
+
this.blindTiltMoving = true;
|
|
795
826
|
await this.infoLog('Checking Status ...');
|
|
796
827
|
await this.setMinMax();
|
|
797
828
|
if (this.WindowCovering.TargetPosition > this.WindowCovering.CurrentPosition
|
|
@@ -812,6 +843,7 @@ export class BlindTilt extends deviceBase {
|
|
|
812
843
|
await this.debugLog(`Stopped, PositionState: ${this.WindowCovering.PositionState}`);
|
|
813
844
|
}
|
|
814
845
|
} else {
|
|
846
|
+
this.blindTiltMoving = false;
|
|
815
847
|
await this.debugLog(`Standby because device not moving, CurrentPosition: ${this.WindowCovering.CurrentPosition}`);
|
|
816
848
|
this.WindowCovering.TargetPosition = this.WindowCovering.CurrentPosition;
|
|
817
849
|
if (homekitTiltAngle) {
|
package/src/device/bot.ts
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* bot.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import { deviceBase } from './device.js';
|
|
6
|
+
/*
|
|
7
|
+
* For Testing Locally:
|
|
8
|
+
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
9
|
+
*/
|
|
6
10
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot';
|
|
7
11
|
import { Subject, debounceTime, interval, skipWhile, take, tap } from 'rxjs';
|
|
8
12
|
|
|
@@ -424,12 +428,28 @@ export class Bot extends deviceBase {
|
|
|
424
428
|
}
|
|
425
429
|
|
|
426
430
|
// Retrieve initial values and updateHomekit
|
|
427
|
-
|
|
428
|
-
|
|
431
|
+
try {
|
|
432
|
+
this.debugLog('Retrieve initial values and update Homekit');
|
|
433
|
+
this.refreshStatus();
|
|
434
|
+
} catch (e: any) {
|
|
435
|
+
this.errorLog(`failed to retrieve initial values and update Homekit, Error: ${e}`);
|
|
436
|
+
}
|
|
429
437
|
|
|
430
|
-
//regisiter webhook event handler
|
|
431
|
-
|
|
432
|
-
|
|
438
|
+
//regisiter webhook event handler if enabled
|
|
439
|
+
try {
|
|
440
|
+
this.debugLog('Registering Webhook Event Handler');
|
|
441
|
+
this.registerWebhook();
|
|
442
|
+
} catch (e: any) {
|
|
443
|
+
this.errorLog(`failed to registerWebhook, Error: ${e}`);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
//regisiter platform BLE event handler if enabled
|
|
447
|
+
try {
|
|
448
|
+
this.debugLog('Registering Platform BLE Event Handler');
|
|
449
|
+
this.registerPlatformBLE();
|
|
450
|
+
} catch (e: any) {
|
|
451
|
+
this.errorLog(`failed to registerPlatformBLE, Error: ${e}`);
|
|
452
|
+
}
|
|
433
453
|
|
|
434
454
|
// Start an update interval
|
|
435
455
|
interval(this.deviceRefreshRate * 1000)
|
|
@@ -558,7 +578,7 @@ export class Bot extends deviceBase {
|
|
|
558
578
|
async refreshStatus(): Promise<void> {
|
|
559
579
|
if (!this.device.enableCloudService && this.OpenAPI) {
|
|
560
580
|
await this.errorLog(`refreshStatus enableCloudService: ${this.device.enableCloudService}`);
|
|
561
|
-
} else if (this.BLE
|
|
581
|
+
} else if (this.BLE) {
|
|
562
582
|
await this.BLERefreshStatus();
|
|
563
583
|
} else if (this.OpenAPI && this.platform.config.credentials?.token) {
|
|
564
584
|
await this.openAPIRefreshStatus();
|
|
@@ -570,6 +590,29 @@ export class Bot extends deviceBase {
|
|
|
570
590
|
|
|
571
591
|
async BLERefreshStatus(): Promise<void> {
|
|
572
592
|
await this.debugLog('BLERefreshStatus');
|
|
593
|
+
const switchbot = await this.switchbotBLE();
|
|
594
|
+
if (switchbot === undefined) {
|
|
595
|
+
await this.BLERefreshConnection(switchbot);
|
|
596
|
+
} else {
|
|
597
|
+
// Start to monitor advertisement packets
|
|
598
|
+
(async () => {
|
|
599
|
+
// Start to monitor advertisement packets
|
|
600
|
+
const serviceData = await this.monitorAdvertisementPackets(switchbot) as botServiceData;
|
|
601
|
+
// Update HomeKit
|
|
602
|
+
if (serviceData.model === SwitchBotBLEModel.Bot && serviceData.modelName === SwitchBotBLEModelName.Bot) {
|
|
603
|
+
this.serviceData = serviceData;
|
|
604
|
+
await this.BLEparseStatus();
|
|
605
|
+
await this.updateHomeKitCharacteristics();
|
|
606
|
+
} else {
|
|
607
|
+
await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
|
|
608
|
+
await this.BLERefreshConnection(switchbot);
|
|
609
|
+
}
|
|
610
|
+
})();
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
async registerPlatformBLE(): Promise<void> {
|
|
615
|
+
await this.debugLog('registerPlatformBLE');
|
|
573
616
|
if (this.config.options?.BLE) {
|
|
574
617
|
await this.debugLog('is listening to Platform BLE.');
|
|
575
618
|
this.device.bleMac = this.device.deviceId!.match(/.{1,2}/g)!.join(':').toLowerCase();
|
|
@@ -585,26 +628,7 @@ export class Bot extends deviceBase {
|
|
|
585
628
|
}
|
|
586
629
|
};
|
|
587
630
|
} else {
|
|
588
|
-
await this.debugLog('is
|
|
589
|
-
const switchbot = await this.switchbotBLE();
|
|
590
|
-
if (switchbot === undefined) {
|
|
591
|
-
await this.BLERefreshConnection(switchbot);
|
|
592
|
-
} else {
|
|
593
|
-
// Start to monitor advertisement packets
|
|
594
|
-
(async () => {
|
|
595
|
-
// Start to monitor advertisement packets
|
|
596
|
-
const serviceData = await this.monitorAdvertisementPackets(switchbot) as botServiceData;
|
|
597
|
-
// Update HomeKit
|
|
598
|
-
if (serviceData.model === SwitchBotBLEModel.Bot && serviceData.modelName === SwitchBotBLEModelName.Bot) {
|
|
599
|
-
this.serviceData = serviceData;
|
|
600
|
-
await this.BLEparseStatus();
|
|
601
|
-
await this.updateHomeKitCharacteristics();
|
|
602
|
-
} else {
|
|
603
|
-
await this.errorLog(`failed to get serviceData, serviceData: ${serviceData}`);
|
|
604
|
-
await this.BLERefreshConnection(switchbot);
|
|
605
|
-
}
|
|
606
|
-
})();
|
|
607
|
-
}
|
|
631
|
+
await this.debugLog('is not listening to Platform BLE');
|
|
608
632
|
}
|
|
609
633
|
}
|
|
610
634
|
|
|
@@ -791,57 +815,54 @@ export class Bot extends deviceBase {
|
|
|
791
815
|
* Handle requests to set the "On" characteristic
|
|
792
816
|
*/
|
|
793
817
|
async OnSet(value: CharacteristicValue): Promise<void> {
|
|
794
|
-
if (this.botDeviceType === '
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
this.On =
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
if (this.GarageDoor) {
|
|
801
|
-
await this.debugLog(`Set TargetDoorState: ${value}`);
|
|
802
|
-
this.On = value === this.hap.Characteristic.TargetDoorState.CLOSED ? false : true;
|
|
803
|
-
}
|
|
804
|
-
} else if (this.botDeviceType === 'door') {
|
|
805
|
-
if (this.Door) {
|
|
806
|
-
await this.debugLog(`Set TargetPosition: ${value}`);
|
|
807
|
-
this.On = value === 0 ? false : true;
|
|
808
|
-
}
|
|
809
|
-
} else if (this.botDeviceType === 'window') {
|
|
810
|
-
if (this.Window) {
|
|
811
|
-
await this.debugLog(`Set TargetPosition: ${value}`);
|
|
812
|
-
this.On = value === 0 ? false : true;
|
|
818
|
+
if (this.botDeviceType === 'garagedoor') {
|
|
819
|
+
this.debugLog(`Set TargetDoorState: ${value}`);
|
|
820
|
+
if (value === this.hap.Characteristic.TargetDoorState.CLOSED) {
|
|
821
|
+
this.On = false;
|
|
822
|
+
} else {
|
|
823
|
+
this.On = true;
|
|
813
824
|
}
|
|
814
|
-
} else if (
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
825
|
+
} else if (
|
|
826
|
+
this.botDeviceType === 'door' ||
|
|
827
|
+
this.botDeviceType === 'window' ||
|
|
828
|
+
this.botDeviceType === 'windowcovering'
|
|
829
|
+
) {
|
|
830
|
+
this.debugLog(`Set TargetPosition: ${value}`);
|
|
831
|
+
if (value === 0) {
|
|
832
|
+
this.On = false;
|
|
833
|
+
} else {
|
|
834
|
+
this.On = true;
|
|
818
835
|
}
|
|
819
836
|
} else if (this.botDeviceType === 'lock') {
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
this.On =
|
|
837
|
+
this.debugLog(`Set LockTargetState: ${value}`);
|
|
838
|
+
if (value === this.hap.Characteristic.LockTargetState.SECURED) {
|
|
839
|
+
this.On = false;
|
|
840
|
+
} else {
|
|
841
|
+
this.On = true;
|
|
823
842
|
}
|
|
824
843
|
} else if (this.botDeviceType === 'faucet') {
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
this.On =
|
|
844
|
+
this.debugLog(`Set Active: ${value}`);
|
|
845
|
+
if (value === this.hap.Characteristic.Active.INACTIVE) {
|
|
846
|
+
this.On = false;
|
|
847
|
+
} else {
|
|
848
|
+
this.On = true;
|
|
828
849
|
}
|
|
829
850
|
} else if (this.botDeviceType === 'stateful') {
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
this.On =
|
|
851
|
+
this.debugLog(`Set ProgrammableSwitchOutputState: ${value}`);
|
|
852
|
+
if (value === 0) {
|
|
853
|
+
this.On = false;
|
|
854
|
+
} else {
|
|
855
|
+
this.On = true;
|
|
833
856
|
}
|
|
834
857
|
} else {
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
if (this.On === true) {
|
|
842
|
-
this.multiPressCount++;
|
|
843
|
-
await this.debugLog(`multiPressCount: ${this.multiPressCount}`);
|
|
858
|
+
this.debugLog(`Set On: ${value}`);
|
|
859
|
+
if (this.device.bot?.mode === 'multipress') {
|
|
860
|
+
if (value === true) {
|
|
861
|
+
this.multiPressCount++;
|
|
862
|
+
this.debugLog(`set to Multi-Press. Multi-Press count: ${this.multiPressCount}`);
|
|
863
|
+
}
|
|
844
864
|
}
|
|
865
|
+
this.On = value as boolean;
|
|
845
866
|
}
|
|
846
867
|
this.doBotUpdate.next();
|
|
847
868
|
}
|
|
@@ -1023,7 +1044,7 @@ export class Bot extends deviceBase {
|
|
|
1023
1044
|
Service: accessory.getService(this.hap.Service.Outlet) as Service,
|
|
1024
1045
|
};
|
|
1025
1046
|
accessory.context.Outlet = this.Outlet as object;
|
|
1026
|
-
await this.
|
|
1047
|
+
await this.debugWarnLog('Removing any leftover Outlet Service');
|
|
1027
1048
|
accessory.removeService(this.Outlet.Service);
|
|
1028
1049
|
}
|
|
1029
1050
|
|
|
@@ -1035,7 +1056,7 @@ export class Bot extends deviceBase {
|
|
|
1035
1056
|
Service: accessory.getService(this.hap.Service.GarageDoorOpener) as Service,
|
|
1036
1057
|
};
|
|
1037
1058
|
accessory.context.GarageDoor = this.GarageDoor as object;
|
|
1038
|
-
await this.
|
|
1059
|
+
await this.debugWarnLog('Removing any leftover Garage Door Service');
|
|
1039
1060
|
accessory.removeService(this.GarageDoor.Service);
|
|
1040
1061
|
}
|
|
1041
1062
|
|
|
@@ -1047,7 +1068,7 @@ export class Bot extends deviceBase {
|
|
|
1047
1068
|
Service: accessory.getService(this.hap.Service.Door) as Service,
|
|
1048
1069
|
};
|
|
1049
1070
|
accessory.context.Door = this.Door as object;
|
|
1050
|
-
await this.
|
|
1071
|
+
await this.debugWarnLog('Removing any leftover Door Service');
|
|
1051
1072
|
accessory.removeService(this.Door.Service);
|
|
1052
1073
|
}
|
|
1053
1074
|
|
|
@@ -1059,7 +1080,7 @@ export class Bot extends deviceBase {
|
|
|
1059
1080
|
Service: accessory.getService(this.hap.Service.LockMechanism) as Service,
|
|
1060
1081
|
};
|
|
1061
1082
|
accessory.context.LockMechanism = this.LockMechanism as object;
|
|
1062
|
-
this.
|
|
1083
|
+
await this.debugWarnLog('Removing any leftover Lock Service');
|
|
1063
1084
|
accessory.removeService(this.LockMechanism.Service);
|
|
1064
1085
|
}
|
|
1065
1086
|
|
|
@@ -1071,7 +1092,7 @@ export class Bot extends deviceBase {
|
|
|
1071
1092
|
Service: accessory.getService(this.hap.Service.Valve) as Service,
|
|
1072
1093
|
};
|
|
1073
1094
|
accessory.context.Faucet = this.Faucet as object;
|
|
1074
|
-
await this.
|
|
1095
|
+
await this.debugWarnLog('Removing any leftover Faucet Service');
|
|
1075
1096
|
accessory.removeService(this.Faucet.Service);
|
|
1076
1097
|
}
|
|
1077
1098
|
|
|
@@ -1083,7 +1104,7 @@ export class Bot extends deviceBase {
|
|
|
1083
1104
|
Service: accessory.getService(this.hap.Service.Fan) as Service,
|
|
1084
1105
|
};
|
|
1085
1106
|
accessory.context.Fan = this.Fan as object;
|
|
1086
|
-
this.
|
|
1107
|
+
await this.debugWarnLog('Removing any leftover Fan Service');
|
|
1087
1108
|
accessory.removeService(this.Fan.Service);
|
|
1088
1109
|
}
|
|
1089
1110
|
|
|
@@ -1095,7 +1116,7 @@ export class Bot extends deviceBase {
|
|
|
1095
1116
|
Service: accessory.getService(this.hap.Service.Window) as Service,
|
|
1096
1117
|
};
|
|
1097
1118
|
accessory.context.Window = this.Window as object;
|
|
1098
|
-
await this.
|
|
1119
|
+
await this.debugWarnLog('Removing any leftover Window Service');
|
|
1099
1120
|
accessory.removeService(this.Window.Service);
|
|
1100
1121
|
}
|
|
1101
1122
|
|
|
@@ -1107,7 +1128,7 @@ export class Bot extends deviceBase {
|
|
|
1107
1128
|
Service: accessory.getService(this.hap.Service.WindowCovering) as Service,
|
|
1108
1129
|
};
|
|
1109
1130
|
accessory.context.WindowCovering = this.WindowCovering as object;
|
|
1110
|
-
await this.
|
|
1131
|
+
await this.debugWarnLog('Removing any leftover Window Covering Service');
|
|
1111
1132
|
accessory.removeService(this.WindowCovering.Service);
|
|
1112
1133
|
}
|
|
1113
1134
|
|
|
@@ -1119,7 +1140,7 @@ export class Bot extends deviceBase {
|
|
|
1119
1140
|
Service: accessory.getService(this.hap.Service.StatefulProgrammableSwitch) as Service,
|
|
1120
1141
|
};
|
|
1121
1142
|
accessory.context.StatefulProgrammableSwitch = this.StatefulProgrammableSwitch as object;
|
|
1122
|
-
await this.
|
|
1143
|
+
await this.debugWarnLog('Removing any leftover Stateful Programmable Switch Service');
|
|
1123
1144
|
accessory.removeService(this.StatefulProgrammableSwitch.Service);
|
|
1124
1145
|
}
|
|
1125
1146
|
|
|
@@ -1131,7 +1152,7 @@ export class Bot extends deviceBase {
|
|
|
1131
1152
|
Service: accessory.getService(this.hap.Service.Switch) as Service,
|
|
1132
1153
|
};
|
|
1133
1154
|
accessory.context.Switch = this.Switch as object;
|
|
1134
|
-
await this.
|
|
1155
|
+
await this.debugWarnLog('Removing any leftover Switch Service');
|
|
1135
1156
|
accessory.removeService(this.Switch.Service);
|
|
1136
1157
|
}
|
|
1137
1158
|
|