1 पॉइंट द्वारा GN⁺ 2023-08-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • cloud-dependent स्मार्ट डोरबेल से बचना चाहने वाले यूज़र्स के लिए, ESP32-CAM और ESPHome के साथ Home Assistant में locally integrate होने वाली DIY डोरबेल बनाने का प्रोजेक्ट
  • बेसिक सेटअप में Home Assistant, ESPHome add-on, और मोबाइल Home Assistant companion app शामिल हैं; बटन input को trigger बनाकर कैमरा snapshot को फोन notification के रूप में भेजता है
  • हार्डवेयर में ESP32-CAM, momentary push button, वैकल्पिक 8 RGB LED ring, 10m Micro USB cable, और 3D-printed enclosure शामिल हैं; built-in LED को flash की तरह इस्तेमाल कर LED ring की जगह ली जा सकती है
  • ESP32-CAM variant के अनुसार pinout और pulldown behavior अलग हो सकता है, इसलिए GPIO14 button input के लिए GND के बीच 10kΩ pulldown resistor लगाकर wiring करनी पड़ती है
  • PLA enclosure example print में इस्तेमाल हुआ था, लेकिन waterproofing के लिए PETG या ABS बेहतर हैं; कैमरा hole के कारण ऐसी installation जगह चाहिए जहां बारिश से बचाव हो

लोकल डोरबेल सेटअप और तैयारी का सामान

  • यह स्मार्ट डोरबेल privacy-friendly setup को लक्ष्य बनाती है और ESPHome के जरिए Home Assistant के साथ integrate होती है
  • शुरू करने के लिए नीचे दिया गया setup चाहिए
    • चल रहा Home Assistant instance
    • ESPHome add-on
    • button press notifications पाने के लिए मोबाइल Home Assistant companion app
  • example build में 8 RGB LED ring light इस्तेमाल की गई है, लेकिन अगर आप सरल बनाना चाहते हैं तो इसे छोड़कर ESP32-CAM की built-in LED को flash के रूप में इस्तेमाल किया जा सकता है
  • ESP32-CAM AI-Thinker version में सामान्य ESP32 की तरह सभी pull-up/pull-down resistors मौजूद न हों
    • GPIO14 पर ESPHome का INPUT_PULLDOWN feature आज़माया गया, लेकिन काम नहीं किया
    • चीन में बने ESP32-CAM variants बहुत हैं, इसलिए board-to-board अंतर हो सकता है

पार्ट्स और public files

  • मुख्य parts इस प्रकार हैं
    • ESP32-CAM
      • शुरुआती ESPHome flashing को आसान बनाने के लिए flash/download/io0 button वाला board recommended है
      • जिन boards में यह button नहीं है, उन्हें FTDI adapter से flash करना होगा
    • momentary push button
    • 8 RGB LED ring light
    • 10m Micro USB cable
  • 3D print files और configuration files public हैं

enclosure print और assembly

  • enclosure को तीन parts में print किया जाता है
    • main body
    • ESP32-CAM mounting plate
    • back plate और wall mount
  • front और rear enclosures को supports के साथ print करना होगा
  • example print में PLA इस्तेमाल किया गया, लेकिन waterproofing के लिए PETG या ABS filament और 20~30% infill recommended है
  • print के बाद दो M2.5 screw inserts जोड़े जाते हैं
    • ESP32-CAM mounting bracket कसने के लिए इन्हें front cover में insert करें
    • 10mm M2.5 screw से face plate को fix कर सकें, इसके लिए इन्हें backplate के निचले हिस्से में insert करें

ESPHome से ESP32-CAM flash करना

  • ESP32-CAM को flashing mode में boot करने के लिए flash/download/io0 button दबाए रखें और Micro USB cable से computer से connect करें
  • Home Assistant में ESPHome add-on खोलकर नया device बनाएं
    • path है Settings -> Add-ons -> ESPHome -> Open Web UI
    • नए device का नाम उदाहरण के लिए Doorbell रखा जा सकता है
    • device type में ESP32 चुनें और use recommended settings check करें
  • generated YAML configuration में captive_portal: के नीचे GitHub repository का configuration code paste करें
  • Save और Install दबाने के बाद Plug into this computer चुनें
  • ESPHome Web के जरिए browser में firmware flash करें
    • ESP32-CAM firmware flashing के लिए Google Chrome सबसे stable browser के रूप में इस्तेमाल होता है
    • firmware compile होने के बाद Download Project दबाया जा सकता है, और इसमें कुछ मिनट लग सकते हैं
  • नया firmware flash होने पर Home Assistant नया device discover करेगा, और आप desired entities को dashboard में add कर सकते हैं

