@rimltempest/switchbotsdk
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.4 • Public • Published

    CI CI

    switchbotSDK

    switchbotSDK とは switchbot から提供されている RestAPI を簡易的に使用ができる SDK となります。
    現在はSwitchBotClientDeviceClientRemoteClientがご利用できます。

    詳しいドキュメントは以下に記載されています。

    使用方法

    用途によって3種の関数を呼び出します。

    SwtichBotClient

    こちらはデバイスの状態を管理するクライアントとなります。
    シーンの全取得、実行もこちらで行えます。

    import { SwitchBotClient } from '@rimltempest/switchbotsdk';
    
    const client = new SwitchBotClient(`SwitchBotのトークン`);
    
    // サンプル(全デバイス取得)
    console.log(client.getDevices());

    こうすることで呼び出すことができます。

    DeviceClient

    こちらはSwitchBotの関連デバイス(SwitchBot、スマートプラグ、加湿器など)を利用する場合のクライアントになります。

    import { DeviceClient } from '@rimltempest/switchbotsdk';
    
    const client = new DeviceClient(`SwitchBotのトークン`);
    const deviceId = 'SwitchBotの端末ID';
    
    // サンプル(SwitchBotのBotオン/オフ)
    await client.setSwitchBot(deviceId, 'on');
    await client.setSwitchBot(deviceId, 'off');

    こうすることで呼び出すことができます。

    RemoteClient

    こちらはSwitchBotHubを利用した赤外線デバイスを利用する場合のクライアントになります。

    import { RemoteClient } from '@rimltempest/switchbotsdk';
    
    const client = new RemoteClient(`SwitchBotのトークン`);
    // 赤外線デバイスは
    const deviceId = 'ディスプレイの端末ID';
    
    // サンプル(赤外線デバイスのBotオン/オフ)
    // 赤外線デバイスはすべてのオンオフはこの関数で行えます。
    await client.setRemoteDevice(deviceId, 'on');
    await client.setRemoteDevice(deviceId, 'off');

    こうすることで呼び出すことができます。


    フロントエンドフレームワークやバックエンドフレームワークでも使用可能です。

    NestJS

    // switch-bot.service.ts
    import { Injectable } from '@nestjs/common';
    import { config } from 'dotenv';
    import {
        SwitchBotClient,
        DeviceClient,
        RemoteClient,
    } from '@rimltempest/switchbotsdk';
    config();
    
    type PowerType = 'on' | 'off';
    
    @Injectable()
    export class SwitchBotService {
        #client = new SwitchBotClient(`${process.env.SWITCHBOT_ACCESS_TOKEN}`);
        #deviceCommand = new DeviceClient(`${process.env.SWITCHBOT_ACCESS_TOKEN}`);
        #remoteCommand = new RemoteClient(`${process.env.SWITCHBOT_ACCESS_TOKEN}`);
    
        async RoomLight(deviceId: string, power: PowerType) {
            return await this.#deviceCommand.setSwitchBot(deviceId, power);
        }
    
        async TVLight(deviceId: string, power: PowerType) {
            return await this.#remoteCommand.setRemoteDevice(deviceId, power);
        }
    
        async getDevices() {
            const device = await this.#client.getDevices();
            return device.data.body;
        }
    }
    
    // app.controller.ts
    import { Controller, Get, Param } from '@nestjs/common';
    import { AppService } from './app.service';
    import { SwitchBotService } from 'src/switch-bot/switch-bot.service';
    
    @Controller()
    export class AppController {
        constructor(
            private readonly appService: AppService,
            private readonly _switchBot: SwitchBotService,
        ) {}
    
        @Get()
        getHello(@Param('deviceId') deviceId: string) {
            const res = await this._switchBot.RoomLight(deviceId, 'on');
            return res.message;
        }
    }

    参考

    公式 SwitchBotAPI のドキュメント

    Install

    npm i @rimltempest/switchbotsdk

    DownloadsWeekly Downloads

    0

    Version

    0.2.4

    License

    MIT

    Unpacked Size

    55.3 kB

    Total Files

    36

    Last publish

    Collaborators

    • rimltempest