世界を動かす技術を、日本語で。

「Home Assistant」と「AdGuard Home」、そして8ドルのスマートアウトレットを使って脳の劣化を防ぐ

概要

  • インターネットの利便性と弊害の両面を持つ現代生活への対応策
  • Adguard HomeとHome Assistantを組み合わせたネット利用制限の自動化
  • Zigbeeスイッチで一時的なソーシャルメディア解禁を制御
  • API連携や自動化スクリプトの実装方法紹介
  • 「適度な利用」を技術で実現する工夫

インターネット利用のジレンマと課題

  • インターネット は仕事やコミュニケーションに不可欠な存在
  • 広告、SNS、ノイズ情報 など、集中力を奪う要素が多い現状
  • 完全遮断は現実的でなく、 適度な制限 が必要
  • 家族やパートナーも同様にSNSの利用調整が課題
  • 技術的に「適切な制御」 を目指す動機

構成要素と準備

  • gli.netルーター にAdguard Homeを導入済み
  • Home Assistant によるスマートホーム環境
  • Zigbeeスイッチ を複数所有
  • 上記を 連携させるアイデア が必要

制御プランの設計

  • 物理ボタン を押すと、SNS等のアクセスを 15分間だけ解禁
  • クールダウン時間 (例:1時間)を設け、連続利用を防止
  • Zigbeeスマートプラグを トリガー として利用
  • Adguard Homeのフィルタリング を自動でON/OFF制御

Adguard Homeの設定方法

  • OpenWRTベース のgli.netルーターでAdguard Homeを使用
  • ブロック対象サービスを カスタムルール で設定
  • API利用のため、 /etc/Adguard/config.yaml にユーザー情報を手動追加
    • 例:
      users:
        - name: admin
          password: <bcryptハッシュ>
      
  • CyberChef 等でパスワードのハッシュ化推奨

Home Assistantとの連携

  • Home Assistant 標準のAdguard統合を利用
  • Filteringスイッチ でフィルタON/OFFを自動化
  • オートメーション設定 でボタン操作→フィルタ解除→15分後自動再有効化を実現

自動化スクリプト例(要約)

  • ボタンが押された時の トリガー
  • クールダウン中でなければ フィルタをOFF、15分後にON
  • 物理的なZigbeeスイッチも連動
  • クールダウン管理 のため、最終解除時刻を記録
  • 連続利用防止の 条件分岐 実装

運用のコツと補足

  • WiFiをOFF にすれば規制を回避できるが、あくまで 自制をサポートする仕組み
  • ソーシャルメディアは 「適量」なら有益 という考え
  • 技術を使って 自分を律する環境 を構築

まとめ

  • ネット依存やSNS中毒 への実践的対策
  • Adguard Home × Home Assistant × Zigbee による柔軟な制御
  • 家庭や個人の状況に合わせて カスタマイズ可能
  • 「ほどほど」を技術で実現 する工夫の一例

Hackerたちの意見

ニール・チェンが、SNS中毒者のためにインターネットフィルターを無効にするという天才的なアイデアを投稿したよ。https://news.ycombinator.com/item?id=44346450 そのアイデアを使って、広告フィルターを一時的に無効にするホームアシスタントの自動化を作ったんだ。

すごい仕事だね!ローマン、紹介してくれてありがとう!

なんでプラグを使ってるの?ジグビーのボタンじゃダメなの?プラグの部分がよくわからない。

プラグにはボタンがあって、手動でオンにするとイベントが発生するんだよ。

プラグが余ってたから、ボタンが付いてるやつを使ってる。実際、ちょっとした利点もあって、小さなランプをつなげられるんだ。14分後にプラグが2秒ごとにオンオフして、時間が切れたことを知らせてくれるから、ちょっとドラマチックになるよ。

余計なことから目を逸らすために、やたら複雑なシステムを作って、それについて記事を書くのは、確かにHNっぽいことだね。

OPが話の一部を作り上げたか、少なくともHNの考え方に合わせてちょっと盛った可能性があるね(それが何かは知らないけど)。記事はすごく短くて要点を押さえてて、面白くて情報も豊富だった。彼はドイツ人だから、英語は第二言語だけど、すごく上手だね。技術的なライティングが得意な人だよ。ブックマークした。もっと読みたいな!

