node-switchbot 3.5.0-beta.0 → 3.5.0-beta.1
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/npm-version-script-esm.js +97 -0
- package/.github/workflows/beta-release.yml +1 -1
- package/.github/workflows/release.yml +1 -1
- package/BLE.md +14 -13
- package/CHANGELOG.md +68 -1
- package/OpenAPI.md +13 -12
- package/branding/Node_x_SwitchBot.svg +2 -3
- package/dist/device.d.ts +1193 -3
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +2478 -2
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +1 -1
- package/dist/{test/index.test.d.ts.map → index.test.d.ts.map} +1 -1
- package/dist/{test/index.test.js → index.test.js} +1 -1
- package/dist/index.test.js.map +1 -0
- package/dist/parameter-checker.d.ts +1 -1
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/settings.d.ts +12 -28
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +24 -22
- package/dist/settings.js.map +1 -1
- package/dist/{test/settings.test.d.ts.map → settings.test.d.ts.map} +1 -1
- package/dist/{test/settings.test.js → settings.test.js} +6 -6
- package/dist/{test/settings.test.js.map → settings.test.js.map} +1 -1
- package/dist/switchbot-ble.d.ts +1 -1
- package/dist/switchbot-ble.d.ts.map +1 -1
- package/dist/switchbot-ble.js +8 -27
- package/dist/switchbot-ble.js.map +1 -1
- package/dist/switchbot-openapi.d.ts +33 -22
- package/dist/switchbot-openapi.d.ts.map +1 -1
- package/dist/switchbot-openapi.js +104 -64
- package/dist/switchbot-openapi.js.map +1 -1
- package/dist/types/bledevicestatus.d.ts +32 -8
- package/dist/types/bledevicestatus.d.ts.map +1 -1
- package/dist/types/devicestatus.d.ts +35 -1
- package/dist/types/devicestatus.d.ts.map +1 -1
- package/dist/types/devicewebhookstatus.d.ts +38 -1
- package/dist/types/devicewebhookstatus.d.ts.map +1 -1
- package/dist/types/types.d.ts +0 -223
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +1 -144
- package/dist/types/types.js.map +1 -1
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +5 -5
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +1405 -1288
- package/docs/classes/Advertising.html +10 -10
- package/docs/classes/SwitchBotBLE.html +13 -13
- package/docs/classes/SwitchBotOpenAPI.html +38 -28
- package/docs/classes/SwitchbotDevice.html +26 -23
- package/docs/classes/WoBlindTilt.html +45 -42
- package/docs/classes/WoBulb.html +42 -39
- package/docs/classes/WoCeilingLight.html +50 -47
- package/docs/classes/WoContact.html +30 -27
- package/docs/classes/WoCurtain.html +40 -37
- package/docs/classes/WoHand.html +37 -34
- package/docs/classes/WoHub2.html +30 -27
- package/docs/classes/WoHumi.html +45 -40
- package/docs/classes/WoHumi2.html +67 -0
- package/docs/classes/WoIOSensorTH.html +30 -27
- package/docs/classes/WoKeypad.html +52 -0
- package/docs/classes/WoLeak.html +53 -0
- package/docs/classes/WoPlugMiniJP.html +78 -0
- package/docs/classes/WoPlugMiniUS.html +39 -36
- package/docs/classes/WoPresence.html +30 -27
- package/docs/classes/WoRelaySwitch1.html +57 -0
- package/docs/classes/WoRelaySwitch1PM.html +57 -0
- package/docs/classes/WoRemote.html +52 -0
- package/docs/classes/WoSensorTH.html +27 -24
- package/docs/classes/WoSensorTHPlus.html +46 -0
- package/docs/classes/WoSensorTHPro.html +46 -0
- package/docs/classes/WoSensorTHProCO2.html +46 -0
- package/docs/classes/WoSmartLock.html +49 -46
- package/docs/classes/WoSmartLockPro.html +49 -46
- package/docs/classes/WoStrip.html +44 -41
- package/docs/enums/LogLevel.html +10 -10
- package/docs/enums/SwitchBotBLEModel.html +29 -27
- package/docs/enums/SwitchBotBLEModelFriendlyName.html +30 -26
- package/docs/enums/SwitchBotBLEModelName.html +28 -26
- package/docs/enums/SwitchBotModel.html +47 -43
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +13 -13
- package/docs/interfaces/AdvertisementData.html +3 -3
- package/docs/interfaces/Chars.html +2 -2
- package/docs/interfaces/ErrorObject.html +2 -2
- package/docs/interfaces/NobleTypes.html +2 -2
- package/docs/interfaces/Params.html +2 -2
- package/docs/interfaces/Rule.html +4 -4
- package/docs/interfaces/ServiceData.html +2 -2
- package/docs/interfaces/SwitchBotBLEDevice.html +23 -23
- package/docs/interfaces/WebhookDetail.html +4 -4
- package/docs/interfaces/ad.html +3 -3
- package/docs/interfaces/body.html +3 -3
- package/docs/interfaces/bodyChange.html +3 -3
- package/docs/interfaces/deleteWebhookResponse.html +3 -3
- package/docs/interfaces/device.html +6 -6
- package/docs/interfaces/deviceList.html +2 -2
- package/docs/interfaces/deviceStatus.html +6 -6
- package/docs/interfaces/deviceStatusRequest.html +3 -3
- package/docs/interfaces/deviceWebhook.html +4 -4
- package/docs/interfaces/deviceWebhookContext.html +4 -4
- package/docs/interfaces/devices.html +3 -3
- package/docs/interfaces/infraredRemoteList.html +2 -2
- package/docs/interfaces/irdevice.html +5 -5
- package/docs/interfaces/pushResponse.html +3 -3
- package/docs/interfaces/queryWebhookResponse.html +3 -3
- package/docs/interfaces/setupWebhookResponse.html +3 -3
- package/docs/interfaces/switchbot.html +2 -2
- package/docs/interfaces/updateWebhookResponse.html +3 -3
- package/docs/interfaces/webhookRequest.html +3 -3
- package/docs/media/BLE.md +14 -13
- package/docs/media/OpenAPI.md +13 -12
- package/docs/modules.html +1 -170
- package/docs/types/MacAddress.html +1 -1
- package/docs/types/batteryCirculatorFan.html +1 -1
- package/docs/types/batteryCirculatorFanServiceData.html +1 -1
- package/docs/types/batteryCirculatorFanStatus.html +1 -1
- package/docs/types/batteryCirculatorFanWebhookContext.html +1 -1
- package/docs/types/blindTilt.html +1 -1
- package/docs/types/blindTiltServiceData.html +1 -1
- package/docs/types/blindTiltStatus.html +1 -1
- package/docs/types/blindTiltWebhookContext.html +1 -1
- package/docs/types/bot.html +1 -1
- package/docs/types/botServiceData.html +1 -1
- package/docs/types/botStatus.html +1 -1
- package/docs/types/botWebhookContext.html +1 -1
- package/docs/types/ceilingLight.html +1 -1
- package/docs/types/ceilingLightPro.html +1 -1
- package/docs/types/ceilingLightProServiceData.html +1 -1
- package/docs/types/ceilingLightProStatus.html +1 -1
- package/docs/types/ceilingLightProWebhookContext.html +1 -1
- package/docs/types/ceilingLightServiceData.html +1 -1
- package/docs/types/ceilingLightStatus.html +1 -1
- package/docs/types/ceilingLightWebhookContext.html +1 -1
- package/docs/types/circulatorFanStatus.html +1 -0
- package/docs/types/circulatorFanWebhookContext.html +1 -0
- package/docs/types/colorBulb.html +1 -1
- package/docs/types/colorBulbServiceData.html +1 -1
- package/docs/types/colorBulbStatus.html +1 -1
- package/docs/types/colorBulbWebhookContext.html +1 -1
- package/docs/types/contactSensor.html +1 -1
- package/docs/types/contactSensorServiceData.html +1 -1
- package/docs/types/contactSensorStatus.html +1 -1
- package/docs/types/contactSensorWebhookContext.html +1 -1
- package/docs/types/curtain.html +1 -1
- package/docs/types/curtain3.html +1 -1
- package/docs/types/curtain3ServiceData.html +1 -1
- package/docs/types/curtain3WebhookContext.html +1 -1
- package/docs/types/curtainServiceData.html +1 -1
- package/docs/types/curtainStatus.html +1 -1
- package/docs/types/curtainWebhookContext.html +1 -1
- package/docs/types/floorCleaningRobotS10.html +1 -1
- package/docs/types/floorCleaningRobotS10Status.html +1 -1
- package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -1
- package/docs/types/hub2.html +1 -1
- package/docs/types/hub2ServiceData.html +1 -1
- package/docs/types/hub2Status.html +1 -1
- package/docs/types/hub2WebhookContext.html +1 -1
- package/docs/types/humidifier.html +1 -1
- package/docs/types/humidifier2ServiceData.html +1 -0
- package/docs/types/humidifier2Status.html +1 -0
- package/docs/types/humidifier2WebhookContext.html +1 -0
- package/docs/types/humidifierServiceData.html +1 -1
- package/docs/types/humidifierStatus.html +1 -1
- package/docs/types/humidifierWebhookContext.html +1 -1
- package/docs/types/indoorCam.html +1 -1
- package/docs/types/indoorCameraWebhookContext.html +1 -1
- package/docs/types/keypad.html +1 -1
- package/docs/types/keypadDetectorServiceData.html +1 -1
- package/docs/types/keypadTouch.html +1 -1
- package/docs/types/keypadTouchWebhookContext.html +1 -1
- package/docs/types/keypadWebhookContext.html +1 -1
- package/docs/types/lock.html +1 -1
- package/docs/types/lockPro.html +1 -1
- package/docs/types/lockProServiceData.html +1 -1
- package/docs/types/lockProStatus.html +1 -1
- package/docs/types/lockProWebhookContext.html +1 -1
- package/docs/types/lockServiceData.html +1 -1
- package/docs/types/lockStatus.html +1 -1
- package/docs/types/lockWebhookContext.html +1 -1
- package/docs/types/meter.html +1 -1
- package/docs/types/meterPlus.html +1 -1
- package/docs/types/meterPlusServiceData.html +1 -1
- package/docs/types/meterPlusStatus.html +1 -1
- package/docs/types/meterPlusWebhookContext.html +1 -1
- package/docs/types/meterPro.html +1 -1
- package/docs/types/meterProCO2ServiceData.html +1 -1
- package/docs/types/meterProCO2Status.html +1 -1
- package/docs/types/meterProCO2WebhookContext.html +1 -1
- package/docs/types/meterProServiceData.html +1 -1
- package/docs/types/meterProStatus.html +1 -1
- package/docs/types/meterProWebhookContext.html +1 -1
- package/docs/types/meterServiceData.html +1 -1
- package/docs/types/meterStatus.html +1 -1
- package/docs/types/meterWebhookContext.html +1 -1
- package/docs/types/motionSensor.html +1 -1
- package/docs/types/motionSensorServiceData.html +1 -1
- package/docs/types/motionSensorStatus.html +1 -1
- package/docs/types/motionSensorWebhookContext.html +1 -1
- package/docs/types/onadvertisement.html +1 -1
- package/docs/types/ondiscover.html +1 -1
- package/docs/types/outdoorMeter.html +1 -1
- package/docs/types/outdoorMeterServiceData.html +1 -1
- package/docs/types/outdoorMeterStatus.html +1 -1
- package/docs/types/outdoorMeterWebhookContext.html +1 -1
- package/docs/types/panTiltCamWebhookContext.html +1 -1
- package/docs/types/pantiltCam.html +1 -1
- package/docs/types/pantiltCam2k.html +1 -1
- package/docs/types/plug.html +1 -1
- package/docs/types/plugMini.html +1 -1
- package/docs/types/plugMiniJPServiceData.html +1 -1
- package/docs/types/plugMiniJPWebhookContext.html +1 -1
- package/docs/types/plugMiniStatus.html +1 -1
- package/docs/types/plugMiniUSServiceData.html +1 -1
- package/docs/types/plugMiniUSWebhookContext.html +1 -1
- package/docs/types/plugStatus.html +1 -1
- package/docs/types/plugWebhookContext.html +1 -1
- package/docs/types/relaySwitch1Context.html +1 -0
- package/docs/types/relaySwitch1PMContext.html +1 -0
- package/docs/types/relaySwitch1PMServiceData.html +1 -1
- package/docs/types/relaySwitch1PMStatus.html +1 -0
- package/docs/types/relaySwitch1ServiceData.html +1 -0
- package/docs/types/relaySwitch1Status.html +1 -0
- package/docs/types/remote.html +1 -1
- package/docs/types/remoteServiceData.html +1 -0
- package/docs/types/robotVacuumCleanerS1.html +1 -1
- package/docs/types/robotVacuumCleanerS1Plus.html +1 -1
- package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -1
- package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -1
- package/docs/types/robotVacuumCleanerS1Status.html +1 -1
- package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -1
- package/docs/types/robotVacuumCleanerServiceData.html +1 -1
- package/docs/types/stripLight.html +1 -1
- package/docs/types/stripLightServiceData.html +1 -1
- package/docs/types/stripLightStatus.html +1 -1
- package/docs/types/stripLightWebhookContext.html +1 -1
- package/docs/types/waterLeakDetector.html +1 -1
- package/docs/types/waterLeakDetectorServiceData.html +1 -1
- package/docs/types/waterLeakDetectorStatus.html +1 -1
- package/docs/types/waterLeakDetectorWebhookContext.html +1 -1
- package/package.json +16 -19
- package/.github/npm-version-script.cjs +0 -81
- package/dist/advertising.d.ts +0 -44
- package/dist/advertising.d.ts.map +0 -1
- package/dist/advertising.js +0 -163
- package/dist/advertising.js.map +0 -1
- package/dist/device/woblindtilt.d.ts +0 -78
- package/dist/device/woblindtilt.d.ts.map +0 -1
- package/dist/device/woblindtilt.js +0 -181
- package/dist/device/woblindtilt.js.map +0 -1
- package/dist/device/wobulb.d.ts +0 -70
- package/dist/device/wobulb.d.ts.map +0 -1
- package/dist/device/wobulb.js +0 -136
- package/dist/device/wobulb.js.map +0 -1
- package/dist/device/woceilinglight.d.ts +0 -74
- package/dist/device/woceilinglight.d.ts.map +0 -1
- package/dist/device/woceilinglight.js +0 -161
- package/dist/device/woceilinglight.js.map +0 -1
- package/dist/device/wocontact.d.ts +0 -19
- package/dist/device/wocontact.d.ts.map +0 -1
- package/dist/device/wocontact.js +0 -48
- package/dist/device/wocontact.js.map +0 -1
- package/dist/device/wocurtain.d.ts +0 -52
- package/dist/device/wocurtain.d.ts.map +0 -1
- package/dist/device/wocurtain.js +0 -135
- package/dist/device/wocurtain.js.map +0 -1
- package/dist/device/wohand.d.ts +0 -50
- package/dist/device/wohand.d.ts.map +0 -1
- package/dist/device/wohand.js +0 -82
- package/dist/device/wohand.js.map +0 -1
- package/dist/device/wohub2.d.ts +0 -19
- package/dist/device/wohub2.d.ts.map +0 -1
- package/dist/device/wohub2.js +0 -40
- package/dist/device/wohub2.js.map +0 -1
- package/dist/device/wohumi.d.ts +0 -50
- package/dist/device/wohumi.d.ts.map +0 -1
- package/dist/device/wohumi.js +0 -89
- package/dist/device/wohumi.js.map +0 -1
- package/dist/device/woiosensorth.d.ts +0 -20
- package/dist/device/woiosensorth.d.ts.map +0 -1
- package/dist/device/woiosensorth.js +0 -49
- package/dist/device/woiosensorth.js.map +0 -1
- package/dist/device/wokeypad.d.ts +0 -19
- package/dist/device/wokeypad.d.ts.map +0 -1
- package/dist/device/wokeypad.js +0 -51
- package/dist/device/wokeypad.js.map +0 -1
- package/dist/device/woleak.d.ts +0 -20
- package/dist/device/woleak.d.ts.map +0 -1
- package/dist/device/woleak.js +0 -52
- package/dist/device/woleak.js.map +0 -1
- package/dist/device/woplugmini.d.ts +0 -52
- package/dist/device/woplugmini.d.ts.map +0 -1
- package/dist/device/woplugmini.js +0 -110
- package/dist/device/woplugmini.js.map +0 -1
- package/dist/device/woplugmini_jp.d.ts +0 -52
- package/dist/device/woplugmini_jp.d.ts.map +0 -1
- package/dist/device/woplugmini_jp.js +0 -110
- package/dist/device/woplugmini_jp.js.map +0 -1
- package/dist/device/wopresence.d.ts +0 -19
- package/dist/device/wopresence.d.ts.map +0 -1
- package/dist/device/wopresence.js +0 -39
- package/dist/device/wopresence.js.map +0 -1
- package/dist/device/worelayswitch1plus.d.ts +0 -36
- package/dist/device/worelayswitch1plus.d.ts.map +0 -1
- package/dist/device/worelayswitch1plus.js +0 -141
- package/dist/device/worelayswitch1plus.js.map +0 -1
- package/dist/device/worelayswitch1pm.d.ts +0 -36
- package/dist/device/worelayswitch1pm.d.ts.map +0 -1
- package/dist/device/worelayswitch1pm.js +0 -144
- package/dist/device/worelayswitch1pm.js.map +0 -1
- package/dist/device/wosensorth.d.ts +0 -13
- package/dist/device/wosensorth.d.ts.map +0 -1
- package/dist/device/wosensorth.js +0 -38
- package/dist/device/wosensorth.js.map +0 -1
- package/dist/device/wosensorthplus.d.ts +0 -13
- package/dist/device/wosensorthplus.d.ts.map +0 -1
- package/dist/device/wosensorthplus.js +0 -38
- package/dist/device/wosensorthplus.js.map +0 -1
- package/dist/device/wosensorthpro.d.ts +0 -13
- package/dist/device/wosensorthpro.d.ts.map +0 -1
- package/dist/device/wosensorthpro.js +0 -38
- package/dist/device/wosensorthpro.js.map +0 -1
- package/dist/device/wosensorthproco2.d.ts +0 -13
- package/dist/device/wosensorthproco2.d.ts.map +0 -1
- package/dist/device/wosensorthproco2.js +0 -40
- package/dist/device/wosensorthproco2.js.map +0 -1
- package/dist/device/wosmartlock.d.ts +0 -86
- package/dist/device/wosmartlock.d.ts.map +0 -1
- package/dist/device/wosmartlock.js +0 -198
- package/dist/device/wosmartlock.js.map +0 -1
- package/dist/device/wosmartlockpro.d.ts +0 -86
- package/dist/device/wosmartlockpro.d.ts.map +0 -1
- package/dist/device/wosmartlockpro.js +0 -200
- package/dist/device/wosmartlockpro.js.map +0 -1
- package/dist/device/wostrip.d.ts +0 -63
- package/dist/device/wostrip.d.ts.map +0 -1
- package/dist/device/wostrip.js +0 -131
- package/dist/device/wostrip.js.map +0 -1
- package/dist/test/advertising.test.d.ts +0 -2
- package/dist/test/advertising.test.d.ts.map +0 -1
- package/dist/test/advertising.test.js +0 -99
- package/dist/test/advertising.test.js.map +0 -1
- package/dist/test/device.test.d.ts +0 -2
- package/dist/test/device.test.d.ts.map +0 -1
- package/dist/test/device.test.js +0 -38
- package/dist/test/device.test.js.map +0 -1
- package/dist/test/index.test.js.map +0 -1
- package/dist/test/parameter-checker.test.d.ts +0 -2
- package/dist/test/parameter-checker.test.d.ts.map +0 -1
- package/dist/test/parameter-checker.test.js +0 -108
- package/dist/test/parameter-checker.test.js.map +0 -1
- package/dist/test/switchbot-ble.test.d.ts +0 -2
- package/dist/test/switchbot-ble.test.d.ts.map +0 -1
- package/dist/test/switchbot-ble.test.js +0 -45
- package/dist/test/switchbot-ble.test.js.map +0 -1
- package/dist/test/switchbot-openapi.test.d.ts +0 -2
- package/dist/test/switchbot-openapi.test.d.ts.map +0 -1
- package/dist/test/switchbot-openapi.test.js +0 -96
- package/dist/test/switchbot-openapi.test.js.map +0 -1
- package/dist/test/woblindtilt.test.d.ts +0 -2
- package/dist/test/woblindtilt.test.d.ts.map +0 -1
- package/dist/test/woblindtilt.test.js +0 -76
- package/dist/test/woblindtilt.test.js.map +0 -1
- package/dist/test/wobulb.test.d.ts +0 -2
- package/dist/test/wobulb.test.d.ts.map +0 -1
- package/dist/test/wobulb.test.js +0 -95
- package/dist/test/wobulb.test.js.map +0 -1
- package/dist/test/woceilinglight.test.d.ts +0 -2
- package/dist/test/woceilinglight.test.d.ts.map +0 -1
- package/dist/test/woceilinglight.test.js +0 -81
- package/dist/test/woceilinglight.test.js.map +0 -1
- package/dist/test/wocontact.test.d.ts +0 -2
- package/dist/test/wocontact.test.d.ts.map +0 -1
- package/dist/test/wocontact.test.js +0 -65
- package/dist/test/wocontact.test.js.map +0 -1
- package/dist/test/wocurtain.test.d.ts +0 -2
- package/dist/test/wocurtain.test.d.ts.map +0 -1
- package/dist/test/wocurtain.test.js +0 -75
- package/dist/test/wocurtain.test.js.map +0 -1
- package/dist/test/wohand.test.d.ts +0 -2
- package/dist/test/wohand.test.d.ts.map +0 -1
- package/dist/test/wohand.test.js +0 -56
- package/dist/test/wohand.test.js.map +0 -1
- package/dist/test/wohub2.test.d.ts +0 -2
- package/dist/test/wohub2.test.d.ts.map +0 -1
- package/dist/test/wohub2.test.js +0 -80
- package/dist/test/wohub2.test.js.map +0 -1
- package/dist/test/wohumi.test.d.ts +0 -2
- package/dist/test/wohumi.test.d.ts.map +0 -1
- package/dist/test/wohumi.test.js +0 -82
- package/dist/test/wohumi.test.js.map +0 -1
- package/dist/test/woiosensorth.test.d.ts +0 -2
- package/dist/test/woiosensorth.test.d.ts.map +0 -1
- package/dist/test/woiosensorth.test.js +0 -40
- package/dist/test/woiosensorth.test.js.map +0 -1
- package/dist/test/wokeypad.test.d.ts +0 -2
- package/dist/test/wokeypad.test.d.ts.map +0 -1
- package/dist/test/wokeypad.test.js +0 -46
- package/dist/test/wokeypad.test.js.map +0 -1
- package/dist/test/woleak.test.d.ts +0 -2
- package/dist/test/woleak.test.d.ts.map +0 -1
- package/dist/test/woleak.test.js +0 -51
- package/dist/test/woleak.test.js.map +0 -1
- package/dist/test/woplugmini.test.d.ts +0 -2
- package/dist/test/woplugmini.test.d.ts.map +0 -1
- package/dist/test/woplugmini.test.js +0 -90
- package/dist/test/woplugmini.test.js.map +0 -1
- package/dist/test/woplugmini_jp.test.d.ts +0 -2
- package/dist/test/woplugmini_jp.test.d.ts.map +0 -1
- package/dist/test/woplugmini_jp.test.js +0 -90
- package/dist/test/woplugmini_jp.test.js.map +0 -1
- package/dist/test/wopresence.test.d.ts +0 -2
- package/dist/test/wopresence.test.d.ts.map +0 -1
- package/dist/test/wopresence.test.js +0 -68
- package/dist/test/wopresence.test.js.map +0 -1
- package/dist/test/wosensorth.test.d.ts +0 -2
- package/dist/test/wosensorth.test.d.ts.map +0 -1
- package/dist/test/wosensorth.test.js +0 -29
- package/dist/test/wosensorth.test.js.map +0 -1
- package/dist/test/wosensorthplus.test.d.ts +0 -2
- package/dist/test/wosensorthplus.test.d.ts.map +0 -1
- package/dist/test/wosensorthplus.test.js +0 -29
- package/dist/test/wosensorthplus.test.js.map +0 -1
- package/dist/test/wosensorthpro.test.d.ts +0 -2
- package/dist/test/wosensorthpro.test.d.ts.map +0 -1
- package/dist/test/wosensorthpro.test.js +0 -29
- package/dist/test/wosensorthpro.test.js.map +0 -1
- package/dist/test/wosensorthproco2.test.d.ts +0 -2
- package/dist/test/wosensorthproco2.test.d.ts.map +0 -1
- package/dist/test/wosensorthproco2.test.js +0 -32
- package/dist/test/wosensorthproco2.test.js.map +0 -1
- package/dist/test/wosmartlock.test.d.ts +0 -2
- package/dist/test/wosmartlock.test.d.ts.map +0 -1
- package/dist/test/wosmartlock.test.js +0 -151
- package/dist/test/wosmartlock.test.js.map +0 -1
- package/dist/test/wosmartlockpro.test.d.ts +0 -2
- package/dist/test/wosmartlockpro.test.d.ts.map +0 -1
- package/dist/test/wosmartlockpro.test.js +0 -150
- package/dist/test/wosmartlockpro.test.js.map +0 -1
- package/dist/test/wostrip.test.d.ts +0 -2
- package/dist/test/wostrip.test.d.ts.map +0 -1
- package/dist/test/wostrip.test.js +0 -102
- package/dist/test/wostrip.test.js.map +0 -1
- package/docs/types/relaySwitch1PlusServiceData.html +0 -1
- /package/dist/{test/index.test.d.ts → index.test.d.ts} +0 -0
- /package/dist/{test/settings.test.d.ts → settings.test.d.ts} +0 -0
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'node:buffer';
|
|
2
|
-
import { createCipheriv } from 'node:crypto';
|
|
3
|
-
import { SwitchbotDevice } from '../device.js';
|
|
4
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
5
|
-
const COMMAND_HEADER = '57';
|
|
6
|
-
const COMMAND_GET_CK_IV = `${COMMAND_HEADER}0f2103`;
|
|
7
|
-
const COMMAND_TURN_OFF = `${COMMAND_HEADER}0f70010000`;
|
|
8
|
-
const COMMAND_TURN_ON = `${COMMAND_HEADER}0f70010100`;
|
|
9
|
-
const COMMAND_TOGGLE = `${COMMAND_HEADER}0f70010200`;
|
|
10
|
-
const COMMAND_GET_VOLTAGE_AND_CURRENT = `${COMMAND_HEADER}0f7106000000`;
|
|
11
|
-
// const PASSIVE_POLL_INTERVAL = 1 * 60
|
|
12
|
-
/**
|
|
13
|
-
* Class representing a WoRelaySwitch1Plus device.
|
|
14
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
|
|
15
|
-
*/
|
|
16
|
-
export class WoRelaySwitch1Plus extends SwitchbotDevice {
|
|
17
|
-
_iv = null;
|
|
18
|
-
_cipher = null;
|
|
19
|
-
_keyId;
|
|
20
|
-
_encryptionKey;
|
|
21
|
-
constructor(peripheral, noble) {
|
|
22
|
-
super(peripheral, noble);
|
|
23
|
-
const keyId = peripheral.advertisement.localName?.slice(-2) || '';
|
|
24
|
-
const encryptionKey = peripheral.advertisement.localName?.slice(0, 32) || '';
|
|
25
|
-
if (keyId.length === 0) {
|
|
26
|
-
throw new Error('key_id is missing');
|
|
27
|
-
}
|
|
28
|
-
else if (keyId.length !== 2) {
|
|
29
|
-
throw new Error('key_id is invalid');
|
|
30
|
-
}
|
|
31
|
-
if (encryptionKey.length === 0) {
|
|
32
|
-
throw new Error('encryption_key is missing');
|
|
33
|
-
}
|
|
34
|
-
else if (encryptionKey.length !== 32) {
|
|
35
|
-
throw new Error('encryption_key is invalid');
|
|
36
|
-
}
|
|
37
|
-
this._keyId = keyId;
|
|
38
|
-
this._encryptionKey = Buffer.from(encryptionKey, 'hex');
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Parses the service data for WoRelaySwitch1Plus.
|
|
42
|
-
* @param {Buffer} serviceData - The service data buffer.
|
|
43
|
-
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
44
|
-
* @param {Function} emitLog - The function to emit log messages.
|
|
45
|
-
* @returns {Promise<relaySwitch1PlusServiceData | null>} - Parsed service data or null if invalid.
|
|
46
|
-
*/
|
|
47
|
-
static async parseServiceData(serviceData, manufacturerData, emitLog) {
|
|
48
|
-
if (serviceData.length < 8 || manufacturerData.length === null) {
|
|
49
|
-
emitLog('debugerror', `[parseServiceDataForWoRelaySwitch1Plus] Buffer length ${serviceData.length} < 8!`);
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
const data = {
|
|
53
|
-
model: SwitchBotBLEModel.RelaySwitch1Plus,
|
|
54
|
-
modelName: SwitchBotBLEModelName.RelaySwitch1Plus,
|
|
55
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1Plus,
|
|
56
|
-
mode: true, // for compatibility, useless
|
|
57
|
-
state: !!(manufacturerData[7] & 0b10000000),
|
|
58
|
-
sequence_number: manufacturerData[6],
|
|
59
|
-
};
|
|
60
|
-
return data;
|
|
61
|
-
}
|
|
62
|
-
async turnOn() {
|
|
63
|
-
const result = await this._sendCommand(COMMAND_TURN_ON);
|
|
64
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
65
|
-
if (ok) {
|
|
66
|
-
this._overrideState({ isOn: true });
|
|
67
|
-
this._fireCallbacks();
|
|
68
|
-
}
|
|
69
|
-
return ok;
|
|
70
|
-
}
|
|
71
|
-
async turnOff() {
|
|
72
|
-
const result = await this._sendCommand(COMMAND_TURN_OFF);
|
|
73
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
74
|
-
if (ok) {
|
|
75
|
-
this._overrideState({ isOn: false });
|
|
76
|
-
this._fireCallbacks();
|
|
77
|
-
}
|
|
78
|
-
return ok;
|
|
79
|
-
}
|
|
80
|
-
async toggle() {
|
|
81
|
-
const result = await this._sendCommand(COMMAND_TOGGLE);
|
|
82
|
-
return this._checkCommandResult(result, 0, new Set([1]));
|
|
83
|
-
}
|
|
84
|
-
async getVoltageAndCurrent() {
|
|
85
|
-
const result = await this._sendCommand(COMMAND_GET_VOLTAGE_AND_CURRENT);
|
|
86
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
87
|
-
if (ok) {
|
|
88
|
-
return {
|
|
89
|
-
voltage: result ? (result[9] << 8) + result[10] : 0,
|
|
90
|
-
current: result ? (result[11] << 8) + result[12] : 0,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
async _sendCommand(key, retry = null, encrypt = true) {
|
|
96
|
-
if (!encrypt) {
|
|
97
|
-
return await super._sendCommand(`${key.slice(0, 2)}000000${key.slice(2)}`, retry);
|
|
98
|
-
}
|
|
99
|
-
const result = await this._ensureEncryptionInitialized();
|
|
100
|
-
if (!result) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
const encrypted = key.slice(0, 2) + this._keyId + this._iv.slice(0, 2).toString('hex') + this._encrypt(key.slice(2));
|
|
104
|
-
const response = await super._sendCommand(encrypted, retry);
|
|
105
|
-
return response ? Buffer.concat([response.slice(0, 1), this._decrypt(response.slice(4))]) : null;
|
|
106
|
-
}
|
|
107
|
-
async _ensureEncryptionInitialized() {
|
|
108
|
-
if (this._iv !== null) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
const result = await this._sendCommand(COMMAND_GET_CK_IV + this._keyId, null, false);
|
|
112
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
113
|
-
if (ok) {
|
|
114
|
-
this._iv = result.slice(4);
|
|
115
|
-
}
|
|
116
|
-
return ok;
|
|
117
|
-
}
|
|
118
|
-
_getCipher() {
|
|
119
|
-
if (this._cipher === null) {
|
|
120
|
-
this._cipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
|
|
121
|
-
}
|
|
122
|
-
return this._cipher;
|
|
123
|
-
}
|
|
124
|
-
_encrypt(data) {
|
|
125
|
-
if (data.length === 0) {
|
|
126
|
-
return '';
|
|
127
|
-
}
|
|
128
|
-
const cipher = this._getCipher();
|
|
129
|
-
const encrypted = Buffer.concat([cipher.update(Buffer.from(data, 'hex')), cipher.final()]);
|
|
130
|
-
return encrypted.toString('hex');
|
|
131
|
-
}
|
|
132
|
-
_decrypt(data) {
|
|
133
|
-
if (data.length === 0) {
|
|
134
|
-
return Buffer.alloc(0);
|
|
135
|
-
}
|
|
136
|
-
const decipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
|
|
137
|
-
const decrypted = Buffer.concat([decipher.update(data), decipher.final()]);
|
|
138
|
-
return decrypted;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=worelayswitch1plus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worelayswitch1plus.js","sourceRoot":"","sources":["../../src/device/worelayswitch1plus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { relaySwitch1PMServiceData } from '../types/bledevicestatus.js';
|
|
2
|
-
import type { NobleTypes } from '../types/types.js';
|
|
3
|
-
import { Buffer } from 'node:buffer';
|
|
4
|
-
import { SwitchbotDevice } from '../device.js';
|
|
5
|
-
/**
|
|
6
|
-
* Class representing a WoRelaySwitch1PM device.
|
|
7
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
|
|
8
|
-
*/
|
|
9
|
-
export declare class WoRelaySwitch1PM extends SwitchbotDevice {
|
|
10
|
-
private _iv;
|
|
11
|
-
private _cipher;
|
|
12
|
-
private _keyId;
|
|
13
|
-
private _encryptionKey;
|
|
14
|
-
constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
|
|
15
|
-
/**
|
|
16
|
-
* Parses the service data for WoRelaySwitch1PM.
|
|
17
|
-
* @param {Buffer} serviceData - The service data buffer.
|
|
18
|
-
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
19
|
-
* @param {Function} emitLog - The function to emit log messages.
|
|
20
|
-
* @returns {Promise<relaySwitch1PMServiceData | null>} - Parsed service data or null if invalid.
|
|
21
|
-
*/
|
|
22
|
-
static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<relaySwitch1PMServiceData | null>;
|
|
23
|
-
turnOn(): Promise<boolean>;
|
|
24
|
-
turnOff(): Promise<boolean>;
|
|
25
|
-
toggle(): Promise<boolean>;
|
|
26
|
-
getVoltageAndCurrent(): Promise<{
|
|
27
|
-
voltage: number;
|
|
28
|
-
current: number;
|
|
29
|
-
} | null>;
|
|
30
|
-
private _sendCommand;
|
|
31
|
-
private _ensureEncryptionInitialized;
|
|
32
|
-
private _getCipher;
|
|
33
|
-
private _encrypt;
|
|
34
|
-
private _decrypt;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=worelayswitch1pm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worelayswitch1pm.d.ts","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAW9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,cAAc,CAAQ;gBAElB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAkB5E;;;;;;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,yBAAyB,GAAG,IAAI,CAAC;IAqBtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAU1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAU3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1B,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;YAYpE,YAAY;YAeZ,4BAA4B;IAa1C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;CAQjB"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'node:buffer';
|
|
2
|
-
import { createCipheriv } from 'node:crypto';
|
|
3
|
-
import { SwitchbotDevice } from '../device.js';
|
|
4
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
5
|
-
const COMMAND_HEADER = '57';
|
|
6
|
-
const COMMAND_GET_CK_IV = `${COMMAND_HEADER}0f2103`;
|
|
7
|
-
const COMMAND_TURN_OFF = `${COMMAND_HEADER}0f70010000`;
|
|
8
|
-
const COMMAND_TURN_ON = `${COMMAND_HEADER}0f70010100`;
|
|
9
|
-
const COMMAND_TOGGLE = `${COMMAND_HEADER}0f70010200`;
|
|
10
|
-
const COMMAND_GET_VOLTAGE_AND_CURRENT = `${COMMAND_HEADER}0f7106000000`;
|
|
11
|
-
// const PASSIVE_POLL_INTERVAL = 1 * 60
|
|
12
|
-
/**
|
|
13
|
-
* Class representing a WoRelaySwitch1PM device.
|
|
14
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/
|
|
15
|
-
*/
|
|
16
|
-
export class WoRelaySwitch1PM extends SwitchbotDevice {
|
|
17
|
-
_iv = null;
|
|
18
|
-
_cipher = null;
|
|
19
|
-
_keyId;
|
|
20
|
-
_encryptionKey;
|
|
21
|
-
constructor(peripheral, noble) {
|
|
22
|
-
super(peripheral, noble);
|
|
23
|
-
const keyId = peripheral.advertisement.localName?.slice(-2) || '';
|
|
24
|
-
const encryptionKey = peripheral.advertisement.localName?.slice(0, 32) || '';
|
|
25
|
-
if (keyId.length === 0) {
|
|
26
|
-
throw new Error('key_id is missing');
|
|
27
|
-
}
|
|
28
|
-
else if (keyId.length !== 2) {
|
|
29
|
-
throw new Error('key_id is invalid');
|
|
30
|
-
}
|
|
31
|
-
if (encryptionKey.length === 0) {
|
|
32
|
-
throw new Error('encryption_key is missing');
|
|
33
|
-
}
|
|
34
|
-
else if (encryptionKey.length !== 32) {
|
|
35
|
-
throw new Error('encryption_key is invalid');
|
|
36
|
-
}
|
|
37
|
-
this._keyId = keyId;
|
|
38
|
-
this._encryptionKey = Buffer.from(encryptionKey, 'hex');
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Parses the service data for WoRelaySwitch1PM.
|
|
42
|
-
* @param {Buffer} serviceData - The service data buffer.
|
|
43
|
-
* @param {Buffer} manufacturerData - The manufacturer data buffer.
|
|
44
|
-
* @param {Function} emitLog - The function to emit log messages.
|
|
45
|
-
* @returns {Promise<relaySwitch1PMServiceData | null>} - Parsed service data or null if invalid.
|
|
46
|
-
*/
|
|
47
|
-
static async parseServiceData(serviceData, manufacturerData, emitLog) {
|
|
48
|
-
if (serviceData.length < 8 || manufacturerData.length === null) {
|
|
49
|
-
emitLog('debugerror', `[parseServiceDataForWoRelaySwitch1PM] Buffer length ${serviceData.length} < 8!`);
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
const data = {
|
|
53
|
-
model: SwitchBotBLEModel.RelaySwitch1PM,
|
|
54
|
-
modelName: SwitchBotBLEModelName.RelaySwitch1PM,
|
|
55
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1PM,
|
|
56
|
-
mode: true, // for compatibility, useless
|
|
57
|
-
state: !!(manufacturerData[7] & 0b10000000),
|
|
58
|
-
sequence_number: manufacturerData[6],
|
|
59
|
-
power: ((manufacturerData[10] << 8) + manufacturerData[11]) / 10,
|
|
60
|
-
voltage: 0,
|
|
61
|
-
current: 0,
|
|
62
|
-
};
|
|
63
|
-
return data;
|
|
64
|
-
}
|
|
65
|
-
async turnOn() {
|
|
66
|
-
const result = await this._sendCommand(COMMAND_TURN_ON);
|
|
67
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
68
|
-
if (ok) {
|
|
69
|
-
this._overrideState({ isOn: true });
|
|
70
|
-
this._fireCallbacks();
|
|
71
|
-
}
|
|
72
|
-
return ok;
|
|
73
|
-
}
|
|
74
|
-
async turnOff() {
|
|
75
|
-
const result = await this._sendCommand(COMMAND_TURN_OFF);
|
|
76
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
77
|
-
if (ok) {
|
|
78
|
-
this._overrideState({ isOn: false });
|
|
79
|
-
this._fireCallbacks();
|
|
80
|
-
}
|
|
81
|
-
return ok;
|
|
82
|
-
}
|
|
83
|
-
async toggle() {
|
|
84
|
-
const result = await this._sendCommand(COMMAND_TOGGLE);
|
|
85
|
-
return this._checkCommandResult(result, 0, new Set([1]));
|
|
86
|
-
}
|
|
87
|
-
async getVoltageAndCurrent() {
|
|
88
|
-
const result = await this._sendCommand(COMMAND_GET_VOLTAGE_AND_CURRENT);
|
|
89
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
90
|
-
if (ok) {
|
|
91
|
-
return {
|
|
92
|
-
voltage: result ? (result[9] << 8) + result[10] : 0,
|
|
93
|
-
current: result ? (result[11] << 8) + result[12] : 0,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
async _sendCommand(key, retry = null, encrypt = true) {
|
|
99
|
-
if (!encrypt) {
|
|
100
|
-
return await super._sendCommand(`${key.slice(0, 2)}000000${key.slice(2)}`, retry);
|
|
101
|
-
}
|
|
102
|
-
const result = await this._ensureEncryptionInitialized();
|
|
103
|
-
if (!result) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
const encrypted = key.slice(0, 2) + this._keyId + this._iv.slice(0, 2).toString('hex') + this._encrypt(key.slice(2));
|
|
107
|
-
const response = await super._sendCommand(encrypted, retry);
|
|
108
|
-
return response ? Buffer.concat([response.slice(0, 1), this._decrypt(response.slice(4))]) : null;
|
|
109
|
-
}
|
|
110
|
-
async _ensureEncryptionInitialized() {
|
|
111
|
-
if (this._iv !== null) {
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
const result = await this._sendCommand(COMMAND_GET_CK_IV + this._keyId, null, false);
|
|
115
|
-
const ok = this._checkCommandResult(result, 0, new Set([1]));
|
|
116
|
-
if (ok) {
|
|
117
|
-
this._iv = result.slice(4);
|
|
118
|
-
}
|
|
119
|
-
return ok;
|
|
120
|
-
}
|
|
121
|
-
_getCipher() {
|
|
122
|
-
if (this._cipher === null) {
|
|
123
|
-
this._cipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
|
|
124
|
-
}
|
|
125
|
-
return this._cipher;
|
|
126
|
-
}
|
|
127
|
-
_encrypt(data) {
|
|
128
|
-
if (data.length === 0) {
|
|
129
|
-
return '';
|
|
130
|
-
}
|
|
131
|
-
const cipher = this._getCipher();
|
|
132
|
-
const encrypted = Buffer.concat([cipher.update(Buffer.from(data, 'hex')), cipher.final()]);
|
|
133
|
-
return encrypted.toString('hex');
|
|
134
|
-
}
|
|
135
|
-
_decrypt(data) {
|
|
136
|
-
if (data.length === 0) {
|
|
137
|
-
return Buffer.alloc(0);
|
|
138
|
-
}
|
|
139
|
-
const decipher = createCipheriv('aes-128-ctr', this._encryptionKey, this._iv);
|
|
140
|
-
const decrypted = Buffer.concat([decipher.update(data), decipher.final()]);
|
|
141
|
-
return decrypted;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=worelayswitch1pm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worelayswitch1pm.js","sourceRoot":"","sources":["../../src/device/worelayswitch1pm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Buffer } from 'node:buffer';
|
|
2
|
-
import type { meterServiceData } from '../types/bledevicestatus.js';
|
|
3
|
-
import type { NobleTypes } from '../types/types.js';
|
|
4
|
-
import { SwitchbotDevice } from '../device.js';
|
|
5
|
-
/**
|
|
6
|
-
* Class representing a WoSensorTH device.
|
|
7
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
8
|
-
*/
|
|
9
|
-
export declare class WoSensorTH extends SwitchbotDevice {
|
|
10
|
-
constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
|
|
11
|
-
static parseServiceData(serviceData: Buffer, emitLog: (level: string, message: string) => void): Promise<meterServiceData | null>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=wosensorth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorth.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAAe;gBACjC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;WAI/D,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CA4BpC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Class representing a WoSensorTH device.
|
|
5
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
6
|
-
*/
|
|
7
|
-
export class WoSensorTH extends SwitchbotDevice {
|
|
8
|
-
constructor(peripheral, noble) {
|
|
9
|
-
super(peripheral, noble);
|
|
10
|
-
}
|
|
11
|
-
static async parseServiceData(serviceData, emitLog) {
|
|
12
|
-
if (serviceData.length !== 6) {
|
|
13
|
-
emitLog('debugerror', `[parseServiceData] Buffer length ${serviceData.length} !== 6!`);
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const [byte2, byte3, byte4, byte5] = [
|
|
17
|
-
serviceData.readUInt8(2),
|
|
18
|
-
serviceData.readUInt8(3),
|
|
19
|
-
serviceData.readUInt8(4),
|
|
20
|
-
serviceData.readUInt8(5),
|
|
21
|
-
];
|
|
22
|
-
const tempSign = byte4 & 0b10000000 ? 1 : -1;
|
|
23
|
-
const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
24
|
-
const tempF = Math.round(((tempC * 9) / 5 + 32) * 10) / 10;
|
|
25
|
-
const data = {
|
|
26
|
-
model: SwitchBotBLEModel.Meter,
|
|
27
|
-
modelName: SwitchBotBLEModelName.Meter,
|
|
28
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter,
|
|
29
|
-
celsius: tempC,
|
|
30
|
-
fahrenheit: tempF,
|
|
31
|
-
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
32
|
-
humidity: byte5 & 0b01111111,
|
|
33
|
-
battery: byte2 & 0b01111111,
|
|
34
|
-
};
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=wosensorth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorth.js","sourceRoot":"","sources":["../../src/device/wosensorth.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,YAAY,EAAE,oCAAoC,WAAW,CAAC,MAAM,SAAS,CAAC,CAAA;YACtF,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG;YACnC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;SACzB,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE1D,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,SAAS,EAAE,qBAAqB,CAAC,KAAK;YACtC,iBAAiB,EAAE,6BAA6B,CAAC,KAAK;YACtD,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;SAC5B,CAAA;QACD,OAAO,IAAwB,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Buffer } from 'node:buffer';
|
|
2
|
-
import type { meterPlusServiceData } from '../types/bledevicestatus.js';
|
|
3
|
-
import type { NobleTypes } from '../types/types.js';
|
|
4
|
-
import { SwitchbotDevice } from '../device.js';
|
|
5
|
-
/**
|
|
6
|
-
* Class representing a WoSensorTH device.
|
|
7
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
8
|
-
*/
|
|
9
|
-
export declare class WoSensorTHPlus extends SwitchbotDevice {
|
|
10
|
-
constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
|
|
11
|
-
static parseServiceData(serviceData: Buffer, emitLog: (level: string, message: string) => void): Promise<meterPlusServiceData | null>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=wosensorthplus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthplus.d.ts","sourceRoot":"","sources":["../../src/device/wosensorthplus.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;gBACrC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;WAI/D,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CA4BxC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Class representing a WoSensorTH device.
|
|
5
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
6
|
-
*/
|
|
7
|
-
export class WoSensorTHPlus extends SwitchbotDevice {
|
|
8
|
-
constructor(peripheral, noble) {
|
|
9
|
-
super(peripheral, noble);
|
|
10
|
-
}
|
|
11
|
-
static async parseServiceData(serviceData, emitLog) {
|
|
12
|
-
if (serviceData.length !== 6) {
|
|
13
|
-
emitLog('debugerror', `[parseServiceData] Buffer length ${serviceData.length} !== 6 or 7!`);
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const [byte2, byte3, byte4, byte5] = [
|
|
17
|
-
serviceData.readUInt8(2),
|
|
18
|
-
serviceData.readUInt8(3),
|
|
19
|
-
serviceData.readUInt8(4),
|
|
20
|
-
serviceData.readUInt8(5),
|
|
21
|
-
];
|
|
22
|
-
const tempSign = byte4 & 0b10000000 ? 1 : -1;
|
|
23
|
-
const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
24
|
-
const tempF = Math.round(((tempC * 9) / 5 + 32) * 10) / 10;
|
|
25
|
-
const data = {
|
|
26
|
-
model: SwitchBotBLEModel.MeterPlus,
|
|
27
|
-
modelName: SwitchBotBLEModelName.MeterPlus,
|
|
28
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus,
|
|
29
|
-
celsius: tempC,
|
|
30
|
-
fahrenheit: tempF,
|
|
31
|
-
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
32
|
-
humidity: byte5 & 0b01111111,
|
|
33
|
-
battery: byte2 & 0b01111111,
|
|
34
|
-
};
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=wosensorthplus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthplus.js","sourceRoot":"","sources":["../../src/device/wosensorthplus.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IACjD,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,YAAY,EAAE,oCAAoC,WAAW,CAAC,MAAM,cAAc,CAAC,CAAA;YAC3F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG;YACnC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;SACzB,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE1D,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,SAAS;YAClC,SAAS,EAAE,qBAAqB,CAAC,SAAS;YAC1C,iBAAiB,EAAE,6BAA6B,CAAC,SAAS;YAC1D,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;SAC5B,CAAA;QACD,OAAO,IAA4B,CAAA;IACrC,CAAC;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Buffer } from 'node:buffer';
|
|
2
|
-
import type { meterProServiceData } from '../types/bledevicestatus.js';
|
|
3
|
-
import type { NobleTypes } from '../types/types.js';
|
|
4
|
-
import { SwitchbotDevice } from '../device.js';
|
|
5
|
-
/**
|
|
6
|
-
* Class representing a WoSensorTH device.
|
|
7
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
8
|
-
*/
|
|
9
|
-
export declare class WoSensorTHPro extends SwitchbotDevice {
|
|
10
|
-
constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
|
|
11
|
-
static parseServiceData(serviceData: Buffer, emitLog: (level: string, message: string) => void): Promise<meterProServiceData | null>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=wosensorthpro.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthpro.d.ts","sourceRoot":"","sources":["../../src/device/wosensorthpro.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,eAAe;gBACpC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;WAI/D,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;CA4BvC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Class representing a WoSensorTH device.
|
|
5
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
6
|
-
*/
|
|
7
|
-
export class WoSensorTHPro extends SwitchbotDevice {
|
|
8
|
-
constructor(peripheral, noble) {
|
|
9
|
-
super(peripheral, noble);
|
|
10
|
-
}
|
|
11
|
-
static async parseServiceData(serviceData, emitLog) {
|
|
12
|
-
if (serviceData.length !== 6) {
|
|
13
|
-
emitLog('debugerror', `[parseServiceData] Buffer length ${serviceData.length} !== 6 or 7!`);
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const [byte2, byte3, byte4, byte5] = [
|
|
17
|
-
serviceData.readUInt8(2),
|
|
18
|
-
serviceData.readUInt8(3),
|
|
19
|
-
serviceData.readUInt8(4),
|
|
20
|
-
serviceData.readUInt8(5),
|
|
21
|
-
];
|
|
22
|
-
const tempSign = byte4 & 0b10000000 ? 1 : -1;
|
|
23
|
-
const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
24
|
-
const tempF = Math.round(((tempC * 9) / 5 + 32) * 10) / 10;
|
|
25
|
-
const data = {
|
|
26
|
-
model: SwitchBotBLEModel.MeterPro,
|
|
27
|
-
modelName: SwitchBotBLEModelName.MeterPro,
|
|
28
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPro,
|
|
29
|
-
celsius: tempC,
|
|
30
|
-
fahrenheit: tempF,
|
|
31
|
-
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
32
|
-
humidity: byte5 & 0b01111111,
|
|
33
|
-
battery: byte2 & 0b01111111,
|
|
34
|
-
};
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=wosensorthpro.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthpro.js","sourceRoot":"","sources":["../../src/device/wosensorthpro.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,eAAe;IAChD,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,YAAY,EAAE,oCAAoC,WAAW,CAAC,MAAM,cAAc,CAAC,CAAA;YAC3F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG;YACnC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;SACzB,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE1D,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,QAAQ;YACjC,SAAS,EAAE,qBAAqB,CAAC,QAAQ;YACzC,iBAAiB,EAAE,6BAA6B,CAAC,QAAQ;YACzD,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;SAC5B,CAAA;QACD,OAAO,IAA2B,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Buffer } from 'node:buffer';
|
|
2
|
-
import type { meterProCO2ServiceData } from '../types/bledevicestatus.js';
|
|
3
|
-
import type { NobleTypes } from '../types/types.js';
|
|
4
|
-
import { SwitchbotDevice } from '../device.js';
|
|
5
|
-
/**
|
|
6
|
-
* Class representing a WoSensorTH device.
|
|
7
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
8
|
-
*/
|
|
9
|
-
export declare class WoSensorTHProCO2 extends SwitchbotDevice {
|
|
10
|
-
constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
|
|
11
|
-
static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, emitLog: (level: string, message: string) => void): Promise<meterProCO2ServiceData | null>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=wosensorthproco2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthproco2.d.ts","sourceRoot":"","sources":["../../src/device/wosensorthproco2.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;gBACvC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;WAI/D,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,sBAAsB,GAAG,IAAI,CAAC;CA8B1C"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { SwitchbotDevice } from '../device.js';
|
|
2
|
-
import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Class representing a WoSensorTH device.
|
|
5
|
-
* @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/meter.md
|
|
6
|
-
*/
|
|
7
|
-
export class WoSensorTHProCO2 extends SwitchbotDevice {
|
|
8
|
-
constructor(peripheral, noble) {
|
|
9
|
-
super(peripheral, noble);
|
|
10
|
-
}
|
|
11
|
-
static async parseServiceData(serviceData, manufacturerData, emitLog) {
|
|
12
|
-
if (serviceData.length !== 7) {
|
|
13
|
-
emitLog('debugerror', `[parseServiceData] Buffer length ${serviceData.length} !== 7!`);
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
const [byte2, byte3, byte4, byte5, byte6] = [
|
|
17
|
-
serviceData.readUInt8(2),
|
|
18
|
-
serviceData.readUInt8(3),
|
|
19
|
-
serviceData.readUInt8(4),
|
|
20
|
-
serviceData.readUInt8(5),
|
|
21
|
-
manufacturerData.readUInt16BE(6),
|
|
22
|
-
];
|
|
23
|
-
const tempSign = byte4 & 0b10000000 ? 1 : -1;
|
|
24
|
-
const tempC = tempSign * ((byte4 & 0b01111111) + (byte3 & 0b00001111) / 10);
|
|
25
|
-
const tempF = Math.round(((tempC * 9) / 5 + 32) * 10) / 10;
|
|
26
|
-
const data = {
|
|
27
|
-
model: SwitchBotBLEModel.MeterProCO2,
|
|
28
|
-
modelName: SwitchBotBLEModelName.MeterProCO2,
|
|
29
|
-
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterProCO2,
|
|
30
|
-
celsius: tempC,
|
|
31
|
-
fahrenheit: tempF,
|
|
32
|
-
fahrenheit_mode: !!(byte5 & 0b10000000),
|
|
33
|
-
humidity: byte5 & 0b01111111,
|
|
34
|
-
battery: byte2 & 0b01111111,
|
|
35
|
-
co2: byte6,
|
|
36
|
-
};
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=wosensorthproco2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wosensorthproco2.js","sourceRoot":"","sources":["../../src/device/wosensorthproco2.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACnD,YAAY,UAAoC,EAAE,KAA0B;QAC1E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,WAAmB,EACnB,gBAAwB,EACxB,OAAiD;QAEjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,YAAY,EAAE,oCAAoC,WAAW,CAAC,MAAM,SAAS,CAAC,CAAA;YACtF,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG;YAC1C,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACxB,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;SACjC,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;QAE1D,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,iBAAiB,CAAC,WAAW;YACpC,SAAS,EAAE,qBAAqB,CAAC,WAAW;YAC5C,iBAAiB,EAAE,6BAA6B,CAAC,WAAW;YAC5D,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;YACvC,QAAQ,EAAE,KAAK,GAAG,UAAU;YAC5B,OAAO,EAAE,KAAK,GAAG,UAAU;YAC3B,GAAG,EAAE,KAAK;SACX,CAAA;QACD,OAAO,IAA8B,CAAA;IACvC,CAAC;CACF"}
|