button notification automation

  • doorbell button दबने पर camera snapshot लेकर उसे phone पर भेजने वाली automation configure करें
  • Home Assistant में नई automation बनाएं
    • path है Settings -> Automations -> + Create Automation
    • नई automation scratch से बनाएं और top-right menu में Edit in YAML चुनें
  • GitHub repository की automation YAML paste करें, फिर mobile phone जैसे device की entity name को अपने environment के अनुसार modify करें
  • save करने के बाद Home Assistant restart करें, तो नई automation active हो जाएगी

wiring और installation constraints

  • ESP32-CAM boards के कई variants हैं, इसलिए actual board का pinout check करना होगा
  • wiring Micro USB port वाले bottom PCB के rear side पर soldering करके की जाती है
  • GPIO14 और GND के बीच 10kΩ pulldown resistor जोड़ें
    • इस resistor के बिना GPIO14 अक्सर high state में floating रहने की समस्या देखी गई
    • resistor को heat-shrink tube से cover करना recommended है
  • built-in camera hole के कारण यह पूरी तरह waterproof structure नहीं है, इसलिए इसे बारिश से protected जगह पर install करना होगा
  • power supply parts list में शामिल 10m Micro USB cable के जरिए दी जाती है

1 टिप्पणियां

 
GN⁺ 2023-08-17
Hacker News की राय
  • अच्छा है। लाइटिंग भी पसंद आई
    बेवकूफ-से doorbell की घंटी बजाने वाली magnetic coil के पास reed switch (सामान्य door open/close sensor जैसा) लगाकर Home Assistant को जानकारी भेजवाई जा सकती है
    $0.50 का reed switch मौजूदा doorbell से जोड़ दिया, और उसे ESP के digital I/O port तक ले गया, जिसे doorbell coil वाले ही power source से बिजली मिलती है। doorbell दबने पर यह local-only entrance camera का email snapshot भेजता है और ऊपर वाले stereo पर doorbell chime की recording चलाता है। शुरू में analog input से coil voltage monitor करने की कोशिश की थी, लेकिन वह बहुत unstable था; ज्यादा सरल reed switch तरीका current sensing में बहुत reliable है

    • doorbell coil वाले ही power source का आइडिया बढ़िया है। सोच रहा हूं कि घर में इस्तेमाल करने लायक और कौन-कौन से अजीब voltage sources हो सकते हैं। HVAC head unit, analog phone line वगैरह
      POTS (Plain Old Telephone Service) phone line पर, जब सभी फोन on-hook हों, तो करीब 48V DC मिलना चाहिए। उसी line पर कोई फोन off-hook होते ही यह 3–9V range तक गिर जाता है। off-hook फोन सामान्य operation के लिए करीब 20mA DC current खाता है, और DC resistance करीब 180Ω होता है। बाकी voltage drop copper wire path और phone company circuit में होता है, जहां आमतौर पर short-circuit protection और audio circuit isolation के लिए 200–400Ω की series resistance होती है
      https://www.jkaudio.com/article_03.htm
    • मैंने भी बिल्कुल यही तरीका अपनाया, और जिसके अंदर reed switch होता है ऐसा Aqara Zigbee contact sensor असली doorbell के अंदर रख दिया। coil के ऊपर संयोग से एक सपाट जगह थी, इसलिए यह अच्छे से काम करता है
    • क्या reed switch के चिपक कर न छूटने की समस्या आती है? इस काम के लिए Hall sensor बहुत बढ़िया रहा, हालांकि हो सकता है मैंने सिर्फ खराब quality वाले reed switches ही देखे हों
    • reed switch इस तरह के इस्तेमाल के लिए शानदार हैं
      मिलते-जुलते तरीके से इसे relay के top case पर चिपकाकर इस्तेमाल किया है, ताकि control circuit या load circuit में सीधे probe किए बिना पता चल सके कि coil को power मिल रही है या नहीं
  • ऐसे IoT devices में मुझे बस यही चाहिए कि cloud dependency न हो और PoE इस्तेमाल हो। बार-बार मरने वाली बेवकूफ battery से निपटने के बजाय मैं अरबों तार भी बिछा दूंगा। batteries की कीमत भी बहुत ज्यादा बढ़ती जा रही है

    • DIY IoT के लिए PoE ESP32 देखें
      non-isolated: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      isolated: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • सही है। तार एक बार बिछाना बड़ा झंझट है, लेकिन सबसे खराब हालत में भी यह linear increase ही है। devices बढ़ें तो और तार चाहिए, और existing junction box से branch निकाली जा सकती है, तो शायद यह log increase के करीब भी हो सकता है
      साल में एक बार battery बदलना छोटा झंझट है, लेकिन दर्जनों devices हो जाएं तो जल्दी जमा हो जाता है और regular दोहराना पड़ता है, इसलिए यह linear increase से बेहतर नहीं है
    • ऐसे कामों के लिए मुझे Zigbee बेहतरीन protocol लगता है। local में चलता है, Wi‑Fi पर भी नहीं चढ़ता, और sensors एक coin cell पर सालों चलते हैं
    • solar power चाहिए। doorbell शायद 5 दिन में एक बार भी दबती हो या नहीं? case को solar panel से ढक दें और रात की power के लिए supercapacitor लगा दें
    • ऐसी batteries वाकई सिरदर्द हैं। battery devices unstable भी होते हैं। हर हफ्ते कुछ न कुछ फिर से pair करना या battery बदलनी पड़ती है
      जब अपना घर होगा, तो मैं KNX पर जाऊंगा
  • विषय से थोड़ा हटकर, लेकिन मेरी पत्नी को काफी गंभीर ADD है, इसलिए वह चीजें अक्सर खो देती है। Tile सिर्फ एक तय दूरी के अंदर ही चीजें ढूंढ पाता है, और लगता है अक्सर खराब भी हो जाता है
    संभावना कम है, लेकिन क्या किसी ने घर के अंदर Bluetooth low energy beacons से objects को 3D space में कुछ cm की error के साथ ढूंढने वाला indoor location tracking system बनाया है?
    बात को मुख्य विषय के करीब लाते हुए, ESP32 काफी कमाल का है। हालांकि MicroPython या CircuitPython से Wi‑Fi connection स्थिर बनाए नहीं रख पाया, लेकिन इससे जो कुछ संभव है उसका दायरा हैरान करने वाला है। मेरा board काफी पुराना है, इसलिए नया board खरीदकर देखने पर शायद फर्क पड़े

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • ESP32 devkit board पर MicroPython चलाकर उसे Wi‑Fi और MQTT से जोड़े रखा है और sensor values 24/7 भेजता है; कई हफ्तों से बिना समस्या चल रहा है
    • जरूरतों से पूरी तरह मेल नहीं खाता, लेकिन क्या आपने https://www.room-assistant.io/ आजमाया है?
    • MicroPython या CircuitPython से आखिर क्या उम्मीद थी। reliability की जरूरत वाले embedded systems के लिए ये लगभग banned category में हैं
  • दुनिया के कुछ हिस्सों में doorbell का होना इतना ज़रूरी है कि उसे “smart” बनाने की ज़रूरत तक पड़ जाती है—यह दिलचस्प है। smart doorbell products की सफलता ऐसी मांग को अच्छी तरह दिखाती है
    मेरे पास doorbell नहीं है। अगर कोई visitor मुझे या घर के किसी और व्यक्ति से संपर्क करने का तरीका नहीं जानता, तो बहुत संभव है कि उसके पास शुरू से ही वहाँ आने की कोई खास वजह न हो
    सिर्फ मैं ही ऐसा नहीं हूँ। पिछले हफ्ते walk करते हुए किए गए मेरे बेहद गैर-वैज्ञानिक survey के हिसाब से हमारी street के ज़्यादातर घर ऐसे ही थे, और शायद मेरे शहर के ज़्यादातर घर भी

    • यह काफी ठंडा/रूखा लगता है। जब मैंने घर खरीदा और move in किया, तो पड़ोसी hello कहने आए थे, और कुछ लोग welcome gifts भी लाए थे। मैं खुद को इस तरह neighbourhood community से काटना नहीं चाहूँगा
    • smart doorbells की मांग का एक हिस्सा शायद unknown visitors की समस्या से निपटने के लिए है। घर का मालिक घर पर न हो तब भी यह बता देता है कि दरवाज़े पर कौन है, और यह बात छुपा सकता है कि घर खाली है
    • UK के घर इतने छोटे होते हैं कि आम तौर पर knock करना ही काफी होता है
      doorbell कुछ outdated-सी लगती है। हमारी street में लगभग किसी के पास नहीं है
    • क्या आप online parcels बिल्कुल order नहीं करते? tax authorities से registered mail कभी नहीं मिला? खासकर smart doorbells इसलिए popular हुईं क्योंकि वे ऐसी जगह लगती हैं जहाँ घर के बाहर पहले से मौजूद power से आसानी से connect किया जा सकता है
    • ऐसा नहीं कि लोग सच में doorbell को “smart” बनाना चाहते थे; consumer electronics के विकास ने बस यह संभव बना दिया कि ज़्यादातर घरों में पहले से perfect जगह तक wired लगभग 20V power का इस्तेमाल करके security/surveillance camera को entrance जैसी high-priority जगह पर आसानी से लगाया जा सके
  • मैंने जो reviews देखे हैं, उनके आधार पर Reolink doorbell camera लेखक की requirements से match करने वाला इकलौता commercial option लगता है। यह locally काम करता है और Home Assistant में integrate हो सकता है
    हालांकि intercom के लिए अलग app चाहिए। लेखक का DIY solution audio communication देता हुआ नहीं लगता, और कम से कम camera protocol से तो Home Assistant में सीधे two-way audio इस्तेमाल करने का तरीका भी नहीं दिखता

    • UniFi Doorbell कैसी है? इसमें cloud connection की ज़रूरत नहीं, local ही रहती है, और HomeAssistant / Scrypted / Homebridge में integrate हो सकती है
    • Amcrest भी ऐसे products बनाता है जो local-only support करते हैं और Home Assistant के साथ integrate होते हैं
  • ESP32 सच में बहुत गहरी rabbit hole जैसा है। ESP32 इस्तेमाल करने वाले या development में मौजूद projects पहले से ही बहुत हैं, और अब ध्यान में रखने के लिए एक और चीज़ मिल गई

    • आप क्या-क्या बना रहे हैं?
  • शानदार project है। ESP32 camera की image quality काफी खराब हो सकती है। blog में doorbell से ली गई full-resolution photo हो तो मदद मिलेगी

  • बेहतरीन project है। makers द्वारा बनाए जा रहे तरह-तरह के ESP32 doorbells देखना अच्छा लगता है
    कोई example video या photos हों तो अच्छा होगा। मैंने पहले ESP32 Cam इस्तेमाल किया है, और वह अपने-आप में impressive है, लेकिन personally मुझे जो quality चाहिए थी वैसी नहीं थी। बेशक, मेरा smart doorbell use case सिर्फ “कौन है” देखने से ज़्यादा security की तरफ है

  • अभी मैं cost बचाने के लिए AS-IS condition में खरीदी गई काफी महंगी PoE doorbell इस्तेमाल कर रहा हूँ। यह Axis Communications का product है
    ONVIF events receive करने की इसकी capability मुझे बहुत पसंद है। अगर आप events consume कर सकते हैं, तो असल में आप अपनी मर्ज़ी का काम कर सकते हैं, जिससे ऐसे product की flexibility बढ़ जाती है। उदाहरण के लिए, कोई हाथ से camera lens ढक दे तो उसके लिए custom event बनाने का तरीका भी है
    Home Assistant में ONVIF support शानदार है। native ONVIF events पाने के लिए मैं scripts (जैसे door open/close boolean) के आसपास किसी तरह का wrapper बनाना चाहता हूँ

  • इस site के comments में से एक ने ESP32 performance issue की ओर इशारा किया था। मैंने IoT devices या ऐसे boards के साथ काम नहीं किया है, लेकिन ये relatively सस्ते हैं, इसलिए try करना चाहता था; खोजने पर पता चला कि ESP32 40nm process पर manufactured होता है
    सोच रहा हूँ कि क्या कोई latest version है जो अधिक advanced process पर manufactured हो और समान power budget में बेहतर performance दे

    • 240MHz RISC cores के 2 cores काफी powerful हैं। 40nm microcontroller के लिए बुरा नहीं है। उदाहरण के लिए, competitor Nordic की nRF52 series 55nm process पर बनी है
    • खास तौर पर नहीं। chip के newer versions हैं, जिनमें RISC-V और Zigbee/Thread versions भी शामिल हैं, लेकिन performance/power में dramatic improvement देखना मुश्किल है। इस market segment में performance constraints सामान्य हैं, और यही स्वीकार किया गया trade-off है
      कुछ SoC families बेहतर trade-offs देती हैं, लेकिन hobby developers के लिए ESP32 जितनी friendly बहुत कम हैं। Nordic एक option हो सकता है, या Pi Zero जैसे छोटे single-board computers की तरफ जाना पड़ सकता है
      फिर भी ESP32 ज़्यादातर home automation devices की ज़रूरत से कहीं ज्यादा powerful है। केवल video streaming या machine learning जैसे कुछ भारी tasks में इसकी limits सामने आने लगती हैं। तब भी clever तरीके से काफी कुछ किया जा सकता है