技術が生み出した問題に対する技術的解決策を求めていて、過剰に構造化された生活から回復するための構造的アプローチが必要だよね。

時には、これが必要な気晴らしになることもあるよね。何かを作ること自体が、妙に落ち着くことがある。

現代の問題には現代の解決策が必要だよね。でも、ちょっと真面目な話、気を散らすことと集中することは難しいテーマだよ。やる気がめっちゃある時は、全然気が散らないんだけど、退屈な作業をしなきゃいけない時は、何でもかんでも気が散っちゃう。

誰かが気を散らすことから気を散らすために、やたら複雑なシステムを作ってるのを読んでコメントすることで自分を気を散らすのは、まさにHNらしいことだよね ;P

ホームアシスタントが大好き!何年か前に、当時の幼児に古いデジカメを遊び用にあげたんだ。しばらくして、彼が撮った写真を見たら、夜に家の外の写真を撮ってたのには驚いたよ。幼児が前のドアを開けて外に出て、家の写真を撮って、また戻ってきてドアを閉めて鍵をかけて、ベッドに戻ってたんだ。そこで無線ドアセンサーを買って、10時から6時の間にセンサーが反応したら、部屋のライトが点灯して私たちを起こす自動化を作ったんだ。これを後に拡張して、今では子供たちが家を出るために使えるすべてのドアや窓にセンサーが付いてる(うちは4人の小さい子供がいるからね)。実は、これらは泥棒が家に入るためにも使えるドアや窓だから、警報システムとしても機能するんだ(家を出るときにアクティブにして、センサーが反応したらリモートで通知してくれる)。一番いいのは、ホームアシスタントを使えば特定のアプリやエコシステムに縛られないこと。ドアや窓のセンサーはライトのブランドとは違うけど、すべてを一つのアプリでコントロールできるんだ。

どのドア/窓センサーを使ったの?

これが私にとってあなたのコメントの最も興味深い部分だね:

「うちの幼児は前のドアを開けて外に出て(夜に!)、家の写真を撮って、戻ってきてドアを閉めて鍵をかけて、またベッドに戻った。」 あなたは幼児に、なんでそんなことをしたのか聞いたことある?夜に家の外の写真を撮りたいと思うその思考プロセス、幼児にしてはすごい好奇心だよね。育てる価値があると思う。一人の子はその年齢でそんな変わったことをするだろうけど、「暗闇」を怖がってたかもしれないな(それに、うちの家は買った時からセキュリティシステムが設置されてて、今でもたまに誤作動するから、子供たちもそれを知ってたかもしれない)。

あなた…あ、ひとりじゃないよ。

私のスマホでうまくいったのはOneSecアプリだね。アプリ用のショートカットやウェブサイト用のSafari拡張に接続して、ソフトブロックされたコンテンツにアクセスする前に小さなタスク(例えば20秒の呼吸エクササイズ)を促してくれるんだ。この時間の遅延とタスクが、これが自分がやりたいことじゃないって思い出させてくれるんだ。実際にXYZプラットフォームに行きたいときは、そのエクササイズをやってアクセスできる。唯一の欠点は、ウェブサイトのブロックを助けるためにSafari拡張が私のウェブブラウジングに完全にアクセスできること。データをキャプチャしないと言ってるし、今のところ彼らを信じてるけど、あなたは違うかもしれないね。アプリをブロックするためには、プライベートデータの共有は必要ないよ。

iPhoneで似たようなことをショートカットでできるかな?

私がスマホで効果を感じたのはOneSecアプリだけだね。時には一番シンプルな解決策が一番効果的で、スマホを置いて少し離れることが大事かも。もしこれが難しいと思うなら、もしかしたらスマホのアプリ以上に解決すべき大きな問題があるんじゃないかな。

私は似たようなことをしてるけど、MacでAlfredを使ってグローバルショートカットを管理してるんだ。ショートカットを押すと、システムのDNSリゾルバーを1.1.1.1に変更して、macOSのDNSキャッシュをリセットするんだよ。それから、ショートカットによって1分か10分後に自動で元に戻る。結構簡単なんだけど、自分以外にはあんまり役に立たないかな。でも、デバイスだけのブロック解除で、ネットワーク全体には影響しないのが気に入ってる。

