2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

鍵いらずの生活へ!Flutter & Raspberry Piで自宅のオートロックをハック

Posted at

はじめに

新卒での上京を機に、新築マンションに引っ越しました。エントランスはオートロックで、自宅玄関の鍵は「セサミ4」で自動化しています。(セサミもハックしてラズパイに接続していますが、この話はまた別の機会に!)
今回は、オートロックを遠隔で解除するシステムを構築したので、その仕組みについて解説します。

使用した技術

本システムの構築には、以下の技術を使用しました。

  • Flutter(操作用のWebアプリ)
  • Raspberry Pi(リレー回路を制御)
  • Node-RED(HTTPリクエストに応じてGPIOを制御)

適用条件

本システムが利用できる環境には、以下の条件が必要です。

  • 自宅のインターホンがタッチパネル式であること
    • リレー回路を用いて「擬似タッチ」を発生させるため
  • VPNやSSHを利用し、WANからLAN内に接続可能であること
    • ※セキュリティには十分配慮が必要

システム概要

ラズパイ(Raspberry Pi)にリレータッチボード(スイッチサイエンス製)接続し、
MOSFETを介してGPIOで制御できるようにします。

  1. Node-RED を利用し、HTTPリクエストを受信するとGPIOを0.5秒だけON/OFFするように設定
  2. Flutterアプリ でUIを作成し、Node-REDにリクエストを送信
  3. 擬似タッチ により、インターホンの「解錠ボタン」を操作
    この構成により、スマホからオートロックを解錠できるようになります。

各工程の詳細

ここでは、それぞれの実装手順について詳しく解説します。

リレー回路の接続方法

本システムではリレータッチボード(ドライバ有り)SSCI-024556を使います。
秋葉原のいくつかの電子部品店においてあります。

スイッチングは3.3V(GPIOそのまま)では反応しなかったため、MOSFET(2N7000)を用いて5Vをスイッチングすることにしました。
図1.png

IMG_6343.jpeg

リレータッチボードをインターホンの画面の解錠ボタンが表示される位置に両面テープで固定します。導電性のある両面テープを探しましたが、すぐには買えなかったため通常の両面テープと脱落防止のためマスキングテープで雑に固定しました。両面テープ程度の厚さなら反応するようです。

IMG_6344.jpeg

Node-REDのフロー設計

Node-REDは管理がしにくいため、できる限り簡素な作りにとどめる方が無難だと思います。
今回は、リクエストを受け取りGPIOをオンオフするだけにとどめてあります。
Node-Redにはラズパイ向けにGPIO制御の拡張機能がありますがUbuntu 24.04ではうまく動作しなかったため、自作のPythonスクリプトで対応しました。
スクリーンショット 2025-04-04 113454.png

FlutterでのUI作成

リクエストを送れればなんでも良かったのですが、2年前ぐらいにちょっと触ったのを思い出して採用しました。

ボタンをグリッドに並べただけの簡素な作りです。クリックイベントにリクエストを投げるようにしてます。

スクリーンショット 2025-04-04 095941.png

システム全体

このような感じになってます。ラズパイには画面をつけたのでタッチで操作できます。
外装は3Dプリンターで作成する予定です。
IMG_6345.jpeg

限界と改善点

現状のシステムには、いくつかの課題があります。

  1. VPNなしでは外部から操作できない
    • 現在はVPN経由でしかアクセスできず、一般的なユーザーには敷居が高い
  2. Flutterアプリから直接ラズパイにリクエストを送信している
    • セキュリティ的に問題があるため、認証認可の仕組みを導入する必要がある
    • 操作履歴の記録(誰がいつ解錠したか)も必要

今後の改善策

  • 認証認可サーバー を導入し、安全にアクセスできるようにする
  • 専用のWeb API を用意し、Flutterアプリから直接ラズパイへアクセスしない構成にする
    • これにより、VPNなしでも安全に操作できる環境を構築する

まとめ

このシステムが完成すれば、パートナーや友人が私の不在時でも帰宅できるようになります。
まだまだ改善すべき点は多いですが、開発を加速させていきます!

エピソード(実際に助かった話)

出社初日、私は普段とは違うカバンを持って行ったのですが、鍵を入れ替えるのを忘れてしまいました。

帰りの電車でそのことに気づき、焦りながら帰宅。
「このままではマンションに入れない…!」

そこで、自作システムのことを思い出す。
駅から歩きながらVPNに接続し、スマホでWebアプリを開く。

マンションのオートロックの前で、インターホンを呼び出し、解錠ボタンをタップ。
すると——

「うぃーん…」(自動ドアが開いた)

ぶっつけ本番だったので、本当に動作するか不安だったが、問題なく解錠できた。
心からホッとした瞬間だった。

「もう鍵は忘れないようにしよう…」

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?