@yame834

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Raspberry PiからSesame 5 ProをAPI経由で解錠しようとすると200が返るが鍵が動かない

解決したいこと

Raspberry PiからPythonスクリプトを使い、Sesame 5 ProをAPI経由で解錠・施錠したいです。
APIリクエスト自体は成功しているように見えるのですが、物理的に鍵が全く動作しません。

実行環境

Raspberry Pi 4 B

Python 3.11

使用ライブラリ: requests

デバイス構成:

Sesame 5 Pro

Sesame Hub 3(ペアリング済み、LED点灯確認済み)

試したコード
以下のsasame_control.pyを実行しました。

import requests
import base64
import hashlib
import hmac
import time

# ---- 情報 ----
API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DEVICE_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxFFFFF"
SECRET_KEY = bytes.fromhex("xxxxxxxxxxxxxxxxxxxxxxxxxx209443")
# ---------------------

def generate_sign(secret, ts):
    message = ts.encode("utf-8")
    sign = hmac.new(secret, message, hashlib.sha256).hexdigest()
    return sign

def send_command(cmd):
    ts = str(int(time.time()))
    sign = generate_sign(SECRET_KEY, ts)

    url = f"https://app.candyhouse.co/api/sesame2/{DEVICE_ID}/cmd"
    headers = {
        "x-api-key": API_KEY,
        "Content-Type": "application/json"
    }
    payload = {
        "cmd": cmd,  # 82=lock, 83=unlock, 88=toggle
        "history": base64.b64encode("raspi-control".encode()).decode(),
        "sign": sign,
        "timestamp": ts
    }

    r = requests.post(url, headers=headers, json=payload)
    print("Response:", r.status_code, r.text)

if __name__ == "__main__":
    print("🔓 Unlocking Sesame...")
    send_command(83)  # 解錠

    time.sleep(5)

    print("🔒 Locking Sesame...")
    send_command(82)  # 施錠

実行結果

python3 sesame_control.py
🔓 Unlocking Sesame...
Response: 200 {"statusCode":200}
🔒 Locking Sesame...
Response: 200 {"statusCode":200}

APIからのレスポンスは常に 200 {"statusCode":200}

Sesame Hub 3のLEDは強く点灯しており、リクエストを受けている反応はあり

Candy House公式のAPI利用回数カウントにも反映される

しかし Sesame 5 Pro本体の鍵は一切動作しない

補足

Sesameアプリからの操作(スマホ→Hub経由)は正常に解錠・施錠できます。

APIキーは正しく設定済みです。

Device Secret KeyもSesameアプリから取得済みのものを使用しています。

知りたいこと / 質問

レスポンスが200であっても鍵が動作しない場合、考えられる原因は何でしょうか?

Hub 3とSesame 5 Pro間の設定に不足がある?

同じように「200は返るが鍵が動かない」という現象を経験された方はいますか?

デバッグのために確認すべきAPIレスポンスやログの取り方があれば教えていただきたいです。

🙏 どなたかヒントをいただけると助かります!

0 likes

1Answer

GPTさんに聞いた限りですが、v3系のAPIを使ってとのことです。(が、今のままでも動いてそうなので次の要因かなと思います。)
Commandのレスポンスはtask_id=200を返すだけとのことで、ロック成功の如何には関わらないそうです。ポーリングをしてステータスをみる必要があるようです。

v3系ドキュメント
https://docs.candyhouse.co/#introduction

0Like

Your answer might help someone💌