diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd76b03..068e3800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/) +## [3.4.3](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.3) (2024-12-22) + +### What's Changed +- Fixed `getDeviceStatus` for `openAPI` +- Housekeeping and update dependencies + +**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.2...v3.4.3 + ## [3.4.2](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.2) (2024-12-21) ### What's Changed diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js index 88cf64d6..3b8d29f0 100644 --- a/docs/assets/hierarchy.js +++ b/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJyNlctunDAUQP/lrm+S2oAfLNssUilVR5pUXVRZ8HBmrBi7sk27iPj3CqF0Blphb1jA4ZxrS+A38M7FAPUPwssSqXhG8OrFqC5qZwPUb0DFfLXNoKCG428du3Pr4r36pTsFCK/a9lATKhBGb6CGzjQhqHC3QW/PcTCAy2OoIYb+Zn73ZrmB0J216b2y8yyUICUEqZRYyBLLimNVcGSkQMYZ8oqjoASFFCgZQfKBlkgIlUhoUT5PCISSq6m/u49G2/5Jm7g38RWWmHZCoGRTGE2bkI+mzfBKufJ+Utpoe3rUp3Ni+Gsy3Slkue44G5sulVigtL2s+No++thom7AvUNpeFWv7Q2P7ffVMpL2MFGvv2NKEd2xphpezjXfQKe+g016+2eXPX4/KBuefHvbtFy7dEJsv6WDG0xdt9bfjfuPCZTSkWDe8Csru/14uVNov2XoNebuUv0fz/2cdGBofH133mii8YxkJQuX/EwfvMisH7zJCtNisJXr9M1GYkQw1L6/V/foIoRV7N2sblX9pOhXu+v3D4y+5OUAEW44Bwf4tHmMTx5DVXdCM+jRNfwBcGVRC" \ No newline at end of file +window.hierarchyData = "eJyNlU1v3CAQhv/LnCdNwTYfPrY9pFKqrrSpeqhy8AfZRcFQAW4Pkf975Vrprp3KcOFgXj/PMBLMC3jnYoD6B+EVQyoeEbx6MqqL2tkA9QtQMa+2GRTUcPytY3duXfykfulOAcKztj3UhAqE0RuooTNNCCrcbqLvznEwgMs21BBDfzP/e7N8QOjO2vRe2bkWSpASglRKLGSJZcWxKjgyUiDjDHnFUVCCQgqUjCB5T0skhEoktCgfJwRCyVXV390Ho23/oE3cq/gqlqh2QqBkYxhNm4CPps3gSrniflTaaHu616dzovjrZNpTyHLtcTY2XUqxhNL0suJr+uhjo22CvoTS9KpY0+8a2++j50Say0ix5o4tTXDHlmZwOdtwB53iDjrN5Zsuf/56VDY4/3C3T7/k0g6xuUkHM56+aKu/Hfcdl1yGQ4q1w6ug7P7zckml+ZKtz5DXpfweze/PWjA0Pt677jlheI1lKAiV/1ccvMu0HLzLENFic5bo9c+EYY5koHl1fQ/69QihFXslaxuVf2o6FW77/eHxL7kZIIKzv2NA8LfGY2ziGLK8SzTDPk3TH3b2VE4=" \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 9a325dc3..8d82cc7e 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJylmltz2zYQhf+LnjN1rEx68ZstJ5N05FhjOc1Dpw8QuZZQg4ACgnY1nf73DE3JIonF7kJ95Tn7LfeAd+nPfycB/gmTi8ncrefwBGbyZrJVYTO5mIBtqvrssP2nTaha8VHbcnLx639vXiuXzzoUmysXruYfblwZIyJDBuuj12BLs/uiKmC5fXNGDxFbyKQDYKa/LJ/AB11ruz4iCqPqGuqznjgknE9T08WQvspTVi5cw5MuIAV6NYj26HYL9nLxmdirvYOifXNXRtvyXpsQg3oiw2jMCi1vzIqunIE22q7ner1Bd6CvMyRngypwSCcx9Y0PSlu0vpPo+k/Kllhxu52pbFZTtLJZTbnKSuOVlaYrP98uwdbO33/C6o8qTVmYZn2jrf66xChHlaF4qMFip8VRownULLJJlpXyYe6KRxRxEIWMhXckZuEdQwpeb1FEK1C1qncMahvAP6gC6jM1OgSn739GLpRQgQ3XKiiUEbko5MqVO5TSClzhbKPsGpLlnUxBZhvla7T+RaFKSzAQ4BusNs493kG9dbbGdwV10ujhxX/Aii/7WPFc14EAtDIPwZPZa3z5MqjQUIzOIAXdwfcGyKkGPh67XxECuHeIUe39o93MEvdGCvzBe+dvV39DgfN6OoXR9sErD+UdVC6kD4vYRkI9cYgeRArwxa0M3O+2iUPsKFOQhfKqwgGdRBVvm3pDnrV9AwX63oDfSS4DmJEC3zUGB7UCVbgE3+afvD73dApTQ2i2ksEwIwk+PMPitINKjth7nh4/KvcnjWwUtNmWSnZFR50Uem+9hqC0QZEDB4V6PnRNXw2HFvImqkIAv5tpXzRGBec/qt6DbWjPwDPMM2K+/e2X8/dThoselukW6aNU1m108yEaYXchUY/UVT/di7z8xz3jN649Gn/bIghU+IhHzsVjHspiGhMobmPpLiZFVxesisrMZaXlUjk5aUKOy2Zs4IgF+j7dwYrkuzTNGbzOxKjobYalESuQdub2QFcGNWWS6RUjzTmdhCGdmBAfT3428mAyU3HG+eEnpj3yIIgJVKiIR87F4xzKYhoTJG7j6S8fwbrPITGzJ2aRyERxXx4/kWxkyaJyCSetbJfxV8Q9EfuCmKx+lyh/J62nFiW2SKlMaKhLyOZ3OH9/E0dOXxSSRIPnzf1gnPMzA8pqu75z7RPD+dsxGTWdRMazIKwndaFzEpRwXTeDL+UddhN9JcfriENsJItoaKBHRcKg44odPLPSpX7QEF3ej4qcQQeGuXLYifhGhgwiF2bCKO8giuOkNLgwcrOQRpGXhLZle/6qagx8FcQE8Irex7ST6/EIu23/N5CO122V1V5DgCKQDzZJo6zDvWuKDc58kTIodIxJo6yDBJ7HNYMf2DqOiX5Xw+uQt1CD/ZaWrCYWNHZImeipOxCFJDps1CQhM0NnTpweVz4rP2jelDequCxLD3W0X0eFY1QQ4pvmy0ZR5cLEobwKYgKxVJhHzkUXbSSLafTyJWwyenyCH7ZL62e31FML7sphE0n2DBlESZqIUdpBEMYJSdAx5GUgC+CE6bnRc+cmhs6YWDBu5qwuaGfxjzp9LYdDRYfbsuh4kJEjh8nEmnRyPZxV/T+9jMEjmaeVui7cU3yrOSosownto/ENdsPqazkcYr0Ttiw6ut6xI4dJr3fayfXYKhu0CchLzlGRM6bRs25fE3DuOy89bcrH8k2zjlimWUvq2n/1YbXtdmn97wviuENNcjKTWMIn5eNH9FCVsr4uBSkMTHKyLIWxT8JPJyCfnt+7vP3yYNSu+2fI+eKGSDVpzOkg5GfR279oxbB2K1vbfk39QxVNU718YAW/PI9IiOcULvayk/KdysePL9p9ai/6OJRVndJbPuPp8+XP9r/nIs4Lysx1qts/PqP/ajgqcgaxl6gpg4yu6liX8+gVTPk4/rMK4OegHg/fMMfgyJBNJCKmvPl90MATtmw6HT9jx7v99QOYs4+0" \ No newline at end of file +window.navigationData = "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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index d406f0f3..739b8a1e 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/Advertising.html b/docs/classes/Advertising.html index ead82251..2f13e503 100644 --- a/docs/classes/Advertising.html +++ b/docs/classes/Advertising.html @@ -1,8 +1,8 @@ Advertising | node-switchbot

Class Advertising

Represents the advertising data parser for SwitchBot devices.

-

Constructors

Constructors

Methods

Constructors

Methods

  • Parses the advertisement data coming from SwitchBot device.

    +

Constructors

Methods

  • Parses the advertisement data coming from SwitchBot device.

    This function processes advertising packets received from SwitchBot devices and extracts relevant information based on the device type.

    Parameters

    • peripheral: Peripheral

      The peripheral device object from noble.

      @@ -10,7 +10,7 @@

    Returns Promise<null | ad>

    • An object containing parsed data specific to the SwitchBot device type, or null if the device is not recognized.
    -
  • Parses the service data based on the device model.

    +
  • Parses the service data based on the device model.

    Parameters

    • model: string

      The device model.

    • serviceData: Buffer<ArrayBufferLike>

      The service data buffer.

    • manufacturerData: Buffer<ArrayBufferLike>

      The manufacturer data buffer.

      @@ -18,4 +18,4 @@

    Returns Promise<any>

    • The parsed service data.
    -
+
diff --git a/docs/classes/SwitchBotBLE.html b/docs/classes/SwitchBotBLE.html index cb8c3968..6693b360 100644 --- a/docs/classes/SwitchBotBLE.html +++ b/docs/classes/SwitchBotBLE.html @@ -1,5 +1,5 @@ SwitchBotBLE | node-switchbot

Class SwitchBotBLE

SwitchBotBLE class to interact with SwitchBot devices.

-

Hierarchy

  • EventEmitter
    • SwitchBotBLE

Constructors

Hierarchy

  • EventEmitter
    • SwitchBotBLE

Constructors

Properties

noble onadvertisement? ondiscover? @@ -12,30 +12,30 @@ wait

Constructors

Properties

noble: any
onadvertisement?: onadvertisement
ondiscover?: ondiscover
ready: Promise<void>

Methods

Returns SwitchBotBLE

Properties

noble: any
onadvertisement?: onadvertisement
ondiscover?: ondiscover
ready: Promise<void>

Methods

  • Emits a log event with the specified log level and message.

    +
  • Emits a log event with the specified log level and message.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Starts scanning for SwitchBot devices.

    +

Returns Promise<void>

+
diff --git a/docs/classes/SwitchBotOpenAPI.html b/docs/classes/SwitchBotOpenAPI.html index 4f05bb70..68549c74 100644 --- a/docs/classes/SwitchBotOpenAPI.html +++ b/docs/classes/SwitchBotOpenAPI.html @@ -5,7 +5,7 @@

The API token used for authentication.

The secret key used for signing requests.

-

Hierarchy

Constructors

Hierarchy

Constructors

Properties

Methods

controlDevice deleteWebhook @@ -15,25 +15,33 @@

Constructors

  • Creates an instance of the SwitchBot OpenAPI client.

    Parameters

    • token: string

      The API token used for authentication.

    • secret: string

      The secret key used for signing requests.

      -
    • Optionalhostname: string

    Returns SwitchBotOpenAPI

Properties

webhookEventListener?:
    | null
    | Server<typeof IncomingMessage, typeof ServerResponse> = null

Methods

  • Controls a device by sending a command to the SwitchBot API.

    -

    Parameters

    • deviceId: string

      The unique identifier of the device to control.

      +
    • Optionalhostname: string

    Returns SwitchBotOpenAPI

Properties

webhookEventListener?:
    | null
    | Server<typeof IncomingMessage, typeof ServerResponse> = null

