Skip to content

203 カードクラウド検証 ​

デバイスが「未登録」の NFC カードを検出した場合、即座に Bluetooth 経由で Hub3/APP に転送します。Hub3/APP が判定、またはクラウドに転送して判定を行います。

判定結果に基づき、Hub3/APP またはクラウドがこの SesameTouch に紐づけられたロックに直接コマンドを送り、解錠を実行します。

シーケンス図 ​

ssm_touch プッシュ内容 ​

ByteN ~ 210
Datapayloaditem_codetype
説明スマホに送るデータコマンド番号プッシュ種別

type : SSM2_OP_CODE_PUBLISH (0x08)

item code : SSM_OS3_VARIFY_CARD_TO_CLOUD (203)

payload : 以下の表を参照


列挙定義とデータ構造 ​

c

typedef enum {
  CARD_TYPE_OTHER = 0x00,
  CARD_TYPE_SUICA = 0x01,
  CARD_TYPE_PASMO = 0x02,
} CARD_TYPE;

typedef struct {
    uint8_t card_header;  // EMPTY 0xFF, USED 0xF0, DELETED 0x00
    uint8_t card_type;  // MIFARE、FeliCa など
    uint8_t card_id_lg;  // IDの長さ
    uint8_t card_id[16];
    uint8_t card_name_lg;  // 名前の長さ
    uint8_t card_name[20];
} card_note_t;  ///合計 40 バイト

Payload 構造 ​

カード追加時に送信される Payload の構造は以下の通りです:

バイトオフセット項目名型説明
0card_typeuint8カードタイプ(CARD_TYPE参照)
1id_lengthuint8カードIDの長さ(单位:バイト)
2 ~ (id_length + 1)card_iduint8[id_length]カードIDのバイト配列
id_length + 2name_lengthuint8名称の長さ(单位:バイト)
(id_length + 3) ~ (id_length + name_length + 2)card_nameuint8[name_length]名前のUTF-8 バイト列

Payload のバイト例 ​

例:カードタイプ = SUICA (0x01)、ID = "12345678"、名称 = "Home" の場合

バイト位置内容(16進法)説明
00x01CARD_TYPE_SUICA
10x08ID長さ = 8 バイト
2~90x01 02 03 04 05 06 07 08"12345678"
100x04名称の長さ = 4バイト
11~140x48 6F 6D 65"Home"

デバイス応答フォーマット(Hub3 から) ​

Byte210
Dataresコマンド番号応答タイプ
説明コマンド処理結果現在の指令番号応答種別定数
  • type : SSM2_OP_CODE_RESPONSE(0x07)
  • item code : SSM_OS3_VARIFY_CARD_TO_CLOUD(203)
  • res:CMD_RESULT_SUCCESS(0x00)または失敗コード

iOS、Android、ESP32 の例 ​

Android の例 ​

kotlin
TODO()

esp32 の例 ​

c
// todo

iOS の例 ​

swift
TODO()