スマートホームのことを考えると、いくつかの基準があるんだ。電源が必要だったり、UPSに接続されてたり、両方だったりね。重要な場合は、Wi-Fiやイーサネットが切れても動くべきだと思ってる。うちのドアベルは昔、機械のチャイム(Doorbird)に繋がってたけど、今のReolinkはそうじゃない。でも、PoE対応だし、スイッチは全部UPSに繋がってる。Reolinkには電源ソケットに差し込む別のチャイムがあって、カメラもすごく良いよ。あ、うちのスマートデバイスはネットに自由にアクセスできないようにしてる。IoT用に2つのVLANを用意してて、普通のデバイス用と、ちょっと怖いデバイス用に分けてる。企業のITと同じように扱ってるし、Nessusも使ってるよ。ホームアシスタントを何個か管理してて、家庭用と仕事用、さらにいくつかの顧客用もある。OPが選んだスマートプラグは、ちょっと面倒だけど信頼性があるように設計されてるね。監視機能もあると思うよ。ちゃんとしたことをするオタクだね。

Reolinkには電源ソケットに差し込む別のチャイムがあって、カメラもすごく良いよ。 私はこれらのケースのためにPoEからDC電源アダプターを使い始めた。UPSをユーティリティクローゼットに集中させて、たくさんの稼働時間を確保できるからね。今のルーターとスイッチのセットアップで、リモートスイッチ(PoE++対応)やアクセスポイントを含む家全体に電力を供給してる。セキュリティカメラ(最近はセキュリティフラッドライトも)もPoEで動いてるよ。大きなUPSバッテリーのスタックから12〜14時間の稼働時間があって、もし「全宅」UPSを部屋に持っていけば、さらに数日追加できるかも。光ファイバーのNIUやケーブルモデムは、PoEスプリッターを使って9/12/24Vの出力を供給してる。まだいくつかのランダムなブリッジや他のデバイスも変換すべきだけど、最近はちょっと怠けてるな。ポート数の少ない「コア」スイッチを2つ選んだのは、冗長性を持たせるため。どちらかがダメになっても、ネットワークの半分はまだ動くし、劣化モードでも運用できる。APの密度が高いから、問題なく動くし、ワークステーション用の壁内スイッチやPoEスイッチを再接続できる。ただ、これが勝手に増えていくのがちょっと困る…今やネットワーク上のデバイスの数が異常になってる。

残念ながら、ネットワークレベルでウェブサイトをブロックする方法は(私の知る限り)ないんだ。ブラウザやスマホがハードコーディングされたDNSリゾルバーを使い始めたから、この方法の効果は限られてる。

残念ながら、ネットワークレベルでウェブサイトをブロックする方法はない(私が知る限り)です。ブラウザやスマホがハードコーディングされたDNSリゾルバーを使い始めたので、これの有用性は限られています。あなたの管理下にあるゲートウェイを通るネットワークトラフィックは制御可能です。DNSSECは確かにこれを難しくするけど、完全に不可能ではありません。コンテンツは最終的にIPv4/IPv6アドレスから発信されるので、上流のネットワークデバイスで遮断できます。

これ、スマホからコメントしたと思ったんだけど、どうやら送信されてなかったみたい。もう一度やってみるね。私が試したほとんどのアプリ(ブラウザも含めて)は、DNSでちゃんとブロックできるよ。gli.netのインターフェースでは「すべてのクライアントのDNS設定をオーバーライド」と「DNSリバインディング攻撃保護」ができる。これで、ルーター自体が実際に到達可能なリゾルバーになる。手動で dig google.com @1.1.1.1 を試しても、ルーターの結果しか出てこない。ブロックできないのはHTTPS経由のDNSだけだと思う。これは設計上そうなってるみたいで、ブロックするのは不可能みたい。

ブラウザや携帯電話はハードコーディングされたDNSリゾルバーを使い始めているので、その有用性は限られている それ、ソースある?俺が知ってる限り、どの携帯やブラウザも「ハードコーディングされたDNSリゾルバー」なんて使ってないよ。全部、OSがDHCPから取得したDNSサーバーを使ってる。

