【不具合解消済・備忘録】Sesame5がRaspiから突然操作できなくなった話

解決済みの記事です!

2026.5.29夜間に、gomalock v1.1.1.がリリースされこのエラーは解消しています。meronepyさんご対応ありがとうございます!
ということで同じエラーに悩まされている人がいたらひとまず更新しましょう。でもこのエラー、誰も騒いでなかった気がするんですよね。Twitterとかでも引っかからなかったし。

~~~以下本文~~~

こんにちは。亀戸杯です。
電子ロックっていいものですね、粘着テープだけ剥がれないようにしていれば鍵を持たずに開錠施錠ができる。このせいで実家の鍵を忘れて帰省したことがあります。

それはともかく、弊環境だけか分からないんですが、最近(2026年3月くらいから?)sesame5がRaspiの言うことを聞いてくれなくなった。これは困った。ということでChatGPTさんの助言もありながら、解決したのでその方法を書いておきます。

ありがとう

先に感謝言っとくといいって死んだマックがJKで言ってた

対象(発生事象)

  • sesame5(Ver.3.0-5-ad26ee)とgomalock(Ver.1.1.0)とssm2mqtt(Ver.3.0.0)。MQTTの内部は知らずにやってます。

  • Raspberrypi OS trixieとBluez 5.82

  • sesameに接続できない問題に悩まされていた

  • 例えば、ValueError: 206 is not a valid ItemCodesとか。

  • 例えば、bleak.exc.BleakDBusError: [org.bluez.Error.NotPermitted] Notify acquiredとか。

  • 例えば、A message handler raised an exception: 206 is not a valid ItemCodesとか。

解決方法

一旦パッケージ更新しましょう。apt-get教なのですが最近はapt単体らしいですね。

sudo apt update
sudo apt upgrade

そしたら、私はsudoのpipで入れているので/usr/local/lib/python3.13/dist-packages/gomalock/なのですが、gomalockのconst.pyを開きます。最近のいい子はみんなenv使ってるのかな。

class ItemCodes(Enum):
    """Codes representing specific commands, settings, or data types."""

    NONE = 0
    REGISTRATION = 1
    LOGIN = 2
    USER = 3
    HISTORY = 4
    VERSION_TAG = 5
    ...

を見つけたら、それの一番下に

SSM3_OTHER_CODE = 206

を追記。多分左辺は分かりやすい名前であれば何でもいいと思います。

あとは、最後のダメ押しとして、同じディレクトリにあるprotocol_types.pyの

item_code = ItemCodes(message_payload[0])
payload = message_payload[1:]
return cls(item_code, payload)

try:
    item_code = ItemCodes(message_payload[0])
except ValueError:
    return None

payload = message_payload[1:]
return cls(item_code, payload)

に変更。gomalockを動かしたときのエラー文(下参照)に190行目って書いてあったので、190行目だけ変更してます。本当は158行目~にもあるんですけど、そっちは変えなくても動いたので誤差です。知らんけど。

前略...
  File "/usr/local/lib/python3.13/dist-packages/gomalock/protocol_types.py", line 190, in from_sesame_message
    item_code = ItemCodes(message_payload[0])
  File "/usr/lib/python3.13/enum.py", line 726, in __call__
    return cls.__new__(cls, value)
           ~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/lib/python3.13/enum.py", line 1203, in __new__
    raise ve_exc
ValueError: 206 is not a valid ItemCodes

俺は動いた!!!!

こうすると私の環境では動いたんですが、もしかしたら皆さんの方では動かないかもしれないですね。n=1です。動かなくても怒らないでね。怒らずに相談してきたら一緒に考えてあげるけど怒ってきたら怒り返すよ僕は。
あとコード書くならZenn Zenn Qiitaことないサイトとかの方が書きやすそうですね。

余談

ItemCode:206なんですが、その後のPayloadを表示すると

Unknown ItemCode:  206
Payload:  cefc
A message handler raised an exception: 'NoneType' object has no attribute 'item_code'
...

でした。
次の1行を、except ValueError:の下に入れるとItemCodeとかPayloadが見れます。

print("Unknown ItemCode: ", message_payload[0])
print("Payload: ", message_payload.hex())

別にexceptの中じゃなくてもいいんですけど、ここが一番目的満たせると思います。よく分かりませんが。

おわり

いいなと思ったら応援しよう!