1 ポイント 投稿者 GN⁺ 2023-08-17 | 1件のコメント | WhatsAppで共有
  • クラウド依存のスマートドアベルを避けたいユーザー向けに、ESP32-CAMとESPHomeでHome Assistantにローカル統合されるDIYドアベルを作るプロジェクト
  • 基本構成はHome Assistant、ESPHomeアドオン、モバイル版Home Assistant companion appで、ボタン入力をトリガーにカメラのスナップショットをスマートフォン通知として送信
  • ハードウェアはESP32-CAM、モーメンタリプッシュボタン、オプションの8 RGB LEDリング、10mのMicro USBケーブル、3Dプリント筐体で構成され、内蔵LEDをフラッシュの代わりに使うことも可能
  • ESP32-CAMのバリエーションによってピン配置やプルダウンの挙動が異なる場合があり、GPIO14のボタン入力にはGNDとの間に10kΩのプルダウン抵抗を入れる配線が必要
  • PLA製筐体は出力例として使われているが、防水目的ではPETGやABSのほうが適しており、カメラ穴があるため雨を避けられる設置場所が必要

ローカルドアベルの構成と準備物

  • このスマートドアベルはプライバシーに配慮した構成を目指しており、ESPHomeを通じてHome Assistantと統合される
  • 始めるには次の構成が必要
    • 稼働中のHome Assistantインスタンス
    • ESPHomeアドオン
    • ボタン押下通知を受け取るモバイル版Home Assistant companion app
  • 作例では8 RGB LEDリングライトが使われているが、簡略化したい場合は省略でき、ESP32-CAM内蔵LEDをフラッシュとして使える
  • ESP32-CAMのAI-Thinker版には、一般的なESP32のようなすべてのプルアップ・プルダウン抵抗が備わっていない可能性がある
    • GPIO14でESPHomeのINPUT_PULLDOWN機能を試したが動作しなかった
    • 中国製のESP32-CAMバリエーションが多く、ボードごとの差異がありうる

部品と公開ファイル

  • 主な部品は以下のとおり
    • ESP32-CAM
      • 最初にESPHomeを書き込みやすいよう、flash/download/io0ボタン付きのボードが推奨される
      • このボタンがないボードはFTDIアダプタを使って書き込む必要がある
    • モーメンタリプッシュボタン
    • 8 RGB LEDリングライト
    • 10mのMicro USBケーブル
  • 3Dプリントファイルと設定ファイルが公開されている

筐体の出力と組み立て

  • 筐体は3つの部品として出力する
    • メインボディ
    • ESP32-CAM固定プレート
    • バックプレート兼壁面マウント
  • 前面と背面の筐体はサポートを使って出力する必要がある
  • 作例ではPLAを使用しているが、防水目的ではPETGまたはABSフィラメントと20〜30%のインフィルが推奨される
  • 出力後にM2.5のねじインサートを2個追加する
    • ESP32-CAM固定ブラケットを締められるよう前面カバーに挿入
    • 10mmのM2.5ねじでフェイスプレートを固定できるようバックプレート下部に挿入

ESPHomeでESP32-CAMを書き込む

  • ESP32-CAMをフラッシュモードで起動するには、flash/download/io0ボタンを押したままMicro USBケーブルでコンピュータに接続する
  • Home AssistantでESPHomeアドオンを開き、新しいデバイスを作成する
    • パスはSettings -> Add-ons -> ESPHome -> Open Web UI
    • 新しいデバイス名はたとえばDoorbellにできる
    • デバイスタイプはESP32を選び、use recommended settingsをチェックする
  • 生成されたYAML設定のcaptive_portal:の下に、GitHubリポジトリの設定コードを貼り付ける
  • SaveInstallを押したあと、Plug into this computerを選ぶ
  • ESPHome Webを通じてブラウザからファームウェアを書き込む
    • Google ChromeはESP32-CAMファームウェアの書き込みに最も安定したブラウザとして使われている
    • ファームウェアのコンパイル後にDownload Projectを押せるようになり、数分かかる場合がある
  • 新しいファームウェアが書き込まれると、Home Assistantが新しいデバイスを検出し、必要なエンティティをダッシュボードに追加できる

ボタン通知の自動化

  • ドアベルのボタンが押されるとカメラのスナップショットを撮ってスマートフォンに送る自動化を構成する
  • Home Assistantで新しい自動化を作成する
    • パスはSettings -> Automations -> + Create Automation
    • 新しい自動化を最初から作成し、右上メニューでEdit in YAMLを選ぶ
  • GitHubリポジトリの自動化YAMLを貼り付けたあと、スマートフォンなどのデバイスのエンティティ名を環境に合わせて修正する
  • 保存後にHome Assistantを再起動すると、新しい自動化が有効になる