これは、自分のスマホ依存度を測るための段階的なエクササイズだよ。難易度が上がるにつれて。1 - 何も用事がないオフの日に、スマホを引き出しに入れて一日中使わない。2 - 同じくオフの日に、スマホを引き出しに入れて、家を出て最低1時間は外にいる。3 - 友達と会う時やランチ、買い物に行く時にスマホを家に置いていく。4 - 会社に行く時に一日スマホを置いていく。5 - 週末の間ずっとスマホを引き出しに入れておく。6 - 一泊以上の旅行の時にスマホを家に置いていく(バケーションや家族訪問など)。

すごくいいね。私は近所をスマホなしで散歩したり、買い物に行ったり、祭りに行ったりするよ。最初は変な感じだけど、だんだん気持ちよくなってくる。去年の春にはインターネットなしのバケーションを取ったけど、最高だった。旅行の計画を立てる時、古いTomTomの地図がネットで見たものと合ってるか確認したんだ。ここ10年くらいは大きな道路工事もなかったしね。それからスマホをオフにしてグローブボックスにしまった。緊急時のためにね。深呼吸して、車をスタートさせて北に向かった。通知が来ることも、誰かから電話がかかってくることも、ニュースの見出しが現れることもないって知ってるだけで、すごく良かった。実際にはそんなことが常に起こるわけじゃないけど、そういう状況にいるだけでストレスだったみたいで、スマホをオフにするのは本当にスッキリしたよ。

一番難しい挑戦は、トイレに座っている時にスマホを使わないことだね。

あと、セルラー付きのApple Watchをおすすめするよ。そうすれば緊急時には連絡が取れるし、SNSや他の気を散らすものにはアクセスできないから。Apple Watchを手に入れてから、スマホを家に置いていくことが増えたよ。

すごくいいね、子供に使ってみるけど、私のケースには合わないな。財布代わりに使ってるから(あのフリップケースね)、いつも持ってる。だけど、数日間使わなくてもリュックに入れておけるよ。電話は親と話すためにたまに使うくらいかな(数週間連絡しない時にね :D)公共交通機関の支払いにも使うけど(NFCカードのチャージは面倒だから)。SNSやチャットソフト(SMSは除く)は全く使ってないし、FBにも登録したことない。最後にアプリをインストールしたのはいつだったかも覚えてない。これがスマホのとても健全な使い方だと思ってる。依存じゃなくて、むしろ使わせようとする社会のプレッシャーに押されてる感じ。

2faのためにスマホが必要な時はどうするの?

なんか、制限エリアでいろんな業務用のものを扱ってるせいで、毎日知らず知らずのうちにレベル4に飛ばしちゃったみたい。

問題は、自分が完全に依存してるってわかってるのに、止められないこと。まるで毎日ウイスキーのボトルを飲んでるアルコール中毒者みたい。何度もやめようとしたけど、全然ダメ。いい日があった次の日には、また依存に戻っちゃう。たぶん、毎日5〜10時間は無駄なスクリーンタイムを過ごしてる(ランダムなYouTubeクリップをスクロールしたり、絶対買わないものを調べたり、絶対に取れない仕事について妄想したり)。いろんなブロックソフトや戦略を試したけど、どれも効果がない。どんなに複雑なブロックソフトでも、結局は回避方法を見つけちゃうし、しばらくするとブロックを解除するのが習慣になっちゃう。一番極端なことを試したのは、家のインターネットを切って、6ヶ月間ガラケーに戻ったこと。でも、確かにスクリーンタイムは減ったかもしれないけど、駅で公共Wi-Fiを使ったり、無駄なテレビを何時間も見たりしてたから、結局あまり変わらなかった。この問題は本当に難しいね。技術的な解決策は多分ないと思う。

これはいいね。俺の携帯は記憶そのものだよ。もし携帯なしで過ごさなきゃいけない時は、絶対にノートとペンを持っていかないと。あと、カメラも必要かも。

プログラミングをYAMLでやるより、脳が腐る広告やSNSはないと思うよ。

homeassistantなら、99%の自動化にYAMLは必要ないよ。たぶん、OPは自動化のソースコードを投稿したけど、グラフィカルUIを使って作ったんだと思う。Node-Redを使うこともできるよ。