家で稼働させていた自作のスマートロックとスマートリモコンが昨日から突然動作しなくなってしまいました。
その原因が判明しましたのでここに記載しておきます。
目次
症状
発生した症状としては、beebotteを使用して動かしていたスマートロックとスマートリモコンが突然反応しなくなってしまい、スマートロックに関してはボタンやICカードによる鍵の開閉はできるといった状態でした。
とりあえずプログラムを停止させ再実行してみることにしました。すると、
Traceback (most recent call last):
File "smart_lock.py", line 775, in <module>
client.connect(HOST, PORT)
File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 994, in reconnect
sock.do_handshake()
File "/usr/lib/python3.5/ssl.py", line 996, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib/python3.5/ssl.py", line 641, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)
といったようなエラーが発生し、プログラムの起動すらできなくなってしまいました。
原因
スマートリモコンを動かしているラズパイとスマートロックを動かしているラズパイは異なるラズパイです。 最初は前回のようにSDカードがまた壊れてしまったのかと思いましたが、2つのラズベリーパイが同時に動かなくなるのはおかしいと思い、外部的な要因が関係しているのではないかと考えました。
そこでいろいろと調べてみると以下の記事にたどり着きました。
https://www.reddit.com/r/raspberry_pi/comments/gtg8za/helpbeebotte_ssl_certificate_error/
この記事によると今回の原因はどうやら beebotte のサーバー側に問題があるとのことでした。
解決方法
このエラーを解決するには残念ながら beebotte側のアップデートを待つしかないようです。
追記 (2020/06/16)
beebotte側でSSL証明書のアップデートをしてくれました!
なので現在使っている証明書を破棄し、新しい証明書を beebotte からダウンロードすれば元通りに使えるようになります。
ラズパイでSSL証明書を更新する方法は、以下のように、cdで現在使用している証明書があるパスに移動し、curlコマンドでssl証明書をダウンロードして上書きするだけです。
cd 使用中の証明書のパス
curl -O https://beebotte.com/certs/mqtt.beebotte.com.pem
最後に念のため
ls -l
を実行し、mqtt.beebotte.com.pemのファイル更新日時が上記コマンドを実行した日付になっていることを確認します。
これで無事にSSLエラーが解消し、今まで通りに beebotte と連携できるようになりました!
今回のようにまた beebotteに関してエラーなどがありましたらこの記事に追記していきます。