Home Assistant、Adguard Home、8ドルのスマートコンセントを使ったブレインロット防止
(romanklasen.com)- インターネット依存と継続的なソーシャルメディア利用の問題に対処するための実用的な方法を紹介する内容
- Adguard HomeとHome Assistantを活用し、ユーザー自身がアクセス制御を適用できるシステム構成
- Zigbeeスマートプラグを活用して一定時間だけソーシャルメディアへのアクセスを許可し、その後クールダウン時間を設ける
- Adguard Home API連携により、フィルタリングルールの動的なオン・オフ制御が可能
- 小さな自動化によって自己抑制と利用量制限を実践するアプローチ
はじめに
インターネットは不可欠な存在である一方、広告、ソーシャルメディア依存、不要なコンテンツなど、さまざまな負の影響をもたらす媒体でもある。
筆者はソフトウェア開発者としてインターネットの必要性を認識しているが、ソーシャルメディアの反復利用や広告といった負の要素をどう管理するかは個人的な課題だった。
過去にはネットワーク遮断プログラム(Adblocker)でソーシャルメディアをブロックしてみたが、モバイルデータで簡単に迂回できたうえ、完全な遮断は現実的ではなかった。
家庭内のほかのメンバー(例: 妻)も仕事や研究のためにソーシャルメディアを必要としており、完全遮断は不可能だった。
こうした理由から、適切な節度とアクセス権の調整が必要になった。
きっかけとアイデア
Hacker NewsでNeil Chenが、スマートプラグとublock Originのリスト書き換えによってソーシャルメディアへのアクセスを一時的に許可するアイデアを提案していた。
その方法は実用的ではなかったため、筆者の環境に合わせてAdguard HomeとHome Assistantを使う形にアレンジして適用した。
構成要素
- Adguard Homeがインストールされたgli.netルーター
- Home Assistantスマートホームサーバー
- 複数のZigbeeスイッチ
- 少しの余裕時間
これらすべての構成要素を組み合わせることで、ネットワークベースの自動化アクセス制御を実装できる。
計画
- ボタン(例: Zigbeeプラグ)を1回押すと、15分間ソーシャルメディアへのアクセスを許可する
- その後、1時間のクールダウンが適用され、再利用まで待ち時間が必要になる
- このアプローチにより、家のメンバーは限られた時間だけ自由にソーシャルメディアを利用できる
Adguard Homeルーター設定
- Adguard Homeはgli.netのOpenWRTカスタムファームウェアに統合されている
- ブロックまたは許可したいサービスはcustom ruleとして直接登録する必要がある
- 組み込みサービスはトグルできないため、ユーザー定義が必須となる
Adguard Home APIアクセス
- Adguard HomeはOpenAPIベースのAPIを提供している
- APIを使うにはアカウントとパスワードを登録する必要があるが、標準インターフェースではこれがサポートされていない
- フォーラムの案内に従って
/etc/Adguard/config.yamlファイルを修正し、APIアクセス専用のパスワードを手動で別途登録できる - パスワードはbcryptでハッシュ化して保存する必要がある
Home Assistant連携
- Home AssistantではAdguard Homeの限定的な機能連携が可能
- "Filtering"スイッチの形で、カスタムフィルタルールの適用有無を自動化で切り替えられる
- このエンティティを活用することで、ユーザーが望むタイミングでネットワークアクセス方針をアプリケーションレベルで変更できる
Home Assistant自動化
- 実際に動作する自動化のサンプルが適用されている
- ボタンを押すと、ルールの無効化から再有効化までプロセス全体を管理する
- 実行時間とクールダウン時間の両方が自動化に含まれており、ユーザーの習慣的な利用量制限に役立つ
結論と所感
- Wi-Fiそのものを切ってしまうと迂回される可能性がある
- それでもこの方式は利用パターンそのものを節制するうえで実質的な助けになる
- 毒、つまり依存的な要素も少量なら耐えられる、という観点から、部分的なアクセス制御は有益である
1件のコメント
Hacker Newsのコメント
気が散ることから逃れるためにあまりに複雑なシステムを作り、それについてさらに文章まで書くのは、いかにも典型的な Hacker News っぽい振る舞いだと感じる
携帯電話中毒かどうかを知るための、段階的に難易度を上げる実験リストを提案している 1段階: 特別な理由のない日に、一日中スマホを引き出しに入れて使わない 2段階: 特別な理由のない日に、スマホを引き出しに入れたまま1時間以上家の外で過ごす 3段階: 友人に会いに行くときや、昼食を食べるとき、買い物に行くときにスマホを家に置いていく 4段階: 一日だけ、仕事に行く際にスマホを家に置いていく 5段階: 週末まるごと、スマホを引き出しに入れて使わない 6段階: 旅行するとき(休暇や家族訪問など)に、一日以上スマホを家に置いていく
Home Assistant に強い愛着がある。以前、子どもに古いデジタルカメラで遊ばせていた。後で写真を確認したところ、真夜中に家の外観を撮るため外へ出ていたことがわかって衝撃を受けた。子どもが夜中に自分で門を開けて外へ出て写真を撮り、また家に入り、きちんと施錠してからベッドに戻っていたのだ。この出来事をきっかけに無線のドアセンサーを購入し、夜10時から朝6時までの間にドアが開くと自分の部屋の明かりが点くよう自動化した。その後、すべての出入口と窓にセンサーを取り付け、子どもたちが使える出入口全体を監視するようにした。これらの出入口は泥棒も使える場所なので、自然と防犯システムにもなっている。防犯システムを有効にしているときは遠隔通知も受け取れる。Home Assistant の最大の利点は、特定ブランドのアプリやエコシステムに縛られないことだ。家のドア・窓センサーと電球のブランドが違っていても、1つのアプリですべて制御できる
自分のスマホで効果があった方法は OneSec アプリだ。このアプリはショートカット(アプリ用)や Safari 拡張機能(ウェブサイト用)と連携して、アクセスしようとするブロック対象コンテンツの前に短い課題(たとえば20秒間の呼吸法)をやらせる。時間的な遅延と短い行動によって、それが今の自分にとって望ましくない行為だと気づかせてくれる。本当に必要でそのプラットフォームに入りたいときは、その動作をこなせばアクセスが許可される。欠点は Safari 拡張にウェブ閲覧全体への権限を与えなければならないこと。データを収集しないと主張してはいるが、信頼するかどうかは各自の判断だ。アプリのブロックには個人情報へのアクセス権は要求しない
スマートホームシステムを選ぶときの自分なりの基準がある。操作系統は必ず AC 電源ベース、あるいは UPS バックアップ付き(または両方)であること。WiFi/Ethernet が切れても動作してほしいと考える項目に適用する。以前のドアベル(Doorbird)は機械式チャイムと接続できたが、今使っている Reolink のモデルはそうではない。その代わり PoE ベースで、UPS システムに接続してあるので信頼性を確保している。Reolink には電源ソケットに直接挿す別売りチャイムがあり、カメラもずっと良い。自分の IoT 機器はインターネットへ自由にアクセスできないようにしていて、IoT 用 VLAN を2種類(一般用と、少し不安のある機器用)構成している。会社の IT のように管理している。Nessus でセキュリティチェックもしている。Home Assistant も複数台管理していて、自宅・会社・顧客先まで面倒を見ている。著者が選んだスマートプラグは、意図的に不便さを残しつつ(ただし信頼性は確保しながら)設計されているように見える。モニタリング機能も含まれていそうだ。これは「ちゃんと」やるオタクの姿だ
どんな広告や SNS よりも、YAML でプログラミングするほうが脳にはるかに有害だという冗談だ
なぜプラグを使って、Zigbee ボタンを使わなかったのか気になる
Neil Chen がソーシャルメディア依存者向けのインターネットフィルター解除アイデアを投稿していたことを共有している。このアイデアをもとに AdGuard Home の自動化を作り、同じ原理を適用した
今ではネットワークレベルでウェブサイトをブロックすることは不可能だ。ブラウザやモバイルがハードコードされた DNS リゾルバを使い始めていて、実効性が落ちている
dig google.com @1.1.1.1をしてもルーターの結果しか返ってこない。DNS over HTTPS は防げないが、これはもともと防げないよう設計されているのだと思う自分は Mac で Alfred にグローバルショートカットを設定していて、押すとシステム DNS リゾルバを 1.1.1.1 に切り替え、その後 DNS キャッシュを初期化する。1分または10分後に自動で元に戻る。自分のデバイス1台だけでブロックが解除され、ネットワーク全体に影響しない点が気に入っている。とても簡単に構成できる