Methods

  • Controls a device by sending a command to the SwitchBot API.

    +

    Parameters

    • deviceId: string

      The ID of the device to control.

    • command: string

      The command to send to the device.

    • parameter: string

      The parameter for the command.

      -
    • commandType: string = 'command'

      The type of the command, defaults to 'command'.

      -

    Returns Promise<{ response: { commandId: string }; statusCode: number }>

    A promise that resolves to an object containing the API response.

    +
  • commandType: string = 'command'

    The type of the command (default is 'command').

    +
  • Optionaltoken: string

    (Optional) The token used for authentication. If not provided, the instance token will be used.

    +
  • Optionalsecret: string

    (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    +

Returns Promise<{ response: { commandId: string }; statusCode: number }>

A promise that resolves to an object containing the response body and status code.

An error if the device control fails.

-
  • Deletes a webhook by sending a request to the specified URL.

    +
  • Deletes a webhook by sending a request to the specified URL.

    Parameters

    • url: string

      The URL of the webhook to be deleted.

      +
    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

      +
    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<void>

    A promise that resolves when the webhook is successfully deleted.

    Will log an error if the deletion fails.

    -
  • Retrieves the list of devices from the SwitchBot OpenAPI.

    -

    Returns Promise<{ response: devices; statusCode: number }>

    A promise that resolves to an object containing the API response.

    +
  • Retrieves the list of devices from the SwitchBot OpenAPI.

    +

    Parameters

    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

      +
    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

      +

    Returns Promise<{ response: devices; statusCode: number }>

    A promise that resolves to an object containing the API response.

    Throws an error if the request to get devices fails.

    -
  • Retrieves the status of a specific device.

    +
  • Retrieves the status of a specific device.

    Parameters

    • deviceId: string

      The unique identifier of the device.

      -

    Returns Promise<{ response: deviceStatus; statusCode: number }>

    A promise that resolves to the device status.

    +
  • Optionaltoken: string

    (Optional) The token used for authentication. If not provided, the instance token will be used.

    +
  • Optionalsecret: string

    (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    +

Returns Promise<{ response: deviceStatus; statusCode: number }>

A promise that resolves to an object containing the device status and the status code of the request.

An error if the request fails.

-
  • Sets up a webhook listener and configures the webhook on the server.

    +
  • Sets up a webhook listener and configures the webhook on the server.

    This method performs the following steps:

    1. Creates a local server to listen for incoming webhook events.
    2. @@ -42,6 +50,8 @@
    3. Sends a request to query the current webhook URL.

    Parameters

    • url: string

      The URL to which the webhook events will be sent.

      +
    • Optionaltoken: string

      (Optional) The token used for authentication. If not provided, the instance token will be used.

      +
    • Optionalsecret: string

      (Optional) The secret used for authentication. If not provided, the instance secret will be used.

    Returns Promise<void>

    A promise that resolves when the webhook setup is complete.

    Will log an error if any step in the webhook setup process fails.

    -
+
diff --git a/docs/classes/SwitchbotDevice.html b/docs/classes/SwitchbotDevice.html index 83073d5f..da06f591 100644 --- a/docs/classes/SwitchbotDevice.html +++ b/docs/classes/SwitchbotDevice.html @@ -1,5 +1,5 @@ SwitchbotDevice | node-switchbot

Class SwitchbotDevice

Represents a Switchbot Device.

-

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

address connectionState friendlyName @@ -20,25 +20,25 @@

Constructors

  • Initializes a new instance of the SwitchbotDevice class.

    Parameters

    • peripheral: Peripheral

      The peripheral object from noble.

    • noble: __module

      The Noble object.

      -

    Returns SwitchbotDevice

Accessors

  • get connectionState(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Returns SwitchbotDevice

Accessors

  • get connectionState(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer<ArrayBufferLike>

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    +
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    +
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Discovers the device services.

    +
  • Discovers the device services.

    Returns Promise<Service[]>

    A Promise that resolves with the list of services.

    -
  • Retrieves the device characteristics.

    +
  • Retrieves the device characteristics.

    Returns Promise<Chars>

    A Promise that resolves with the device characteristics.

    -
  • Retrieves the device name.

    +
  • Retrieves the device name.

    Returns Promise<string>

    A Promise that resolves with the device name.

    -
  • Logs a message with the specified log level.

    +
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sets the device name.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoBlindTilt.html b/docs/classes/WoBlindTilt.html index 8b60742d..0190fc09 100644 --- a/docs/classes/WoBlindTilt.html +++ b/docs/classes/WoBlindTilt.html @@ -1,6 +1,6 @@ WoBlindTilt | node-switchbot

Class WoBlindTilt

Class representing a WoBlindTilt device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Closes the blind tilt to the nearest endpoint.

    -

    Returns Promise<void>

  • Closes the blind tilt down to the nearest endpoint.

    -

    Returns Promise<void>

  • Closes the blind tilt up to the nearest endpoint.

    -

    Returns Promise<void>

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Closes the blind tilt to the nearest endpoint.

    +

    Returns Promise<void>

  • Closes the blind tilt down to the nearest endpoint.

    +

    Returns Promise<void>

  • Closes the blind tilt up to the nearest endpoint.

    +

    Returns Promise<void>

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer<ArrayBufferLike>

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Retrieves the basic information of the blind tilt.

    Returns Promise<null | object>

    • A promise that resolves to an object containing the basic information of the blind tilt.
    -
  • Retrieves the current position of the blind tilt.

    Returns Promise<number>

    • The current position of the blind tilt (0-100).
    -
  • Logs a message with the specified log level.

    +
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Opens the blind tilt to the fully open position.

    -

    Returns Promise<void>

  • Runs the blind tilt to the specified position.

    +

Returns Promise<void>

Returns Promise<void>

+
diff --git a/docs/classes/WoBulb.html b/docs/classes/WoBulb.html index a1e759ac..40c736fc 100644 --- a/docs/classes/WoBulb.html +++ b/docs/classes/WoBulb.html @@ -1,6 +1,6 @@ WoBulb | node-switchbot

Class representing a WoBulb device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer<ArrayBufferLike>

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Reads the state of the bulb.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoCeilingLight.html b/docs/classes/WoCeilingLight.html index 1677131e..a47e0ea5 100644 --- a/docs/classes/WoCeilingLight.html +++ b/docs/classes/WoCeilingLight.html @@ -1,6 +1,6 @@ WoCeilingLight | node-switchbot

Class WoCeilingLight

Class representing a WoCeilingLight device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer<ArrayBufferLike>

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sends a command to the ceiling light.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoContact.html b/docs/classes/WoContact.html index 6d289671..15af7cc3 100644 --- a/docs/classes/WoContact.html +++ b/docs/classes/WoContact.html @@ -1,6 +1,6 @@ WoContact | node-switchbot

Class representing a WoContact device.

Hierarchy (View Summary)

Constructors

Hierarchy (View Summary)

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    +

Constructors

Accessors

  • get address(): string
  • Returns string

  • get connectionState(): string
  • Returns string

  • get id(): string
  • Returns string

  • get onConnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onConnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

  • get onDisconnectHandler(): () => Promise<void>
  • Returns () => Promise<void>

  • set onDisconnectHandler(func: () => Promise<void>): void
  • Parameters

    • func: () => Promise<void>

    Returns void

Methods

  • Sends a command to the device and awaits a response.

    Parameters

    • reqBuf: Buffer<ArrayBufferLike>

      The command buffer.

    Returns Promise<Buffer<ArrayBufferLike>>

    A Promise that resolves with the response buffer.

    -
  • Connects to the device.

    Returns Promise<void>

    A Promise that resolves when the connection is complete.

    -
  • Disconnects from the device.

    Returns Promise<void>

    A Promise that resolves when the disconnection is complete.

    -
  • Logs a message with the specified log level.

    Parameters

    • level: string

      The severity level of the log (e.g., 'info', 'warn', 'error').

    • message: string

      The log message to be emitted.

      -

    Returns Promise<void>

  • Sets the device name.

    +

Returns Promise<void>

+
diff --git a/docs/classes/WoCurtain.html b/docs/classes/WoCurtain.html index d95febb2..80e0e191 100644 --- a/docs/classes/WoCurtain.html +++ b/docs/classes/WoCurtain.html @@ -3,7 +3,7 @@
  • https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/curtain.md
  • https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/curtain3.md
  • -

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Closes the curtain.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Closes the curtain.

      Parameters

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sends a command to the device and awaits a response.

      +

    Returns Promise<void>

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Opens the curtain.

      +

    Returns Promise<void>

    • Opens the curtain.

      Parameters

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sends a command to the curtain.

      +

    Returns Promise<void>

    • Sends a command to the curtain.

      Parameters

      • bytes: number[]

        The command bytes.

        -

      Returns Promise<void>

    • Runs the curtain to the target position.

      +

    Returns Promise<void>

    • Runs the curtain to the target position.

      Parameters

      • percent: number

        The percentage of the target position.

      • Optionalmode: number = 0xFF

        Running mode (0x01 = QuietDrift, 0xFF = Default).

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    • Sets the device name.

      Parameters

      • name: string

        The new device name.

      Returns Promise<void>

      A Promise that resolves when the name is set.

      -
    • Parses the service data for WoCurtain.

      Parameters

      • serviceData: Buffer<ArrayBufferLike>

        The service data buffer.

      • manufacturerData: Buffer<ArrayBufferLike>

        The manufacturer data buffer.

      • emitLog: (level: string, message: string) => void

        The function to emit log messages.

        @@ -66,4 +66,4 @@

      Returns Promise<null | curtainServiceData | curtain3ServiceData>

      • Parsed service data or null if invalid.
      -
    +
    diff --git a/docs/classes/WoHand.html b/docs/classes/WoHand.html index 7e051507..ebcbef2f 100644 --- a/docs/classes/WoHand.html +++ b/docs/classes/WoHand.html @@ -1,6 +1,6 @@ WoHand | node-switchbot

    Class representing a WoHand device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoHub2.html b/docs/classes/WoHub2.html index ce305a0e..b55a50c5 100644 --- a/docs/classes/WoHub2.html +++ b/docs/classes/WoHub2.html @@ -1,6 +1,6 @@ WoHub2 | node-switchbot

    Class representing a WoHub2 device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoHumi.html b/docs/classes/WoHumi.html index 8090f20c..403a37c6 100644 --- a/docs/classes/WoHumi.html +++ b/docs/classes/WoHumi.html @@ -1,6 +1,6 @@ WoHumi | node-switchbot

    Class representing a WoHumi device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decreases the humidifier setting.

      -

      Returns Promise<void>

    • Decreases the humidifier setting.

      +

      Returns Promise<void>

    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Increases the humidifier setting.

      -

      Returns Promise<void>

    • Increases the humidifier setting.

      +

      Returns Promise<void>

    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the humidifier level.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoIOSensorTH.html b/docs/classes/WoIOSensorTH.html index bceae27d..884380b0 100644 --- a/docs/classes/WoIOSensorTH.html +++ b/docs/classes/WoIOSensorTH.html @@ -1,6 +1,6 @@ WoIOSensorTH | node-switchbot

    Class WoIOSensorTH

    Class representing a WoIOSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoPlugMiniUS.html b/docs/classes/WoPlugMiniUS.html index bd4f5225..3762c362 100644 --- a/docs/classes/WoPlugMiniUS.html +++ b/docs/classes/WoPlugMiniUS.html @@ -1,6 +1,6 @@ WoPlugMiniUS | node-switchbot

    Class WoPlugMiniUS

    Class representing a WoPlugMini device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the plug with the given bytes.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoPresence.html b/docs/classes/WoPresence.html index 10c0899d..ac9e0c89 100644 --- a/docs/classes/WoPresence.html +++ b/docs/classes/WoPresence.html @@ -1,6 +1,6 @@ WoPresence | node-switchbot

    Class WoPresence

    Class representing a WoPresence device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSensorTH.html b/docs/classes/WoSensorTH.html index f0617421..dde1f3de 100644 --- a/docs/classes/WoSensorTH.html +++ b/docs/classes/WoSensorTH.html @@ -1,6 +1,6 @@ WoSensorTH | node-switchbot

    Class WoSensorTH

    Class representing a WoSensorTH device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Sets the device name.

      +

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSmartLock.html b/docs/classes/WoSmartLock.html index 6fbe4caa..aee796a4 100644 --- a/docs/classes/WoSmartLock.html +++ b/docs/classes/WoSmartLock.html @@ -1,6 +1,6 @@ WoSmartLock | node-switchbot

    Class WoSmartLock

    Class representing a WoSmartLock device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decrypts a buffer using AES-128-CTR.

      Parameters

      • data: Buffer<ArrayBufferLike>

        The data to decrypt.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The decrypted data.
      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Encrypts a string using AES-128-CTR.

      Parameters

      • str: string

        The string to encrypt.

      Returns Promise<string>

      • The encrypted string in hex format.
      -
    • Sends an encrypted command to the device.

      +
    • Sends an encrypted command to the device.

      Parameters

      • key: string

        The command key.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The response buffer.
      -
    • Retrieves the IV from the device.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The IV buffer.
      -
    • Gets general state info from the Smart Lock.

      Returns Promise<null | object>

      • The state object or null if an error occurred.
      -
    • Locks the Smart Lock.

      Returns Promise<number>

      • The result of the lock operation.
      -
    • Logs a message with the specified log level.

      +
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the lock with the given command.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoSmartLockPro.html b/docs/classes/WoSmartLockPro.html index e794ce21..0ad71d19 100644 --- a/docs/classes/WoSmartLockPro.html +++ b/docs/classes/WoSmartLockPro.html @@ -1,6 +1,6 @@ WoSmartLockPro | node-switchbot

    Class WoSmartLockPro

    Class representing a WoSmartLockPro device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Properties

    encryption_key: null | Buffer<ArrayBufferLike> = null
    iv: null | Buffer<ArrayBufferLike> = null
    key_id: string = ''
    Result: { ERROR: number; SUCCESS: number; SUCCESS_LOW_BATTERY: number } = ...

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Decrypts a buffer using AES-128-CTR.

      Parameters

      • data: Buffer<ArrayBufferLike>

        The data to decrypt.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The decrypted data.
      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Encrypts a string using AES-128-CTR.

      Parameters

      • str: string

        The string to encrypt.

      Returns Promise<string>

      • The encrypted string in hex format.
      -
    • Sends an encrypted command to the device.

      +
    • Sends an encrypted command to the device.

      Parameters

      • key: string

        The command key.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The response buffer.
      -
    • Retrieves the IV from the device.

      Returns Promise<Buffer<ArrayBufferLike>>

      • The IV buffer.
      -
    • Gets general state info from the Smart Lock.

      Returns Promise<null | object>

      • The state object or null if an error occurred.
      -
    • Locks the Smart Lock.

      Returns Promise<number>

      • The result of the lock operation.
      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the lock with the given command.

      +

    Returns Promise<void>

    Returns Promise<void>

    +
    diff --git a/docs/classes/WoStrip.html b/docs/classes/WoStrip.html index 7fec2238..e197f839 100644 --- a/docs/classes/WoStrip.html +++ b/docs/classes/WoStrip.html @@ -1,6 +1,6 @@ WoStrip | node-switchbot

    Class representing a WoStrip device.

    Hierarchy (View Summary)

    Constructors

    Hierarchy (View Summary)

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      +

    Constructors

    Accessors

    • get address(): string
    • Returns string

    • get connectionState(): string
    • Returns string

    • get id(): string
    • Returns string

    • get onConnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onConnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    • get onDisconnectHandler(): () => Promise<void>
    • Returns () => Promise<void>

    • set onDisconnectHandler(func: () => Promise<void>): void
    • Parameters

      • func: () => Promise<void>

      Returns void

    Methods

    • Sends a command to the device and awaits a response.

      Parameters

      • reqBuf: Buffer<ArrayBufferLike>

        The command buffer.

      Returns Promise<Buffer<ArrayBufferLike>>

      A Promise that resolves with the response buffer.

      -
    • Connects to the device.

      Returns Promise<void>

      A Promise that resolves when the connection is complete.

      -
    • Disconnects from the device.

      Returns Promise<void>

      A Promise that resolves when the disconnection is complete.

      -
    • Logs a message with the specified log level.

      Parameters

      • level: string

        The severity level of the log (e.g., 'info', 'warn', 'error').

      • message: string

        The log message to be emitted.

        -

      Returns Promise<void>

    • Operates the strip light with the given byte array.

      +

    Returns Promise<void>

    +
    diff --git a/docs/enums/LogLevel.html b/docs/enums/LogLevel.html index 7efe108f..5448fb72 100644 --- a/docs/enums/LogLevel.html +++ b/docs/enums/LogLevel.html @@ -1,5 +1,5 @@ LogLevel | node-switchbot

    Enumeration LogLevel

    Enum for log levels.

    -

    Enumeration Members

    Enumeration Members

    Enumeration Members

    DEBUG: "debug"
    DEBUGERROR: "debugerror"
    DEBUGSUCCESS: "debugsuccess"
    DEBUGWARN: "debugwarn"
    ERROR: "error"
    INFO: "info"
    SUCCESS: "success"
    WARN: "warn"
    +

    Enumeration Members

    DEBUG: "debug"
    DEBUGERROR: "debugerror"
    DEBUGSUCCESS: "debugsuccess"
    DEBUGWARN: "debugwarn"
    ERROR: "error"
    INFO: "info"
    SUCCESS: "success"
    WARN: "warn"
    diff --git a/docs/enums/SwitchBotBLEModel.html b/docs/enums/SwitchBotBLEModel.html index 7492fd38..0aed7288 100644 --- a/docs/enums/SwitchBotBLEModel.html +++ b/docs/enums/SwitchBotBLEModel.html @@ -1,4 +1,4 @@ -SwitchBotBLEModel | node-switchbot

    Enumeration SwitchBotBLEModel

    Enumeration Members

    BlindTilt +SwitchBotBLEModel | node-switchbot

    Enumeration SwitchBotBLEModel

    Enumeration Members

    BlindTilt: "x"
    Bot: "H"
    CeilingLight: "q"
    CeilingLightPro: "n"
    ColorBulb: "u"
    ContactSensor: "d"
    Curtain: "c"
    Curtain3: "{"
    Hub2: "v"
    Humidifier: "e"
    Humidifier2: "E"
    Keypad: "y"
    Leak: "3"
    Lock: "o"
    LockPro: "$"
    Meter: "T"
    MeterPlus: "i"
    MeterPro: "4"
    MeterProCO2: "5"
    MotionSensor: "s"
    OutdoorMeter: "w"
    PlugMiniJP: "j"
    PlugMiniUS: "g"
    RelaySwitch1: ";"
    RelaySwitch1PM: "<"
    StripLight: "r"
    Unknown: "Unknown"
    +

    Enumeration Members

    BlindTilt: "x"
    Bot: "H"
    CeilingLight: "q"
    CeilingLightPro: "n"
    ColorBulb: "u"
    ContactSensor: "d"
    Curtain: "c"
    Curtain3: "{"
    Hub2: "v"
    Humidifier: "e"
    Humidifier2: "E"
    Keypad: "y"
    Leak: "&"
    Lock: "o"
    LockPro: "$"
    Meter: "T"
    MeterPlus: "i"
    MeterPro: "4"
    MeterProCO2: "5"
    MotionSensor: "s"
    OutdoorMeter: "w"
    PlugMiniJP: "j"
    PlugMiniUS: "g"
    RelaySwitch1: ";"
    RelaySwitch1PM: "<"
    StripLight: "r"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotBLEModelFriendlyName.html b/docs/enums/SwitchBotBLEModelFriendlyName.html index 3621955e..32ecc678 100644 --- a/docs/enums/SwitchBotBLEModelFriendlyName.html +++ b/docs/enums/SwitchBotBLEModelFriendlyName.html @@ -1,7 +1,9 @@ -SwitchBotBLEModelFriendlyName | node-switchbot

    Enumeration SwitchBotBLEModelFriendlyName

    Enumeration Members

    BlindTilt +SwitchBotBLEModelFriendlyName | node-switchbot

    Enumeration SwitchBotBLEModelFriendlyName

    Enumeration Members

    BlindTilt: "Blind Tilt"
    Bot: "Bot"
    CeilingLight: "Ceiling Light"
    CeilingLightPro: "Ceiling Light Pro"
    ColorBulb: "Color Bulb"
    ContactSensor: "Contact Sensor"
    Curtain: "Curtain"
    Curtain3: "Curtain 3"
    Hub2: "Hub 2"
    Humidifier: "Humidifier"
    Humidifier2: "Humidifier2"
    Keypad: "Keypad"
    Leak: "Water Detector"
    Lock: "Lock"
    LockPro: "Lock Pro"
    Meter: "Meter"
    MeterPlus: "Meter Plus"
    MeterPro: "Meter Pro"
    MeterProCO2: "Meter Pro CO2"
    MotionSensor: "Motion Sensor"
    OutdoorMeter: "Outdoor Meter"
    PlugMini: "Plug Mini"
    RelaySwitch1: "Relay Switch 1"
    RelaySwitch1PM: "Relay Switch 1PM"
    StripLight: "Strip Light"
    Unknown: "Unknown"
    +

    Enumeration Members

    BatteryCirculatorFan: "Battery Circulator Fan"
    BlindTilt: "Blind Tilt"
    Bot: "Bot"
    CeilingLight: "Ceiling Light"
    CeilingLightPro: "Ceiling Light Pro"
    CirculatorFan: "Circulator Fan"
    ColorBulb: "Color Bulb"
    ContactSensor: "Contact Sensor"
    Curtain: "Curtain"
    Curtain3: "Curtain 3"
    Hub2: "Hub 2"
    Humidifier: "Humidifier"
    Humidifier2: "Humidifier2"
    Keypad: "Keypad"
    Leak: "Water Detector"
    Lock: "Lock"
    LockPro: "Lock Pro"
    Meter: "Meter"
    MeterPlus: "Meter Plus"
    MeterPro: "Meter Pro"
    MeterProCO2: "Meter Pro CO2"
    MotionSensor: "Motion Sensor"
    OutdoorMeter: "Outdoor Meter"
    PlugMini: "Plug Mini"
    RelaySwitch1: "Relay Switch 1"
    RelaySwitch1PM: "Relay Switch 1PM"
    StripLight: "Strip Light"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotBLEModelName.html b/docs/enums/SwitchBotBLEModelName.html index 3b82b7d8..dfac0c13 100644 --- a/docs/enums/SwitchBotBLEModelName.html +++ b/docs/enums/SwitchBotBLEModelName.html @@ -1,4 +1,4 @@ -SwitchBotBLEModelName | node-switchbot

    Enumeration SwitchBotBLEModelName

    Enumeration Members

    BlindTilt +SwitchBotBLEModelName | node-switchbot

    Enumeration SwitchBotBLEModelName

    Enumeration Members

    BlindTilt: "WoBlindTilt"
    Bot: "WoHand"
    CeilingLight: "WoCeilingLight"
    CeilingLightPro: "WoCeilingLightPro"
    ColorBulb: "WoBulb"
    ContactSensor: "WoContact"
    Curtain: "WoCurtain"
    Curtain3: "WoCurtain3"
    Hub2: "WoHub2"
    Humidifier: "WoHumi"
    Humidifier2: "WoHumi2"
    Keypad: "WoKeypad"
    Leak: "WoLeakDetector"
    Lock: "WoSmartLock"
    LockPro: "WoSmartLockPro"
    Meter: "WoSensorTH"
    MeterPlus: "WoSensorTHPlus"
    MeterPro: "WoSensorTHP"
    MeterProCO2: "WoSensorTHPc"
    MotionSensor: "WoMotion"
    OutdoorMeter: "WoIOSensorTH"
    PlugMini: "WoPlugMini"
    RelaySwitch1: "WoRelaySwitch1Plus"
    RelaySwitch1PM: "WoRelaySwitch1PM"
    StripLight: "WoStrip"
    Unknown: "Unknown"
    +

    Enumeration Members

    BlindTilt: "WoBlindTilt"
    Bot: "WoHand"
    CeilingLight: "WoCeilingLight"
    CeilingLightPro: "WoCeilingLightPro"
    ColorBulb: "WoBulb"
    ContactSensor: "WoContact"
    Curtain: "WoCurtain"
    Curtain3: "WoCurtain3"
    Hub2: "WoHub2"
    Humidifier: "WoHumi"
    Humidifier2: "WoHumi2"
    Keypad: "WoKeypad"
    Leak: "WoLeakDetector"
    Lock: "WoSmartLock"
    LockPro: "WoSmartLockPro"
    Meter: "WoSensorTH"
    MeterPlus: "WoSensorTHPlus"
    MeterPro: "WoSensorTHP"
    MeterProCO2: "WoSensorTHPc"
    MotionSensor: "WoMotion"
    OutdoorMeter: "WoIOSensorTH"
    PlugMini: "WoPlugMini"
    RelaySwitch1: "WoRelaySwitch1Plus"
    RelaySwitch1PM: "WoRelaySwitch1PM"
    StripLight: "WoStrip"
    Unknown: "Unknown"
    diff --git a/docs/enums/SwitchBotModel.html b/docs/enums/SwitchBotModel.html index d38412fa..441791c2 100644 --- a/docs/enums/SwitchBotModel.html +++ b/docs/enums/SwitchBotModel.html @@ -1,8 +1,9 @@ -SwitchBotModel | node-switchbot

    Enumeration SwitchBotModel

    Enumeration Members

    BatteryCirculatorFan +SwitchBotModel | node-switchbot

    Enumeration SwitchBotModel

    Enumeration Members

    BatteryCirculatorFan: "W3800510"
    BlindTilt: "W2701600"
    Bot: "SwitchBot S1"
    CeilingLight: "W2612230/W2612240"
    CeilingLightPro: "W2612210/W2612220"
    ColorBulb: "W1401400"
    ContactSensor: "W1201500"
    Curtain: "W0701600"
    Curtain3: "W2400000"
    Hub2: "W3202100"
    HubMini: "W0202200"
    HubPlus: "SwitchBot Hub S1"
    Humidifier: "W0801800"
    Humidifier2: "WXXXXXXX"
    IndoorCam: "W1301200"
    K10: "K10+"
    K10Pro: "K10+ Pro"
    Keypad: "W2500010"
    KeypadTouch: "W2500020"
    Lock: "W1601700"
    LockPro: "W3500000"
    Meter: "SwitchBot MeterTH S1"
    MeterPlusJP: "W2201500"
    MeterPlusUS: "W2301500"
    MeterPro: "W4900000"
    MeterProCO2: "W4900010"
    MotionSensor: "W1101500"
    OutdoorMeter: "W3400010"
    PanTiltCam: "W1801200"
    PanTiltCam2K: "W3101100"
    Plug: "SP11"
    PlugMiniJP: "W2001400/W2001401"
    PlugMiniUS: "W1901400/W1901401"
    Remote: "Remote"
    RobotVacuumCleanerS1: "W3011000"
    RobotVacuumCleanerS10: "W3211800"
    RobotVacuumCleanerS1Plus: "W3011010"
    StripLight: "W1701100"
    UniversalRemote: "UniversalRemote"
    Unknown: "Unknown"
    WaterDetector: "W4402000"
    WoSweeper: "WoSweeper"
    WoSweeperMini: "WoSweeperMini"
    +

    Enumeration Members

    BatteryCirculatorFan: "W3800510"
    BlindTilt: "W2701600"
    Bot: "SwitchBot S1"
    CeilingLight: "W2612230/W2612240"
    CeilingLightPro: "W2612210/W2612220"
    CirculatorFan: "W3800511"
    ColorBulb: "W1401400"
    ContactSensor: "W1201500"
    Curtain: "W0701600"
    Curtain3: "W2400000"
    Hub2: "W3202100"
    HubMini: "W0202200"
    HubPlus: "SwitchBot Hub S1"
    Humidifier: "W0801800"
    Humidifier2: "WXXXXXXX"
    IndoorCam: "W1301200"
    K10: "K10+"
    K10Pro: "K10+ Pro"
    Keypad: "W2500010"
    KeypadTouch: "W2500020"
    Lock: "W1601700"
    LockPro: "W3500000"
    Meter: "SwitchBot MeterTH S1"
    MeterPlusJP: "W2201500"
    MeterPlusUS: "W2301500"
    MeterPro: "W4900000"
    MeterProCO2: "W4900010"
    MotionSensor: "W1101500"
    OutdoorMeter: "W3400010"
    PanTiltCam: "W1801200"
    PanTiltCam2K: "W3101100"
    Plug: "SP11"
    PlugMiniJP: "W2001400/W2001401"
    PlugMiniUS: "W1901400/W1901401"
    Remote: "Remote"
    RobotVacuumCleanerS1: "W3011000"
    RobotVacuumCleanerS10: "W3211800"
    RobotVacuumCleanerS1Plus: "W3011010"
    StripLight: "W1701100"
    UniversalRemote: "UniversalRemote"
    Unknown: "Unknown"
    WaterDetector: "W4402000"
    WoSweeper: "WoSweeper"
    WoSweeperMini: "WoSweeperMini"
    diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 0190ec1a..4f7bc4e8 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -node-switchbot

    node-switchbot

    Hierarchy Summary

    +node-switchbot

    node-switchbot

    Hierarchy Summary

    diff --git a/docs/interfaces/AdvertisementData.html b/docs/interfaces/AdvertisementData.html index b4e358e5..cf8128cc 100644 --- a/docs/interfaces/AdvertisementData.html +++ b/docs/interfaces/AdvertisementData.html @@ -1,3 +1,3 @@ -AdvertisementData | node-switchbot

    Interface AdvertisementData

    interface AdvertisementData {
        manufacturerData: null | Buffer<ArrayBufferLike>;
        serviceData: null | Buffer<ArrayBufferLike>;
    }

    Properties

    manufacturerData +AdvertisementData | node-switchbot

    Interface AdvertisementData

    interface AdvertisementData {
        manufacturerData: null | Buffer<ArrayBufferLike>;
        serviceData: null | Buffer<ArrayBufferLike>;
    }

    Properties

    manufacturerData: null | Buffer<ArrayBufferLike>
    serviceData: null | Buffer<ArrayBufferLike>
    +

    Properties

    manufacturerData: null | Buffer<ArrayBufferLike>
    serviceData: null | Buffer<ArrayBufferLike>
    diff --git a/docs/interfaces/Chars.html b/docs/interfaces/Chars.html index d2cc2687..e0ea9dad 100644 --- a/docs/interfaces/Chars.html +++ b/docs/interfaces/Chars.html @@ -1,4 +1,4 @@ -Chars | node-switchbot

    Interface Chars

    interface Chars {
        device: null | Characteristic;
        notify: null | Characteristic;
        write: null | Characteristic;
    }

    Properties

    device +Chars | node-switchbot

    Interface Chars

    interface Chars {
        device: null | Characteristic;
        notify: null | Characteristic;
        write: null | Characteristic;
    }

    Properties

    Properties

    device: null | Characteristic
    notify: null | Characteristic
    write: null | Characteristic
    +

    Properties

    device: null | Characteristic
    notify: null | Characteristic
    write: null | Characteristic
    diff --git a/docs/interfaces/ErrorObject.html b/docs/interfaces/ErrorObject.html index 53dcf657..910b64b6 100644 --- a/docs/interfaces/ErrorObject.html +++ b/docs/interfaces/ErrorObject.html @@ -1,3 +1,3 @@ -ErrorObject | node-switchbot

    Interface ErrorObject

    interface ErrorObject {
        code: string;
        message: string;
    }

    Properties

    code +ErrorObject | node-switchbot

    Interface ErrorObject

    interface ErrorObject {
        code: string;
        message: string;
    }

    Properties

    Properties

    code: string
    message: string
    +

    Properties

    code: string
    message: string
    diff --git a/docs/interfaces/NobleTypes.html b/docs/interfaces/NobleTypes.html index 580993df..2483a0bf 100644 --- a/docs/interfaces/NobleTypes.html +++ b/docs/interfaces/NobleTypes.html @@ -1,4 +1,4 @@ -NobleTypes | node-switchbot

    Interface NobleTypes

    interface NobleTypes {
        noble: __module;
        peripheral: Peripheral;
        state:
            | "unknown"
            | "resetting"
            | "unsupported"
            | "unauthorized"
            | "poweredOff"
            | "poweredOn";
    }

    Properties

    noble +NobleTypes | node-switchbot

    Interface NobleTypes

    interface NobleTypes {
        noble: __module;
        peripheral: Peripheral;
        state:
            | "unknown"
            | "resetting"
            | "unsupported"
            | "unauthorized"
            | "poweredOff"
            | "poweredOn";
    }

    Properties

    Properties

    noble: __module
    peripheral: Peripheral
    state:
        | "unknown"
        | "resetting"
        | "unsupported"
        | "unauthorized"
        | "poweredOff"
        | "poweredOn"
    +

    Properties

    noble: __module
    peripheral: Peripheral
    state:
        | "unknown"
        | "resetting"
        | "unsupported"
        | "unauthorized"
        | "poweredOff"
        | "poweredOn"
    diff --git a/docs/interfaces/Params.html b/docs/interfaces/Params.html index 9798e87b..5745dd04 100644 --- a/docs/interfaces/Params.html +++ b/docs/interfaces/Params.html @@ -1,6 +1,6 @@ -Params | node-switchbot

    Interface Params

    interface Params {
        duration?: number;
        id?: string;
        model?: string;
        noble?: __module;
        quick?: boolean;
    }

    Properties

    duration? +Params | node-switchbot

    Interface Params

    interface Params {
        duration?: number;
        id?: string;
        model?: string;
        noble?: __module;
        quick?: boolean;
    }

    Properties

    duration?: number
    id?: string
    model?: string
    noble?: __module
    quick?: boolean
    +

    Properties

    duration?: number
    id?: string
    model?: string
    noble?: __module
    quick?: boolean
    diff --git a/docs/interfaces/Rule.html b/docs/interfaces/Rule.html index 6997f405..9a9a18f4 100644 --- a/docs/interfaces/Rule.html +++ b/docs/interfaces/Rule.html @@ -1,4 +1,4 @@ -Rule | node-switchbot

    Interface Rule

    interface Rule {
        enum?: unknown[];
        max?: number;
        maxBytes?: number;
        min?: number;
        minBytes?: number;
        pattern?: RegExp;
        required?: boolean;
        type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
    }

    Properties

    enum? +Rule | node-switchbot

    Interface Rule

    interface Rule {
        enum?: unknown[];
        max?: number;
        maxBytes?: number;
        min?: number;
        minBytes?: number;
        pattern?: RegExp;
        required?: boolean;
        type?: "string" | "boolean" | "object" | "float" | "integer" | "array";
    }

    Properties

    Properties

    enum?: unknown[]
    max?: number
    maxBytes?: number
    min?: number
    minBytes?: number
    pattern?: RegExp
    required?: boolean
    type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
    +

    Properties

    enum?: unknown[]
    max?: number
    maxBytes?: number
    min?: number
    minBytes?: number
    pattern?: RegExp
    required?: boolean
    type?: "string" | "boolean" | "object" | "float" | "integer" | "array"
    diff --git a/docs/interfaces/ServiceData.html b/docs/interfaces/ServiceData.html index 45d479e2..3727864c 100644 --- a/docs/interfaces/ServiceData.html +++ b/docs/interfaces/ServiceData.html @@ -1,2 +1,2 @@ -ServiceData | node-switchbot

    Interface ServiceData

    interface ServiceData {
        model: string;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    Properties

    model: string
    +ServiceData | node-switchbot

    Interface ServiceData

    interface ServiceData {
        model: string;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    Properties

    model: string
    diff --git a/docs/interfaces/SwitchBotBLEDevice.html b/docs/interfaces/SwitchBotBLEDevice.html index ae39e7e4..27b7e272 100644 --- a/docs/interfaces/SwitchBotBLEDevice.html +++ b/docs/interfaces/SwitchBotBLEDevice.html @@ -1,4 +1,4 @@ -SwitchBotBLEDevice | node-switchbot

    Interface SwitchBotBLEDevice

    interface SwitchBotBLEDevice {
        BlindTilt: DeviceInfo;
        Bot: DeviceInfo;
        CeilingLight: DeviceInfo;
        CeilingLightPro: DeviceInfo;
        ColorBulb: DeviceInfo;
        ContactSensor: DeviceInfo;
        Curtain: DeviceInfo;
        Curtain3: DeviceInfo;
        Hub2: DeviceInfo;
        Humidifier: DeviceInfo;
        Lock: DeviceInfo;
        LockPro: DeviceInfo;
        Meter: DeviceInfo;
        MeterPlus: DeviceInfo;
        MeterPro: DeviceInfo;
        MeterProCO2: DeviceInfo;
        MotionSensor: DeviceInfo;
        OutdoorMeter: DeviceInfo;
        PlugMiniJP: DeviceInfo;
        PlugMiniUS: DeviceInfo;
        StripLight: DeviceInfo;
        Unknown: DeviceInfo;
    }

    Properties

    BlindTilt +SwitchBotBLEDevice | node-switchbot

    Interface SwitchBotBLEDevice

    interface SwitchBotBLEDevice {
        BlindTilt: DeviceInfo;
        Bot: DeviceInfo;
        CeilingLight: DeviceInfo;
        CeilingLightPro: DeviceInfo;
        ColorBulb: DeviceInfo;
        ContactSensor: DeviceInfo;
        Curtain: DeviceInfo;
        Curtain3: DeviceInfo;
        Hub2: DeviceInfo;
        Humidifier: DeviceInfo;
        Lock: DeviceInfo;
        LockPro: DeviceInfo;
        Meter: DeviceInfo;
        MeterPlus: DeviceInfo;
        MeterPro: DeviceInfo;
        MeterProCO2: DeviceInfo;
        MotionSensor: DeviceInfo;
        OutdoorMeter: DeviceInfo;
        PlugMiniJP: DeviceInfo;
        PlugMiniUS: DeviceInfo;
        StripLight: DeviceInfo;
        Unknown: DeviceInfo;
    }

    Properties

    BlindTilt: DeviceInfo
    Bot: DeviceInfo
    CeilingLight: DeviceInfo
    CeilingLightPro: DeviceInfo
    ColorBulb: DeviceInfo
    ContactSensor: DeviceInfo
    Curtain: DeviceInfo
    Curtain3: DeviceInfo
    Hub2: DeviceInfo
    Humidifier: DeviceInfo
    Lock: DeviceInfo
    LockPro: DeviceInfo
    Meter: DeviceInfo
    MeterPlus: DeviceInfo
    MeterPro: DeviceInfo
    MeterProCO2: DeviceInfo
    MotionSensor: DeviceInfo
    OutdoorMeter: DeviceInfo
    PlugMiniJP: DeviceInfo
    PlugMiniUS: DeviceInfo
    StripLight: DeviceInfo
    Unknown: DeviceInfo
    +

    Properties

    BlindTilt: DeviceInfo
    Bot: DeviceInfo
    CeilingLight: DeviceInfo
    CeilingLightPro: DeviceInfo
    ColorBulb: DeviceInfo
    ContactSensor: DeviceInfo
    Curtain: DeviceInfo
    Curtain3: DeviceInfo
    Hub2: DeviceInfo
    Humidifier: DeviceInfo
    Lock: DeviceInfo
    LockPro: DeviceInfo
    Meter: DeviceInfo
    MeterPlus: DeviceInfo
    MeterPro: DeviceInfo
    MeterProCO2: DeviceInfo
    MotionSensor: DeviceInfo
    OutdoorMeter: DeviceInfo
    PlugMiniJP: DeviceInfo
    PlugMiniUS: DeviceInfo
    StripLight: DeviceInfo
    Unknown: DeviceInfo
    diff --git a/docs/interfaces/WebhookDetail.html b/docs/interfaces/WebhookDetail.html index 1a0aee62..4ecca2ec 100644 --- a/docs/interfaces/WebhookDetail.html +++ b/docs/interfaces/WebhookDetail.html @@ -1,6 +1,6 @@ -WebhookDetail | node-switchbot

    Interface WebhookDetail

    interface WebhookDetail {
        createTime: number;
        deviceList: string;
        enable: boolean;
        lastUpdateTime: number;
        url: string;
    }

    Properties

    createTime +WebhookDetail | node-switchbot

    Interface WebhookDetail

    interface WebhookDetail {
        createTime: number;
        deviceList: string;
        enable: boolean;
        lastUpdateTime: number;
        url: string;
    }

    Properties

    createTime: number
    deviceList: string
    enable: boolean
    lastUpdateTime: number
    url: string
    +

    Properties

    createTime: number
    deviceList: string
    enable: boolean
    lastUpdateTime: number
    url: string
    diff --git a/docs/interfaces/ad.html b/docs/interfaces/ad.html index 15891d6c..94f09b70 100644 --- a/docs/interfaces/ad.html +++ b/docs/interfaces/ad.html @@ -1,5 +1,5 @@ -ad | node-switchbot

    Interface ad

    interface ad {
        address: string;
        id: string;
        rssi: number;
        serviceData:
            | botServiceData
            | colorBulbServiceData
            | contactSensorServiceData
            | curtainServiceData
            | curtain3ServiceData
            | stripLightServiceData
            | lockServiceData
            | lockProServiceData
            | meterServiceData
            | meterPlusServiceData
            | meterProServiceData
            | meterProCO2ServiceData
            | motionSensorServiceData
            | outdoorMeterServiceData
            | plugMiniUSServiceData
            | plugMiniJPServiceData
            | blindTiltServiceData
            | ceilingLightServiceData
            | ceilingLightProServiceData
            | hub2ServiceData
            | batteryCirculatorFanServiceData
            | waterLeakDetectorServiceData
            | humidifierServiceData
            | humidifier2ServiceData
            | robotVacuumCleanerServiceData
            | keypadDetectorServiceData
            | relaySwitch1PMServiceData
            | relaySwitch1ServiceData;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    address +ad | node-switchbot

    Interface ad

    interface ad {
        address: string;
        id: string;
        rssi: number;
        serviceData:
            | botServiceData
            | colorBulbServiceData
            | contactSensorServiceData
            | curtainServiceData
            | curtain3ServiceData
            | stripLightServiceData
            | lockServiceData
            | lockProServiceData
            | meterServiceData
            | meterPlusServiceData
            | meterProServiceData
            | meterProCO2ServiceData
            | motionSensorServiceData
            | outdoorMeterServiceData
            | plugMiniUSServiceData
            | plugMiniJPServiceData
            | blindTiltServiceData
            | ceilingLightServiceData
            | ceilingLightProServiceData
            | hub2ServiceData
            | batteryCirculatorFanServiceData
            | waterLeakDetectorServiceData
            | humidifierServiceData
            | humidifier2ServiceData
            | robotVacuumCleanerServiceData
            | keypadDetectorServiceData
            | relaySwitch1PMServiceData
            | relaySwitch1ServiceData;
        [key: string]: unknown;
    }

    Indexable

    • [key: string]: unknown

    Properties

    address: string
    id: string
    rssi: number
    +

    Properties

    address: string
    id: string
    rssi: number
    diff --git a/docs/interfaces/body.html b/docs/interfaces/body.html index b72bd910..e298c2ab 100644 --- a/docs/interfaces/body.html +++ b/docs/interfaces/body.html @@ -1,3 +1,3 @@ -body | node-switchbot

    Interface body

    interface body {
        deviceList: deviceList;
        infraredRemoteList: infraredRemoteList;
    }

    Properties

    deviceList +body | node-switchbot

    Interface body

    interface body {
        deviceList: deviceList;
        infraredRemoteList: infraredRemoteList;
    }

    Properties

    deviceList: deviceList
    infraredRemoteList: infraredRemoteList
    +

    Properties

    deviceList: deviceList
    infraredRemoteList: infraredRemoteList
    diff --git a/docs/interfaces/bodyChange.html b/docs/interfaces/bodyChange.html index 134b16e3..656a1c34 100644 --- a/docs/interfaces/bodyChange.html +++ b/docs/interfaces/bodyChange.html @@ -1,4 +1,4 @@ -bodyChange | node-switchbot

    Interface bodyChange

    interface bodyChange {
        command: string;
        commandType: string;
        parameter: string;
    }

    Properties

    command +bodyChange | node-switchbot

    Interface bodyChange

    interface bodyChange {
        command: string;
        commandType: string;
        parameter: string;
    }

    Properties

    command: string
    commandType: string
    parameter: string
    +

    Properties

    command: string
    commandType: string
    parameter: string
    diff --git a/docs/interfaces/deleteWebhookResponse.html b/docs/interfaces/deleteWebhookResponse.html index ee5c65f4..76f7659c 100644 --- a/docs/interfaces/deleteWebhookResponse.html +++ b/docs/interfaces/deleteWebhookResponse.html @@ -1,4 +1,4 @@ -deleteWebhookResponse | node-switchbot

    Interface deleteWebhookResponse

    interface deleteWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +deleteWebhookResponse | node-switchbot

    Interface deleteWebhookResponse

    interface deleteWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/device.html b/docs/interfaces/device.html index 253f95e5..e0d05df1 100644 --- a/docs/interfaces/device.html +++ b/docs/interfaces/device.html @@ -1,7 +1,7 @@ -device | node-switchbot

    Interface device

    interface device {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version?: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId +device | node-switchbot

    Interface device

    interface device {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version?: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version?: number
    +

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version?: number
    diff --git a/docs/interfaces/deviceList.html b/docs/interfaces/deviceList.html index 0f2d94e8..527954d0 100644 --- a/docs/interfaces/deviceList.html +++ b/docs/interfaces/deviceList.html @@ -1,2 +1,2 @@ -deviceList | node-switchbot

    Interface deviceList

    interface deviceList {
        device: device[];
    }

    Properties

    Properties

    device: device[]
    +deviceList | node-switchbot

    Interface deviceList

    interface deviceList {
        device: device[];
    }

    Properties

    Properties

    device: device[]
    diff --git a/docs/interfaces/deviceStatus.html b/docs/interfaces/deviceStatus.html index c623498d..bacb6e7d 100644 --- a/docs/interfaces/deviceStatus.html +++ b/docs/interfaces/deviceStatus.html @@ -1,7 +1,7 @@ -deviceStatus | node-switchbot

    Interface deviceStatus

    interface deviceStatus {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId +deviceStatus | node-switchbot

    Interface deviceStatus

    interface deviceStatus {
        deviceId: string;
        deviceName: string;
        deviceType: string;
        enableCloudService: boolean;
        hubDeviceId: string;
        version: number;
    }

    Hierarchy (View Summary)

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version: number
    +

    Properties

    deviceId: string
    deviceName: string
    deviceType: string
    enableCloudService: boolean
    hubDeviceId: string
    version: number
    diff --git a/docs/interfaces/deviceStatusRequest.html b/docs/interfaces/deviceStatusRequest.html index 39dfce05..e08b20f7 100644 --- a/docs/interfaces/deviceStatusRequest.html +++ b/docs/interfaces/deviceStatusRequest.html @@ -1,4 +1,4 @@ -deviceStatusRequest | node-switchbot

    Interface deviceStatusRequest

    interface deviceStatusRequest {
        body: deviceStatus;
        message: string;
        statusCode: number;
    }

    Properties

    body +deviceStatusRequest | node-switchbot

    Interface deviceStatusRequest

    interface deviceStatusRequest {
        body: deviceStatus;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    message: string
    statusCode: number
    +

    Properties

    message: string
    statusCode: number
    diff --git a/docs/interfaces/deviceWebhook.html b/docs/interfaces/deviceWebhook.html index ce3768ce..c34648bf 100644 --- a/docs/interfaces/deviceWebhook.html +++ b/docs/interfaces/deviceWebhook.html @@ -1,4 +1,4 @@ -deviceWebhook | node-switchbot

    Interface deviceWebhook

    interface deviceWebhook {
        context: deviceWebhookContext;
        eventType: string;
        eventVersion: string;
    }

    Properties

    context +deviceWebhook | node-switchbot

    Interface deviceWebhook

    interface deviceWebhook {
        context: deviceWebhookContext;
        eventType: string;
        eventVersion: string;
    }

    Properties

    eventType: string
    eventVersion: string
    +

    Properties

    eventType: string
    eventVersion: string
    diff --git a/docs/interfaces/deviceWebhookContext.html b/docs/interfaces/deviceWebhookContext.html index 4437eab7..7e4504c1 100644 --- a/docs/interfaces/deviceWebhookContext.html +++ b/docs/interfaces/deviceWebhookContext.html @@ -1,4 +1,4 @@ -deviceWebhookContext | node-switchbot

    Interface deviceWebhookContext

    interface deviceWebhookContext {
        deviceMac: string;
        deviceType: string;
        timeOfSample: number;
    }

    Properties

    deviceMac +deviceWebhookContext | node-switchbot

    Interface deviceWebhookContext

    interface deviceWebhookContext {
        deviceMac: string;
        deviceType: string;
        timeOfSample: number;
    }

    Properties

    deviceMac: string
    deviceType: string
    timeOfSample: number
    +

    Properties

    deviceMac: string
    deviceType: string
    timeOfSample: number
    diff --git a/docs/interfaces/devices.html b/docs/interfaces/devices.html index 93e263d6..dff43fed 100644 --- a/docs/interfaces/devices.html +++ b/docs/interfaces/devices.html @@ -1,4 +1,4 @@ -devices | node-switchbot

    Interface devices

    interface devices {
        body: body;
        message: string;
        statusCode: number;
    }

    Properties

    body +devices | node-switchbot

    Interface devices

    interface devices {
        body: body;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: body
    message: string
    statusCode: number
    +

    Properties

    body: body
    message: string
    statusCode: number
    diff --git a/docs/interfaces/infraredRemoteList.html b/docs/interfaces/infraredRemoteList.html index 7121862b..da69be1f 100644 --- a/docs/interfaces/infraredRemoteList.html +++ b/docs/interfaces/infraredRemoteList.html @@ -1,2 +1,2 @@ -infraredRemoteList | node-switchbot

    Interface infraredRemoteList

    interface infraredRemoteList {
        device: irdevice[];
    }

    Properties

    Properties

    device: irdevice[]
    +infraredRemoteList | node-switchbot

    Interface infraredRemoteList

    interface infraredRemoteList {
        device: irdevice[];
    }

    Properties

    Properties

    device: irdevice[]
    diff --git a/docs/interfaces/irdevice.html b/docs/interfaces/irdevice.html index 463871be..2726688f 100644 --- a/docs/interfaces/irdevice.html +++ b/docs/interfaces/irdevice.html @@ -1,5 +1,5 @@ -irdevice | node-switchbot

    Interface irdevice

    interface irdevice {
        deviceId?: string;
        deviceName: string;
        hubDeviceId: string;
        remoteType: string;
    }

    Properties

    deviceId? +irdevice | node-switchbot

    Interface irdevice

    interface irdevice {
        deviceId?: string;
        deviceName: string;
        hubDeviceId: string;
        remoteType: string;
    }

    Properties

    deviceId?: string
    deviceName: string
    hubDeviceId: string
    remoteType: string
    +

    Properties

    deviceId?: string
    deviceName: string
    hubDeviceId: string
    remoteType: string
    diff --git a/docs/interfaces/pushResponse.html b/docs/interfaces/pushResponse.html index a5124524..71dda500 100644 --- a/docs/interfaces/pushResponse.html +++ b/docs/interfaces/pushResponse.html @@ -1,4 +1,4 @@ -pushResponse | node-switchbot

    Interface pushResponse

    interface pushResponse {
        body: { commandId: string };
        message: string;
        statusCode: number;
    }

    Properties

    body +pushResponse | node-switchbot

    Interface pushResponse

    interface pushResponse {
        body: { commandId: string };
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: { commandId: string }
    message: string
    statusCode: number
    +

    Properties

    body: { commandId: string }
    message: string
    statusCode: number
    diff --git a/docs/interfaces/queryWebhookResponse.html b/docs/interfaces/queryWebhookResponse.html index b867b153..7691f3c4 100644 --- a/docs/interfaces/queryWebhookResponse.html +++ b/docs/interfaces/queryWebhookResponse.html @@ -1,4 +1,4 @@ -queryWebhookResponse | node-switchbot

    Interface queryWebhookResponse

    interface queryWebhookResponse {
        body: WebhookDetail[];
        message: string;
        statusCode: number;
    }

    Properties

    body +queryWebhookResponse | node-switchbot

    Interface queryWebhookResponse

    interface queryWebhookResponse {
        body: WebhookDetail[];
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    message: string
    statusCode: number
    +

    Properties

    message: string
    statusCode: number
    diff --git a/docs/interfaces/setupWebhookResponse.html b/docs/interfaces/setupWebhookResponse.html index 0307d6ff..41d22782 100644 --- a/docs/interfaces/setupWebhookResponse.html +++ b/docs/interfaces/setupWebhookResponse.html @@ -1,4 +1,4 @@ -setupWebhookResponse | node-switchbot

    Interface setupWebhookResponse

    interface setupWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +setupWebhookResponse | node-switchbot

    Interface setupWebhookResponse

    interface setupWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/switchbot.html b/docs/interfaces/switchbot.html index 7b583503..d0e26f70 100644 --- a/docs/interfaces/switchbot.html +++ b/docs/interfaces/switchbot.html @@ -1,3 +1,3 @@ -switchbot | node-switchbot

    Interface switchbot

    interface switchbot {
        discover: (
            arg0: { duration?: any; id?: string; model: string; quick: boolean },
        ) => Promise<any>;
        wait: (arg0: number) => any;
    }

    Properties

    discover +switchbot | node-switchbot

    Interface switchbot

    interface switchbot {
        discover: (
            arg0: { duration?: any; id?: string; model: string; quick: boolean },
        ) => Promise<any>;
        wait: (arg0: number) => any;
    }

    Properties

    Properties

    discover: (
        arg0: { duration?: any; id?: string; model: string; quick: boolean },
    ) => Promise<any>
    wait: (arg0: number) => any
    +

    Properties

    discover: (
        arg0: { duration?: any; id?: string; model: string; quick: boolean },
    ) => Promise<any>
    wait: (arg0: number) => any
    diff --git a/docs/interfaces/updateWebhookResponse.html b/docs/interfaces/updateWebhookResponse.html index 574442dd..47500a00 100644 --- a/docs/interfaces/updateWebhookResponse.html +++ b/docs/interfaces/updateWebhookResponse.html @@ -1,4 +1,4 @@ -updateWebhookResponse | node-switchbot

    Interface updateWebhookResponse

    interface updateWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    body +updateWebhookResponse | node-switchbot

    Interface updateWebhookResponse

    interface updateWebhookResponse {
        body: object;
        message: string;
        statusCode: number;
    }

    Properties

    Properties

    body: object
    message: string
    statusCode: number
    +

    Properties

    body: object
    message: string
    statusCode: number
    diff --git a/docs/interfaces/webhookRequest.html b/docs/interfaces/webhookRequest.html index d6701d83..81d61b34 100644 --- a/docs/interfaces/webhookRequest.html +++ b/docs/interfaces/webhookRequest.html @@ -1,4 +1,4 @@ -webhookRequest | node-switchbot

    Interface webhookRequest

    interface webhookRequest {
        action: string;
        deviceList: string;
        url: string;
    }

    Properties

    action +webhookRequest | node-switchbot

    Interface webhookRequest

    interface webhookRequest {
        action: string;
        deviceList: string;
        url: string;
    }

    Properties

    Properties

    action: string
    deviceList: string
    url: string
    +

    Properties

    action: string
    deviceList: string
    url: string
    diff --git a/docs/modules.html b/docs/modules.html index bba0f1f8..4f62b4cf 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1 @@ -node-switchbot

    node-switchbot

    Enumerations

    LogLevel
    SwitchBotBLEModel
    SwitchBotBLEModelFriendlyName
    SwitchBotBLEModelName
    SwitchBotModel

    Classes

    Advertising
    SwitchBotBLE
    SwitchbotDevice
    SwitchBotOpenAPI
    WoBlindTilt
    WoBulb
    WoCeilingLight
    WoContact
    WoCurtain
    WoHand
    WoHub2
    WoHumi
    WoIOSensorTH
    WoPlugMiniUS
    WoPresence
    WoSensorTH
    WoSmartLock
    WoSmartLockPro
    WoStrip

    Interfaces

    ad
    AdvertisementData
    body
    bodyChange
    Chars
    deleteWebhookResponse
    device
    deviceList
    devices
    deviceStatus
    deviceStatusRequest
    deviceWebhook
    deviceWebhookContext
    ErrorObject
    infraredRemoteList
    irdevice
    NobleTypes
    Params
    pushResponse
    queryWebhookResponse
    Rule
    ServiceData
    setupWebhookResponse
    switchbot
    SwitchBotBLEDevice
    updateWebhookResponse
    WebhookDetail
    webhookRequest

    Type Aliases

    batteryCirculatorFan
    batteryCirculatorFanServiceData
    batteryCirculatorFanStatus
    batteryCirculatorFanWebhookContext
    blindTilt
    blindTiltServiceData
    blindTiltStatus
    blindTiltWebhookContext
    bot
    botServiceData
    botStatus
    botWebhookContext
    ceilingLight
    ceilingLightPro
    ceilingLightProServiceData
    ceilingLightProStatus
    ceilingLightProWebhookContext
    ceilingLightServiceData
    ceilingLightStatus
    ceilingLightWebhookContext
    colorBulb
    colorBulbServiceData
    colorBulbStatus
    colorBulbWebhookContext
    contactSensor
    contactSensorServiceData
    contactSensorStatus
    contactSensorWebhookContext
    curtain
    curtain3
    curtain3ServiceData
    curtain3WebhookContext
    curtainServiceData
    curtainStatus
    curtainWebhookContext
    floorCleaningRobotS10
    floorCleaningRobotS10Status
    floorCleaningRobotS10WebhookContext
    hub2
    hub2ServiceData
    hub2Status
    hub2WebhookContext
    humidifier
    humidifier2ServiceData
    humidifier2Status
    humidifier2WebhookContext
    humidifierServiceData
    humidifierStatus
    humidifierWebhookContext
    indoorCam
    indoorCameraWebhookContext
    keypad
    keypadDetectorServiceData
    keypadTouch
    keypadTouchWebhookContext
    keypadWebhookContext
    lock
    lockPro
    lockProServiceData
    lockProStatus
    lockProWebhookContext
    lockServiceData
    lockStatus
    lockWebhookContext
    MacAddress
    meter
    meterPlus
    meterPlusServiceData
    meterPlusStatus
    meterPlusWebhookContext
    meterPro
    meterProCO2ServiceData
    meterProCO2Status
    meterProCO2WebhookContext
    meterProServiceData
    meterProStatus
    meterProWebhookContext
    meterServiceData
    meterStatus
    meterWebhookContext
    motionSensor
    motionSensorServiceData
    motionSensorStatus
    motionSensorWebhookContext
    onadvertisement
    ondiscover
    outdoorMeter
    outdoorMeterServiceData
    outdoorMeterStatus
    outdoorMeterWebhookContext
    pantiltCam
    pantiltCam2k
    panTiltCamWebhookContext
    plug
    plugMini
    plugMiniJPServiceData
    plugMiniJPWebhookContext
    plugMiniStatus
    plugMiniUSServiceData
    plugMiniUSWebhookContext
    plugStatus
    plugWebhookContext
    relaySwitch1PMServiceData
    relaySwitch1ServiceData
    remote
    robotVacuumCleanerS1
    robotVacuumCleanerS1Plus
    robotVacuumCleanerS1PlusStatus
    robotVacuumCleanerS1PlusWebhookContext
    robotVacuumCleanerS1Status
    robotVacuumCleanerS1WebhookContext
    robotVacuumCleanerServiceData
    stripLight
    stripLightServiceData
    stripLightStatus
    stripLightWebhookContext
    waterLeakDetector
    waterLeakDetectorServiceData
    waterLeakDetectorStatus
    waterLeakDetectorWebhookContext
    +node-switchbot

    node-switchbot

    Enumerations

    LogLevel
    SwitchBotBLEModel
    SwitchBotBLEModelFriendlyName
    SwitchBotBLEModelName
    SwitchBotModel

    Classes

    Advertising
    SwitchBotBLE
    SwitchbotDevice
    SwitchBotOpenAPI
    WoBlindTilt
    WoBulb
    WoCeilingLight
    WoContact
    WoCurtain
    WoHand
    WoHub2
    WoHumi
    WoIOSensorTH
    WoPlugMiniUS
    WoPresence
    WoSensorTH
    WoSmartLock
    WoSmartLockPro
    WoStrip

    Interfaces

    ad
    AdvertisementData
    body
    bodyChange
    Chars
    deleteWebhookResponse
    device
    deviceList
    devices
    deviceStatus
    deviceStatusRequest
    deviceWebhook
    deviceWebhookContext
    ErrorObject
    infraredRemoteList
    irdevice
    NobleTypes
    Params
    pushResponse
    queryWebhookResponse
    Rule
    ServiceData
    setupWebhookResponse
    switchbot
    SwitchBotBLEDevice
    updateWebhookResponse
    WebhookDetail
    webhookRequest

    Type Aliases

    batteryCirculatorFan
    batteryCirculatorFanServiceData
    batteryCirculatorFanStatus
    batteryCirculatorFanWebhookContext
    blindTilt
    blindTiltServiceData
    blindTiltStatus
    blindTiltWebhookContext
    bot
    botServiceData
    botStatus
    botWebhookContext
    ceilingLight
    ceilingLightPro
    ceilingLightProServiceData
    ceilingLightProStatus
    ceilingLightProWebhookContext
    ceilingLightServiceData
    ceilingLightStatus
    ceilingLightWebhookContext
    circulatorFanStatus
    circulatorFanWebhookContext
    colorBulb
    colorBulbServiceData
    colorBulbStatus
    colorBulbWebhookContext
    contactSensor
    contactSensorServiceData
    contactSensorStatus
    contactSensorWebhookContext
    curtain
    curtain3
    curtain3ServiceData
    curtain3WebhookContext
    curtainServiceData
    curtainStatus
    curtainWebhookContext
    floorCleaningRobotS10
    floorCleaningRobotS10Status
    floorCleaningRobotS10WebhookContext
    hub2
    hub2ServiceData
    hub2Status
    hub2WebhookContext
    humidifier
    humidifier2ServiceData
    humidifier2Status
    humidifier2WebhookContext
    humidifierServiceData
    humidifierStatus
    humidifierWebhookContext
    indoorCam
    indoorCameraWebhookContext
    keypad
    keypadDetectorServiceData
    keypadTouch
    keypadTouchWebhookContext
    keypadWebhookContext
    lock
    lockPro
    lockProServiceData
    lockProStatus
    lockProWebhookContext
    lockServiceData
    lockStatus
    lockWebhookContext
    MacAddress
    meter
    meterPlus
    meterPlusServiceData
    meterPlusStatus
    meterPlusWebhookContext
    meterPro
    meterProCO2ServiceData
    meterProCO2Status
    meterProCO2WebhookContext
    meterProServiceData
    meterProStatus
    meterProWebhookContext
    meterServiceData
    meterStatus
    meterWebhookContext
    motionSensor
    motionSensorServiceData
    motionSensorStatus
    motionSensorWebhookContext
    onadvertisement
    ondiscover
    outdoorMeter
    outdoorMeterServiceData
    outdoorMeterStatus
    outdoorMeterWebhookContext
    pantiltCam
    pantiltCam2k
    panTiltCamWebhookContext
    plug
    plugMini
    plugMiniJPServiceData
    plugMiniJPWebhookContext
    plugMiniStatus
    plugMiniUSServiceData
    plugMiniUSWebhookContext
    plugStatus
    plugWebhookContext
    relaySwitch1PMServiceData
    relaySwitch1ServiceData
    remote
    robotVacuumCleanerS1
    robotVacuumCleanerS1Plus
    robotVacuumCleanerS1PlusStatus
    robotVacuumCleanerS1PlusWebhookContext
    robotVacuumCleanerS1Status
    robotVacuumCleanerS1WebhookContext
    robotVacuumCleanerServiceData
    stripLight
    stripLightServiceData
    stripLightStatus
    stripLightWebhookContext
    waterLeakDetector
    waterLeakDetectorServiceData
    waterLeakDetectorStatus
    waterLeakDetectorWebhookContext
    diff --git a/docs/types/MacAddress.html b/docs/types/MacAddress.html index 1ab496c5..278575b1 100644 --- a/docs/types/MacAddress.html +++ b/docs/types/MacAddress.html @@ -1 +1 @@ -MacAddress | node-switchbot

    Type Alias MacAddress

    MacAddress: string
    +MacAddress | node-switchbot

    Type Alias MacAddress

    MacAddress: string
    diff --git a/docs/types/batteryCirculatorFan.html b/docs/types/batteryCirculatorFan.html index 66c85686..bdba9ae3 100644 --- a/docs/types/batteryCirculatorFan.html +++ b/docs/types/batteryCirculatorFan.html @@ -1 +1 @@ -batteryCirculatorFan | node-switchbot

    Type Alias batteryCirculatorFan

    batteryCirculatorFan: device & {}
    +batteryCirculatorFan | node-switchbot

    Type Alias batteryCirculatorFan

    batteryCirculatorFan: device & {}
    diff --git a/docs/types/batteryCirculatorFanServiceData.html b/docs/types/batteryCirculatorFanServiceData.html index acf05373..c57b648d 100644 --- a/docs/types/batteryCirculatorFanServiceData.html +++ b/docs/types/batteryCirculatorFanServiceData.html @@ -1 +1 @@ -batteryCirculatorFanServiceData | node-switchbot

    Type Alias batteryCirculatorFanServiceData

    batteryCirculatorFanServiceData: serviceData & {
        fanSpeed: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    +batteryCirculatorFanServiceData | node-switchbot

    Type Alias batteryCirculatorFanServiceData

    batteryCirculatorFanServiceData: serviceData & {
        fanSpeed: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    diff --git a/docs/types/batteryCirculatorFanStatus.html b/docs/types/batteryCirculatorFanStatus.html index 3e852ef7..d2014ca7 100644 --- a/docs/types/batteryCirculatorFanStatus.html +++ b/docs/types/batteryCirculatorFanStatus.html @@ -1 +1 @@ -batteryCirculatorFanStatus | node-switchbot

    Type Alias batteryCirculatorFanStatus

    batteryCirculatorFanStatus: deviceStatus & {
        battery: number;
        chargingStatus: string;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        verticalOscillation: string;
    }
    +batteryCirculatorFanStatus | node-switchbot

    Type Alias batteryCirculatorFanStatus

    batteryCirculatorFanStatus: deviceStatus & {
        battery: number;
        chargingStatus: string;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    diff --git a/docs/types/batteryCirculatorFanWebhookContext.html b/docs/types/batteryCirculatorFanWebhookContext.html index 23fd0980..f86d44e4 100644 --- a/docs/types/batteryCirculatorFanWebhookContext.html +++ b/docs/types/batteryCirculatorFanWebhookContext.html @@ -1 +1 @@ -batteryCirculatorFanWebhookContext | node-switchbot

    Type Alias batteryCirculatorFanWebhookContext

    batteryCirculatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        chargingStatus: "charging" | "uncharged";
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    +batteryCirculatorFanWebhookContext | node-switchbot

    Type Alias batteryCirculatorFanWebhookContext

    batteryCirculatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        chargingStatus: "charging" | "uncharged";
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    diff --git a/docs/types/blindTilt.html b/docs/types/blindTilt.html index 0f4f34dc..5aada05b 100644 --- a/docs/types/blindTilt.html +++ b/docs/types/blindTilt.html @@ -1 +1 @@ -blindTilt | node-switchbot

    Type Alias blindTilt

    blindTilt: device & {
        blindTiltDevicesIds: string[];
        calibrate: boolean;
        direction: string;
        group: boolean;
        master: boolean;
        slidePosition: number;
    }
    +blindTilt | node-switchbot

    Type Alias blindTilt

    blindTilt: device & {
        blindTiltDevicesIds: string[];
        calibrate: boolean;
        direction: string;
        group: boolean;
        master: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/blindTiltServiceData.html b/docs/types/blindTiltServiceData.html index 85557415..64a6b893 100644 --- a/docs/types/blindTiltServiceData.html +++ b/docs/types/blindTiltServiceData.html @@ -1 +1 @@ -blindTiltServiceData | node-switchbot

    Type Alias blindTiltServiceData

    blindTiltServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        inMotion: boolean;
        lightLevel: number;
        model: BlindTilt;
        modelFriendlyName: BlindTilt;
        modelName: BlindTilt;
        sequenceNumber: number;
        tilt: number;
    }
    +blindTiltServiceData | node-switchbot

    Type Alias blindTiltServiceData

    blindTiltServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        inMotion: boolean;
        lightLevel: number;
        model: BlindTilt;
        modelFriendlyName: BlindTilt;
        modelName: BlindTilt;
        sequenceNumber: number;
        tilt: number;
    }
    diff --git a/docs/types/blindTiltStatus.html b/docs/types/blindTiltStatus.html index 34936459..08acc2f3 100644 --- a/docs/types/blindTiltStatus.html +++ b/docs/types/blindTiltStatus.html @@ -1 +1 @@ -blindTiltStatus | node-switchbot

    Type Alias blindTiltStatus

    blindTiltStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        direction: string;
        lightLevel?: "bright" | "dim";
        slidePosition: string;
    }
    +blindTiltStatus | node-switchbot

    Type Alias blindTiltStatus

    blindTiltStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        direction: string;
        lightLevel?: "bright" | "dim";
        slidePosition: string;
    }
    diff --git a/docs/types/blindTiltWebhookContext.html b/docs/types/blindTiltWebhookContext.html index 69437e91..f5bb78b9 100644 --- a/docs/types/blindTiltWebhookContext.html +++ b/docs/types/blindTiltWebhookContext.html @@ -1 +1 @@ -blindTiltWebhookContext | node-switchbot

    Type Alias blindTiltWebhookContext

    blindTiltWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        direction: string;
        group: boolean;
        slidePosition: number;
        version: string;
    }
    +blindTiltWebhookContext | node-switchbot

    Type Alias blindTiltWebhookContext

    blindTiltWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        direction: string;
        group: boolean;
        slidePosition: number;
        version: string;
    }
    diff --git a/docs/types/bot.html b/docs/types/bot.html index ccfa8fa2..8ce76dae 100644 --- a/docs/types/bot.html +++ b/docs/types/bot.html @@ -1 +1 @@ -bot | node-switchbot

    Type Alias bot

    bot: device & {}
    +bot | node-switchbot

    Type Alias bot

    bot: device & {}
    diff --git a/docs/types/botServiceData.html b/docs/types/botServiceData.html index 5e17f2b1..ddeb283b 100644 --- a/docs/types/botServiceData.html +++ b/docs/types/botServiceData.html @@ -1 +1 @@ -botServiceData | node-switchbot

    Type Alias botServiceData

    botServiceData: serviceData & {
        battery: number;
        mode: boolean;
        model: Bot;
        modelFriendlyName: Bot;
        modelName: Bot;
        state: boolean;
    }
    +botServiceData | node-switchbot

    Type Alias botServiceData

    botServiceData: serviceData & {
        battery: number;
        mode: boolean;
        model: Bot;
        modelFriendlyName: Bot;
        modelName: Bot;
        state: boolean;
    }
    diff --git a/docs/types/botStatus.html b/docs/types/botStatus.html index 9decb902..99253077 100644 --- a/docs/types/botStatus.html +++ b/docs/types/botStatus.html @@ -1 +1 @@ -botStatus | node-switchbot

    Type Alias botStatus

    botStatus: deviceStatus & {
        battery: number;
        mode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    +botStatus | node-switchbot

    Type Alias botStatus

    botStatus: deviceStatus & {
        battery: number;
        mode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    diff --git a/docs/types/botWebhookContext.html b/docs/types/botWebhookContext.html index 532f6fe3..f87fd633 100644 --- a/docs/types/botWebhookContext.html +++ b/docs/types/botWebhookContext.html @@ -1 +1 @@ -botWebhookContext | node-switchbot

    Type Alias botWebhookContext

    botWebhookContext: deviceWebhookContext & {
        battery: number;
        deviceMode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    +botWebhookContext | node-switchbot

    Type Alias botWebhookContext

    botWebhookContext: deviceWebhookContext & {
        battery: number;
        deviceMode: "pressMode" | "switchMode" | "customizeMode";
        power: string;
    }
    diff --git a/docs/types/ceilingLight.html b/docs/types/ceilingLight.html index dbb2d93c..56f24784 100644 --- a/docs/types/ceilingLight.html +++ b/docs/types/ceilingLight.html @@ -1 +1 @@ -ceilingLight | node-switchbot

    Type Alias ceilingLight

    ceilingLight: device & {}
    +ceilingLight | node-switchbot

    Type Alias ceilingLight

    ceilingLight: device & {}
    diff --git a/docs/types/ceilingLightPro.html b/docs/types/ceilingLightPro.html index adbad262..af51e71d 100644 --- a/docs/types/ceilingLightPro.html +++ b/docs/types/ceilingLightPro.html @@ -1 +1 @@ -ceilingLightPro | node-switchbot

    Type Alias ceilingLightPro

    ceilingLightPro: device & {}
    +ceilingLightPro | node-switchbot

    Type Alias ceilingLightPro

    ceilingLightPro: device & {}
    diff --git a/docs/types/ceilingLightProServiceData.html b/docs/types/ceilingLightProServiceData.html index 6569ad98..09eaf996 100644 --- a/docs/types/ceilingLightProServiceData.html +++ b/docs/types/ceilingLightProServiceData.html @@ -1 +1 @@ -ceilingLightProServiceData | node-switchbot

    Type Alias ceilingLightProServiceData

    ceilingLightProServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLightPro;
        modelFriendlyName: CeilingLightPro;
        modelName: CeilingLightPro;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +ceilingLightProServiceData | node-switchbot

    Type Alias ceilingLightProServiceData

    ceilingLightProServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLightPro;
        modelFriendlyName: CeilingLightPro;
        modelName: CeilingLightPro;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/ceilingLightProStatus.html b/docs/types/ceilingLightProStatus.html index 23cb4c3a..095c07fd 100644 --- a/docs/types/ceilingLightProStatus.html +++ b/docs/types/ceilingLightProStatus.html @@ -1 +1 @@ -ceilingLightProStatus | node-switchbot

    Type Alias ceilingLightProStatus

    ceilingLightProStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    +ceilingLightProStatus | node-switchbot

    Type Alias ceilingLightProStatus

    ceilingLightProStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    diff --git a/docs/types/ceilingLightProWebhookContext.html b/docs/types/ceilingLightProWebhookContext.html index da7e87e3..b9600803 100644 --- a/docs/types/ceilingLightProWebhookContext.html +++ b/docs/types/ceilingLightProWebhookContext.html @@ -1 +1 @@ -ceilingLightProWebhookContext | node-switchbot

    Type Alias ceilingLightProWebhookContext

    ceilingLightProWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +ceilingLightProWebhookContext | node-switchbot

    Type Alias ceilingLightProWebhookContext

    ceilingLightProWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/ceilingLightServiceData.html b/docs/types/ceilingLightServiceData.html index e0e0f12f..7e482599 100644 --- a/docs/types/ceilingLightServiceData.html +++ b/docs/types/ceilingLightServiceData.html @@ -1 +1 @@ -ceilingLightServiceData | node-switchbot

    Type Alias ceilingLightServiceData

    ceilingLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLight;
        modelFriendlyName: CeilingLight;
        modelName: CeilingLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +ceilingLightServiceData | node-switchbot

    Type Alias ceilingLightServiceData

    ceilingLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: CeilingLight;
        modelFriendlyName: CeilingLight;
        modelName: CeilingLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/ceilingLightStatus.html b/docs/types/ceilingLightStatus.html index bd6023c4..3d35a15e 100644 --- a/docs/types/ceilingLightStatus.html +++ b/docs/types/ceilingLightStatus.html @@ -1 +1 @@ -ceilingLightStatus | node-switchbot

    Type Alias ceilingLightStatus

    ceilingLightStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    +ceilingLightStatus | node-switchbot

    Type Alias ceilingLightStatus

    ceilingLightStatus: deviceStatus & {
        brightness: number;
        colorTemperature: number;
        power: boolean;
    }
    diff --git a/docs/types/ceilingLightWebhookContext.html b/docs/types/ceilingLightWebhookContext.html index e15b663f..f9b10e8c 100644 --- a/docs/types/ceilingLightWebhookContext.html +++ b/docs/types/ceilingLightWebhookContext.html @@ -1 +1 @@ -ceilingLightWebhookContext | node-switchbot

    Type Alias ceilingLightWebhookContext

    ceilingLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +ceilingLightWebhookContext | node-switchbot

    Type Alias ceilingLightWebhookContext

    ceilingLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/circulatorFanStatus.html b/docs/types/circulatorFanStatus.html new file mode 100644 index 00000000..3cd80aa7 --- /dev/null +++ b/docs/types/circulatorFanStatus.html @@ -0,0 +1 @@ +circulatorFanStatus | node-switchbot

    Type Alias circulatorFanStatus

    circulatorFanStatus: deviceStatus & {
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: number;
        oscillation: string;
        power: string;
        version: string;
        verticalOscillation: string;
    }
    diff --git a/docs/types/circulatorFanWebhookContext.html b/docs/types/circulatorFanWebhookContext.html new file mode 100644 index 00000000..1400581f --- /dev/null +++ b/docs/types/circulatorFanWebhookContext.html @@ -0,0 +1 @@ +circulatorFanWebhookContext | node-switchbot

    Type Alias circulatorFanWebhookContext

    circulatorFanWebhookContext: deviceWebhookContext & {
        battery: number;
        fanSpeed: number;
        mode: "direct" | "natural" | "sleep" | "baby";
        nightStatus: "off" | 1 | 2;
        oscillation: "on" | "off";
        powerState: "ON" | "OFF";
        version: string;
        verticalOscillation: "on" | "off";
    }
    diff --git a/docs/types/colorBulb.html b/docs/types/colorBulb.html index 7bb8bf2d..4357edc8 100644 --- a/docs/types/colorBulb.html +++ b/docs/types/colorBulb.html @@ -1 +1 @@ -colorBulb | node-switchbot

    Type Alias colorBulb

    colorBulb: device & {}
    +colorBulb | node-switchbot

    Type Alias colorBulb

    colorBulb: device & {}
    diff --git a/docs/types/colorBulbServiceData.html b/docs/types/colorBulbServiceData.html index 6df4e349..41352c2a 100644 --- a/docs/types/colorBulbServiceData.html +++ b/docs/types/colorBulbServiceData.html @@ -1 +1 @@ -colorBulbServiceData | node-switchbot

    Type Alias colorBulbServiceData

    colorBulbServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: ColorBulb;
        modelFriendlyName: ColorBulb;
        modelName: ColorBulb;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +colorBulbServiceData | node-switchbot

    Type Alias colorBulbServiceData

    colorBulbServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        color_temperature: number;
        delay: number;
        green: number;
        loop_index: number;
        model: ColorBulb;
        modelFriendlyName: ColorBulb;
        modelName: ColorBulb;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/colorBulbStatus.html b/docs/types/colorBulbStatus.html index 6dfc6aef..d34d0b97 100644 --- a/docs/types/colorBulbStatus.html +++ b/docs/types/colorBulbStatus.html @@ -1 +1 @@ -colorBulbStatus | node-switchbot

    Type Alias colorBulbStatus

    colorBulbStatus: deviceStatus & {
        brightness: number;
        color: string;
        colorTemperature: number;
        power: string;
    }
    +colorBulbStatus | node-switchbot

    Type Alias colorBulbStatus

    colorBulbStatus: deviceStatus & {
        brightness: number;
        color: string;
        colorTemperature: number;
        power: string;
    }
    diff --git a/docs/types/colorBulbWebhookContext.html b/docs/types/colorBulbWebhookContext.html index f43aaef8..eab3649c 100644 --- a/docs/types/colorBulbWebhookContext.html +++ b/docs/types/colorBulbWebhookContext.html @@ -1 +1 @@ -colorBulbWebhookContext | node-switchbot

    Type Alias colorBulbWebhookContext

    colorBulbWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    +colorBulbWebhookContext | node-switchbot

    Type Alias colorBulbWebhookContext

    colorBulbWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        colorTemperature: number;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/contactSensor.html b/docs/types/contactSensor.html index 5dfde45b..cf436dc1 100644 --- a/docs/types/contactSensor.html +++ b/docs/types/contactSensor.html @@ -1 +1 @@ -contactSensor | node-switchbot

    Type Alias contactSensor

    contactSensor: device & {}
    +contactSensor | node-switchbot

    Type Alias contactSensor

    contactSensor: device & {}
    diff --git a/docs/types/contactSensorServiceData.html b/docs/types/contactSensorServiceData.html index a3d8a6f1..8a342193 100644 --- a/docs/types/contactSensorServiceData.html +++ b/docs/types/contactSensorServiceData.html @@ -1 +1 @@ -contactSensorServiceData | node-switchbot

    Type Alias contactSensorServiceData

    contactSensorServiceData: serviceData & {
        battery: number;
        button_count: number;
        contact_open: boolean;
        contact_timeout: boolean;
        doorState: string;
        lightLevel: string;
        model: ContactSensor;
        modelFriendlyName: ContactSensor;
        modelName: ContactSensor;
        movement: boolean;
        tested: boolean;
    }
    +contactSensorServiceData | node-switchbot

    Type Alias contactSensorServiceData

    contactSensorServiceData: serviceData & {
        battery: number;
        button_count: number;
        contact_open: boolean;
        contact_timeout: boolean;
        doorState: string;
        lightLevel: string;
        model: ContactSensor;
        modelFriendlyName: ContactSensor;
        modelName: ContactSensor;
        movement: boolean;
        tested: boolean;
    }
    diff --git a/docs/types/contactSensorStatus.html b/docs/types/contactSensorStatus.html index d7dfc550..fe085b83 100644 --- a/docs/types/contactSensorStatus.html +++ b/docs/types/contactSensorStatus.html @@ -1 +1 @@ -contactSensorStatus | node-switchbot

    Type Alias contactSensorStatus

    contactSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
        openState: "open" | "close" | "timeOutNotClose";
    }
    +contactSensorStatus | node-switchbot

    Type Alias contactSensorStatus

    contactSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
        openState: "open" | "close" | "timeOutNotClose";
    }
    diff --git a/docs/types/contactSensorWebhookContext.html b/docs/types/contactSensorWebhookContext.html index 957f427a..302d95bd 100644 --- a/docs/types/contactSensorWebhookContext.html +++ b/docs/types/contactSensorWebhookContext.html @@ -1 +1 @@ -contactSensorWebhookContext | node-switchbot

    Type Alias contactSensorWebhookContext

    contactSensorWebhookContext: deviceWebhookContext & {
        brightness: "dim" | "bright";
        detectionState: "NOT_DETECTED" | "DETECTED";
        doorMode: "IN_DOOR" | "OUT_DOOR";
        openState: "open" | "close" | "timeOutNotClose";
    }
    +contactSensorWebhookContext | node-switchbot

    Type Alias contactSensorWebhookContext

    contactSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        brightness: "dim" | "bright";
        detectionState: "NOT_DETECTED" | "DETECTED";
        doorMode: "IN_DOOR" | "OUT_DOOR";
        openState: "open" | "close" | "timeOutNotClose";
    }
    diff --git a/docs/types/curtain.html b/docs/types/curtain.html index 55a5411d..a7daf215 100644 --- a/docs/types/curtain.html +++ b/docs/types/curtain.html @@ -1 +1 @@ -curtain | node-switchbot

    Type Alias curtain

    curtain: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection: string;
    }
    +curtain | node-switchbot

    Type Alias curtain

    curtain: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection: string;
    }
    diff --git a/docs/types/curtain3.html b/docs/types/curtain3.html index 45425881..a9be2f42 100644 --- a/docs/types/curtain3.html +++ b/docs/types/curtain3.html @@ -1 +1 @@ -curtain3 | node-switchbot

    Type Alias curtain3

    curtain3: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection?: string;
    }
    +curtain3 | node-switchbot

    Type Alias curtain3

    curtain3: device & {
        calibrate: boolean;
        curtainDevicesIds: string[];
        group: boolean;
        master: boolean;
        openDirection?: string;
    }
    diff --git a/docs/types/curtain3ServiceData.html b/docs/types/curtain3ServiceData.html index 2090b2a4..c1daa7fd 100644 --- a/docs/types/curtain3ServiceData.html +++ b/docs/types/curtain3ServiceData.html @@ -1 +1 @@ -curtain3ServiceData | node-switchbot

    Type Alias curtain3ServiceData

    curtain3ServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain3;
        modelFriendlyName: Curtain3;
        modelName: Curtain3;
        position: number;
    }
    +curtain3ServiceData | node-switchbot

    Type Alias curtain3ServiceData

    curtain3ServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain3;
        modelFriendlyName: Curtain3;
        modelName: Curtain3;
        position: number;
    }
    diff --git a/docs/types/curtain3WebhookContext.html b/docs/types/curtain3WebhookContext.html index ad68bb58..59370cc6 100644 --- a/docs/types/curtain3WebhookContext.html +++ b/docs/types/curtain3WebhookContext.html @@ -1 +1 @@ -curtain3WebhookContext | node-switchbot

    Type Alias curtain3WebhookContext

    curtain3WebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    +curtain3WebhookContext | node-switchbot

    Type Alias curtain3WebhookContext

    curtain3WebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/curtainServiceData.html b/docs/types/curtainServiceData.html index b18d7294..1285a92e 100644 --- a/docs/types/curtainServiceData.html +++ b/docs/types/curtainServiceData.html @@ -1 +1 @@ -curtainServiceData | node-switchbot

    Type Alias curtainServiceData

    curtainServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain;
        modelFriendlyName: Curtain;
        modelName: Curtain;
        position: number;
    }
    +curtainServiceData | node-switchbot

    Type Alias curtainServiceData

    curtainServiceData: serviceData & {
        battery: number;
        calibration: boolean;
        deviceChain: number;
        inMotion: boolean;
        lightLevel: number;
        model: Curtain;
        modelFriendlyName: Curtain;
        modelName: Curtain;
        position: number;
    }
    diff --git a/docs/types/curtainStatus.html b/docs/types/curtainStatus.html index e9350038..e49ece14 100644 --- a/docs/types/curtainStatus.html +++ b/docs/types/curtainStatus.html @@ -1 +1 @@ -curtainStatus | node-switchbot

    Type Alias curtainStatus

    curtainStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        lightLevel?: "bright" | "dim";
        moving: boolean;
        slidePosition: number;
    }
    +curtainStatus | node-switchbot

    Type Alias curtainStatus

    curtainStatus: deviceStatus & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        lightLevel?: "bright" | "dim";
        moving: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/curtainWebhookContext.html b/docs/types/curtainWebhookContext.html index ab038d1c..97c6a28d 100644 --- a/docs/types/curtainWebhookContext.html +++ b/docs/types/curtainWebhookContext.html @@ -1 +1 @@ -curtainWebhookContext | node-switchbot

    Type Alias curtainWebhookContext

    curtainWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    +curtainWebhookContext | node-switchbot

    Type Alias curtainWebhookContext

    curtainWebhookContext: deviceWebhookContext & {
        battery: number;
        calibrate: boolean;
        group: boolean;
        slidePosition: number;
    }
    diff --git a/docs/types/floorCleaningRobotS10.html b/docs/types/floorCleaningRobotS10.html index ad6e237c..e9c0c479 100644 --- a/docs/types/floorCleaningRobotS10.html +++ b/docs/types/floorCleaningRobotS10.html @@ -1 +1 @@ -floorCleaningRobotS10 | node-switchbot

    Type Alias floorCleaningRobotS10

    floorCleaningRobotS10: device & {}
    +floorCleaningRobotS10 | node-switchbot

    Type Alias floorCleaningRobotS10

    floorCleaningRobotS10: device & {}
    diff --git a/docs/types/floorCleaningRobotS10Status.html b/docs/types/floorCleaningRobotS10Status.html index 664ef05b..742750d7 100644 --- a/docs/types/floorCleaningRobotS10Status.html +++ b/docs/types/floorCleaningRobotS10Status.html @@ -1 +1 @@ -floorCleaningRobotS10Status | node-switchbot

    Type Alias floorCleaningRobotS10Status

    floorCleaningRobotS10Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        taskType: string;
        waterBaseBattery: number;
        workingStatus: string;
    }
    +floorCleaningRobotS10Status | node-switchbot

    Type Alias floorCleaningRobotS10Status

    floorCleaningRobotS10Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        taskType: string;
        waterBaseBattery: number;
        workingStatus: string;
    }
    diff --git a/docs/types/floorCleaningRobotS10WebhookContext.html b/docs/types/floorCleaningRobotS10WebhookContext.html index b9eb0a35..9e72bda8 100644 --- a/docs/types/floorCleaningRobotS10WebhookContext.html +++ b/docs/types/floorCleaningRobotS10WebhookContext.html @@ -1 +1 @@ -floorCleaningRobotS10WebhookContext | node-switchbot

    Type Alias floorCleaningRobotS10WebhookContext

    floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        taskType:
            | "standBy"
            | "explore"
            | "cleanAll"
            | "cleanArea"
            | "cleanRoom"
            | "fillWater"
            | "deepWashing"
            | "backToCharge"
            | "markingWaterBase"
            | "drying"
            | "collectDust"
            | "remoteControl"
            | "cleanWithExplorer"
            | "fillWaterForHumi"
            | "markingHumi";
        waterBaseBattery: number;
        workingStatus: | "Standby"
        | "Clearing"
        | "Paused"
        | "GotoChargeBase"
        | "Charging"
        | "ChargeDone"
        | "Dormant"
        | "InTrouble"
        | "InRemoteControl"
        | "InDustCollecting";
    }
    +floorCleaningRobotS10WebhookContext | node-switchbot

    Type Alias floorCleaningRobotS10WebhookContext

    floorCleaningRobotS10WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        taskType:
            | "standBy"
            | "explore"
            | "cleanAll"
            | "cleanArea"
            | "cleanRoom"
            | "fillWater"
            | "deepWashing"
            | "backToCharge"
            | "markingWaterBase"
            | "drying"
            | "collectDust"
            | "remoteControl"
            | "cleanWithExplorer"
            | "fillWaterForHumi"
            | "markingHumi";
        waterBaseBattery: number;
        workingStatus: | "Standby"
        | "Clearing"
        | "Paused"
        | "GotoChargeBase"
        | "Charging"
        | "ChargeDone"
        | "Dormant"
        | "InTrouble"
        | "InRemoteControl"
        | "InDustCollecting";
    }
    diff --git a/docs/types/hub2.html b/docs/types/hub2.html index c98782b2..1fc579de 100644 --- a/docs/types/hub2.html +++ b/docs/types/hub2.html @@ -1 +1 @@ -hub2 | node-switchbot

    Type Alias hub2

    hub2: device & {}
    +hub2 | node-switchbot

    Type Alias hub2

    hub2: device & {}
    diff --git a/docs/types/hub2ServiceData.html b/docs/types/hub2ServiceData.html index 0944a673..c21f75f2 100644 --- a/docs/types/hub2ServiceData.html +++ b/docs/types/hub2ServiceData.html @@ -1 +1 @@ -hub2ServiceData | node-switchbot

    Type Alias hub2ServiceData

    hub2ServiceData: serviceData & {
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        lightLevel: number;
        model: Hub2;
        modelFriendlyName: Hub2;
        modelName: Hub2;
    }
    +hub2ServiceData | node-switchbot

    Type Alias hub2ServiceData

    hub2ServiceData: serviceData & {
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        lightLevel: number;
        model: Hub2;
        modelFriendlyName: Hub2;
        modelName: Hub2;
    }
    diff --git a/docs/types/hub2Status.html b/docs/types/hub2Status.html index b7ab98a5..18b41142 100644 --- a/docs/types/hub2Status.html +++ b/docs/types/hub2Status.html @@ -1 +1 @@ -hub2Status | node-switchbot

    Type Alias hub2Status

    hub2Status: deviceStatus & {
        humidity: number;
        lightLevel: number;
        temperature: number;
    }
    +hub2Status | node-switchbot

    Type Alias hub2Status

    hub2Status: deviceStatus & {
        humidity: number;
        lightLevel: number;
        temperature: number;
    }
    diff --git a/docs/types/hub2WebhookContext.html b/docs/types/hub2WebhookContext.html index 7b036e7c..b03754a8 100644 --- a/docs/types/hub2WebhookContext.html +++ b/docs/types/hub2WebhookContext.html @@ -1 +1 @@ -hub2WebhookContext | node-switchbot

    Type Alias hub2WebhookContext

    hub2WebhookContext: deviceWebhookContext & {
        humidity: number;
        lightLevel: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +hub2WebhookContext | node-switchbot

    Type Alias hub2WebhookContext

    hub2WebhookContext: deviceWebhookContext & {
        humidity: number;
        lightLevel: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/humidifier.html b/docs/types/humidifier.html index 072b720f..6b4c8998 100644 --- a/docs/types/humidifier.html +++ b/docs/types/humidifier.html @@ -1 +1 @@ -humidifier | node-switchbot

    Type Alias humidifier

    humidifier: device & {}
    +humidifier | node-switchbot

    Type Alias humidifier

    humidifier: device & {}
    diff --git a/docs/types/humidifier2ServiceData.html b/docs/types/humidifier2ServiceData.html index 600d4e18..b090c31d 100644 --- a/docs/types/humidifier2ServiceData.html +++ b/docs/types/humidifier2ServiceData.html @@ -1 +1 @@ -humidifier2ServiceData | node-switchbot

    Type Alias humidifier2ServiceData

    humidifier2ServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier2;
        modelFriendlyName: Humidifier2;
        modelName: Humidifier2;
        onState: boolean;
        percentage: number;
    }
    +humidifier2ServiceData | node-switchbot

    Type Alias humidifier2ServiceData

    humidifier2ServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier2;
        modelFriendlyName: Humidifier2;
        modelName: Humidifier2;
        onState: boolean;
        percentage: number;
    }
    diff --git a/docs/types/humidifier2Status.html b/docs/types/humidifier2Status.html index a9e825ca..e526b275 100644 --- a/docs/types/humidifier2Status.html +++ b/docs/types/humidifier2Status.html @@ -1 +1 @@ -humidifier2Status | node-switchbot

    Type Alias humidifier2Status

    humidifier2Status: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    +humidifier2Status | node-switchbot

    Type Alias humidifier2Status

    humidifier2Status: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    diff --git a/docs/types/humidifier2WebhookContext.html b/docs/types/humidifier2WebhookContext.html index 0d274c1d..b54a66b9 100644 --- a/docs/types/humidifier2WebhookContext.html +++ b/docs/types/humidifier2WebhookContext.html @@ -1 +1 @@ -humidifier2WebhookContext | node-switchbot

    Type Alias humidifier2WebhookContext

    humidifier2WebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +humidifier2WebhookContext | node-switchbot

    Type Alias humidifier2WebhookContext

    humidifier2WebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/humidifierServiceData.html b/docs/types/humidifierServiceData.html index 97ab7b51..7aaa7def 100644 --- a/docs/types/humidifierServiceData.html +++ b/docs/types/humidifierServiceData.html @@ -1 +1 @@ -humidifierServiceData | node-switchbot

    Type Alias humidifierServiceData

    humidifierServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier;
        modelFriendlyName: Humidifier;
        modelName: Humidifier;
        onState: boolean;
        percentage: number;
    }
    +humidifierServiceData | node-switchbot

    Type Alias humidifierServiceData

    humidifierServiceData: serviceData & {
        autoMode: boolean;
        humidity: number;
        model: Humidifier;
        modelFriendlyName: Humidifier;
        modelName: Humidifier;
        onState: boolean;
        percentage: number;
    }
    diff --git a/docs/types/humidifierStatus.html b/docs/types/humidifierStatus.html index b0a5d0a9..ecde48b6 100644 --- a/docs/types/humidifierStatus.html +++ b/docs/types/humidifierStatus.html @@ -1 +1 @@ -humidifierStatus | node-switchbot

    Type Alias humidifierStatus

    humidifierStatus: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    +humidifierStatus | node-switchbot

    Type Alias humidifierStatus

    humidifierStatus: deviceStatus & {
        auto: boolean;
        childLock: boolean;
        humidity: number;
        lackWater: boolean;
        nebulizationEfficiency: number;
        power: string;
        sound: boolean;
        temperature: number;
    }
    diff --git a/docs/types/humidifierWebhookContext.html b/docs/types/humidifierWebhookContext.html index 53d50f96..ff9dd41e 100644 --- a/docs/types/humidifierWebhookContext.html +++ b/docs/types/humidifierWebhookContext.html @@ -1 +1 @@ -humidifierWebhookContext | node-switchbot

    Type Alias humidifierWebhookContext

    humidifierWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +humidifierWebhookContext | node-switchbot

    Type Alias humidifierWebhookContext

    humidifierWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/indoorCam.html b/docs/types/indoorCam.html index 6f0e807b..35d13939 100644 --- a/docs/types/indoorCam.html +++ b/docs/types/indoorCam.html @@ -1 +1 @@ -indoorCam | node-switchbot

    Type Alias indoorCam

    indoorCam: device & {}
    +indoorCam | node-switchbot

    Type Alias indoorCam

    indoorCam: device & {}
    diff --git a/docs/types/indoorCameraWebhookContext.html b/docs/types/indoorCameraWebhookContext.html index 381c932d..aa80dfec 100644 --- a/docs/types/indoorCameraWebhookContext.html +++ b/docs/types/indoorCameraWebhookContext.html @@ -1 +1 @@ -indoorCameraWebhookContext | node-switchbot

    Type Alias indoorCameraWebhookContext

    indoorCameraWebhookContext: deviceWebhookContext & {
        detectionState: "DETECTED";
    }
    +indoorCameraWebhookContext | node-switchbot

    Type Alias indoorCameraWebhookContext

    indoorCameraWebhookContext: deviceWebhookContext & {
        detectionState: "DETECTED";
    }
    diff --git a/docs/types/keypad.html b/docs/types/keypad.html index 5022461d..38dd26a2 100644 --- a/docs/types/keypad.html +++ b/docs/types/keypad.html @@ -1 +1 @@ -keypad | node-switchbot

    Type Alias keypad

    keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
    +keypad | node-switchbot

    Type Alias keypad

    keypad: device & { keyList: keyList; lockDeviceId: string; remoteType: string }
    diff --git a/docs/types/keypadDetectorServiceData.html b/docs/types/keypadDetectorServiceData.html index 37aaab12..70be76a1 100644 --- a/docs/types/keypadDetectorServiceData.html +++ b/docs/types/keypadDetectorServiceData.html @@ -1 +1 @@ -keypadDetectorServiceData | node-switchbot

    Type Alias keypadDetectorServiceData

    keypadDetectorServiceData: serviceData & {
        battery: number;
        event: boolean;
        low_battery: boolean;
        model: Keypad;
        modelFriendlyName: Keypad;
        modelName: Keypad;
        tampered: boolean;
    }
    +keypadDetectorServiceData | node-switchbot

    Type Alias keypadDetectorServiceData

    keypadDetectorServiceData: serviceData & {
        battery: number;
        event: boolean;
        low_battery: boolean;
        model: Keypad;
        modelFriendlyName: Keypad;
        modelName: Keypad;
        tampered: boolean;
    }
    diff --git a/docs/types/keypadTouch.html b/docs/types/keypadTouch.html index 0a9ac34d..ad622984 100644 --- a/docs/types/keypadTouch.html +++ b/docs/types/keypadTouch.html @@ -1 +1 @@ -keypadTouch | node-switchbot

    Type Alias keypadTouch

    keypadTouch: device & {
        keyList: keyList;
        lockDeviceId: string;
        remoteType: string;
    }
    +keypadTouch | node-switchbot

    Type Alias keypadTouch

    keypadTouch: device & {
        keyList: keyList;
        lockDeviceId: string;
        remoteType: string;
    }
    diff --git a/docs/types/keypadTouchWebhookContext.html b/docs/types/keypadTouchWebhookContext.html index 5a2a94e9..9b5dcbf2 100644 --- a/docs/types/keypadTouchWebhookContext.html +++ b/docs/types/keypadTouchWebhookContext.html @@ -1 +1 @@ -keypadTouchWebhookContext | node-switchbot

    Type Alias keypadTouchWebhookContext

    keypadTouchWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    +keypadTouchWebhookContext | node-switchbot

    Type Alias keypadTouchWebhookContext

    keypadTouchWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    diff --git a/docs/types/keypadWebhookContext.html b/docs/types/keypadWebhookContext.html index 4e8e9644..5407687d 100644 --- a/docs/types/keypadWebhookContext.html +++ b/docs/types/keypadWebhookContext.html @@ -1 +1 @@ -keypadWebhookContext | node-switchbot

    Type Alias keypadWebhookContext

    keypadWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    +keypadWebhookContext | node-switchbot

    Type Alias keypadWebhookContext

    keypadWebhookContext: deviceWebhookContext & {
        commandId: string;
        eventName: "createKey" | "deleteKey";
        result: "success" | "failed" | "timeout";
    }
    diff --git a/docs/types/lock.html b/docs/types/lock.html index b5ce5b5e..b46cce4b 100644 --- a/docs/types/lock.html +++ b/docs/types/lock.html @@ -1 +1 @@ -lock | node-switchbot

    Type Alias lock

    lock: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    +lock | node-switchbot

    Type Alias lock

    lock: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    diff --git a/docs/types/lockPro.html b/docs/types/lockPro.html index b81229ac..73c14038 100644 --- a/docs/types/lockPro.html +++ b/docs/types/lockPro.html @@ -1 +1 @@ -lockPro | node-switchbot

    Type Alias lockPro

    lockPro: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    +lockPro | node-switchbot

    Type Alias lockPro

    lockPro: device & {
        group: boolean;
        groupName: string;
        lockDevicesIds: string[];
        master: boolean;
    }
    diff --git a/docs/types/lockProServiceData.html b/docs/types/lockProServiceData.html index 36830794..90c1f673 100644 --- a/docs/types/lockProServiceData.html +++ b/docs/types/lockProServiceData.html @@ -1 +1 @@ -lockProServiceData | node-switchbot

    Type Alias lockProServiceData

    lockProServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: LockPro;
        modelFriendlyName: LockPro;
        modelName: LockPro;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    +lockProServiceData | node-switchbot

    Type Alias lockProServiceData

    lockProServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: LockPro;
        modelFriendlyName: LockPro;
        modelName: LockPro;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    diff --git a/docs/types/lockProStatus.html b/docs/types/lockProStatus.html index 7c69cea0..511ca85d 100644 --- a/docs/types/lockProStatus.html +++ b/docs/types/lockProStatus.html @@ -1 +1 @@ -lockProStatus | node-switchbot

    Type Alias lockProStatus

    lockProStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    +lockProStatus | node-switchbot

    Type Alias lockProStatus

    lockProStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    diff --git a/docs/types/lockProWebhookContext.html b/docs/types/lockProWebhookContext.html index d6fc8731..5572d304 100644 --- a/docs/types/lockProWebhookContext.html +++ b/docs/types/lockProWebhookContext.html @@ -1 +1 @@ -lockProWebhookContext | node-switchbot

    Type Alias lockProWebhookContext

    lockProWebhookContext: deviceWebhookContext & {
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    +lockProWebhookContext | node-switchbot

    Type Alias lockProWebhookContext

    lockProWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    diff --git a/docs/types/lockServiceData.html b/docs/types/lockServiceData.html index 699726d4..2fe373c7 100644 --- a/docs/types/lockServiceData.html +++ b/docs/types/lockServiceData.html @@ -1 +1 @@ -lockServiceData | node-switchbot

    Type Alias lockServiceData

    lockServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: Lock;
        modelFriendlyName: Lock;
        modelName: Lock;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    +lockServiceData | node-switchbot

    Type Alias lockServiceData

    lockServiceData: serviceData & {
        auto_lock_paused: boolean;
        battery: number;
        calibration: boolean;
        door_open: boolean;
        double_lock_mode: boolean;
        model: Lock;
        modelFriendlyName: Lock;
        modelName: Lock;
        night_latch: boolean;
        status: string;
        unclosed_alarm: boolean;
        unlocked_alarm: boolean;
        update_from_secondary_lock: boolean;
    }
    diff --git a/docs/types/lockStatus.html b/docs/types/lockStatus.html index d5a5b867..1f024ae3 100644 --- a/docs/types/lockStatus.html +++ b/docs/types/lockStatus.html @@ -1 +1 @@ -lockStatus | node-switchbot

    Type Alias lockStatus

    lockStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    +lockStatus | node-switchbot

    Type Alias lockStatus

    lockStatus: deviceStatus & {
        battery: number;
        doorState: string;
        lockState: string;
        moveDetected: boolean;
    }
    diff --git a/docs/types/lockWebhookContext.html b/docs/types/lockWebhookContext.html index 8b8c55c8..ecfbbeb9 100644 --- a/docs/types/lockWebhookContext.html +++ b/docs/types/lockWebhookContext.html @@ -1 +1 @@ -lockWebhookContext | node-switchbot

    Type Alias lockWebhookContext

    lockWebhookContext: deviceWebhookContext & {
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    +lockWebhookContext | node-switchbot

    Type Alias lockWebhookContext

    lockWebhookContext: deviceWebhookContext & {
        battery: number;
        lockState: "UNLOCKED" | "LOCKED" | "JAMMED";
    }
    diff --git a/docs/types/meter.html b/docs/types/meter.html index 1b227fb2..c51626e6 100644 --- a/docs/types/meter.html +++ b/docs/types/meter.html @@ -1 +1 @@ -meter | node-switchbot

    Type Alias meter

    meter: device & {}
    +meter | node-switchbot

    Type Alias meter

    meter: device & {}
    diff --git a/docs/types/meterPlus.html b/docs/types/meterPlus.html index c95c106a..c2f3c0ab 100644 --- a/docs/types/meterPlus.html +++ b/docs/types/meterPlus.html @@ -1 +1 @@ -meterPlus | node-switchbot

    Type Alias meterPlus

    meterPlus: device & {}
    +meterPlus | node-switchbot

    Type Alias meterPlus

    meterPlus: device & {}
    diff --git a/docs/types/meterPlusServiceData.html b/docs/types/meterPlusServiceData.html index d29cbce9..ea8b648c 100644 --- a/docs/types/meterPlusServiceData.html +++ b/docs/types/meterPlusServiceData.html @@ -1 +1 @@ -meterPlusServiceData | node-switchbot

    Type Alias meterPlusServiceData

    meterPlusServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPlus;
        modelFriendlyName: MeterPlus;
        modelName: MeterPlus;
    }
    +meterPlusServiceData | node-switchbot

    Type Alias meterPlusServiceData

    meterPlusServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPlus;
        modelFriendlyName: MeterPlus;
        modelName: MeterPlus;
    }
    diff --git a/docs/types/meterPlusStatus.html b/docs/types/meterPlusStatus.html index 29d34c4e..f7ca4820 100644 --- a/docs/types/meterPlusStatus.html +++ b/docs/types/meterPlusStatus.html @@ -1 +1 @@ -meterPlusStatus | node-switchbot

    Type Alias meterPlusStatus

    meterPlusStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +meterPlusStatus | node-switchbot

    Type Alias meterPlusStatus

    meterPlusStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/meterPlusWebhookContext.html b/docs/types/meterPlusWebhookContext.html index 629887ae..746726f0 100644 --- a/docs/types/meterPlusWebhookContext.html +++ b/docs/types/meterPlusWebhookContext.html @@ -1 +1 @@ -meterPlusWebhookContext | node-switchbot

    Type Alias meterPlusWebhookContext

    meterPlusWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterPlusWebhookContext | node-switchbot

    Type Alias meterPlusWebhookContext

    meterPlusWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterPro.html b/docs/types/meterPro.html index a669d146..d2aefa4f 100644 --- a/docs/types/meterPro.html +++ b/docs/types/meterPro.html @@ -1 +1 @@ -meterPro | node-switchbot

    Type Alias meterPro

    meterPro: device & {}
    +meterPro | node-switchbot

    Type Alias meterPro

    meterPro: device & {}
    diff --git a/docs/types/meterProCO2ServiceData.html b/docs/types/meterProCO2ServiceData.html index c9effbef..03648008 100644 --- a/docs/types/meterProCO2ServiceData.html +++ b/docs/types/meterProCO2ServiceData.html @@ -1 +1 @@ -meterProCO2ServiceData | node-switchbot

    Type Alias meterProCO2ServiceData

    meterProCO2ServiceData: serviceData & {
        battery: number;
        celsius: number;
        co2: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterProCO2;
        modelFriendlyName: MeterProCO2;
        modelName: MeterProCO2;
    }
    +meterProCO2ServiceData | node-switchbot

    Type Alias meterProCO2ServiceData

    meterProCO2ServiceData: serviceData & {
        battery: number;
        celsius: number;
        co2: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterProCO2;
        modelFriendlyName: MeterProCO2;
        modelName: MeterProCO2;
    }
    diff --git a/docs/types/meterProCO2Status.html b/docs/types/meterProCO2Status.html index 908b342c..5bad1668 100644 --- a/docs/types/meterProCO2Status.html +++ b/docs/types/meterProCO2Status.html @@ -1 +1 @@ -meterProCO2Status | node-switchbot

    Type Alias meterProCO2Status

    meterProCO2Status: deviceStatus & {
        battery: number;
        co2: number;
        humidity: number;
        temperature: number;
    }
    +meterProCO2Status | node-switchbot

    Type Alias meterProCO2Status

    meterProCO2Status: deviceStatus & {
        battery: number;
        CO2: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    diff --git a/docs/types/meterProCO2WebhookContext.html b/docs/types/meterProCO2WebhookContext.html index ea619855..21686a6f 100644 --- a/docs/types/meterProCO2WebhookContext.html +++ b/docs/types/meterProCO2WebhookContext.html @@ -1 +1 @@ -meterProCO2WebhookContext | node-switchbot

    Type Alias meterProCO2WebhookContext

    meterProCO2WebhookContext: deviceWebhookContext & {
        co2: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterProCO2WebhookContext | node-switchbot

    Type Alias meterProCO2WebhookContext

    meterProCO2WebhookContext: deviceWebhookContext & {
        battery: number;
        CO2: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterProServiceData.html b/docs/types/meterProServiceData.html index 939b4405..f4d1eb09 100644 --- a/docs/types/meterProServiceData.html +++ b/docs/types/meterProServiceData.html @@ -1 +1 @@ -meterProServiceData | node-switchbot

    Type Alias meterProServiceData

    meterProServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPro;
        modelFriendlyName: MeterPro;
        modelName: MeterPro;
    }
    +meterProServiceData | node-switchbot

    Type Alias meterProServiceData

    meterProServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: MeterPro;
        modelFriendlyName: MeterPro;
        modelName: MeterPro;
    }
    diff --git a/docs/types/meterProStatus.html b/docs/types/meterProStatus.html index 5ce264e2..7fc7f7b5 100644 --- a/docs/types/meterProStatus.html +++ b/docs/types/meterProStatus.html @@ -1 +1 @@ -meterProStatus | node-switchbot

    Type Alias meterProStatus

    meterProStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +meterProStatus | node-switchbot

    Type Alias meterProStatus

    meterProStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
        version: string;
    }
    diff --git a/docs/types/meterProWebhookContext.html b/docs/types/meterProWebhookContext.html index 998d95da..03b52ab7 100644 --- a/docs/types/meterProWebhookContext.html +++ b/docs/types/meterProWebhookContext.html @@ -1 +1 @@ -meterProWebhookContext | node-switchbot

    Type Alias meterProWebhookContext

    meterProWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterProWebhookContext | node-switchbot

    Type Alias meterProWebhookContext

    meterProWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/meterServiceData.html b/docs/types/meterServiceData.html index fcfb10ca..f91bf939 100644 --- a/docs/types/meterServiceData.html +++ b/docs/types/meterServiceData.html @@ -1 +1 @@ -meterServiceData | node-switchbot

    Type Alias meterServiceData

    meterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: Meter;
        modelFriendlyName: Meter;
        modelName: Meter;
    }
    +meterServiceData | node-switchbot

    Type Alias meterServiceData

    meterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: Meter;
        modelFriendlyName: Meter;
        modelName: Meter;
    }
    diff --git a/docs/types/meterStatus.html b/docs/types/meterStatus.html index ce2159d0..e86fee8f 100644 --- a/docs/types/meterStatus.html +++ b/docs/types/meterStatus.html @@ -1 +1 @@ -meterStatus | node-switchbot

    Type Alias meterStatus

    meterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +meterStatus | node-switchbot

    Type Alias meterStatus

    meterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/meterWebhookContext.html b/docs/types/meterWebhookContext.html index d4288abc..0878a519 100644 --- a/docs/types/meterWebhookContext.html +++ b/docs/types/meterWebhookContext.html @@ -1 +1 @@ -meterWebhookContext | node-switchbot

    Type Alias meterWebhookContext

    meterWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +meterWebhookContext | node-switchbot

    Type Alias meterWebhookContext

    meterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/motionSensor.html b/docs/types/motionSensor.html index f9697342..18fab300 100644 --- a/docs/types/motionSensor.html +++ b/docs/types/motionSensor.html @@ -1 +1 @@ -motionSensor | node-switchbot

    Type Alias motionSensor

    motionSensor: device & {}
    +motionSensor | node-switchbot

    Type Alias motionSensor

    motionSensor: device & {}
    diff --git a/docs/types/motionSensorServiceData.html b/docs/types/motionSensorServiceData.html index b4bc7960..cce11a31 100644 --- a/docs/types/motionSensorServiceData.html +++ b/docs/types/motionSensorServiceData.html @@ -1 +1 @@ -motionSensorServiceData | node-switchbot

    Type Alias motionSensorServiceData

    motionSensorServiceData: serviceData & {
        battery: number;
        iot: number;
        is_light: boolean;
        led: number;
        lightLevel: string;
        model: MotionSensor;
        modelFriendlyName: MotionSensor;
        modelName: MotionSensor;
        movement: boolean;
        sense_distance: number;
        tested: boolean;
    }
    +motionSensorServiceData | node-switchbot

    Type Alias motionSensorServiceData

    motionSensorServiceData: serviceData & {
        battery: number;
        iot: number;
        is_light: boolean;
        led: number;
        lightLevel: string;
        model: MotionSensor;
        modelFriendlyName: MotionSensor;
        modelName: MotionSensor;
        movement: boolean;
        sense_distance: number;
        tested: boolean;
    }
    diff --git a/docs/types/motionSensorStatus.html b/docs/types/motionSensorStatus.html index 7b15dbd1..5dd9cca7 100644 --- a/docs/types/motionSensorStatus.html +++ b/docs/types/motionSensorStatus.html @@ -1 +1 @@ -motionSensorStatus | node-switchbot

    Type Alias motionSensorStatus

    motionSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
    }
    +motionSensorStatus | node-switchbot

    Type Alias motionSensorStatus

    motionSensorStatus: deviceStatus & {
        battery: number;
        brightness: "bright" | "dim";
        moveDetected: boolean;
    }
    diff --git a/docs/types/motionSensorWebhookContext.html b/docs/types/motionSensorWebhookContext.html index bd84b8e4..1345d19d 100644 --- a/docs/types/motionSensorWebhookContext.html +++ b/docs/types/motionSensorWebhookContext.html @@ -1 +1 @@ -motionSensorWebhookContext | node-switchbot

    Type Alias motionSensorWebhookContext

    motionSensorWebhookContext: deviceWebhookContext & {
        detectionState: "NOT_DETECTED" | "DETECTED";
    }
    +motionSensorWebhookContext | node-switchbot

    Type Alias motionSensorWebhookContext

    motionSensorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: "NOT_DETECTED" | "DETECTED";
    }
    diff --git a/docs/types/onadvertisement.html b/docs/types/onadvertisement.html index 5f678fba..85608830 100644 --- a/docs/types/onadvertisement.html +++ b/docs/types/onadvertisement.html @@ -1 +1 @@ -onadvertisement | node-switchbot

    Type Alias onadvertisement

    onadvertisement: (ad: ad) => Promise<void> | void

    Type declaration

      • (ad: ad): Promise<void> | void
      • Parameters

        Returns Promise<void> | void

    +onadvertisement | node-switchbot

    Type Alias onadvertisement

    onadvertisement: (ad: ad) => Promise<void> | void

    Type declaration

      • (ad: ad): Promise<void> | void
      • Parameters

        Returns Promise<void> | void

    diff --git a/docs/types/ondiscover.html b/docs/types/ondiscover.html index 8d7635e1..5ce1cd8d 100644 --- a/docs/types/ondiscover.html +++ b/docs/types/ondiscover.html @@ -1 +1 @@ -ondiscover | node-switchbot

    Type Alias ondiscover

    ondiscover: (device: SwitchbotDevice) => Promise<void> | void

    Type declaration

    +ondiscover | node-switchbot

    Type Alias ondiscover

    ondiscover: (device: SwitchbotDevice) => Promise<void> | void

    Type declaration

    diff --git a/docs/types/outdoorMeter.html b/docs/types/outdoorMeter.html index 13786f5a..756d9e34 100644 --- a/docs/types/outdoorMeter.html +++ b/docs/types/outdoorMeter.html @@ -1 +1 @@ -outdoorMeter | node-switchbot

    Type Alias outdoorMeter

    outdoorMeter: device & {}
    +outdoorMeter | node-switchbot

    Type Alias outdoorMeter

    outdoorMeter: device & {}
    diff --git a/docs/types/outdoorMeterServiceData.html b/docs/types/outdoorMeterServiceData.html index f28d107c..28775504 100644 --- a/docs/types/outdoorMeterServiceData.html +++ b/docs/types/outdoorMeterServiceData.html @@ -1 +1 @@ -outdoorMeterServiceData | node-switchbot

    Type Alias outdoorMeterServiceData

    outdoorMeterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: OutdoorMeter;
        modelFriendlyName: OutdoorMeter;
        modelName: OutdoorMeter;
    }
    +outdoorMeterServiceData | node-switchbot

    Type Alias outdoorMeterServiceData

    outdoorMeterServiceData: serviceData & {
        battery: number;
        celsius: number;
        fahrenheit: number;
        fahrenheit_mode: boolean;
        humidity: number;
        model: OutdoorMeter;
        modelFriendlyName: OutdoorMeter;
        modelName: OutdoorMeter;
    }
    diff --git a/docs/types/outdoorMeterStatus.html b/docs/types/outdoorMeterStatus.html index 5e23d395..c00159b0 100644 --- a/docs/types/outdoorMeterStatus.html +++ b/docs/types/outdoorMeterStatus.html @@ -1 +1 @@ -outdoorMeterStatus | node-switchbot

    Type Alias outdoorMeterStatus

    outdoorMeterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    +outdoorMeterStatus | node-switchbot

    Type Alias outdoorMeterStatus

    outdoorMeterStatus: deviceStatus & {
        battery: number;
        humidity: number;
        temperature: number;
    }
    diff --git a/docs/types/outdoorMeterWebhookContext.html b/docs/types/outdoorMeterWebhookContext.html index 69f22669..03ecee31 100644 --- a/docs/types/outdoorMeterWebhookContext.html +++ b/docs/types/outdoorMeterWebhookContext.html @@ -1 +1 @@ -outdoorMeterWebhookContext | node-switchbot

    Type Alias outdoorMeterWebhookContext

    outdoorMeterWebhookContext: deviceWebhookContext & {
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    +outdoorMeterWebhookContext | node-switchbot

    Type Alias outdoorMeterWebhookContext

    outdoorMeterWebhookContext: deviceWebhookContext & {
        battery: number;
        humidity: number;
        scale: "CELSIUS" | "FAHRENHEIT";
        temperature: number;
    }
    diff --git a/docs/types/panTiltCamWebhookContext.html b/docs/types/panTiltCamWebhookContext.html index d3ca7e7f..425f51bc 100644 --- a/docs/types/panTiltCamWebhookContext.html +++ b/docs/types/panTiltCamWebhookContext.html @@ -1 +1 @@ -panTiltCamWebhookContext | node-switchbot

    Type Alias panTiltCamWebhookContext

    panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
    +panTiltCamWebhookContext | node-switchbot

    Type Alias panTiltCamWebhookContext

    panTiltCamWebhookContext: deviceWebhookContext & { detectionState: "DETECTED" }
    diff --git a/docs/types/pantiltCam.html b/docs/types/pantiltCam.html index 657d6a0b..6167ea8c 100644 --- a/docs/types/pantiltCam.html +++ b/docs/types/pantiltCam.html @@ -1 +1 @@ -pantiltCam | node-switchbot

    Type Alias pantiltCam

    pantiltCam: device & {}
    +pantiltCam | node-switchbot

    Type Alias pantiltCam

    pantiltCam: device & {}
    diff --git a/docs/types/pantiltCam2k.html b/docs/types/pantiltCam2k.html index fed1fede..518e80fa 100644 --- a/docs/types/pantiltCam2k.html +++ b/docs/types/pantiltCam2k.html @@ -1 +1 @@ -pantiltCam2k | node-switchbot

    Type Alias pantiltCam2k

    pantiltCam2k: device & {}
    +pantiltCam2k | node-switchbot

    Type Alias pantiltCam2k

    pantiltCam2k: device & {}
    diff --git a/docs/types/plug.html b/docs/types/plug.html index 10d348ba..0f6f3d97 100644 --- a/docs/types/plug.html +++ b/docs/types/plug.html @@ -1 +1 @@ -plug | node-switchbot

    Type Alias plug

    plug: device & {}
    +plug | node-switchbot

    Type Alias plug

    plug: device & {}
    diff --git a/docs/types/plugMini.html b/docs/types/plugMini.html index 54a42c47..e2dde61f 100644 --- a/docs/types/plugMini.html +++ b/docs/types/plugMini.html @@ -1 +1 @@ -plugMini | node-switchbot

    Type Alias plugMini

    plugMini: device & {}
    +plugMini | node-switchbot

    Type Alias plugMini

    plugMini: device & {}
    diff --git a/docs/types/plugMiniJPServiceData.html b/docs/types/plugMiniJPServiceData.html index 02898bd0..d3296ed9 100644 --- a/docs/types/plugMiniJPServiceData.html +++ b/docs/types/plugMiniJPServiceData.html @@ -1 +1 @@ -plugMiniJPServiceData | node-switchbot

    Type Alias plugMiniJPServiceData

    plugMiniJPServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniJP;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    +plugMiniJPServiceData | node-switchbot

    Type Alias plugMiniJPServiceData

    plugMiniJPServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniJP;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    diff --git a/docs/types/plugMiniJPWebhookContext.html b/docs/types/plugMiniJPWebhookContext.html index a2e40773..3b273a17 100644 --- a/docs/types/plugMiniJPWebhookContext.html +++ b/docs/types/plugMiniJPWebhookContext.html @@ -1 +1 @@ -plugMiniJPWebhookContext | node-switchbot

    Type Alias plugMiniJPWebhookContext

    plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugMiniJPWebhookContext | node-switchbot

    Type Alias plugMiniJPWebhookContext

    plugMiniJPWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/plugMiniStatus.html b/docs/types/plugMiniStatus.html index ac603810..897c4fcb 100644 --- a/docs/types/plugMiniStatus.html +++ b/docs/types/plugMiniStatus.html @@ -1 +1 @@ -plugMiniStatus | node-switchbot

    Type Alias plugMiniStatus

    plugMiniStatus: deviceStatus & {
        electricCurrent: Float64Array;
        electricityOfDay: number;
        power: string;
        voltage: Float64Array;
        weight: Float64Array;
    }
    +plugMiniStatus | node-switchbot

    Type Alias plugMiniStatus

    plugMiniStatus: deviceStatus & {
        electricCurrent: Float64Array;
        electricityOfDay: number;
        power: string;
        voltage: Float64Array;
        weight: Float64Array;
    }
    diff --git a/docs/types/plugMiniUSServiceData.html b/docs/types/plugMiniUSServiceData.html index be1115ed..096c9a0d 100644 --- a/docs/types/plugMiniUSServiceData.html +++ b/docs/types/plugMiniUSServiceData.html @@ -1 +1 @@ -plugMiniUSServiceData | node-switchbot

    Type Alias plugMiniUSServiceData

    plugMiniUSServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniUS;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    +plugMiniUSServiceData | node-switchbot

    Type Alias plugMiniUSServiceData

    plugMiniUSServiceData: serviceData & {
        currentPower: number;
        delay: boolean;
        model: PlugMiniUS;
        modelFriendlyName: PlugMini;
        modelName: PlugMini;
        overload: boolean;
        state: string;
        syncUtcTime: boolean;
        timer: boolean;
        wifiRssi: number;
    }
    diff --git a/docs/types/plugMiniUSWebhookContext.html b/docs/types/plugMiniUSWebhookContext.html index 14a860ca..ddddd4a5 100644 --- a/docs/types/plugMiniUSWebhookContext.html +++ b/docs/types/plugMiniUSWebhookContext.html @@ -1 +1 @@ -plugMiniUSWebhookContext | node-switchbot

    Type Alias plugMiniUSWebhookContext

    plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugMiniUSWebhookContext | node-switchbot

    Type Alias plugMiniUSWebhookContext

    plugMiniUSWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/plugStatus.html b/docs/types/plugStatus.html index e8614b9f..3a52ff34 100644 --- a/docs/types/plugStatus.html +++ b/docs/types/plugStatus.html @@ -1 +1 @@ -plugStatus | node-switchbot

    Type Alias plugStatus

    plugStatus: deviceStatus & { power: string; version: string }
    +plugStatus | node-switchbot

    Type Alias plugStatus

    plugStatus: deviceStatus & { power: string; version: string }
    diff --git a/docs/types/plugWebhookContext.html b/docs/types/plugWebhookContext.html index 2b0dc8f0..1f890492 100644 --- a/docs/types/plugWebhookContext.html +++ b/docs/types/plugWebhookContext.html @@ -1 +1 @@ -plugWebhookContext | node-switchbot

    Type Alias plugWebhookContext

    plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    +plugWebhookContext | node-switchbot

    Type Alias plugWebhookContext

    plugWebhookContext: deviceWebhookContext & { powerState: "ON" | "OFF" }
    diff --git a/docs/types/relaySwitch1PMServiceData.html b/docs/types/relaySwitch1PMServiceData.html index 4a76ee2e..b04b2a90 100644 --- a/docs/types/relaySwitch1PMServiceData.html +++ b/docs/types/relaySwitch1PMServiceData.html @@ -1 +1 @@ -relaySwitch1PMServiceData | node-switchbot

    Type Alias relaySwitch1PMServiceData

    relaySwitch1PMServiceData: serviceData & {
        current: number;
        mode: boolean;
        model: RelaySwitch1PM;
        modelFriendlyName: RelaySwitch1PM;
        modelName: RelaySwitch1PM;
        power: number;
        sequence_number: number;
        state: boolean;
        voltage: number;
    }
    +relaySwitch1PMServiceData | node-switchbot

    Type Alias relaySwitch1PMServiceData

    relaySwitch1PMServiceData: serviceData & {
        current: number;
        mode: boolean;
        model: RelaySwitch1PM;
        modelFriendlyName: RelaySwitch1PM;
        modelName: RelaySwitch1PM;
        power: number;
        sequence_number: number;
        state: boolean;
        voltage: number;
    }
    diff --git a/docs/types/relaySwitch1ServiceData.html b/docs/types/relaySwitch1ServiceData.html index 1a6bc94b..69c68ee1 100644 --- a/docs/types/relaySwitch1ServiceData.html +++ b/docs/types/relaySwitch1ServiceData.html @@ -1 +1 @@ -relaySwitch1ServiceData | node-switchbot

    Type Alias relaySwitch1ServiceData

    relaySwitch1ServiceData: serviceData & {
        mode: boolean;
        model: RelaySwitch1;
        modelFriendlyName: RelaySwitch1;
        modelName: RelaySwitch1;
        sequence_number: number;
        state: boolean;
    }
    +relaySwitch1ServiceData | node-switchbot

    Type Alias relaySwitch1ServiceData

    relaySwitch1ServiceData: serviceData & {
        mode: boolean;
        model: RelaySwitch1;
        modelFriendlyName: RelaySwitch1;
        modelName: RelaySwitch1;
        sequence_number: number;
        state: boolean;
    }
    diff --git a/docs/types/remote.html b/docs/types/remote.html index 4f8229ab..8a052530 100644 --- a/docs/types/remote.html +++ b/docs/types/remote.html @@ -1 +1 @@ -remote | node-switchbot

    Type Alias remote

    remote: device & {}
    +remote | node-switchbot

    Type Alias remote

    remote: device & {}
    diff --git a/docs/types/robotVacuumCleanerS1.html b/docs/types/robotVacuumCleanerS1.html index 0c11e80a..b4d58ea6 100644 --- a/docs/types/robotVacuumCleanerS1.html +++ b/docs/types/robotVacuumCleanerS1.html @@ -1 +1 @@ -robotVacuumCleanerS1 | node-switchbot

    Type Alias robotVacuumCleanerS1

    robotVacuumCleanerS1: device & {}
    +robotVacuumCleanerS1 | node-switchbot

    Type Alias robotVacuumCleanerS1

    robotVacuumCleanerS1: device & {}
    diff --git a/docs/types/robotVacuumCleanerS1Plus.html b/docs/types/robotVacuumCleanerS1Plus.html index eac97375..0f6a5f4f 100644 --- a/docs/types/robotVacuumCleanerS1Plus.html +++ b/docs/types/robotVacuumCleanerS1Plus.html @@ -1 +1 @@ -robotVacuumCleanerS1Plus | node-switchbot

    Type Alias robotVacuumCleanerS1Plus

    robotVacuumCleanerS1Plus: device & {}
    +robotVacuumCleanerS1Plus | node-switchbot

    Type Alias robotVacuumCleanerS1Plus

    robotVacuumCleanerS1Plus: device & {}
    diff --git a/docs/types/robotVacuumCleanerS1PlusStatus.html b/docs/types/robotVacuumCleanerS1PlusStatus.html index 0588cfd2..7491b5ca 100644 --- a/docs/types/robotVacuumCleanerS1PlusStatus.html +++ b/docs/types/robotVacuumCleanerS1PlusStatus.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusStatus | node-switchbot

    Type Alias robotVacuumCleanerS1PlusStatus

    robotVacuumCleanerS1PlusStatus: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    +robotVacuumCleanerS1PlusStatus | node-switchbot

    Type Alias robotVacuumCleanerS1PlusStatus

    robotVacuumCleanerS1PlusStatus: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    diff --git a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html index 58eaedbe..b2b63758 100644 --- a/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +++ b/docs/types/robotVacuumCleanerS1PlusWebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1PlusWebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1PlusWebhookContext

    robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    +robotVacuumCleanerS1PlusWebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1PlusWebhookContext

    robotVacuumCleanerS1PlusWebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    diff --git a/docs/types/robotVacuumCleanerS1Status.html b/docs/types/robotVacuumCleanerS1Status.html index eeeb36bb..0029ee2c 100644 --- a/docs/types/robotVacuumCleanerS1Status.html +++ b/docs/types/robotVacuumCleanerS1Status.html @@ -1 +1 @@ -robotVacuumCleanerS1Status | node-switchbot

    Type Alias robotVacuumCleanerS1Status

    robotVacuumCleanerS1Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    +robotVacuumCleanerS1Status | node-switchbot

    Type Alias robotVacuumCleanerS1Status

    robotVacuumCleanerS1Status: deviceStatus & {
        battery: number;
        onlineStatus: string;
        workingStatus: string;
    }
    diff --git a/docs/types/robotVacuumCleanerS1WebhookContext.html b/docs/types/robotVacuumCleanerS1WebhookContext.html index 6a83c969..058807bb 100644 --- a/docs/types/robotVacuumCleanerS1WebhookContext.html +++ b/docs/types/robotVacuumCleanerS1WebhookContext.html @@ -1 +1 @@ -robotVacuumCleanerS1WebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1WebhookContext

    robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    +robotVacuumCleanerS1WebhookContext | node-switchbot

    Type Alias robotVacuumCleanerS1WebhookContext

    robotVacuumCleanerS1WebhookContext: deviceWebhookContext & {
        battery: number;
        onlineStatus: "online" | "offline";
        workingStatus:
            | "Standby"
            | "Clearing"
            | "Paused"
            | "GotoChargeBase"
            | "Charging"
            | "ChargeDone"
            | "Dormant"
            | "InTrouble"
            | "InRemoteControl"
            | "InDustCollecting";
    }
    diff --git a/docs/types/robotVacuumCleanerServiceData.html b/docs/types/robotVacuumCleanerServiceData.html index 27a51dea..45c9f031 100644 --- a/docs/types/robotVacuumCleanerServiceData.html +++ b/docs/types/robotVacuumCleanerServiceData.html @@ -1 +1 @@ -robotVacuumCleanerServiceData | node-switchbot

    Type Alias robotVacuumCleanerServiceData

    robotVacuumCleanerServiceData: serviceData & {
        battery: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    +robotVacuumCleanerServiceData | node-switchbot

    Type Alias robotVacuumCleanerServiceData

    robotVacuumCleanerServiceData: serviceData & {
        battery: number;
        model: Unknown;
        modelFriendlyName: Unknown;
        modelName: Unknown;
        state: string;
    }
    diff --git a/docs/types/stripLight.html b/docs/types/stripLight.html index 9426f9cf..f1e36dd7 100644 --- a/docs/types/stripLight.html +++ b/docs/types/stripLight.html @@ -1 +1 @@ -stripLight | node-switchbot

    Type Alias stripLight

    stripLight: device & {}
    +stripLight | node-switchbot

    Type Alias stripLight

    stripLight: device & {}
    diff --git a/docs/types/stripLightServiceData.html b/docs/types/stripLightServiceData.html index 6fe1eef1..e497be07 100644 --- a/docs/types/stripLightServiceData.html +++ b/docs/types/stripLightServiceData.html @@ -1 +1 @@ -stripLightServiceData | node-switchbot

    Type Alias stripLightServiceData

    stripLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        delay: number;
        green: number;
        loop_index: number;
        model: StripLight;
        modelFriendlyName: StripLight;
        modelName: StripLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    +stripLightServiceData | node-switchbot

    Type Alias stripLightServiceData

    stripLightServiceData: serviceData & {
        blue: number;
        brightness: number;
        color_mode: number;
        delay: number;
        green: number;
        loop_index: number;
        model: StripLight;
        modelFriendlyName: StripLight;
        modelName: StripLight;
        power: boolean;
        preset: number;
        red: number;
        speed: number;
        state: boolean;
    }
    diff --git a/docs/types/stripLightStatus.html b/docs/types/stripLightStatus.html index 6b3bad93..555cab13 100644 --- a/docs/types/stripLightStatus.html +++ b/docs/types/stripLightStatus.html @@ -1 +1 @@ -stripLightStatus | node-switchbot

    Type Alias stripLightStatus

    stripLightStatus: deviceStatus & {
        brightness: number;
        color: string;
        power: string;
    }
    +stripLightStatus | node-switchbot

    Type Alias stripLightStatus

    stripLightStatus: deviceStatus & {
        brightness: number;
        color: string;
        power: string;
    }
    diff --git a/docs/types/stripLightWebhookContext.html b/docs/types/stripLightWebhookContext.html index 8dbb6b1a..b47bb6f4 100644 --- a/docs/types/stripLightWebhookContext.html +++ b/docs/types/stripLightWebhookContext.html @@ -1 +1 @@ -stripLightWebhookContext | node-switchbot

    Type Alias stripLightWebhookContext

    stripLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        powerState: "ON" | "OFF";
    }
    +stripLightWebhookContext | node-switchbot

    Type Alias stripLightWebhookContext

    stripLightWebhookContext: deviceWebhookContext & {
        brightness: number;
        color: string;
        powerState: "ON" | "OFF";
    }
    diff --git a/docs/types/waterLeakDetector.html b/docs/types/waterLeakDetector.html index 063d4371..8bfe6059 100644 --- a/docs/types/waterLeakDetector.html +++ b/docs/types/waterLeakDetector.html @@ -1 +1 @@ -waterLeakDetector | node-switchbot

    Type Alias waterLeakDetector

    waterLeakDetector: device & {}
    +waterLeakDetector | node-switchbot

    Type Alias waterLeakDetector

    waterLeakDetector: device & {}
    diff --git a/docs/types/waterLeakDetectorServiceData.html b/docs/types/waterLeakDetectorServiceData.html index b9bc9658..b153dd98 100644 --- a/docs/types/waterLeakDetectorServiceData.html +++ b/docs/types/waterLeakDetectorServiceData.html @@ -1 +1 @@ -waterLeakDetectorServiceData | node-switchbot

    Type Alias waterLeakDetectorServiceData

    waterLeakDetectorServiceData: serviceData & {
        battery: number;
        leak: boolean;
        low_battery: boolean;
        model: Leak;
        modelFriendlyName: Leak;
        modelName: Leak;
        tampered: boolean;
    }
    +waterLeakDetectorServiceData | node-switchbot

    Type Alias waterLeakDetectorServiceData

    waterLeakDetectorServiceData: serviceData & {
        battery: number;
        leak: boolean;
        low_battery: boolean;
        model: Leak;
        modelFriendlyName: Leak;
        modelName: Leak;
        tampered: boolean;
    }
    diff --git a/docs/types/waterLeakDetectorStatus.html b/docs/types/waterLeakDetectorStatus.html index d912096a..bbf21255 100644 --- a/docs/types/waterLeakDetectorStatus.html +++ b/docs/types/waterLeakDetectorStatus.html @@ -1 +1 @@ -waterLeakDetectorStatus | node-switchbot

    Type Alias waterLeakDetectorStatus

    waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
    +waterLeakDetectorStatus | node-switchbot

    Type Alias waterLeakDetectorStatus

    waterLeakDetectorStatus: deviceStatus & { battery: number; status: 0 | 1 }
    diff --git a/docs/types/waterLeakDetectorWebhookContext.html b/docs/types/waterLeakDetectorWebhookContext.html index 0a71029a..a534bfe6 100644 --- a/docs/types/waterLeakDetectorWebhookContext.html +++ b/docs/types/waterLeakDetectorWebhookContext.html @@ -1 +1 @@ -waterLeakDetectorWebhookContext | node-switchbot

    Type Alias waterLeakDetectorWebhookContext

    waterLeakDetectorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: 0 | 1;
    }
    +waterLeakDetectorWebhookContext | node-switchbot

    Type Alias waterLeakDetectorWebhookContext

    waterLeakDetectorWebhookContext: deviceWebhookContext & {
        battery: number;
        detectionState: 0 | 1;
    }
    diff --git a/package-lock.json b/package-lock.json index e6f988a7..0c3329b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "node-switchbot", - "version": "3.4.2", + "version": "3.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "node-switchbot", - "version": "3.4.2", + "version": "3.4.3", "license": "MIT", "dependencies": { - "@stoprocent/noble": "^1.16.1", + "@stoprocent/noble": "^1.17.1", "async-mutex": "^0.5.0", - "undici": "^7.2.0" + "undici": "7.2.0" }, "devDependencies": { "@antfu/eslint-config": "^3.12.0", @@ -40,7 +40,7 @@ "node": "^20 || ^22" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.4.2" + "@stoprocent/bluetooth-hci-socket": "^1.4.3" } }, "node_modules/@ampproject/remapping": { @@ -2794,9 +2794,9 @@ "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@stoprocent/bluetooth-hci-socket": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@stoprocent/bluetooth-hci-socket/-/bluetooth-hci-socket-1.4.2.tgz", - "integrity": "sha512-VlULC6DCrZ3XjOMk9dwQdem42uhZEZegf/Okegyip00TV2gKGpo6F5dU+f+CsJGiSGj1lYQOBvC+f6voq5d1nQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@stoprocent/bluetooth-hci-socket/-/bluetooth-hci-socket-1.4.3.tgz", + "integrity": "sha512-cBHrMyRdfjWxQkS4fnEm1PdMiVknQfdCB37BP2DH0sHkLvs/BnOrNswqs5wdoZ5rgHvbqlZFZv/o/RYElL9XRg==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -2820,9 +2820,9 @@ } }, "node_modules/@stoprocent/noble": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@stoprocent/noble/-/noble-1.16.1.tgz", - "integrity": "sha512-yJ3Tl4hsaH1nYpMi+cR0uOrVE5zVUrtKDSjSY7dP+HDLsiuKO6n4xT6g/FrA0pH1iAMmllRwl/IcZzUGdMoyyg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@stoprocent/noble/-/noble-1.17.1.tgz", + "integrity": "sha512-pSdSJxZiGx/VFaWPh8DXTe8j5KA+oAGCv8iCfQHV8Rf7T8G2f/SZG4fTiFNfnCe+kxdpHZ/h+GzIIDcZZRHS6Q==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -2835,7 +2835,7 @@ "node": ">=14" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.4.2" + "@stoprocent/bluetooth-hci-socket": "^1.4.3" } }, "node_modules/@stylistic/eslint-plugin": { diff --git a/package.json b/package.json index f9a11e26..f4f513af 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "node-switchbot", "type": "module", - "version": "3.4.2", + "version": "3.4.3", "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).", "author": "OpenWonderLabs (https://github.com/OpenWonderLabs)", "license": "MIT", @@ -40,7 +40,7 @@ "fix": "eslint src/**/*.ts --fix", "watch": "npm run build && npm link && nodemon", "build": "npm run clean && tsc", - "prepublishOnly": "npm run lint && npm run build", + "prepublishOnly": "npm run lint && npm run build && npm run docs && npm run lint-docs", "postpublish": "npm run clean && npm ci", "clean": "shx rm -rf ./dist", "test": "vitest run", @@ -50,12 +50,12 @@ }, "readmeFilename": "README.md", "dependencies": { - "@stoprocent/noble": "^1.16.1", + "@stoprocent/noble": "^1.17.1", "async-mutex": "^0.5.0", - "undici": "^7.2.0" + "undici": "7.2.0" }, "optionalDependencies": { - "@stoprocent/bluetooth-hci-socket": "^1.4.2" + "@stoprocent/bluetooth-hci-socket": "^1.4.3" }, "devDependencies": { "@antfu/eslint-config": "^3.12.0", diff --git a/src/switchbot-openapi.ts b/src/switchbot-openapi.ts index 13e94f32..0a82dea5 100644 --- a/src/switchbot-openapi.ts +++ b/src/switchbot-openapi.ts @@ -70,6 +70,7 @@ export class SwitchBotOpenAPI extends EventEmitter { super() this.token = token this.secret = secret + this.emitLog('info', `Token: ${token}, Secret: ${secret}`) this.baseURL = urls.baseURL if (hostname) { @@ -89,13 +90,16 @@ export class SwitchBotOpenAPI extends EventEmitter { /** * Retrieves the list of devices from the SwitchBot OpenAPI. - * + * @param token - (Optional) The token used for authentication. If not provided, the instance token will be used. + * @param secret - (Optional) The secret used for authentication. If not provided, the instance secret will be used. * @returns {Promise<{ response: body, statusCode: number }>} A promise that resolves to an object containing the API response. * @throws {Error} Throws an error if the request to get devices fails. */ - async getDevices(): Promise<{ response: devices, statusCode: number }> { + async getDevices(token?: string, secret?: string): Promise<{ response: devices, statusCode: number }> { try { - const { body, statusCode } = await request(urls.devicesURL, { headers: this.generateHeaders() }) + const configToken = token || this.token + const configSecret = secret || this.secret + const { body, statusCode } = await request(urls.devicesURL, { headers: this.generateHeaders(configToken, configSecret) }) const response = await body.json() as devices this.emitLog('debug', `Got devices: ${JSON.stringify(response)}`) this.emitLog('debug', `statusCode: ${statusCode}`) @@ -109,18 +113,22 @@ export class SwitchBotOpenAPI extends EventEmitter { /** * Controls a device by sending a command to the SwitchBot API. * - * @param deviceId - The unique identifier of the device to control. + * @param deviceId - The ID of the device to control. * @param command - The command to send to the device. * @param parameter - The parameter for the command. - * @param commandType - The type of the command, defaults to 'command'. - * @returns {Promise<{ response: pushResponse['body'], statusCode: pushResponse['statusCode'] }>} A promise that resolves to an object containing the API response. + * @param commandType - The type of the command (default is 'command'). + * @param token - (Optional) The token used for authentication. If not provided, the instance token will be used. + * @param secret - (Optional) The secret used for authentication. If not provided, the instance secret will be used. + * @returns A promise that resolves to an object containing the response body and status code. * @throws An error if the device control fails. */ - async controlDevice(deviceId: string, command: string, parameter: string, commandType: string = 'command'): Promise<{ response: pushResponse['body'], statusCode: pushResponse['statusCode'] }> { + async controlDevice(deviceId: string, command: string, parameter: string, commandType: string = 'command', token?: string, secret?: string): Promise<{ response: pushResponse['body'], statusCode: pushResponse['statusCode'] }> { try { - const { body, statusCode } = await request(`${this.baseURL}/devices/${deviceId}/commands`, { + const configToken = token || this.token + const configSecret = secret || this.secret + const { body, statusCode } = await request(`${urls.devicesURL}/${deviceId}/commands`, { method: 'POST', - headers: this.generateHeaders(), + headers: this.generateHeaders(configToken, configSecret), body: JSON.stringify({ command, parameter, @@ -141,15 +149,16 @@ export class SwitchBotOpenAPI extends EventEmitter { * Retrieves the status of a specific device. * * @param deviceId - The unique identifier of the device. - * @returns {Promise<{ response: deviceStatus, statusCode: deviceStatusRequest['statusCode'] }>} A promise that resolves to the device status. + * @param token - (Optional) The token used for authentication. If not provided, the instance token will be used. + * @param secret - (Optional) The secret used for authentication. If not provided, the instance secret will be used. + * @returns A promise that resolves to an object containing the device status and the status code of the request. * @throws An error if the request fails. */ - async getDeviceStatus(deviceId: string): Promise<{ response: deviceStatus, statusCode: deviceStatusRequest['statusCode'] }> { + async getDeviceStatus(deviceId: string, token?: string, secret?: string): Promise<{ response: deviceStatus, statusCode: deviceStatusRequest['statusCode'] }> { try { - const { body, statusCode } = await request(`${this.baseURL}/devices/${deviceId}/status`, { - method: 'GET', - headers: this.generateHeaders(), - }) + const configToken = token || this.token + const configSecret = secret || this.secret + const { body, statusCode } = await request(`${urls.devicesURL}/${deviceId}/status`, { headers: this.generateHeaders(configToken, configSecret) }) const response = await body.json() as deviceStatus this.emitLog('debug', `Got device status: ${deviceId}`) this.emitLog('debug', `statusCode: ${statusCode}`) @@ -163,25 +172,26 @@ export class SwitchBotOpenAPI extends EventEmitter { /** * Generates the headers required for authentication with the SwitchBot OpenAPI. * - * @returns An object containing the following headers: - * - `Authorization`: The token used for authorization. - * - `sign`: The HMAC-SHA256 signature of the concatenated token, timestamp, and nonce. - * - `nonce`: A unique identifier for the request, formatted as a UUID. - * - `t`: The current timestamp in milliseconds since the Unix epoch. - * - `Content-Type`: The content type of the request, set to `application/json`. + * @param configToken - The token used for authorization. + * @param configSecret - The secret key used to sign the request. + * @returns An object containing the necessary headers: + * - `Authorization`: The authorization token. + * - `sign`: The HMAC-SHA256 signature of the token, timestamp, and nonce. + * - `nonce`: A unique identifier for the request. + * - `t`: The current timestamp in milliseconds. + * - `Content-Type`: The content type of the request, set to 'application/json'. */ - private generateHeaders = (): { 'Authorization': string, 'sign': string, 'nonce': `${string}-${string}-${string}-${string}-${string}`, 't': string, 'Content-Type': string } => { + private generateHeaders = (configToken: string, configSecret: string): { 'Authorization': string, 'sign': string, 'nonce': string, 't': string, 'Content-Type': string } => { const t = `${Date.now()}` const nonce = randomUUID() - const data = this.token + t + nonce - const signTerm = crypto - .createHmac('sha256', this.secret) - .update(Buffer.from(data, 'utf-8')) - .digest() - const sign = signTerm.toString('base64') + const data = configToken + t + nonce + const sign = crypto + .createHmac('sha256', configSecret) + .update(data) + .digest('base64') return { - 'Authorization': this.token, + 'Authorization': configToken, 'sign': sign, 'nonce': nonce, 't': t, @@ -199,11 +209,13 @@ export class SwitchBotOpenAPI extends EventEmitter { * 4. Sends a request to query the current webhook URL. * * @param url - The URL to which the webhook events will be sent. + * @param token - (Optional) The token used for authentication. If not provided, the instance token will be used. + * @param secret - (Optional) The secret used for authentication. If not provided, the instance secret will be used. * @returns A promise that resolves when the webhook setup is complete. * * @throws Will log an error if any step in the webhook setup process fails. */ - async setupWebhook(url: string): Promise { + async setupWebhook(url: string, token?: string, secret?: string): Promise { try { const xurl = new URL(url) const port = Number(xurl.port) @@ -237,9 +249,11 @@ export class SwitchBotOpenAPI extends EventEmitter { } try { + const configToken = token || this.token + const configSecret = secret || this.secret const { body, statusCode } = await request(urls.setupWebhook, { method: 'POST', - headers: this.generateHeaders(), + headers: this.generateHeaders(configToken, configSecret), body: JSON.stringify({ action: 'setupWebhook', url, @@ -256,9 +270,11 @@ export class SwitchBotOpenAPI extends EventEmitter { } try { + const configToken = token || this.token + const configSecret = secret || this.secret const { body, statusCode } = await request(urls.updateWebhook, { method: 'POST', - headers: this.generateHeaders(), + headers: this.generateHeaders(configToken, configSecret), body: JSON.stringify({ action: 'updateWebhook', config: { @@ -277,9 +293,11 @@ export class SwitchBotOpenAPI extends EventEmitter { } try { + const configToken = token || this.token + const configSecret = secret || this.secret const { body, statusCode } = await request(urls.queryWebhook, { method: 'POST', - headers: this.generateHeaders(), + headers: this.generateHeaders(configToken, configSecret), body: JSON.stringify({ action: 'queryUrl', }), @@ -300,15 +318,19 @@ export class SwitchBotOpenAPI extends EventEmitter { * Deletes a webhook by sending a request to the specified URL. * * @param url - The URL of the webhook to be deleted. + * @param token - (Optional) The token used for authentication. If not provided, the instance token will be used. + * @param secret - (Optional) The secret used for authentication. If not provided, the instance secret will be used. * @returns A promise that resolves when the webhook is successfully deleted. * * @throws Will log an error if the deletion fails. */ - async deleteWebhook(url: string): Promise { + async deleteWebhook(url: string, token?: string, secret?: string): Promise { try { + const configToken = token || this.token + const configSecret = secret || this.secret const { body, statusCode } = await request(urls.deleteWebhook, { method: 'POST', - headers: this.generateHeaders(), + headers: this.generateHeaders(configToken, configSecret), body: JSON.stringify({ action: 'deleteWebhook', url, diff --git a/src/types/devicestatus.ts b/src/types/devicestatus.ts index 39e607ee..9228ffaa 100644 --- a/src/types/devicestatus.ts +++ b/src/types/devicestatus.ts @@ -49,13 +49,15 @@ export type meterProStatus = deviceStatus & { temperature: number battery: number humidity: number + version: string } export type meterProCO2Status = deviceStatus & { temperature: number battery: number humidity: number - co2: number + version: string + CO2: number } export type outdoorMeterStatus = deviceStatus & { @@ -192,6 +194,7 @@ export type hub2Status = deviceStatus & { export type batteryCirculatorFanStatus = deviceStatus & { mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string battery: number power: string nightStatus: number @@ -200,3 +203,13 @@ export type batteryCirculatorFanStatus = deviceStatus & { chargingStatus: string fanSpeed: number } + +export type circulatorFanStatus = deviceStatus & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + power: string + nightStatus: number + oscillation: string + verticalOscillation: string + fanSpeed: number +} diff --git a/src/types/devicewebhookstatus.ts b/src/types/devicewebhookstatus.ts index 9b10506c..d085e3e0 100644 --- a/src/types/devicewebhookstatus.ts +++ b/src/types/devicewebhookstatus.ts @@ -77,10 +77,12 @@ export type curtain3WebhookContext = deviceWebhookContext & { export type motionSensorWebhookContext = deviceWebhookContext & { detectionState: 'NOT_DETECTED' | 'DETECTED' + battery: number // 0~100 } export type contactSensorWebhookContext = deviceWebhookContext & { detectionState: 'NOT_DETECTED' | 'DETECTED' + battery: number // 0~100 doorMode: 'IN_DOOR' | 'OUT_DOOR' brightness: 'dim' | 'bright' openState: 'open' | 'close' | 'timeOutNotClose' @@ -93,41 +95,48 @@ export type waterLeakDetectorWebhookContext = deviceWebhookContext & { export type meterWebhookContext = deviceWebhookContext & { temperature: number + battery: number // 0~100 scale: 'CELSIUS' | 'FAHRENHEIT' humidity: number } export type meterPlusWebhookContext = deviceWebhookContext & { temperature: number + battery: number // 0~100 scale: 'CELSIUS' | 'FAHRENHEIT' humidity: number } export type meterProWebhookContext = deviceWebhookContext & { temperature: number + battery: number // 0~100 scale: 'CELSIUS' | 'FAHRENHEIT' humidity: number } export type meterProCO2WebhookContext = deviceWebhookContext & { temperature: number + battery: number // 0~100 scale: 'CELSIUS' | 'FAHRENHEIT' humidity: number - co2: number + CO2: number } export type outdoorMeterWebhookContext = deviceWebhookContext & { temperature: number + battery: number // 0~100 scale: 'CELSIUS' | 'FAHRENHEIT' humidity: number } export type lockWebhookContext = deviceWebhookContext & { lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' + battery: number // 0~100 } export type lockProWebhookContext = deviceWebhookContext & { lockState: 'UNLOCKED' | 'LOCKED' | 'JAMMED' + battery: number // 0~100 } export type indoorCameraWebhookContext = deviceWebhookContext & { @@ -226,6 +235,17 @@ export type batteryCirculatorFanWebhookContext = deviceWebhookContext & { fanSpeed: number // 1~100 } +export type circulatorFanWebhookContext = deviceWebhookContext & { + mode: 'direct' | 'natural' | 'sleep' | 'baby' + version: string + battery: number + powerState: 'ON' | 'OFF' + nightStatus: 'off' | 1 | 2 + oscillation: 'on' | 'off' + verticalOscillation: 'on' | 'off' + fanSpeed: number // 1~100 +} + export type blindTiltWebhookContext = deviceWebhookContext & { version: string calibrate: boolean diff --git a/src/types/types.ts b/src/types/types.ts index ff115223..50384d61 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -88,6 +88,7 @@ export enum SwitchBotModel { PanTiltCam2K = 'W3101100', BlindTilt = 'W2701600', BatteryCirculatorFan = 'W3800510', + CirculatorFan = 'W3800511', WaterDetector = 'W4402000', Unknown = 'Unknown', } @@ -115,7 +116,7 @@ export enum SwitchBotBLEModel { CeilingLight = 'q', // Currently only available in Japan. CeilingLightPro = 'n', // Currently only available in Japan. BlindTilt = 'x', - Leak = '3', + Leak = '&', Keypad = 'y', RelaySwitch1 = ';', RelaySwitch1PM = '<', @@ -167,6 +168,8 @@ export enum SwitchBotBLEModelFriendlyName { MeterPlus = 'Meter Plus', MeterPro = 'Meter Pro', MeterProCO2 = 'Meter Pro CO2', + BatteryCirculatorFan = 'Battery Circulator Fan', + CirculatorFan = 'Circulator Fan', OutdoorMeter = 'Outdoor Meter', ContactSensor = 'Contact Sensor', MotionSensor = 'Motion Sensor',