まずSESAMEのスマホアプリをインストールし、
こちらをクリックし、下記画面からQRコードを取得してスクショ等で保存します。WiFiモジュール(別売り)も用意し登録しておきましょう。
こちらへメールアドレスを入力して頂きAPIキーを取得します。
下記画面になりAPIキーを確認したら、QRコード読み取りボタンから先ほど保存したQR画像を読み込むとUUIDとシークレットキーが取得できます。
あとは環境変数に上記3点を入れればコードから使用出来るようになります。下記コードは、デバイスを操作
ボタンを押した時と同じ動作が実行できるtoggle()
関数です。
sesame.ts
import axios from 'axios'
import env from './env'
const aesCmac = require('node-aes-cmac').aesCmac;
export let toggle = async () => {
const { sesameId, sesameApiKey, keySecretHex } = env.sesame
let cmd = 82 //(toggle:88,lock:82,unlock:83)
let history = "Toggled via API"
let base64_history = Buffer.from(history).toString('base64');
let sign = generateRandomTag(keySecretHex)
let after_cmd = await axios({
method: 'post',
url: `https://app.candyhouse.co/api/sesame2/${sesameId}/cmd`,
headers: { 'x-api-key': sesameApiKey },
data: {
cmd: cmd,
history: base64_history,
sign: sign
}
})
};
function generateRandomTag(secret: any) {
let key = Buffer.from(secret, 'hex')
const date = Math.floor(Date.now() / 1000);
const dateDate = Buffer.allocUnsafe(4);
dateDate.writeUInt32LE(date);
const message = Buffer.from(dateDate.slice(1, 4));
return aesCmac(key, message);
}