sesame-kit 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +26 -0
- package/LICENSE.biz3 +21 -0
- package/README.ja.md +225 -0
- package/README.md +222 -0
- package/bin/sesame.js +8 -0
- package/clients/js/sesame-client.mjs +208 -0
- package/clients/python/pyproject.toml +5 -0
- package/clients/python/sesame_client.py +323 -0
- package/clients/python/setup.cfg +11 -0
- package/docs/architecture.ja.md +132 -0
- package/docs/architecture.md +105 -0
- package/docs/commands.ja.md +316 -0
- package/docs/commands.md +308 -0
- package/docs/library.ja.md +152 -0
- package/docs/library.md +152 -0
- package/docs/migration.ja.md +13 -0
- package/docs/migration.md +13 -0
- package/package.json +114 -0
- package/src/access.js +375 -0
- package/src/account.js +36 -0
- package/src/auth.js +248 -0
- package/src/ble/devicemodel.js +164 -0
- package/src/ble/index.js +185 -0
- package/src/ble/protocol.js +319 -0
- package/src/ble/session.js +235 -0
- package/src/ble/transport.js +279 -0
- package/src/cli/access.js +373 -0
- package/src/cli/company.js +104 -0
- package/src/cli/iot.js +400 -0
- package/src/cli/org.js +788 -0
- package/src/cli/presetir.js +188 -0
- package/src/cli/schedule.js +83 -0
- package/src/cli/serve.js +308 -0
- package/src/cli.js +1815 -0
- package/src/client.js +957 -0
- package/src/company.js +147 -0
- package/src/config.js +575 -0
- package/src/crypto.js +162 -0
- package/src/devices.js +228 -0
- package/src/index.js +55 -0
- package/src/iot.js +513 -0
- package/src/ir.js +341 -0
- package/src/itemcodes.js +29 -0
- package/src/lock.js +194 -0
- package/src/org.js +803 -0
- package/src/paths.js +30 -0
- package/src/presetir.js +525 -0
- package/src/prompts.js +74 -0
- package/src/schedule.js +108 -0
- package/src/serve/daemon.js +251 -0
- package/src/serve/framing/grpc.js +145 -0
- package/src/serve/framing/http.js +144 -0
- package/src/serve/framing/ndjson.js +75 -0
- package/src/serve/framing/socket.js +73 -0
- package/src/serve/framing/stdio.js +28 -0
- package/src/serve/framing/token.js +36 -0
- package/src/serve/framing/ws.js +56 -0
- package/src/serve/grpc-methods.generated.json +378 -0
- package/src/serve/jsonrpc.js +164 -0
- package/src/serve/registry.js +226 -0
- package/src/serve/rpc-params.generated.json +1746 -0
- package/src/serve/sesame.proto +470 -0
- package/src/session-ui.js +181 -0
- package/src/sharekey.js +130 -0
- package/src/tokens.js +53 -0
- package/src/transport.js +634 -0
- package/src/util.js +26 -0
- package/types/access.d.ts +193 -0
- package/types/access.d.ts.map +1 -0
- package/types/account.d.ts +13 -0
- package/types/account.d.ts.map +1 -0
- package/types/auth.d.ts +80 -0
- package/types/auth.d.ts.map +1 -0
- package/types/ble/devicemodel.d.ts +212 -0
- package/types/ble/devicemodel.d.ts.map +1 -0
- package/types/ble/index.d.ts +160 -0
- package/types/ble/index.d.ts.map +1 -0
- package/types/ble/protocol.d.ts +201 -0
- package/types/ble/protocol.d.ts.map +1 -0
- package/types/ble/session.d.ts +129 -0
- package/types/ble/session.d.ts.map +1 -0
- package/types/ble/transport.d.ts +67 -0
- package/types/ble/transport.d.ts.map +1 -0
- package/types/cli/access.d.ts +6 -0
- package/types/cli/access.d.ts.map +1 -0
- package/types/cli/company.d.ts +6 -0
- package/types/cli/company.d.ts.map +1 -0
- package/types/cli/iot.d.ts +6 -0
- package/types/cli/iot.d.ts.map +1 -0
- package/types/cli/org.d.ts +6 -0
- package/types/cli/org.d.ts.map +1 -0
- package/types/cli/presetir.d.ts +6 -0
- package/types/cli/presetir.d.ts.map +1 -0
- package/types/cli/schedule.d.ts +6 -0
- package/types/cli/schedule.d.ts.map +1 -0
- package/types/cli/serve.d.ts +2 -0
- package/types/cli/serve.d.ts.map +1 -0
- package/types/cli.d.ts +2 -0
- package/types/cli.d.ts.map +1 -0
- package/types/client.d.ts +463 -0
- package/types/client.d.ts.map +1 -0
- package/types/company.d.ts +94 -0
- package/types/company.d.ts.map +1 -0
- package/types/config.d.ts +111 -0
- package/types/config.d.ts.map +1 -0
- package/types/crypto.d.ts +61 -0
- package/types/crypto.d.ts.map +1 -0
- package/types/devices.d.ts +116 -0
- package/types/devices.d.ts.map +1 -0
- package/types/index.d.ts +23 -0
- package/types/index.d.ts.map +1 -0
- package/types/iot.d.ts +312 -0
- package/types/iot.d.ts.map +1 -0
- package/types/ir.d.ts +147 -0
- package/types/ir.d.ts.map +1 -0
- package/types/itemcodes.d.ts +21 -0
- package/types/itemcodes.d.ts.map +1 -0
- package/types/lock.d.ts +89 -0
- package/types/lock.d.ts.map +1 -0
- package/types/org.d.ts +468 -0
- package/types/org.d.ts.map +1 -0
- package/types/paths.d.ts +10 -0
- package/types/paths.d.ts.map +1 -0
- package/types/presetir.d.ts +286 -0
- package/types/presetir.d.ts.map +1 -0
- package/types/prompts.d.ts +39 -0
- package/types/prompts.d.ts.map +1 -0
- package/types/schedule.d.ts +71 -0
- package/types/schedule.d.ts.map +1 -0
- package/types/serve/daemon.d.ts +133 -0
- package/types/serve/daemon.d.ts.map +1 -0
- package/types/serve/framing/grpc.d.ts +14 -0
- package/types/serve/framing/grpc.d.ts.map +1 -0
- package/types/serve/framing/http.d.ts +14 -0
- package/types/serve/framing/http.d.ts.map +1 -0
- package/types/serve/framing/ndjson.d.ts +19 -0
- package/types/serve/framing/ndjson.d.ts.map +1 -0
- package/types/serve/framing/socket.d.ts +14 -0
- package/types/serve/framing/socket.d.ts.map +1 -0
- package/types/serve/framing/stdio.d.ts +11 -0
- package/types/serve/framing/stdio.d.ts.map +1 -0
- package/types/serve/framing/token.d.ts +11 -0
- package/types/serve/framing/token.d.ts.map +1 -0
- package/types/serve/framing/ws.d.ts +13 -0
- package/types/serve/framing/ws.d.ts.map +1 -0
- package/types/serve/jsonrpc.d.ts +118 -0
- package/types/serve/jsonrpc.d.ts.map +1 -0
- package/types/serve/registry.d.ts +41 -0
- package/types/serve/registry.d.ts.map +1 -0
- package/types/session-ui.d.ts +36 -0
- package/types/session-ui.d.ts.map +1 -0
- package/types/sharekey.d.ts +35 -0
- package/types/sharekey.d.ts.map +1 -0
- package/types/tokens.d.ts +20 -0
- package/types/tokens.d.ts.map +1 -0
- package/types/transport.d.ts +138 -0
- package/types/transport.d.ts.map +1 -0
- package/types/util.d.ts +20 -0
- package/types/util.d.ts.map +1 -0
- package/vendor/biz3/README.md +37 -0
- package/vendor/biz3/constants/cmdCode.d.ts +48 -0
- package/vendor/biz3/constants/cmdCode.d.ts.map +1 -0
- package/vendor/biz3/constants/cmdCode.js +92 -0
- package/vendor/biz3/constants/messageConstants.d.ts +28 -0
- package/vendor/biz3/constants/messageConstants.d.ts.map +1 -0
- package/vendor/biz3/constants/messageConstants.js +30 -0
- package/vendor/biz3/constants/sesameDeviceModel.d.ts +75 -0
- package/vendor/biz3/constants/sesameDeviceModel.d.ts.map +1 -0
- package/vendor/biz3/constants/sesameDeviceModel.js +77 -0
- package/vendor/biz3/package.json +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AA+eA,qEAAqE;AACrE,iDAEC;AAED,0CAA0C;AAC1C,iDAEC;AAhbD;IAUE,kDAEC;IAXD;;OAEG;IACH,wBAFW,MAAM,EAMhB;IAFC,mBAA4B;IAC5B,UAAgB;IAOlB,kBAAgD;IAEhD,wCAAwC;IACxC,YAwBC;IAED,2EAA2E;IAC3E,mBAUC;IAED,aAaC;IAED,8BAA8B;IAC9B,gBAKC;IAID,yDAAyD;IACzD;;;;;MAuBC;IAED,oCAYC;IAED,wCAkBC;IAED,kCAKC;IAED,6CAMC;IAID,qDAAqD;IACrD;;;MAWC;IAED,oCAcC;IAED,gCAKC;IAED,4BAMC;IAOD;;;;;;;OAOG;IACH,uFANW;QAAE,MAAM,EAAC,CAAC,CAAC,EAAC,MAAM,KAAG,OAAO,CAAC;QAAC,QAAQ,EAAC,MAAM,GAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,OAAO,CAAC;QACnE,UAAU,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,KAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,KAAG,OAAO,CAAA;KAAE,GAGvE;QAAC,KAAK,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAA;KAAC,CAmDhE;IAED;;;;;OAKG;IACH,oDAHW;QAAC,KAAK,CAAC,EAAC,OAAO,CAAA;KAAC,GACd;QAAC,KAAK,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAA;KAAC,CAShE;IAED;;;;;OAKG;IACH,oDAHW;QAAC,KAAK,CAAC,EAAC,OAAO,CAAA;KAAC,GACd;QAAC,KAAK,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAA;KAAC,CAShE;IAED;;;;;;;;;OASG;IACH,2CAFa;QAAC,KAAK,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAA;KAAC,CAqD9C;IAED;;;;;;OAMG;IACH,mDAHW,MAAM,GACJ;QAAC,KAAK,EAAC,MAAM,EAAE,CAAC;QAAC,OAAO,EAAC,MAAM,EAAE,CAAA;KAAC,CA0C9C;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v4 UUID を生成。biz3 biz3utils.generateUUID:269-280 と一致させる。
|
|
3
|
+
* 学習リモコンのキーは **クライアントが keyUUID を発番**してサーバに渡す
|
|
4
|
+
* (learn/index.js:222)。サーバ発番ではない。
|
|
5
|
+
*
|
|
6
|
+
* ★重要: biz3 は `randomUUID().toUpperCase()` で **大文字** UUID を返す。
|
|
7
|
+
* Node の randomUUID は既定で小文字なので toUpperCase() で揃える。
|
|
8
|
+
* (biz3 アプリと同一アカウント併用時に keyUUID 形式を一致させるため)
|
|
9
|
+
*/
|
|
10
|
+
export function generateUUID(): string;
|
|
11
|
+
/**
|
|
12
|
+
* 時刻ベースの CMAC 署名。
|
|
13
|
+
* biz3 Cmac.cmacTime() と同じ:
|
|
14
|
+
* 1. UNIX 秒を 4B LE にパック
|
|
15
|
+
* 2. 上位 3B (index 1-3) だけを取る → 256 秒粒度の時刻
|
|
16
|
+
* 3. AES-CMAC(secretKey, message) → 16B MAC
|
|
17
|
+
* 4. hex 化して先頭 8 文字 (= 4B) を返す
|
|
18
|
+
*
|
|
19
|
+
* `node-aes-cmac` は RFC 4493 標準実装。RFC 4493 §4 の Test Vector 2
|
|
20
|
+
* (key=2b7e1516..., msg=6bc1bee2..., expected=070a16b4...) で動作検証済み
|
|
21
|
+
* (リポルートで `node _crypto_test.mjs` 実行時 PASS。biz3 Cmac.js も同じ
|
|
22
|
+
* RFC 4493 標準を Web Crypto 上で自前実装しているため出力は一致する)。
|
|
23
|
+
*
|
|
24
|
+
* @param {string} hexKey 16B (32hex) の secretKey
|
|
25
|
+
* @returns {string} 4B hex (8 文字)
|
|
26
|
+
*/
|
|
27
|
+
export function cmacTime(hexKey: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* UUID (32hex with hyphens) → 18B base64 (prefix '000c' 付き)。
|
|
30
|
+
* biz3 utils.uuidBuffer() と同じ。`biz3TriggerLocker` の `history` フィールドに乗せる。
|
|
31
|
+
*
|
|
32
|
+
* @param {string} uuid 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' or 32hex
|
|
33
|
+
* @param {string} prefix デフォルト '000c'
|
|
34
|
+
* @returns {string} base64 (24 文字)
|
|
35
|
+
*/
|
|
36
|
+
export function uuidToHistoryBase64(uuid: string, prefix?: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* irType を文字列エイリアス (ac/tv/...) または数値文字列から数値に解決する。
|
|
39
|
+
* @param {string|number} v "ac" | "49152" | 0xc000 等
|
|
40
|
+
* @returns {number}
|
|
41
|
+
*/
|
|
42
|
+
export function parseIrType(v: string | number): number;
|
|
43
|
+
export function productTypeFromModelName(modelName: any): number;
|
|
44
|
+
export { ITEM_CODES as CMD } from "./itemcodes.js";
|
|
45
|
+
export const IR_TYPE: Readonly<{
|
|
46
|
+
ac: 49152;
|
|
47
|
+
tv: 8192;
|
|
48
|
+
light: 57344;
|
|
49
|
+
fan: 32768;
|
|
50
|
+
learn: 65024;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* irType が不明な場合の保険値。
|
|
54
|
+
* このツールは自己学習リモコン (learnEmit) を主対象とするため learn (0xFE00) を既定とする。
|
|
55
|
+
* (フォールバックが実際に使われるのは server が type を報告しない異常時のみ)
|
|
56
|
+
*/
|
|
57
|
+
export const DEFAULT_IR_TYPE: 65024;
|
|
58
|
+
export const PRODUCT_TYPE: Readonly<{
|
|
59
|
+
[k: string]: number;
|
|
60
|
+
}>;
|
|
61
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.js"],"names":[],"mappings":"AAmBA;;;;;;;;GAQG;AACH,uCAEC;AAID;;;;;;;;;;;;;;;GAeG;AACH,iCAHW,MAAM,GACJ,MAAM,CAoBlB;AAID;;;;;;;GAOG;AACH,0CAJW,MAAM,WACN,MAAM,GACJ,MAAM,CASlB;AA6CD;;;;GAIG;AACH,+BAHW,MAAM,GAAC,MAAM,GACX,MAAM,CAWlB;AAaD,iEAEC;;AA5CD;;;;;;GAMG;AAEH;;;;GAIG;AACH,oCAA6C;AAuB7C;;GAIE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/** 個人ユーザのデバイス一覧。companyID 不要。 */
|
|
2
|
+
export function getUserDevices(client: any, { timeoutMs }?: {
|
|
3
|
+
timeoutMs?: number;
|
|
4
|
+
}): Promise<any>;
|
|
5
|
+
/** 単機の現在状態 (ロック開閉、電池等)。biz3 では isFromApp=true 限定だが CLI でも投げてみる価値あり。 */
|
|
6
|
+
export function getDeviceStatus(client: any, { deviceUUID }: {
|
|
7
|
+
deviceUUID: any;
|
|
8
|
+
}): Promise<any>;
|
|
9
|
+
/** デバイス名変更。subUUID は呼び出し側 (client.js) が持つ。 */
|
|
10
|
+
export function updateDeviceName(client: any, { subUUID, deviceUUID, deviceName }: {
|
|
11
|
+
subUUID: any;
|
|
12
|
+
deviceUUID: any;
|
|
13
|
+
deviceName: any;
|
|
14
|
+
}): Promise<any>;
|
|
15
|
+
/** デバイスを company から削除。items=[{deviceUUID,...}] */
|
|
16
|
+
export function deleteDevices(client: any, { companyID, items }: {
|
|
17
|
+
companyID: any;
|
|
18
|
+
items: any;
|
|
19
|
+
}): Promise<any>;
|
|
20
|
+
/**
|
|
21
|
+
* デバイス state push を購読。subscribeDevicesUpdate (biz3ManageDevice) を投げて購読要求し、
|
|
22
|
+
* 実際の state push は **`biz3TriggerLocker:pubDeviceStateChange`** で届く。
|
|
23
|
+
*
|
|
24
|
+
* 注 (監査で修正): 購読要求の op は biz3ManageDevice/subscribeDevicesUpdate
|
|
25
|
+
* (useManageDevice.js:325) だが、**応答の push は別 action/op** で来る:
|
|
26
|
+
* biz3 は `biz3TriggerLocker` action の `pubDeviceStateChange` (小文字, useIotCtrl.js:11,21)
|
|
27
|
+
* として state 変化を流す。push 本体は `data = {deviceUUID, stateInfo}`。
|
|
28
|
+
* 旧実装は `biz3ManageDevice:PubedDeviceStateChange` (大文字 P・別 action) を購読しており
|
|
29
|
+
* push を1件も受信できなかった。
|
|
30
|
+
*
|
|
31
|
+
* **既知の制限**: biz3 プロトコルに `unsubscribeDevicesUpdate` op は無いため、
|
|
32
|
+
* unsubscribe()/close() 後もサーバ側 push は止まらない (ローカルで無視するだけ)。
|
|
33
|
+
*/
|
|
34
|
+
export function subscribeDevicesUpdate(client: any, { companyID, items, onUpdate }: {
|
|
35
|
+
companyID: any;
|
|
36
|
+
items: any;
|
|
37
|
+
onUpdate: any;
|
|
38
|
+
}): any;
|
|
39
|
+
/**
|
|
40
|
+
* ロックの開閉履歴を取得。`list` はデバイス指定の配列。
|
|
41
|
+
* @param {{companyID:string, list:any[], pageSize?:number}} p
|
|
42
|
+
*/
|
|
43
|
+
export function getDeviceHistory(client: any, { companyID, list, pageSize }: {
|
|
44
|
+
companyID: any;
|
|
45
|
+
list: any;
|
|
46
|
+
pageSize?: any;
|
|
47
|
+
}): Promise<any>;
|
|
48
|
+
/**
|
|
49
|
+
* 開閉履歴の1エントリを非表示化 (論理削除)。
|
|
50
|
+
* biz3 useManageGroup.js makeInvisibleHistory: フラット {action, deviceUUID, timestamp, op}。
|
|
51
|
+
* @param {{deviceUUID:string, timestamp:number}} p
|
|
52
|
+
*/
|
|
53
|
+
export function makeHistoryInvisible(client: any, { deviceUUID, timestamp }: {
|
|
54
|
+
deviceUUID: any;
|
|
55
|
+
timestamp: any;
|
|
56
|
+
}): Promise<any>;
|
|
57
|
+
/**
|
|
58
|
+
* 電池履歴を取得。DynamoDB の lastEvaluatedKey でページング。
|
|
59
|
+
* 1 回呼ぶごとに 1 ページ分。null → 最新ページ。
|
|
60
|
+
* 戻り値: { records: [{ts, light, heavy, lightPercentage, heavyPercentage}], lastEvaluatedKey }
|
|
61
|
+
*/
|
|
62
|
+
export function getBatteryRecord(client: any, { deviceUUID, lastEvaluatedKey, pageSize }: {
|
|
63
|
+
deviceUUID: any;
|
|
64
|
+
lastEvaluatedKey?: any;
|
|
65
|
+
pageSize?: number;
|
|
66
|
+
}): Promise<any>;
|
|
67
|
+
/**
|
|
68
|
+
* 電池履歴の1エントリを非表示化 (論理削除)。
|
|
69
|
+
* biz3 MobileBatteryChart.js makeInvisibleRecord: フラット {action, deviceUUID, timestamp_second, op}。
|
|
70
|
+
* @param {{deviceUUID:string, timestampSecond:number}} p
|
|
71
|
+
*/
|
|
72
|
+
export function makeBatteryRecordInvisible(client: any, { deviceUUID, timestampSecond }: {
|
|
73
|
+
deviceUUID: any;
|
|
74
|
+
timestampSecond: any;
|
|
75
|
+
}): Promise<any>;
|
|
76
|
+
/** 配信中ファームウェア一覧。 */
|
|
77
|
+
export function listFirmware(client: any): Promise<any>;
|
|
78
|
+
/**
|
|
79
|
+
* biz3InvokeWebAPIs 経由で REST WebAPI を呼ぶ。
|
|
80
|
+
* func 例: 'webapi_ssm_shadow_get', 'webapi_history_get', 'webapi_cmd_send'。
|
|
81
|
+
* apiKeyId は別途 biz3 の dev console で発行されたもの。
|
|
82
|
+
*
|
|
83
|
+
* @param {{func:string, apiKeyId:string, query?:object, body?:object}} p
|
|
84
|
+
*/
|
|
85
|
+
export function invokeWebAPI(client: any, { func, apiKeyId, query, body }: {
|
|
86
|
+
func: any;
|
|
87
|
+
apiKeyId: any;
|
|
88
|
+
query?: {};
|
|
89
|
+
body?: {};
|
|
90
|
+
}): Promise<any>;
|
|
91
|
+
/** WebAPI 経由で 単機の shadow state を取得。 */
|
|
92
|
+
export function webapiDeviceState(client: any, { apiKeyId, deviceId }: {
|
|
93
|
+
apiKeyId: any;
|
|
94
|
+
deviceId: any;
|
|
95
|
+
}): Promise<any>;
|
|
96
|
+
/**
|
|
97
|
+
* WebAPI 経由で履歴を取得。
|
|
98
|
+
* biz3 useDeveloper.js:67-80: query = {device_id, page:0, lg:5, isBiz:true}。
|
|
99
|
+
* lg は言語コードの**数値 ID** (biz3 は 5 を渡す)。旧実装は "ja" (文字列) で誤り。
|
|
100
|
+
*/
|
|
101
|
+
export function webapiDeviceHistory(client: any, { apiKeyId, deviceId, page, lg, isBiz }: {
|
|
102
|
+
apiKeyId: any;
|
|
103
|
+
deviceId: any;
|
|
104
|
+
page?: number;
|
|
105
|
+
lg?: number;
|
|
106
|
+
isBiz?: boolean;
|
|
107
|
+
}): Promise<any>;
|
|
108
|
+
/** WebAPI 経由でロック cmd 送信 (sign/history は呼び出し側で組み立て)。 */
|
|
109
|
+
export function webapiSendCmd(client: any, { apiKeyId, deviceId, cmd, sign, history }: {
|
|
110
|
+
apiKeyId: any;
|
|
111
|
+
deviceId: any;
|
|
112
|
+
cmd: any;
|
|
113
|
+
sign: any;
|
|
114
|
+
history: any;
|
|
115
|
+
}): Promise<any>;
|
|
116
|
+
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../src/devices.js"],"names":[],"mappings":"AAyBA,iCAAiC;AACjC;;iBAoBC;AAED,uEAAuE;AACvE;;iBAOC;AAED,8CAA8C;AAC9C;;;;iBAWC;AAED,kDAAkD;AAClD;;;iBAOC;AAED;;;;;;;;;;;;;GAaG;AACH;;;;QAKC;AAID;;;GAGG;AACH;;;;iBAOC;AAED;;;;GAIG;AACH;;;iBAOC;AAID;;;;GAIG;AACH;;;;iBAOC;AAED;;;;GAIG;AACH;;;iBAOC;AAID,oBAAoB;AACpB,wDAWC;AAID;;;;;;GAMG;AACH;;;;;iBAOC;AAID,uCAAuC;AACvC;;;iBAMC;AAED;;;;GAIG;AACH;;;;;;iBAMC;AAED,uDAAuD;AACvD;;;;;;iBAMC"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { SesameHub3 } from "./client.js";
|
|
2
|
+
export { FileTokenStore } from "./tokens.js";
|
|
3
|
+
export { ConfigStore } from "./config.js";
|
|
4
|
+
export * as auth from "./auth.js";
|
|
5
|
+
export * as crypto from "./crypto.js";
|
|
6
|
+
export * as ir from "./ir.js";
|
|
7
|
+
export * as devices from "./devices.js";
|
|
8
|
+
export * as account from "./account.js";
|
|
9
|
+
export * as schedule from "./schedule.js";
|
|
10
|
+
export * as org from "./org.js";
|
|
11
|
+
export * as company from "./company.js";
|
|
12
|
+
export * as access from "./access.js";
|
|
13
|
+
export * as iot from "./iot.js";
|
|
14
|
+
export * as presetir from "./presetir.js";
|
|
15
|
+
export * as sharekey from "./sharekey.js";
|
|
16
|
+
export * as lock from "./lock.js";
|
|
17
|
+
export * as ble from "./ble/index.js";
|
|
18
|
+
export { SesameBle } from "./ble/index.js";
|
|
19
|
+
export { assertSuccess } from "./util.js";
|
|
20
|
+
export { Hub3WsClient, sendIR, getIRCodes } from "./transport.js";
|
|
21
|
+
export { configPaths, resolveConfigDir } from "./paths.js";
|
|
22
|
+
export { triggerLock, lockLock, lockUnlock, lockToggle, botClick, triggerItemCommand, setAutolock } from "./lock.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":""}
|
package/types/iot.d.ts
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hub3_id から MQTT cmd topic を構築する (useIotCtrl.js:112-116)。
|
|
3
|
+
* hub3_id 未指定なら device_id を流用 (WiFi モデルは自身が Hub3)。
|
|
4
|
+
* 大文字小文字変換は一切しない。
|
|
5
|
+
* @param {string} hub3Id 親 Hub3 (または自身) の UUID (ハイフン付き小文字想定)
|
|
6
|
+
* @returns {string} `wm2{末尾セグメント}cmd`
|
|
7
|
+
*/
|
|
8
|
+
export function buildIotTopic(hub3Id: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* iot cmd の payload バイト列を構築し base64 文字列を返す (useIotCtrl.js:120-222)。
|
|
11
|
+
* 連結順: signArray(4B) ++ cmd(1B) ++ device_id UTF8 ++ extra(任意)。
|
|
12
|
+
*
|
|
13
|
+
* @param {{
|
|
14
|
+
* cmd: number, // cmdCode (下位8bit のみ採用)
|
|
15
|
+
* deviceId: string, // 対象デバイスの UUID 文字列 (UTF8 バイト化される)
|
|
16
|
+
* secretKey: string, // 32hex。署名に使う device の secretKey
|
|
17
|
+
* extra?: Uint8Array, // cmd 別追加バイト (無ければ無し)
|
|
18
|
+
* }} p
|
|
19
|
+
* @returns {string} base64 payload
|
|
20
|
+
*/
|
|
21
|
+
export function buildIotPayload({ cmd, deviceId, secretKey, extra }: {
|
|
22
|
+
cmd: number;
|
|
23
|
+
deviceId: string;
|
|
24
|
+
secretKey: string;
|
|
25
|
+
extra?: Uint8Array;
|
|
26
|
+
}): string;
|
|
27
|
+
/**
|
|
28
|
+
* 既に組み上げた topic / base64 payload で iot cmd を送る (useOperateIoT.js:54-61)。
|
|
29
|
+
* 送信は fire-and-forget。応答 (op=数値cmdCode) を待ちたい場合は
|
|
30
|
+
* subscribeIotResponse を併用するか、send 前後で購読すること。
|
|
31
|
+
*
|
|
32
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
33
|
+
* @param {{ topic: string, payload: string, op?: string }} p op は既定 'cmd'
|
|
34
|
+
* @returns {void}
|
|
35
|
+
*/
|
|
36
|
+
export function sendIotCmd(client: import("./transport.js").Hub3WsClient, { topic, payload, op }: {
|
|
37
|
+
topic: string;
|
|
38
|
+
payload: string;
|
|
39
|
+
op?: string;
|
|
40
|
+
}): void;
|
|
41
|
+
/**
|
|
42
|
+
* iot cmd の応答 push を購読する (useOperateIoT.js:6-43)。
|
|
43
|
+
* 購読キーは `biz3OperateIoT:<cmdCode>` (応答の message.op は数値 cmdCode の echo)。
|
|
44
|
+
* 戻り値の unsubscribe を必ず呼ぶこと。
|
|
45
|
+
*
|
|
46
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
47
|
+
* @param {number} cmd 待ち受ける cmdCode (応答 op と一致)
|
|
48
|
+
* @param {(msg:any)=>void} fn 応答コールバック (msg 全体を渡す)
|
|
49
|
+
* @returns {()=>void} unsubscribe
|
|
50
|
+
*/
|
|
51
|
+
export function subscribeIotResponse(client: import("./transport.js").Hub3WsClient, cmd: number, fn: (msg: any) => void): () => void;
|
|
52
|
+
/**
|
|
53
|
+
* iot cmd を送信し、対象デバイスからの応答 push (op=cmd) を 1 件待つ共通ヘルパー。
|
|
54
|
+
*
|
|
55
|
+
* 応答 push は op=数値cmdCode で届き、device 特定は message.UUID || message.touch_id
|
|
56
|
+
* (useOperateIoT.js:9-18)。deviceId 指定時はそれと一致する push のみ採用する。
|
|
57
|
+
*
|
|
58
|
+
* 注意 (未確認): RELAY_SWITCH(208) / CLEAR_WIFI_SSID(210) など、biz3 web 側に専用
|
|
59
|
+
* コールバック登録が無い cmd は応答 push が来ない可能性がある。それらは
|
|
60
|
+
* sendIotCmd (fire-and-forget) を使うこと。
|
|
61
|
+
*
|
|
62
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
63
|
+
* @param {{
|
|
64
|
+
* topic: string,
|
|
65
|
+
* payload: string,
|
|
66
|
+
* cmd: number, // 応答 op と照合する cmdCode
|
|
67
|
+
* deviceId?: string, // 応答の UUID/touch_id と照合 (省略時は最初の応答を採用)
|
|
68
|
+
* timeoutMs?: number,
|
|
69
|
+
* }} p
|
|
70
|
+
* @returns {Promise<any>} 応答 message (data があれば message 全体を返す。data 抽出は呼び出し側)
|
|
71
|
+
*/
|
|
72
|
+
export function sendIotCmdAwait(client: import("./transport.js").Hub3WsClient, { topic, payload, cmd, deviceId, timeoutMs }: {
|
|
73
|
+
topic: string;
|
|
74
|
+
payload: string;
|
|
75
|
+
cmd: number;
|
|
76
|
+
deviceId?: string;
|
|
77
|
+
timeoutMs?: number;
|
|
78
|
+
}): Promise<any>;
|
|
79
|
+
/**
|
|
80
|
+
* Hub3 (WiFi) 本体 LED の調光を設定/取得する (cmdCode=92 / 0x5C, useIotCtrl.js:163-190,
|
|
81
|
+
* MobileWifiModule.js:129-172)。
|
|
82
|
+
* payload extra = [op(1B), duty(1B)]。op は set=0x01 / get=0x02。
|
|
83
|
+
*
|
|
84
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
85
|
+
* @param {{
|
|
86
|
+
* deviceId: string, // Hub3 の deviceUUID
|
|
87
|
+
* secretKey: string, // Hub3 の secretKey (32hex)
|
|
88
|
+
* hub3Id?: string, // topic 用。省略時 deviceId
|
|
89
|
+
* op: number, // 0x01=set / 0x02=get (0..255)
|
|
90
|
+
* duty: number, // 0..255 (set 時の輝度。get 時もダミー必須)
|
|
91
|
+
* timeoutMs?: number,
|
|
92
|
+
* }} p
|
|
93
|
+
* @returns {Promise<{ ledDuty: number|undefined, message: any }>} data.ledDuty (0..255)
|
|
94
|
+
*/
|
|
95
|
+
export function setHub3LedDuty(client: import("./transport.js").Hub3WsClient, p: {
|
|
96
|
+
deviceId: string;
|
|
97
|
+
secretKey: string;
|
|
98
|
+
hub3Id?: string;
|
|
99
|
+
op: number;
|
|
100
|
+
duty: number;
|
|
101
|
+
timeoutMs?: number;
|
|
102
|
+
}): Promise<{
|
|
103
|
+
ledDuty: number | undefined;
|
|
104
|
+
message: any;
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* Hub3 LTE リレー (継電器) を開閉する (cmdCode=208 / 0xD0, useIotCtrl.js:192-213,
|
|
108
|
+
* VIotSwitch.js:56-71)。
|
|
109
|
+
* payload extra = [op(1B)] (省略時 op=0x01 = 開閉操作)。
|
|
110
|
+
*
|
|
111
|
+
* 応答 push は biz3 web に専用コールバック登録が無いため未確認 (spec responseShape:
|
|
112
|
+
* useIotCtrl.js:192-213)。本ラッパは fire-and-forget で送信する (応答は待たない)。
|
|
113
|
+
*
|
|
114
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
115
|
+
* @param {{
|
|
116
|
+
* deviceId: string, // Hub3 LTE の deviceUUID
|
|
117
|
+
* secretKey: string, // 32hex
|
|
118
|
+
* hub3Id?: string, // topic 用。省略時 deviceId
|
|
119
|
+
* op?: number, // 既定 0x01
|
|
120
|
+
* }} p
|
|
121
|
+
* @returns {void}
|
|
122
|
+
*/
|
|
123
|
+
export function hub3RelaySwitch(client: import("./transport.js").Hub3WsClient, p: {
|
|
124
|
+
deviceId: string;
|
|
125
|
+
secretKey: string;
|
|
126
|
+
hub3Id?: string;
|
|
127
|
+
op?: number;
|
|
128
|
+
}): void;
|
|
129
|
+
/**
|
|
130
|
+
* Hub3 にぶら下がり Sesame を追加する (cmdCode=101 / 0x65, useIotCtrl.js:53-107/159-161,
|
|
131
|
+
* MobileBindDevice.js:70-97)。
|
|
132
|
+
*
|
|
133
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
134
|
+
* @param {{
|
|
135
|
+
* hub3Id: string, // 親 Hub3 の deviceUUID (= device_id として payload に入る + topic)
|
|
136
|
+
* secretKey: string, // 親 Hub3 の secretKey (32hex)。署名に使う
|
|
137
|
+
* sesameId: string, // 追加する Sesame の UUID
|
|
138
|
+
* ssmSecKa: string, // Sesame の secretKey (32hex)
|
|
139
|
+
* nickName?: string,
|
|
140
|
+
* deviceModel: string, // 例 'sesame_5' (productType/matterProductType 導出に必要)
|
|
141
|
+
* timeoutMs?: number,
|
|
142
|
+
* }} p
|
|
143
|
+
* @returns {Promise<{ ssks: any, message: any }>} data.ssks (ぶら下がりリスト状態)
|
|
144
|
+
*/
|
|
145
|
+
export function addSesameToHub3(client: import("./transport.js").Hub3WsClient, p: {
|
|
146
|
+
hub3Id: string;
|
|
147
|
+
secretKey: string;
|
|
148
|
+
sesameId: string;
|
|
149
|
+
ssmSecKa: string;
|
|
150
|
+
nickName?: string;
|
|
151
|
+
deviceModel: string;
|
|
152
|
+
timeoutMs?: number;
|
|
153
|
+
}): Promise<{
|
|
154
|
+
ssks: any;
|
|
155
|
+
message: any;
|
|
156
|
+
}>;
|
|
157
|
+
/**
|
|
158
|
+
* Hub3 からぶら下がり Sesame を削除する (cmdCode=103 / 0x67, useIotCtrl.js:155-158)。
|
|
159
|
+
* payload packing は ADD と完全同形 (handleSesameItemOperation を共用)。
|
|
160
|
+
*
|
|
161
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
162
|
+
* @param {Parameters<typeof addSesameToHub3>[1]} p addSesameToHub3 と同じ
|
|
163
|
+
* @returns {Promise<{ ssks: any, message: any }>}
|
|
164
|
+
*/
|
|
165
|
+
export function removeSesameFromHub3(client: import("./transport.js").Hub3WsClient, p: Parameters<typeof addSesameToHub3>[1]): Promise<{
|
|
166
|
+
ssks: any;
|
|
167
|
+
message: any;
|
|
168
|
+
}>;
|
|
169
|
+
/**
|
|
170
|
+
* ファームウェア更新 (DFU) をトリガする (cmdCode=0x03, useIotCtrl.js:110-111/153,
|
|
171
|
+
* UpgradeFirmware.js:98-120)。
|
|
172
|
+
* iotPayload なし。payload = [sign, cmd=0x03, device_id]。
|
|
173
|
+
*
|
|
174
|
+
* 進捗は長時間にわたり複数回 push で届く (data={progress, versionTag, UUID})。
|
|
175
|
+
* versionTag があれば完了。よって応答は subscribeIotResponse で複数回受ける設計とし、
|
|
176
|
+
* 本関数は送信のみ + 購読 unsubscribe を返す。
|
|
177
|
+
*
|
|
178
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
179
|
+
* @param {{
|
|
180
|
+
* deviceId: string, // 更新対象の UUID (payload の device_id)
|
|
181
|
+
* hub3Id?: string, // topic 用 (親 Hub3。WiFi モデルは自身)。省略時 deviceId
|
|
182
|
+
* secretKey: string, // 32hex
|
|
183
|
+
* onProgress?: (data:{progress?:number, versionTag?:string, UUID?:string})=>void,
|
|
184
|
+
* }} p
|
|
185
|
+
* @returns {()=>void} unsubscribe (進捗購読の解除)
|
|
186
|
+
*/
|
|
187
|
+
export function startFirmwareUpdate(client: import("./transport.js").Hub3WsClient, p: {
|
|
188
|
+
deviceId: string;
|
|
189
|
+
hub3Id?: string;
|
|
190
|
+
secretKey: string;
|
|
191
|
+
onProgress?: (data: {
|
|
192
|
+
progress?: number;
|
|
193
|
+
versionTag?: string;
|
|
194
|
+
UUID?: string;
|
|
195
|
+
}) => void;
|
|
196
|
+
}): () => void;
|
|
197
|
+
/**
|
|
198
|
+
* Hub3 の保存 WiFi 設定をクリアする (cmdCode=210 / 0xD2, useIotCtrl.js:214-215,
|
|
199
|
+
* MobileWifiModule.js:146-153)。追加バイト無し。
|
|
200
|
+
*
|
|
201
|
+
* 応答 push は専用コールバック登録が無く未確認のため fire-and-forget。
|
|
202
|
+
*
|
|
203
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
204
|
+
* @param {{ deviceId: string, secretKey: string, hub3Id?: string }} p
|
|
205
|
+
* @returns {void}
|
|
206
|
+
*/
|
|
207
|
+
export function clearHub3WifiSsid(client: import("./transport.js").Hub3WsClient, { deviceId, secretKey, hub3Id }: {
|
|
208
|
+
deviceId: string;
|
|
209
|
+
secretKey: string;
|
|
210
|
+
hub3Id?: string;
|
|
211
|
+
}): void;
|
|
212
|
+
/**
|
|
213
|
+
* Matter ペアリングコード (QR/手動コード) を取得する (cmdCode=137 / 0x89,
|
|
214
|
+
* MobileWifiModule.js:82-96)。iotPayload なし。
|
|
215
|
+
*
|
|
216
|
+
* 注意: cmdCode 137 は STP_ITEM_CODE_PASSCODE_CHANGE_VALUE とも重複定義 (cmdCode.js:73,80)。
|
|
217
|
+
* Hub3 文脈で使うこと。
|
|
218
|
+
*
|
|
219
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
220
|
+
* @param {{ deviceId: string, secretKey: string, hub3Id?: string, timeoutMs?: number }} p
|
|
221
|
+
* @returns {Promise<{ qrCode: string|undefined, manualCode: string|undefined, message: any }>}
|
|
222
|
+
*/
|
|
223
|
+
export function getMatterPairingCode(client: import("./transport.js").Hub3WsClient, p: {
|
|
224
|
+
deviceId: string;
|
|
225
|
+
secretKey: string;
|
|
226
|
+
hub3Id?: string;
|
|
227
|
+
timeoutMs?: number;
|
|
228
|
+
}): Promise<{
|
|
229
|
+
qrCode: string | undefined;
|
|
230
|
+
manualCode: string | undefined;
|
|
231
|
+
message: any;
|
|
232
|
+
}>;
|
|
233
|
+
/**
|
|
234
|
+
* Matter ペアリング窓を開く (cmdCode=153 / 0x99, MobileWifiModule.js:97-126)。iotPayload なし。
|
|
235
|
+
* data={statusCode}。statusCode===0 で成功。
|
|
236
|
+
*
|
|
237
|
+
* @param {import("./transport.js").Hub3WsClient} client
|
|
238
|
+
* @param {{ deviceId: string, secretKey: string, hub3Id?: string, timeoutMs?: number }} p
|
|
239
|
+
* @returns {Promise<{ statusCode: number|undefined, message: any }>}
|
|
240
|
+
*/
|
|
241
|
+
export function openMatterPairingWindow(client: import("./transport.js").Hub3WsClient, p: {
|
|
242
|
+
deviceId: string;
|
|
243
|
+
secretKey: string;
|
|
244
|
+
hub3Id?: string;
|
|
245
|
+
timeoutMs?: number;
|
|
246
|
+
}): Promise<{
|
|
247
|
+
statusCode: number | undefined;
|
|
248
|
+
message: any;
|
|
249
|
+
}>;
|
|
250
|
+
export namespace __internal {
|
|
251
|
+
export { hexStringToUint8Array };
|
|
252
|
+
export { stringToUint8Array };
|
|
253
|
+
export { getProductTypeFromModelName };
|
|
254
|
+
export { getMatterProductTypeFromModelName };
|
|
255
|
+
export { buildSesameItemExtra };
|
|
256
|
+
export { concatBytes };
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* namespace (hub.iot.*) に露出する client op の allowlist。
|
|
260
|
+
* buildIotTopic / buildIotPayload / __internal は client を取らない内部ヘルパー
|
|
261
|
+
* なので namespace に出さない (低レベル用途は index.js から直接 import)。
|
|
262
|
+
*/
|
|
263
|
+
export const NAMESPACE_OPS: string[];
|
|
264
|
+
/**
|
|
265
|
+
* hex 文字列を Uint8Array に変換 (biz3utils.js:221-235)。
|
|
266
|
+
* null/undefined は空配列 (biz3utils と同挙動)。奇数長は例外。
|
|
267
|
+
* @param {string|null|undefined} hexString
|
|
268
|
+
* @returns {Uint8Array}
|
|
269
|
+
*/
|
|
270
|
+
declare function hexStringToUint8Array(hexString: string | null | undefined): Uint8Array;
|
|
271
|
+
/**
|
|
272
|
+
* 文字列を UTF8 バイト列に変換 (biz3utils.js:240-243 stringToUint8Array)。
|
|
273
|
+
* @param {string} str
|
|
274
|
+
* @returns {Uint8Array}
|
|
275
|
+
*/
|
|
276
|
+
declare function stringToUint8Array(str: string): Uint8Array;
|
|
277
|
+
/**
|
|
278
|
+
* deviceModel 名 → productType の数値 (biz3utils.js:53-56)。
|
|
279
|
+
* vendor の modelNameByProductType を逆引き。未知は null。
|
|
280
|
+
* @param {string} modelName
|
|
281
|
+
* @returns {number|null}
|
|
282
|
+
*/
|
|
283
|
+
declare function getProductTypeFromModelName(modelName: string): number | null;
|
|
284
|
+
/**
|
|
285
|
+
* deviceModel 名 → matter product type (biz3utils.js:58-101)。
|
|
286
|
+
* productType が不明なら null。map に無ければ undefined。
|
|
287
|
+
* @param {string} modelName
|
|
288
|
+
* @returns {number|null|undefined}
|
|
289
|
+
*/
|
|
290
|
+
declare function getMatterProductTypeFromModelName(modelName: string): number | null | undefined;
|
|
291
|
+
/**
|
|
292
|
+
* ADD/REMOVE_SESAME の追加バイトを構築する (handleSesameItemOperation, useIotCtrl.js:53-107)。
|
|
293
|
+
* 連結順: sesameId(16B) ++ secretKey(16B) ++ nickNameLen(1B) ++ nickNameUTF8 ++
|
|
294
|
+
* productType(1B) ++ matterProductType(1B)。
|
|
295
|
+
*
|
|
296
|
+
* @param {{ sesameId: string, ssmSecKa: string, nickName?: string, deviceModel: string }} iotPayload
|
|
297
|
+
* @returns {Uint8Array}
|
|
298
|
+
*/
|
|
299
|
+
declare function buildSesameItemExtra(iotPayload: {
|
|
300
|
+
sesameId: string;
|
|
301
|
+
ssmSecKa: string;
|
|
302
|
+
nickName?: string;
|
|
303
|
+
deviceModel: string;
|
|
304
|
+
}): Uint8Array;
|
|
305
|
+
/**
|
|
306
|
+
* Uint8Array を連結する小ヘルパー (biz3 の手動 offset 連結を簡潔化)。
|
|
307
|
+
* @param {...Uint8Array} arrays
|
|
308
|
+
* @returns {Uint8Array}
|
|
309
|
+
*/
|
|
310
|
+
declare function concatBytes(...arrays: Uint8Array[]): Uint8Array;
|
|
311
|
+
export {};
|
|
312
|
+
//# sourceMappingURL=iot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iot.d.ts","sourceRoot":"","sources":["../src/iot.js"],"names":[],"mappings":"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"}
|