@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 のドキュメント

Package Sidebar

Install

npm i @rimltempest/switchbotsdk

Weekly Downloads

0

Version

0.2.4

License

MIT

Unpacked Size

55.3 kB

Total Files

36

Last publish

Collaborators

  • rimltempest