配線と設置上の制約

  • ESP32-CAMボードには多くのバリエーションがあるため、実際のボードのピン配置を確認する必要がある
  • 配線はMicro USBポートがある下側PCBの裏面にはんだ付けする方式で構成される
  • GPIO14とGNDの間には10kΩのプルダウン抵抗を追加する
    • この抵抗がないとGPIO14が頻繁にhigh状態で浮いてしまう問題が観測された
    • 抵抗は熱収縮チューブで覆う方法が推奨される
  • 内蔵カメラ用の穴があるため完全防水構造ではなく、雨から保護される場所に設置する必要がある
  • 電源は部品一覧に含まれる10mのMicro USBケーブルを通じて供給する構成

1件のコメント

 
GN⁺ 2023-08-17
Hacker News のコメント
  • いいですね。照明も気に入りました
    単純なドアベルのベルを鳴らす磁気コイルの近くにリードスイッチ(一般的なドア開閉センサーのようなもの)を取り付けて、Home Assistant に情報を送ることもできます
    0.50ドルのリードスイッチを既存のドアベルにつなぎ、ドアベルのコイルと同じ電源から給電される ESP のデジタル入出力ポートに引き出しておく。ドアベルが押されると、ローカル専用の玄関カメラのメールスナップショットを送り、上階のステレオでドアベルのチャイム録音を再生する。もともとはアナログ入力でコイル電圧を監視しようとしたが不安定すぎたので、より単純なリードスイッチ方式にしたところ、電流検知が非常に安定している

    • ドアベルのコイルと同じ電源という発想がいいですね。家の中で使える中途半端な電圧源がほかに何かあるのか気になります。HVAC のヘッドユニットやアナログ電話線のようなものなど
      POTS(Plain Old Telephone Service)の電話線は、すべての電話機がオンフック状態のとき約 48V DC が出ているはずです。同じ回線の電話機がオフフックになると 3〜9V の範囲まで下がります。オフフックの電話機は通常動作に約 20mA DC の電流を消費し、DC 抵抗は約 180Ω です。残りの電圧降下は銅線経路と電話会社側の回路で発生し、通常は短絡保護とオーディオ回路の分離のために 200〜400Ω の直列抵抗があります
      https://www.jkaudio.com/article_03.htm
    • 私もまったく同じ方法でやっていて、内部にリードスイッチが入っているAqara Zigbee 接点センサーを実際のドアベルの中に入れています。コイルの上にちょうど平らな場所があって、うまく動いています
    • リードスイッチがくっついたまま戻らない問題はありますか?この用途ではホールセンサーで非常にうまくいきましたが、私が低品質なリードスイッチしか見ていなかっただけかもしれません
    • リードスイッチはこういう使い方にとても向いています
      似たようにリレー上部のケースに貼り付けて、制御回路や負荷回路を直接探らずにコイルに電源が入ったかどうかを検知するのに使ったことがあります
  • こういうIoT デバイスに求めるのは、クラウド依存がなく PoE を使うことだけです。すぐ死ぬバカみたいなバッテリーの相手をするくらいなら、配線を何十億本でも引きます。バッテリーの価格もどんどん高くなりすぎています

    • DIY IoT 向けの PoE ESP32 参考
      非絶縁型: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      絶縁型: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • その通り。配線を一度むくのは大変ですが、最悪でも線形増加です。デバイスが増えれば配線はさらに必要になりますし、既存の接続箱から分岐できるので、もしかすると対数増加に近いかもしれません
      年に一度バッテリーを交換するのは小さな手間ですが、数十個になるとすぐに積み上がり、定期的に繰り返されるので、線形増加より良いとは言えません
    • こういう用途には Zigbee が優れたプロトコルだと思います。ローカルで動作し、Wi-Fi にも乗らず、センサーはコイン電池1個で何年も持ちます
    • 太陽光電源が欲しいです。ドアベルは5日に1回押されるかどうかくらいでは? ケースを太陽光パネルで覆い、夜間電源用にスーパーキャパシタを入れればいい
    • そういうバッテリーは本当に面倒です。バッテリー機器は不安定になりがちでもあります。毎週何かを再ペアリングしたり、バッテリーを交換したりする必要があります
      自分の家を持ったら KNX にするつもりです
  • 話題から少し外れますが、妻がかなり重い ADD で、よく物をなくします。Tile は一定距離内でしか物を探せず、よく壊れるようです
    可能性は低いでしょうが、家の中で Bluetooth Low Energy ビーコンを使って、物体を 3D 空間で数 cm の誤差で探せる屋内位置追跡システムを作ったことがある人がいるか気になります
    もっと本題に近い話をすると、ESP32 はかなりすごいです。ただし MicroPython や CircuitPython では Wi-Fi 接続を安定して維持できませんでしたが、できることの範囲は驚異的です。私のボードはかなり古いものなので、新しいボードを買ってみれば違いがあるかもしれません

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • ESP32 devkit ボードに MicroPython を載せて Wi-Fi と MQTT に接続し、センサー値を24時間送信していますが、数週間問題なく動作しています
    • 要件に完全に合うわけではありませんが、https://www.room-assistant.io/ は試しましたか?
    • MicroPythonCircuitPython なら、何を期待していたのかという感じです。信頼性が必要な組み込みシステムでは禁止レベルです
  • 世界のどこかでは、ドアベルの存在があまりに重要で、それを「スマート」にする必要まで生まれるというのは興味深い。スマートドアベル製品の成功は、そうした需要をよく示している
    私の家にはドアベルがない。訪問者が私や家のほかの人に連絡する方法を知らないなら、そもそもそこに来る理由があまりない可能性が高い
    私だけがそうというわけでもない。先週散歩しながら見た、かなり非科学的な調査では、うちの通りの大半が似たような感じで、私の街の大半もたぶんそうだと思う

    • かなり冷たく聞こえる。家を買って引っ越してきたとき、近所の人たちが挨拶に来て、中には歓迎のプレゼントまで持ってきてくれた人もいた。そんなふうに地域社会から自ら切り離されたいとは思わない
    • スマートドアベル需要の一部は、見知らぬ訪問者の問題に対処するためのもののように思える。家主が家にいないときでも、玄関前に誰がいるか知らせ、家が空だという事実を隠せる
    • 英国の家はとても小さいので、たいていノックで十分
      ドアベルは時代錯誤に感じる。うちの通りでは、付けている人はほとんどいない
    • ネットで宅配便をまったく注文しないのですか?税務当局から書留郵便を受け取ったこともないのですか?特にスマートドアベルが広まった理由は、家の外にすでにある電源へ簡単に接続できる場所だからです
    • 人々が本当にドアベルを「スマート」にしたかったというより、コンシューマー電子機器の発展によって、ほとんどの家にすでに完璧な位置まで配線されている約20Vの電源を使い、セキュリティ/監視カメラを玄関という優先度の高い場所へ簡単に設置できるようになった、ということだ
  • 私が見たレビュー基準では、Reolinkドアベルカメラが筆者の要件に合う唯一の市販オプションのように見える。ローカルで動作し、Home Assistantに統合できる
    ただしインターホンには別アプリが必要。筆者の自作ソリューションは音声通信を提供していないようで、少なくともカメラのプロトコルだけでは、Home Assistantで直接双方向音声を使う方法もなさそうだ

    • UniFi Doorbellはどうですか?クラウド接続は不要でローカルに留まり、Home Assistant / Scrypted / Homebridgeに統合できます
    • Amcrestもローカル専用をサポートし、Home Assistantと統合できる製品を作っている
  • ESP32は本当に深く入り込むウサギ穴のようだ。すでにESP32を使っている、あるいは開発中のプロジェクトがとても多いのに、これでまた念頭に置くものが一つ増えた

    • どんなものを作っているのですか?
  • すばらしいプロジェクト。ESP32カメラは画質がかなり悪いことがある。ブログにドアベルで撮ったフル解像度の写真があると助かる

  • すばらしいプロジェクト。メーカーたちが作り出すさまざまなESP32ドアベルを見るのは楽しい
    サンプル動画や写真があるといい。以前ESP32 Camを使ったことがあるが、それ自体は印象的なものの、個人的に望む品質ではなかった。もちろん私のスマートドアベル用途は、単に「誰がいるか」よりもセキュリティ寄りだ

  • 今は費用を抑えるため、AS-IS状態で買ったかなり高価なPoEドアベルを使っている。Axis Communicationsの製品だ
    ONVIFイベントを受信できる機能が本当に気に入っている。イベントを消費できれば、実質的にやりたいことができるので、この種の製品の柔軟性が高まる。たとえば、誰かが手でカメラレンズを覆う場合のようなカスタムイベントを作る方法もある
    Home AssistantはONVIF対応が優れている。ネイティブのONVIFイベントを得るために、スクリプト(ドアの開閉を表すブール値のようなもの)の周りに一種のラッパーを作りたい

  • このサイトのコメントの一つが、ESP32の性能問題を指摘していた。IoT機器やこうしたボードを扱ったことはないが、比較的安いので触ってみたいと思い、調べてみるとESP32が40nmプロセスで製造されていることを知った
    より進んだプロセスで製造され、同程度の電力予算でより高い性能を出す新しいバージョンがあるのか気になる

    • 240MHzのRISCコアが2つあれば、かなり強力だ。40nmはマイクロコントローラーとしては悪くない。たとえば競合製品であるNordicのnRF52シリーズは55nmプロセスで作られている
    • 特にない。チップの新しいバージョンはあり、RISC-VやZigbee/Thread版も含まれるが、性能/電力で劇的な改善は見込みにくい。この市場セグメントでは性能制約は一般的で、それが受け入れるべきトレードオフだ
      より良いトレードオフを提供するSoCファミリーもあるが、ESP32ほどホビー開発者に優しいものは多くない。Nordicあたりか、Pi Zeroのような小型シングルボードコンピューターに行く手はあるかもしれない
      それでもESP32は、ほとんどのホームオートメーション機器に必要なものよりはるかに強力だ。動画ストリーミングや機械学習のような、より重い作業のいくつかでだけ限界にぶつかり始める。その場合でも、賢くやればかなり多くのことができる