node-switchbot 2.5.0-beta.8 → 3.0.0
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/.github/workflows/beta-release.yml +25 -2
- package/.github/workflows/release.yml +13 -0
- package/BLE.md +1144 -0
- package/CHANGELOG.md +14 -0
- package/OpenAPI.md +185 -0
- package/README.md +20 -1189
- package/branding/Node_x_SwitchBot.svg +9 -0
- package/branding/icon.png +0 -0
- package/branding/switchbot.png +0 -0
- package/dist/advertising.d.ts +3 -3
- package/dist/advertising.d.ts.map +1 -1
- package/dist/advertising.js +26 -26
- package/dist/advertising.js.map +1 -1
- package/dist/device/woblindtilt.d.ts +19 -50
- package/dist/device/woblindtilt.d.ts.map +1 -1
- package/dist/device/woblindtilt.js +41 -100
- package/dist/device/woblindtilt.js.map +1 -1
- package/dist/device/wobulb.d.ts +41 -15
- package/dist/device/wobulb.d.ts.map +1 -1
- package/dist/device/wobulb.js +72 -128
- package/dist/device/wobulb.js.map +1 -1
- package/dist/device/woceilinglight.d.ts +47 -21
- package/dist/device/woceilinglight.d.ts.map +1 -1
- package/dist/device/woceilinglight.js +96 -171
- package/dist/device/woceilinglight.js.map +1 -1
- package/dist/device/wocontact.d.ts +11 -1
- package/dist/device/wocontact.d.ts.map +1 -1
- package/dist/device/wocontact.js +23 -22
- package/dist/device/wocontact.js.map +1 -1
- package/dist/device/wocurtain.d.ts +39 -1
- package/dist/device/wocurtain.d.ts.map +1 -1
- package/dist/device/wocurtain.js +69 -103
- package/dist/device/wocurtain.js.map +1 -1
- package/dist/device/wohand.d.ts +37 -2
- package/dist/device/wohand.d.ts.map +1 -1
- package/dist/device/wohand.js +55 -89
- package/dist/device/wohand.js.map +1 -1
- package/dist/device/wohub2.d.ts +11 -1
- package/dist/device/wohub2.d.ts.map +1 -1
- package/dist/device/wohub2.js +21 -29
- package/dist/device/wohub2.js.map +1 -1
- package/dist/device/wohumi.d.ts +37 -2
- package/dist/device/wohumi.d.ts.map +1 -1
- package/dist/device/wohumi.js +52 -83
- package/dist/device/wohumi.js.map +1 -1
- package/dist/device/woiosensorth.d.ts +12 -1
- package/dist/device/woiosensorth.d.ts.map +1 -1
- package/dist/device/woiosensorth.js +25 -29
- package/dist/device/woiosensorth.js.map +1 -1
- package/dist/device/woplugmini.d.ts +45 -12
- package/dist/device/woplugmini.d.ts.map +1 -1
- package/dist/device/woplugmini.js +71 -77
- package/dist/device/woplugmini.js.map +1 -1
- package/dist/device/wopresence.d.ts +11 -1
- package/dist/device/wopresence.d.ts.map +1 -1
- package/dist/device/wopresence.js +21 -27
- package/dist/device/wopresence.js.map +1 -1
- package/dist/device/wosensorth.d.ts +18 -2
- package/dist/device/wosensorth.d.ts.map +1 -1
- package/dist/device/wosensorth.js +34 -50
- package/dist/device/wosensorth.js.map +1 -1
- package/dist/device/wosmartlock.d.ts +63 -13
- package/dist/device/wosmartlock.d.ts.map +1 -1
- package/dist/device/wosmartlock.js +114 -195
- package/dist/device/wosmartlock.js.map +1 -1
- package/dist/device/wosmartlockpro.d.ts +16 -12
- package/dist/device/wosmartlockpro.d.ts.map +1 -1
- package/dist/device/wosmartlockpro.js +34 -29
- package/dist/device/wosmartlockpro.js.map +1 -1
- package/dist/device/wostrip.d.ts +4 -3
- package/dist/device/wostrip.d.ts.map +1 -1
- package/dist/device/wostrip.js +5 -4
- package/dist/device/wostrip.js.map +1 -1
- package/dist/device.d.ts +13 -5
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +13 -2
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/parameter-checker.d.ts +10 -13
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/parameter-checker.js +16 -1
- package/dist/parameter-checker.js.map +1 -1
- package/dist/settings.d.ts +41 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +43 -0
- package/dist/settings.js.map +1 -1
- package/dist/{switchbot.d.ts → switchbot-ble.d.ts} +13 -8
- package/dist/switchbot-ble.d.ts.map +1 -0
- package/dist/switchbot-ble.js +427 -0
- package/dist/switchbot-ble.js.map +1 -0
- package/dist/switchbot-openapi.d.ts +131 -0
- package/dist/switchbot-openapi.d.ts.map +1 -0
- package/dist/switchbot-openapi.js +311 -0
- package/dist/switchbot-openapi.js.map +1 -0
- package/dist/test/advertising.test.d.ts +2 -0
- package/dist/test/advertising.test.d.ts.map +1 -0
- package/dist/test/advertising.test.js +99 -0
- package/dist/test/advertising.test.js.map +1 -0
- package/dist/test/device.test.d.ts +2 -0
- package/dist/test/device.test.d.ts.map +1 -0
- package/dist/test/device.test.js +38 -0
- package/dist/test/device.test.js.map +1 -0
- package/dist/test/index.test.d.ts +2 -0
- package/dist/test/index.test.d.ts.map +1 -0
- package/dist/test/index.test.js +35 -0
- package/dist/test/index.test.js.map +1 -0
- package/dist/test/parameter-checker.test.d.ts +2 -0
- package/dist/test/parameter-checker.test.d.ts.map +1 -0
- package/dist/test/parameter-checker.test.js +108 -0
- package/dist/test/parameter-checker.test.js.map +1 -0
- package/dist/test/settings.test.d.ts +2 -0
- package/dist/test/settings.test.d.ts.map +1 -0
- package/dist/test/settings.test.js +49 -0
- package/dist/test/settings.test.js.map +1 -0
- package/dist/test/switchbot-openapi.test.d.ts +2 -0
- package/dist/test/switchbot-openapi.test.d.ts.map +1 -0
- package/dist/test/switchbot-openapi.test.js +96 -0
- package/dist/test/switchbot-openapi.test.js.map +1 -0
- package/dist/test/switchbot.test.d.ts +2 -0
- package/dist/test/switchbot.test.d.ts.map +1 -0
- package/dist/test/switchbot.test.js +106 -0
- package/dist/test/switchbot.test.js.map +1 -0
- package/dist/test/woblindtilt.test.d.ts.map +1 -0
- package/dist/test/woblindtilt.test.js +76 -0
- package/dist/test/woblindtilt.test.js.map +1 -0
- package/dist/{device → test}/wobulb.test.d.ts.map +1 -1
- package/dist/test/wobulb.test.js +95 -0
- package/dist/test/wobulb.test.js.map +1 -0
- package/dist/test/woceilinglight.test.d.ts.map +1 -0
- package/dist/test/woceilinglight.test.js +81 -0
- package/dist/test/woceilinglight.test.js.map +1 -0
- package/dist/test/wocontact.test.d.ts.map +1 -0
- package/dist/test/wocontact.test.js +65 -0
- package/dist/test/wocontact.test.js.map +1 -0
- package/dist/test/wocurtain.test.d.ts.map +1 -0
- package/dist/test/wocurtain.test.js +75 -0
- package/dist/test/wocurtain.test.js.map +1 -0
- package/dist/{device → test}/wohand.test.d.ts.map +1 -1
- package/dist/test/wohand.test.js +56 -0
- package/dist/test/wohand.test.js.map +1 -0
- package/dist/test/wohub2.test.d.ts +2 -0
- package/dist/test/wohub2.test.d.ts.map +1 -0
- package/dist/test/wohub2.test.js +80 -0
- package/dist/test/wohub2.test.js.map +1 -0
- package/dist/{device → test}/wohumi.test.d.ts.map +1 -1
- package/dist/test/wohumi.test.js +82 -0
- package/dist/test/wohumi.test.js.map +1 -0
- package/dist/test/woiosensorth.test.d.ts.map +1 -0
- package/dist/test/woiosensorth.test.js +40 -0
- package/dist/test/woiosensorth.test.js.map +1 -0
- package/dist/test/woplugmini.test.d.ts.map +1 -0
- package/dist/test/woplugmini.test.js +114 -0
- package/dist/test/woplugmini.test.js.map +1 -0
- package/dist/test/wopresence.test.d.ts.map +1 -0
- package/dist/test/wopresence.test.js +68 -0
- package/dist/test/wopresence.test.js.map +1 -0
- package/dist/test/wosensorth.test.d.ts.map +1 -0
- package/dist/test/wosensorth.test.js +51 -0
- package/dist/test/wosensorth.test.js.map +1 -0
- package/dist/test/wosmartlock.test.d.ts.map +1 -0
- package/dist/test/wosmartlock.test.js +151 -0
- package/dist/test/wosmartlock.test.js.map +1 -0
- package/dist/test/wosmartlockpro.test.d.ts.map +1 -0
- package/dist/test/wosmartlockpro.test.js +151 -0
- package/dist/test/wosmartlockpro.test.js.map +1 -0
- package/dist/{device → test}/wostrip.test.d.ts.map +1 -1
- package/dist/test/wostrip.test.js +102 -0
- package/dist/test/wostrip.test.js.map +1 -0
- package/dist/types/bledevicestatus.d.ts +4 -12
- package/dist/types/bledevicestatus.d.ts.map +1 -1
- package/dist/types/devicelist.d.ts.map +1 -1
- package/dist/types/devicelist.js +0 -4
- package/dist/types/devicelist.js.map +1 -1
- package/dist/types/devicepush.d.ts +13 -0
- package/dist/types/devicepush.d.ts.map +1 -0
- package/dist/types/devicepush.js +2 -0
- package/dist/types/devicepush.js.map +1 -0
- package/dist/types/deviceresponse.d.ts +2 -3
- package/dist/types/deviceresponse.d.ts.map +1 -1
- package/dist/types/devicestatus.d.ts.map +1 -1
- package/dist/types/devicewebhookstatus.d.ts +32 -0
- package/dist/types/devicewebhookstatus.d.ts.map +1 -1
- package/dist/types/irdevicelist.d.ts.map +1 -1
- package/dist/types/types.d.ts +23 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +14 -0
- package/dist/types/types.js.map +1 -1
- package/docs/assets/highlight.css +12 -47
- package/docs/assets/main.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/SwitchBotBLE.html +64 -0
- package/docs/classes/SwitchBotOpenAPI.html +47 -0
- package/docs/classes/SwitchbotDevice.html +32 -33
- package/docs/enums/LogLevel.html +10 -0
- package/docs/enums/SwitchBotBLEModel.html +2 -2
- package/docs/enums/SwitchBotBLEModelFriendlyName.html +2 -2
- package/docs/enums/SwitchBotBLEModelName.html +2 -2
- package/docs/enums/SwitchBotModel.html +2 -2
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +16 -993
- package/docs/interfaces/Ad-1.html +5 -0
- package/docs/interfaces/AdvertisementData.html +3 -0
- package/docs/interfaces/Chars.html +4 -0
- package/docs/interfaces/ErrorObject.html +3 -0
- package/docs/interfaces/Params.html +6 -0
- package/docs/interfaces/ServiceData.html +2 -0
- package/docs/interfaces/SwitchBotBLEDevice.html +21 -0
- package/docs/interfaces/WebhookDetail.html +6 -0
- package/docs/interfaces/ad.html +5 -0
- package/docs/interfaces/body.html +3 -0
- package/docs/interfaces/bodyChange.html +4 -0
- package/docs/interfaces/deleteWebhookResponse.html +4 -0
- package/docs/interfaces/device.html +7 -0
- package/docs/interfaces/deviceList.html +2 -0
- package/docs/interfaces/deviceStatus.html +7 -0
- package/docs/interfaces/deviceStatusRequest.html +4 -0
- package/docs/interfaces/deviceWebhook.html +4 -0
- package/docs/interfaces/deviceWebhookContext.html +4 -0
- package/docs/interfaces/devices.html +4 -0
- package/docs/interfaces/infraredRemoteList.html +2 -0
- package/docs/interfaces/irdevice.html +5 -0
- package/docs/interfaces/pushResponse.html +4 -0
- package/docs/interfaces/queryWebhookResponse.html +4 -0
- package/docs/interfaces/setupWebhookResponse.html +4 -0
- package/docs/interfaces/switchbot.html +3 -0
- package/docs/interfaces/updateWebhookResponse.html +4 -0
- package/docs/interfaces/webhookRequest.html +4 -0
- package/docs/media/BLE.md +1109 -0
- package/docs/media/OpenAPI.md +185 -0
- package/docs/modules.html +136 -3
- package/docs/types/MacAddress.html +1 -0
- package/docs/types/batteryCirculatorFan.html +1 -0
- package/docs/types/batteryCirculatorFanServiceData.html +1 -0
- package/docs/types/batteryCirculatorFanStatus.html +1 -0
- package/docs/types/batteryCirculatorFanWebhookContext.html +1 -0
- package/docs/types/blindTilt.html +1 -0
- package/docs/types/blindTiltServiceData.html +1 -0
- package/docs/types/blindTiltStatus.html +1 -0
- package/docs/types/blindTiltWebhookContext.html +1 -0
- package/docs/types/bot.html +1 -0
- package/docs/types/botServiceData.html +1 -0
- package/docs/types/botStatus.html +1 -0
- package/docs/types/botWebhookContext.html +1 -0
- package/docs/types/ceilingLight.html +1 -0
- package/docs/types/ceilingLightPro.html +1 -0
- package/docs/types/ceilingLightProServiceData.html +1 -0
- package/docs/types/ceilingLightProStatus.html +1 -0
- package/docs/types/ceilingLightProWebhookContext.html +1 -0
- package/docs/types/ceilingLightServiceData.html +1 -0
- package/docs/types/ceilingLightStatus.html +1 -0
- package/docs/types/ceilingLightWebhookContext.html +1 -0
- package/docs/types/colorBulb.html +1 -0
- package/docs/types/colorBulbServiceData.html +1 -0
- package/docs/types/colorBulbStatus.html +1 -0
- package/docs/types/colorBulbWebhookContext.html +1 -0
- package/docs/types/contactSensor.html +1 -0
- package/docs/types/contactSensorServiceData.html +1 -0
- package/docs/types/contactSensorStatus.html +1 -0
- package/docs/types/contactSensorWebhookContext.html +1 -0
- package/docs/types/curtain.html +1 -0
- package/docs/types/curtain3.html +1 -0
- package/docs/types/curtain3ServiceData.html +1 -0
- package/docs/types/curtain3WebhookContext.html +1 -0
- package/docs/types/curtainServiceData.html +1 -0
- package/docs/types/curtainStatus.html +1 -0
- package/docs/types/curtainWebhookContext.html +1 -0
- package/docs/types/floorCleaningRobotS10.html +1 -0
- package/docs/types/floorCleaningRobotS10Status.html +1 -0
- package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -0
- package/docs/types/hub2.html +1 -0
- package/docs/types/hub2ServiceData.html +1 -0
- package/docs/types/hub2Status.html +1 -0
- package/docs/types/hub2WebhookContext.html +1 -0
- package/docs/types/humidifier.html +1 -0
- package/docs/types/humidifierServiceData.html +1 -0
- package/docs/types/humidifierStatus.html +1 -0
- package/docs/types/humidifierWebhookContext.html +1 -0
- package/docs/types/indoorCam.html +1 -0
- package/docs/types/indoorCameraWebhookContext.html +1 -0
- package/docs/types/keypad.html +1 -0
- package/docs/types/keypadTouch.html +1 -0
- package/docs/types/keypadTouchWebhookContext.html +1 -0
- package/docs/types/keypadWebhookContext.html +1 -0
- package/docs/types/lock.html +1 -0
- package/docs/types/lockPro.html +1 -0
- package/docs/types/lockProServiceData.html +1 -0
- package/docs/types/lockProStatus.html +1 -0
- package/docs/types/lockProWebhookContext.html +1 -0
- package/docs/types/lockServiceData.html +1 -0
- package/docs/types/lockStatus.html +1 -0
- package/docs/types/lockWebhookContext.html +1 -0
- package/docs/types/meter.html +1 -0
- package/docs/types/meterPlus.html +1 -0
- package/docs/types/meterPlusServiceData.html +1 -0
- package/docs/types/meterPlusStatus.html +1 -0
- package/docs/types/meterPlusWebhookContext.html +1 -0
- package/docs/types/meterServiceData.html +1 -0
- package/docs/types/meterStatus.html +1 -0
- package/docs/types/meterWebhookContext.html +1 -0
- package/docs/types/motionSensor.html +1 -0
- package/docs/types/motionSensorServiceData.html +1 -0
- package/docs/types/motionSensorStatus.html +1 -0
- package/docs/types/motionSensorWebhookContext.html +1 -0
- package/docs/types/outdoorMeter.html +1 -0
- package/docs/types/outdoorMeterServiceData.html +1 -0
- package/docs/types/outdoorMeterStatus.html +1 -0
- package/docs/types/outdoorMeterWebhookContext.html +1 -0
- package/docs/types/panTiltCamWebhookContext.html +1 -0
- package/docs/types/pantiltCam.html +1 -0
- package/docs/types/pantiltCam2k.html +1 -0
- package/docs/types/plug.html +1 -0
- package/docs/types/plugMini.html +1 -0
- package/docs/types/plugMiniJPServiceData.html +1 -0
- package/docs/types/plugMiniJPWebhookContext.html +1 -0
- package/docs/types/plugMiniStatus.html +1 -0
- package/docs/types/plugMiniUSServiceData.html +1 -0
- package/docs/types/plugMiniUSWebhookContext.html +1 -0
- package/docs/types/plugStatus.html +1 -0
- package/docs/types/plugWebhookContext.html +1 -0
- package/docs/types/remote.html +1 -0
- package/docs/types/robotVacuumCleanerS1.html +1 -0
- package/docs/types/robotVacuumCleanerS1Plus.html +1 -0
- package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -0
- package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -0
- package/docs/types/robotVacuumCleanerS1Status.html +1 -0
- package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -0
- package/docs/types/robotVacuumCleanerServiceData.html +1 -0
- package/docs/types/stripLight.html +1 -0
- package/docs/types/stripLightServiceData.html +1 -0
- package/docs/types/stripLightStatus.html +1 -0
- package/docs/types/stripLightWebhookContext.html +1 -0
- package/docs/types/waterLeakDetector.html +1 -0
- package/docs/types/waterLeakDetectorServiceData.html +1 -0
- package/docs/types/waterLeakDetectorStatus.html +1 -0
- package/docs/types/waterLeakDetectorWebhookContext.html +1 -0
- package/package.json +13 -11
- package/.github/npm-version-script.cjs +0 -81
- package/dist/device/woblindtilt.test.d.ts.map +0 -1
- package/dist/device/woblindtilt.test.js +0 -26
- package/dist/device/woblindtilt.test.js.map +0 -1
- package/dist/device/wobulb.test.js +0 -52
- package/dist/device/wobulb.test.js.map +0 -1
- package/dist/device/woceilinglight.test.d.ts.map +0 -1
- package/dist/device/woceilinglight.test.js +0 -63
- package/dist/device/woceilinglight.test.js.map +0 -1
- package/dist/device/wocontact.test.d.ts.map +0 -1
- package/dist/device/wocontact.test.js +0 -34
- package/dist/device/wocontact.test.js.map +0 -1
- package/dist/device/wocurtain.test.d.ts.map +0 -1
- package/dist/device/wocurtain.test.js +0 -33
- package/dist/device/wocurtain.test.js.map +0 -1
- package/dist/device/wohand.test.js +0 -62
- package/dist/device/wohand.test.js.map +0 -1
- package/dist/device/wohand2.test.d.ts +0 -2
- package/dist/device/wohand2.test.d.ts.map +0 -1
- package/dist/device/wohand2.test.js +0 -50
- package/dist/device/wohand2.test.js.map +0 -1
- package/dist/device/wohumi.test.js +0 -61
- package/dist/device/wohumi.test.js.map +0 -1
- package/dist/device/woiosensorth.test.d.ts.map +0 -1
- package/dist/device/woiosensorth.test.js +0 -39
- package/dist/device/woiosensorth.test.js.map +0 -1
- package/dist/device/woplugmini.test.d.ts.map +0 -1
- package/dist/device/woplugmini.test.js +0 -91
- package/dist/device/woplugmini.test.js.map +0 -1
- package/dist/device/wopresence.test.d.ts.map +0 -1
- package/dist/device/wopresence.test.js +0 -42
- package/dist/device/wopresence.test.js.map +0 -1
- package/dist/device/wosensorth.test.d.ts.map +0 -1
- package/dist/device/wosensorth.test.js +0 -59
- package/dist/device/wosensorth.test.js.map +0 -1
- package/dist/device/wosmartlock.test.d.ts.map +0 -1
- package/dist/device/wosmartlock.test.js +0 -84
- package/dist/device/wosmartlock.test.js.map +0 -1
- package/dist/device/wosmartlockpro.test.d.ts.map +0 -1
- package/dist/device/wosmartlockpro.test.js +0 -124
- package/dist/device/wosmartlockpro.test.js.map +0 -1
- package/dist/device/wostrip.test.js +0 -115
- package/dist/device/wostrip.test.js.map +0 -1
- package/dist/switchbot.d.ts.map +0 -1
- package/dist/switchbot.js +0 -259
- package/dist/switchbot.js.map +0 -1
- package/dist/types/pushbody.d.ts +0 -6
- package/dist/types/pushbody.d.ts.map +0 -1
- package/dist/types/pushbody.js +0 -2
- package/dist/types/pushbody.js.map +0 -1
- package/docs/classes/SwitchBot.html +0 -16
- package/docs/types/SwitchBotBLEDevice.html +0 -1
- /package/dist/{device → test}/woblindtilt.test.d.ts +0 -0
- /package/dist/{device → test}/wobulb.test.d.ts +0 -0
- /package/dist/{device → test}/woceilinglight.test.d.ts +0 -0
- /package/dist/{device → test}/wocontact.test.d.ts +0 -0
- /package/dist/{device → test}/wocurtain.test.d.ts +0 -0
- /package/dist/{device → test}/wohand.test.d.ts +0 -0
- /package/dist/{device → test}/wohumi.test.d.ts +0 -0
- /package/dist/{device → test}/woiosensorth.test.d.ts +0 -0
- /package/dist/{device → test}/woplugmini.test.d.ts +0 -0
- /package/dist/{device → test}/wopresence.test.d.ts +0 -0
- /package/dist/{device → test}/wosensorth.test.d.ts +0 -0
- /package/dist/{device → test}/wosmartlock.test.d.ts +0 -0
- /package/dist/{device → test}/wosmartlockpro.test.d.ts +0 -0
- /package/dist/{device → test}/wostrip.test.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woblindtilt.js","sourceRoot":"","sources":["../../src/device/woblindtilt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"woblindtilt.js","sourceRoot":"","sources":["../../src/device/woblindtilt.ts"],"names":[],"mappings":"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"}
|
package/dist/device/wobulb.d.ts
CHANGED
|
@@ -1,41 +1,67 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../device.js';
|
|
3
3
|
/**
|
|
4
|
+
* Class representing a WoBulb device.
|
|
4
5
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/colorbulb.md
|
|
5
6
|
*/
|
|
6
7
|
export declare class WoBulb extends SwitchbotDevice {
|
|
7
|
-
static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<object | null>;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Parses the service data for WoBulb.
|
|
10
|
+
* @param {Buffer} serviceData - The service data buffer.
|
|
11
|
+
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
12
|
+
* @param {Function} emitLog - The function to emit log messages.
|
|
13
|
+
* @returns {Promise<object | null>} - Parsed service data or null if invalid.
|
|
10
14
|
*/
|
|
11
|
-
|
|
15
|
+
static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<object | null>;
|
|
12
16
|
/**
|
|
17
|
+
* Reads the state of the bulb.
|
|
18
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is ON (true) or OFF (false).
|
|
19
|
+
*/
|
|
20
|
+
readState(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Sets the state of the bulb.
|
|
23
|
+
* @param {number[]} reqByteArray - The request byte array.
|
|
24
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
13
25
|
* @private
|
|
14
26
|
*/
|
|
15
|
-
setState(reqByteArray: number[]): Promise<
|
|
27
|
+
setState(reqByteArray: number[]): Promise<boolean>;
|
|
16
28
|
/**
|
|
17
|
-
*
|
|
29
|
+
* Turns on the bulb.
|
|
30
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is ON (true).
|
|
18
31
|
*/
|
|
19
|
-
turnOn(): Promise<
|
|
32
|
+
turnOn(): Promise<boolean>;
|
|
20
33
|
/**
|
|
21
|
-
*
|
|
34
|
+
* Turns off the bulb.
|
|
35
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is OFF (false).
|
|
22
36
|
*/
|
|
23
|
-
turnOff(): Promise<
|
|
37
|
+
turnOff(): Promise<boolean>;
|
|
24
38
|
/**
|
|
25
|
-
*
|
|
39
|
+
* Sets the brightness of the bulb.
|
|
40
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
41
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
26
42
|
*/
|
|
27
|
-
setBrightness(brightness: number): Promise<
|
|
43
|
+
setBrightness(brightness: number): Promise<boolean>;
|
|
28
44
|
/**
|
|
29
|
-
*
|
|
45
|
+
* Sets the color temperature of the bulb.
|
|
46
|
+
* @param {number} color_temperature - The color temperature percentage (0-100).
|
|
47
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
30
48
|
*/
|
|
31
|
-
setColorTemperature(color_temperature: number): Promise<
|
|
49
|
+
setColorTemperature(color_temperature: number): Promise<boolean>;
|
|
32
50
|
/**
|
|
33
|
-
*
|
|
51
|
+
* Sets the RGB color of the bulb.
|
|
52
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
53
|
+
* @param {number} red - The red color value (0-255).
|
|
54
|
+
* @param {number} green - The green color value (0-255).
|
|
55
|
+
* @param {number} blue - The blue color value (0-255).
|
|
56
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
34
57
|
*/
|
|
35
|
-
setRGB(brightness: number, red: number, green: number, blue: number): Promise<
|
|
58
|
+
setRGB(brightness: number, red: number, green: number, blue: number): Promise<boolean>;
|
|
36
59
|
/**
|
|
60
|
+
* Sends a command to the bulb.
|
|
61
|
+
* @param {number[]} bytes - The command bytes.
|
|
62
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
37
63
|
* @private
|
|
38
64
|
*/
|
|
39
|
-
operateBulb
|
|
65
|
+
private operateBulb;
|
|
40
66
|
}
|
|
41
67
|
//# sourceMappingURL=wobulb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wobulb.d.ts","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wobulb.d.ts","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;;;;;OAMG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyCzB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC;;;;;OAKG;IACU,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzD;;;;OAIG;IACG,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtE;;;;;;;OAOG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO5F;;;;;OAKG;YACW,WAAW;CAY1B"}
|
package/dist/device/wobulb.js
CHANGED
|
@@ -1,190 +1,134 @@
|
|
|
1
|
-
import { Buffer } from 'node:buffer';
|
|
2
1
|
/* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
3
2
|
*
|
|
4
3
|
* wobulb.ts: Switchbot BLE API registration.
|
|
5
4
|
*/
|
|
5
|
+
import { Buffer } from 'node:buffer';
|
|
6
6
|
import { SwitchbotDevice } from '../device.js';
|
|
7
7
|
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
8
8
|
/**
|
|
9
|
+
* Class representing a WoBulb device.
|
|
9
10
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/colorbulb.md
|
|
10
11
|
*/
|
|
11
12
|
export class WoBulb extends SwitchbotDevice {
|
|
12
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Parses the service data for WoBulb.
|
|
15
|
+
* @param {Buffer} serviceData - The service data buffer.
|
|
16
|
+
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
17
|
+
* @param {Function} emitLog - The function to emit log messages.
|
|
18
|
+
* @returns {Promise<object | null>} - Parsed service data or null if invalid.
|
|
19
|
+
*/
|
|
20
|
+
static async parseServiceData(serviceData, manufacturerData, emitLog) {
|
|
13
21
|
if (serviceData.length !== 18) {
|
|
14
|
-
|
|
15
|
-
onlog(`[parseServiceDataForWoBulb] Buffer length ${serviceData.length} !== 18!`);
|
|
16
|
-
}
|
|
22
|
+
emitLog('debugerror', `[parseServiceDataForWoBulb] Buffer length ${serviceData.length} !== 18!`);
|
|
17
23
|
return null;
|
|
18
24
|
}
|
|
19
25
|
if (manufacturerData.length !== 13) {
|
|
20
|
-
|
|
21
|
-
onlog(`[parseServiceDataForWoBulb] Buffer length ${manufacturerData.length} !== 13!`);
|
|
22
|
-
}
|
|
26
|
+
emitLog('debugerror', `[parseServiceDataForWoBulb] Buffer length ${manufacturerData.length} !== 13!`);
|
|
23
27
|
return null;
|
|
24
28
|
}
|
|
25
|
-
const byte1
|
|
26
|
-
|
|
27
|
-
const byte3 = manufacturerData.readUInt8(3); // bulb R
|
|
28
|
-
const byte4 = manufacturerData.readUInt8(4); // bulb G
|
|
29
|
-
const byte5 = manufacturerData.readUInt8(5); // bulb B
|
|
30
|
-
const byte6 = manufacturerData.readUInt8(6); // bulb temperature
|
|
31
|
-
const byte7 = manufacturerData.readUInt8(7);
|
|
32
|
-
const byte8 = manufacturerData.readUInt8(8);
|
|
33
|
-
const byte9 = manufacturerData.readUInt8(9);
|
|
34
|
-
const byte10 = manufacturerData.readUInt8(10); // bulb mode
|
|
35
|
-
const power = byte1;
|
|
36
|
-
const red = byte3;
|
|
37
|
-
const green = byte4;
|
|
38
|
-
const blue = byte5;
|
|
39
|
-
const color_temperature = byte6;
|
|
40
|
-
const state = !!(byte7 & 0b01111111);
|
|
41
|
-
const brightness = byte7 & 0b01111111;
|
|
42
|
-
const delay = byte8 & 0b10000000;
|
|
43
|
-
const preset = byte8 & 0b00001000;
|
|
44
|
-
const color_mode = byte8 & 0b00000111;
|
|
45
|
-
const speed = byte9 & 0b01111111;
|
|
46
|
-
const loop_index = byte10 & 0b11111110;
|
|
47
|
-
const data = {
|
|
29
|
+
const [, byte1, , byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10,] = manufacturerData;
|
|
30
|
+
return {
|
|
48
31
|
model: SwitchBotBLEModel.ColorBulb,
|
|
49
32
|
modelName: SwitchBotBLEModelName.ColorBulb,
|
|
50
33
|
modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
brightness,
|
|
58
|
-
delay,
|
|
59
|
-
preset,
|
|
60
|
-
color_mode,
|
|
61
|
-
speed,
|
|
62
|
-
loop_index,
|
|
34
|
+
power: byte1,
|
|
35
|
+
red: byte3,
|
|
36
|
+
green: byte4,
|
|
37
|
+
blue: byte5,
|
|
38
|
+
color_temperature: byte6,
|
|
39
|
+
state: !!(byte7 & 0b01111111),
|
|
40
|
+
brightness: byte7 & 0b01111111,
|
|
41
|
+
delay: !!(byte8 & 0b10000000),
|
|
42
|
+
preset: !!(byte8 & 0b00001000),
|
|
43
|
+
color_mode: byte8 & 0b00000111,
|
|
44
|
+
speed: byte9 & 0b01111111,
|
|
45
|
+
loop_index: byte10 & 0b11111110,
|
|
63
46
|
};
|
|
64
|
-
return data;
|
|
65
47
|
}
|
|
66
48
|
/**
|
|
67
|
-
*
|
|
49
|
+
* Reads the state of the bulb.
|
|
50
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is ON (true) or OFF (false).
|
|
68
51
|
*/
|
|
69
52
|
async readState() {
|
|
70
|
-
return
|
|
53
|
+
return this.operateBulb([0x57, 0x0F, 0x48, 0x01]);
|
|
71
54
|
}
|
|
72
55
|
/**
|
|
56
|
+
* Sets the state of the bulb.
|
|
57
|
+
* @param {number[]} reqByteArray - The request byte array.
|
|
58
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
73
59
|
* @private
|
|
74
60
|
*/
|
|
75
61
|
async setState(reqByteArray) {
|
|
76
62
|
const base = [0x57, 0x0F, 0x47, 0x01];
|
|
77
|
-
return
|
|
63
|
+
return this.operateBulb(base.concat(reqByteArray));
|
|
78
64
|
}
|
|
79
65
|
/**
|
|
80
|
-
*
|
|
66
|
+
* Turns on the bulb.
|
|
67
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is ON (true).
|
|
81
68
|
*/
|
|
82
69
|
async turnOn() {
|
|
83
|
-
return
|
|
70
|
+
return this.setState([0x01, 0x01]);
|
|
84
71
|
}
|
|
85
72
|
/**
|
|
86
|
-
*
|
|
73
|
+
* Turns off the bulb.
|
|
74
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the bulb is OFF (false).
|
|
87
75
|
*/
|
|
88
76
|
async turnOff() {
|
|
89
|
-
return
|
|
77
|
+
return this.setState([0x01, 0x02]);
|
|
90
78
|
}
|
|
91
79
|
/**
|
|
92
|
-
*
|
|
80
|
+
* Sets the brightness of the bulb.
|
|
81
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
82
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
93
83
|
*/
|
|
94
84
|
async setBrightness(brightness) {
|
|
95
|
-
if (
|
|
96
|
-
throw new
|
|
85
|
+
if (brightness < 0 || brightness > 100) {
|
|
86
|
+
throw new RangeError('Brightness must be between 0 and 100');
|
|
97
87
|
}
|
|
98
|
-
|
|
99
|
-
brightness = 100;
|
|
100
|
-
}
|
|
101
|
-
else if (brightness < 0) {
|
|
102
|
-
brightness = 0;
|
|
103
|
-
}
|
|
104
|
-
return await this.setState([0x02, 0x14, brightness]);
|
|
88
|
+
return this.setState([0x02, 0x14, brightness]);
|
|
105
89
|
}
|
|
106
90
|
/**
|
|
107
|
-
*
|
|
91
|
+
* Sets the color temperature of the bulb.
|
|
92
|
+
* @param {number} color_temperature - The color temperature percentage (0-100).
|
|
93
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
108
94
|
*/
|
|
109
95
|
async setColorTemperature(color_temperature) {
|
|
110
|
-
if (
|
|
111
|
-
throw new
|
|
112
|
-
}
|
|
113
|
-
else if (color_temperature > 100) {
|
|
114
|
-
color_temperature = 100;
|
|
96
|
+
if (color_temperature < 0 || color_temperature > 100) {
|
|
97
|
+
throw new RangeError('Color temperature must be between 0 and 100');
|
|
115
98
|
}
|
|
116
|
-
|
|
117
|
-
color_temperature = 0;
|
|
118
|
-
}
|
|
119
|
-
return await this.setState([0x02, 0x17, color_temperature]);
|
|
99
|
+
return this.setState([0x02, 0x17, color_temperature]);
|
|
120
100
|
}
|
|
121
101
|
/**
|
|
122
|
-
*
|
|
102
|
+
* Sets the RGB color of the bulb.
|
|
103
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
104
|
+
* @param {number} red - The red color value (0-255).
|
|
105
|
+
* @param {number} green - The green color value (0-255).
|
|
106
|
+
* @param {number} blue - The blue color value (0-255).
|
|
107
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
123
108
|
*/
|
|
124
109
|
async setRGB(brightness, red, green, blue) {
|
|
125
|
-
if (
|
|
126
|
-
throw new
|
|
127
|
-
}
|
|
128
|
-
if (typeof red !== 'number') {
|
|
129
|
-
throw new TypeError(`The type of target red is incorrect: ${typeof red}`);
|
|
130
|
-
}
|
|
131
|
-
if (typeof green !== 'number') {
|
|
132
|
-
throw new TypeError(`The type of target green is incorrect: ${typeof green}`);
|
|
110
|
+
if (brightness < 0 || brightness > 100 || red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {
|
|
111
|
+
throw new RangeError('Invalid RGB or brightness values');
|
|
133
112
|
}
|
|
134
|
-
|
|
135
|
-
throw new TypeError(`The type of target blue is incorrect: ${typeof blue}`);
|
|
136
|
-
}
|
|
137
|
-
if (brightness > 100) {
|
|
138
|
-
brightness = 100;
|
|
139
|
-
}
|
|
140
|
-
else if (brightness < 0) {
|
|
141
|
-
brightness = 0;
|
|
142
|
-
}
|
|
143
|
-
if (red > 255) {
|
|
144
|
-
red = 255;
|
|
145
|
-
}
|
|
146
|
-
else if (red < 0) {
|
|
147
|
-
red = 0;
|
|
148
|
-
}
|
|
149
|
-
if (green > 255) {
|
|
150
|
-
green = 255;
|
|
151
|
-
}
|
|
152
|
-
else if (green < 0) {
|
|
153
|
-
green = 0;
|
|
154
|
-
}
|
|
155
|
-
if (blue > 255) {
|
|
156
|
-
blue = 255;
|
|
157
|
-
}
|
|
158
|
-
else if (blue < 0) {
|
|
159
|
-
blue = 0;
|
|
160
|
-
}
|
|
161
|
-
return await this.setState([0x02, 0x12, brightness, red, green, blue]);
|
|
113
|
+
return this.setState([0x02, 0x12, brightness, red, green, blue]);
|
|
162
114
|
}
|
|
163
115
|
/**
|
|
116
|
+
* Sends a command to the bulb.
|
|
117
|
+
* @param {number[]} bytes - The command bytes.
|
|
118
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
164
119
|
* @private
|
|
165
120
|
*/
|
|
166
121
|
async operateBulb(bytes) {
|
|
167
|
-
const
|
|
168
|
-
await this.command(
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
172
|
-
|
|
173
|
-
if (code === 0x00 || code === 0x80) {
|
|
174
|
-
const is_on = code === 0x80;
|
|
175
|
-
return is_on;
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
throw new Error(`The device returned an error: 0x${res_buf.toString('hex')}`);
|
|
179
|
-
}
|
|
122
|
+
const reqBuf = Buffer.from(bytes);
|
|
123
|
+
const resBuf = await this.command(reqBuf);
|
|
124
|
+
if (resBuf.length === 2) {
|
|
125
|
+
const code = resBuf.readUInt8(1);
|
|
126
|
+
if (code === 0x00 || code === 0x80) {
|
|
127
|
+
return code === 0x80;
|
|
180
128
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
})
|
|
185
|
-
.catch((error) => {
|
|
186
|
-
throw error;
|
|
187
|
-
});
|
|
129
|
+
throw new Error(`The device returned an error: 0x${resBuf.toString('hex')}`);
|
|
130
|
+
}
|
|
131
|
+
throw new Error(`Expecting a 2-byte response, got instead: 0x${resBuf.toString('hex')}`);
|
|
188
132
|
}
|
|
189
133
|
}
|
|
190
134
|
//# sourceMappingURL=wobulb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wobulb.js","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"wobulb.js","sourceRoot":"","sources":["../../src/device/wobulb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +1,71 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { SwitchbotDevice } from '../device.js';
|
|
3
3
|
/**
|
|
4
|
+
* Class representing a WoCeilingLight device.
|
|
4
5
|
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/colorbulb.md
|
|
5
6
|
*/
|
|
6
7
|
export declare class WoCeilingLight extends SwitchbotDevice {
|
|
7
|
-
static parseServiceData(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<object | null>;
|
|
8
|
-
static parseServiceData_Pro(manufacturerData: Buffer, onlog: ((message: string) => void) | undefined): Promise<object | null>;
|
|
9
8
|
/**
|
|
10
|
-
*
|
|
9
|
+
* Parses the service data for WoCeilingLight.
|
|
10
|
+
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
11
|
+
* @param {Function} emitLog - The function to emit log messages.
|
|
12
|
+
* @returns {Promise<object | null>} - Parsed service data or null if invalid.
|
|
11
13
|
*/
|
|
12
|
-
|
|
14
|
+
static parseServiceData(manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<object | null>;
|
|
13
15
|
/**
|
|
14
|
-
*
|
|
16
|
+
* Parses the service data for WoCeilingLight Pro.
|
|
17
|
+
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
18
|
+
* @param {Function} emitLog - The function to emit log messages.
|
|
19
|
+
* @returns {Promise<object | null>} - Parsed service data or null if invalid.
|
|
15
20
|
*/
|
|
16
|
-
|
|
21
|
+
static parseServiceData_Pro(manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<object | null>;
|
|
17
22
|
/**
|
|
18
|
-
*
|
|
23
|
+
* Reads the state of the ceiling light.
|
|
24
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the light is ON (true) or OFF (false).
|
|
19
25
|
*/
|
|
20
|
-
|
|
26
|
+
readState(): Promise<boolean>;
|
|
21
27
|
/**
|
|
22
|
-
*
|
|
28
|
+
* Sets the state of the ceiling light.
|
|
29
|
+
* @param {number[]} reqByteArray - The request byte array.
|
|
30
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
23
31
|
*/
|
|
24
|
-
|
|
32
|
+
setState(reqByteArray: number[]): Promise<boolean>;
|
|
25
33
|
/**
|
|
26
|
-
*
|
|
34
|
+
* Turns on the ceiling light.
|
|
35
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the light is ON (true).
|
|
27
36
|
*/
|
|
28
|
-
|
|
37
|
+
turnOn(): Promise<boolean>;
|
|
29
38
|
/**
|
|
30
|
-
*
|
|
39
|
+
* Turns off the ceiling light.
|
|
40
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the light is OFF (false).
|
|
31
41
|
*/
|
|
32
|
-
|
|
42
|
+
turnOff(): Promise<boolean>;
|
|
33
43
|
/**
|
|
34
|
-
*
|
|
35
|
-
* @param
|
|
36
|
-
* @
|
|
37
|
-
* @param blue
|
|
44
|
+
* Sets the brightness of the ceiling light.
|
|
45
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
46
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
38
47
|
*/
|
|
39
|
-
|
|
48
|
+
setBrightness(brightness: number): Promise<boolean>;
|
|
40
49
|
/**
|
|
41
|
-
*
|
|
50
|
+
* Sets the color temperature of the ceiling light.
|
|
51
|
+
* @param {number} color_temperature - The color temperature percentage (0-100).
|
|
52
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
42
53
|
*/
|
|
43
|
-
|
|
54
|
+
setColorTemperature(color_temperature: number): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Sets the RGB color of the ceiling light.
|
|
57
|
+
* @param {number} brightness - The brightness percentage (0-100).
|
|
58
|
+
* @param {number} red - The red color value (0-255).
|
|
59
|
+
* @param {number} green - The green color value (0-255).
|
|
60
|
+
* @param {number} blue - The blue color value (0-255).
|
|
61
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
62
|
+
*/
|
|
63
|
+
setRGB(brightness: number, red: number, green: number, blue: number): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Sends a command to the ceiling light.
|
|
66
|
+
* @param {number[]} bytes - The command bytes.
|
|
67
|
+
* @returns {Promise<boolean>} - Resolves with a boolean indicating whether the operation was successful.
|
|
68
|
+
*/
|
|
69
|
+
operateCeilingLight(bytes: number[]): Promise<boolean>;
|
|
44
70
|
}
|
|
45
71
|
//# sourceMappingURL=woceilinglight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"woceilinglight.d.ts","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"woceilinglight.d.ts","sourceRoot":"","sources":["../../src/device/woceilinglight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD;;;;;OAKG;WACU,gBAAgB,CAC3B,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqCzB;;;;;OAKG;WACU,oBAAoB,CAC/B,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqCzB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC;;;;OAIG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzD;;;;OAIG;IACG,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtE;;;;;;;OAOG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5F;;;;OAIG;IACU,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAYpE"}
|