जानते हैं दुनिया में किस चीज़ की भरमार है? उन लोगों की जो बात करते हैं कि वो "किसी दिन" क्या करेंगे। सपने देखने वाले जो हाथ पर हाथ धरे बैठे हैं, सही पल का इंतज़ार कर रहे हैं, सही सेटअप का, सही कुछ-भी का। इस बीच ज़िंदगी आगे बढ़ती रहती है।
"मैंने एक बार फिर महसूस किया कि खुशी कितनी सादी और किफ़ायती चीज़ है: एक गिलास शराब, एक भुनी हुई अखरोट, एक मामूली अंगीठी, समुद्र की आवाज़। और कुछ नहीं।" — निकोस कज़ांतज़ाकिस, ज़ोरबा द ग्रीक
ज़ोरबा ने इंतज़ार नहीं किया। ज़ोरबा ने नाचा। ज़ोरबा शानदार तरीके से असफल हुआ और इस पर हँसा। जब उसका बड़ा खनन ऑपरेशन ढह गया (सचमुच ढह गया), उसने शराब की बोतल पकड़ी और समुद्र तट पर नाचने लगा। ज़ोरबा की तरह असफल होना हाथ पर हाथ धरे बैठने से बेहतर है।
तो आज, मेरा बेटा और मैं अमल करते हैं। योजना तैयार है। हार्डवेयर तैयार है। ज़्यादातर चीज़ों को अलग-अलग टेस्ट किया जा चुका है: ऑटोमेशन काम करते हैं, सेंसर डिटेक्ट करते हैं, कोड कंपाइल होता है। अब देखते हैं कि सब कुछ एक साथ काम करता है या नहीं। क्या कुछ गड़बड़ होगी? शायद। क्या हम चुनौतियों के लिए तैयार हैं? बिल्कुल। यही तो मज़ेदार हिस्सा है।
बिना योजना के, आगे कोई रास्ता नहीं। बस लोग अपनी ही बातें सुनने के लिए बोलते रहते हैं। बस सपने। यह सपना नहीं है, यह एक कार्यान्वयन ब्रीफ है।
मिशन
जब तक आज रात हम डिनर ग्रिल करेंगे, यह घर:
- लाइट्स जलाएगा उस कमरे में जिसमें आप दाखिल हों, और जब निकलें तो पीछे से धीरे-धीरे बुझा देगा
- हर दरवाज़ा लॉक करेगा जब बिस्तर को पता चलेगा कि हम सो गए हैं
- गैराज बंद करेगा अपने आप जब हम भूल जाएँ (फिर से)
- क्लाइमेट एडजस्ट करेगा इस आधार पर कि कौन से कमरे वाकई में इस्तेमाल हो रहे हैं
- WiFi शोर पैदा करेगा ताकि बाहर कोई भी उसी सेंसिंग तकनीक का इस्तेमाल हमारे खिलाफ़ न कर सके
और Amazon को कुछ पता नहीं चलेगा। सब कुछ लोकल चलता है। कोई क्लाउड नहीं। कोई सब्सक्रिप्शन नहीं। कोई डेटा हार्वेस्टिंग नहीं।
शस्त्रागार (पहले से तैयार)
दिमाग: Raspberry Pi 5 - तैयार
यह चीज़ दो हफ़्ते से मेरी डेस्क पर पड़ी है, पूरी तरह कॉन्फ़िगर, आज का इंतज़ार कर रही थी। Pi 5 बेसिक होम ऑटोमेशन के लिए ज़रूरत से ज़्यादा है। मुझे ज़रूरत से ज़्यादा पसंद है। इस पर Raspberry Pi OS Lite चल रहा है, Docker इंस्टॉल है, Portainer गुनगुना रहा है। बस इसे वहाँ लगाना है जहाँ यह रहेगा।
मैंने Argon ONE V3 M.2 NVME PCIE Case बंडल चुना। पहले से असेंबल:
- M.2 SSD जिस पर OS फ्लैश है (हमारे लिए कोई SD कार्ड फेलियर नहीं)
- Docker + Portainer इंस्टॉल और टेस्ट
- Home Assistant कंटेनर डिप्लॉय के लिए तैयार
- नेटवर्क पर स्टैटिक IP असाइन
प्री-फ्लाइट चेकलिस्ट - पूरी
- ☑ Raspberry Pi OS Lite SSD पर फ्लैश
- ☑ SSH इनेबल, क्रेडेंशियल्स सेट
- ☑ स्टैटिक IP के साथ नेटवर्क कॉन्फ़िगर
- ☑ Docker + Portainer चल रहे हैं
- ☑ Home Assistant कॉन्फ़िग फाइलें तैयार
सेंसर: ESP32 बोर्ड - फ्लैश और टेस्टेड
ये छोटे ESP32 बोर्ड सबसे मज़ेदार हिस्सा रहे हैं। मेरे बेटे और मैंने पिछले वीकेंड इन्हें फ्लैश करते हुए और WiFi सिग्नल डेटा आते देखते हुए बिताया। ये काम करते हैं। पुष्टि हो चुकी है।
- WiFi सेंसिंग यूनिट - WiFi सिग्नल में गड़बड़ी मापकर मूवमेंट डिटेक्ट करती है। लिविंग रूम में चलकर टेस्ट किया: दीवारों के आर-पार मूवमेंट पकड़ती है, लगभग 4 से 6 मीटर रेंज।
- WiFi फ़ॉग यूनिट - किसी भी बाहरी WiFi सेंसिंग को अंधा करने के लिए शोर पैदा करती है। आइसोलेशन में चल रही है, सिग्नल स्पेस में खूबसूरत अराजकता बना रही है।
आज हम इन्हें Home Assistant में इंटीग्रेट करते हैं और देखते हैं कि ऑटोमेशन सही से फायर होते हैं या नहीं। कोड टेस्टिंग में काम करता है। सवाल यह है: क्या यह तब भी काम करेगा जब सब कुछ कनेक्ट हो?
(अगर आप जानना चाहते हैं कि यह क्यों मायने रखता है, मेरे WiFi सेंसिंग और WiFi काउंटरमेज़र्स पर लेख पढ़ें।)
मौजूदा इंफ्रास्ट्रक्चर - पहले से मौजूद
हम शून्य से शुरू नहीं कर रहे। घर में पहले से स्मार्ट सामान है; बस सब अलग-अलग ऐप्स पर चल रहा है जैसे एक गुच्छा बिखरे हुए टापू। आज हम राज्य को एकीकृत करते हैं:
- Philips Hue बल्ब - पहले से पूरे घर में इंस्टॉल। फ़िलहाल Hue ऐप से कंट्रोल। आज: Home Assistant कमान संभालता है।
- Ecobee थर्मोस्टेट - पहले से जानता है अपने सेंसर से कौन से कमरे भरे हैं। आज: हम वो डेटा इंटीग्रेट करते हैं।
- Eight Sleep बेड - पहले से ट्रैक करता है कब मैं सो रहा हूँ। आज: यह लॉकडाउन ऑटोमेशन ट्रिगर करता है।
- Kwikset लॉक्स (Z-Wave) - पहले से दरवाज़ों पर। आज: ये खुद लॉक होना सीखते हैं।
- MyQ गैराज - पहले से इंस्टॉल। आज: अब वापस घर जाने की ज़रूरत नहीं क्योंकि बंद करना भूल गया।
मुख्य बात: हो सकता है आपके पास पहले से ज़्यादा स्मार्ट होम गियर हो जितना आप सोचते हैं। बस ये अभी एक-दूसरे से बात नहीं कर रहे।
फ़ेज़ 1: इंफ्रास्ट्रक्चर (हो गया)
यह पिछले वीकेंड का काम है। अगर आप बाद में फॉलो कर रहे हैं, तो हमने यह किया। अगर आपने मेरा Docker आर्टिकल पढ़ा है, तो आप जानते हैं कि हमने सब कुछ कंटेनराइज़ क्यों किया।
1# Docker + Portainer - Already running
2curl -fsSL https://get.docker.com | sh
3sudo usermod -aG docker $USER
4
5docker volume create portainer_data
6docker run -d -p 9000:9000 --name portainer \
7 --restart=always \
8 -v /var/run/docker.sock:/var/run/docker.sock \
9 -v portainer_data:/data \
10 portainer/portainer-cePortainer http://raspberrypi.local:9000 पर लाइव है। कंटेनर मैनेजमेंट के लिए खूबसूरत GUI। चेक।
फ़ेज़ 2: Home Assistant (आज की पहली टास्क)
docker-compose फ़ाइल लिखी है। कॉन्फ़िग डायरेक्टरी तैयार है। आज हम इसे असली में चालू करते हैं और डिवाइसेज़ कनेक्ट करना शुरू करते हैं।
1# docker-compose.yml - ready to deploy
2version: '3'
3services:
4 homeassistant:
5 container_name: homeassistant
6 image: ghcr.io/home-assistant/home-assistant:stable
7 volumes:
8 - /home/pi/homeassistant:/config
9 - /etc/localtime:/etc/localtime:ro
10 restart: unless-stopped
11 privileged: true
12 network_mode: hostप्लान: docker-compose up -d चलाओ, सेटअप विज़ार्ड में जाओ, और ये इंटीग्रेशन एक-एक करके कनेक्ट करो:
- Philips Hue - नेटवर्क पर ऑटो-डिस्कवर होना चाहिए
- Ecobee - OAuth फ्लो, ऐप हाथ में रखनी होगी
- Eight Sleep - API इंटीग्रेशन, क्रेडेंशियल्स तैयार
- Z-Wave - यह मसालेदार हो सकता है, लॉक्स मूडी हो सकते हैं
- MyQ - सीधा-सादा, पहले कर चुका हूँ
- ESPHome - पिछले वीकेंड फ्लैश किए ESP32 डिवाइसेज़ के लिए
अपेक्षित चुनौती: Z-Wave। लॉक्स में हमेशा एटीट्यूड होता है। देखते हैं।
फ़ेज़ 3: WiFi सेंसिंग इंटीग्रेशन (आज का मज़ेदार हिस्सा)
सेंसिंग यूनिट - कनेक्ट के लिए तैयार
पिछले वीकेंड मेरे बेटे ने सीरियल मॉनिटर देखा जब इस चीज़ ने मुझे लिविंग रूम में चलते हुए डिटेक्ट किया। उसके सटीक शब्द: "पापा, यह डरावना और कमाल है।"
ESP32 पहले से ESPHome के साथ फ्लैश है। यह पहले से WiFi CSI (Channel State Information) के ज़रिए मूवमेंट डिटेक्ट कर रहा है। आज हम इसे Home Assistant में प्लग करते हैं और इसे नाम देते हैं: binary_sensor.living_room_occupied
टेस्ट: लिविंग रूम में चलो। क्या Home Assistant इसे देखता है? अगर हाँ, तो हम बिज़नेस में हैं।
फ़ॉग यूनिट - प्राइवेसी लेयर तैयार
दूसरा ESP32 मेरे काउंटरमेज़र्स आर्टिकल के नॉइज़ जनरेटर को चला रहा है। यह एक हफ़्ते से मेरी बेंच पर चल रहा है, WiFi स्पेक्ट्रम में खूबसूरत अराजकता पैदा कर रहा है।
हाँ, हम अपने खुद के ऑटोमेशन के लिए WiFi सेंसिंग इस्तेमाल कर रहे हैं और साथ ही दूसरों से खुद को बचा भी रहे हैं जो हमारे ख़िलाफ़ यही कर सकते हैं। यह पाखंड नहीं है। यह ऑपरेशनल सिक्योरिटी है। और मेरे बेटे को लगता है कि यह दुनिया की सबसे कूल चीज़ है।
भविष्य का विस्तार: 3+3
आज का लक्ष्य एक सेंसर और एक फ़ॉग डिवाइस के साथ कॉन्सेप्ट साबित करना है। एक बार हमें विश्वास हो जाए:
- 3 सेंसिंग डिवाइसेज़: लिविंग रूम, किचन, बेडरूम
- 3 फ़ॉग डिवाइसेज़: पूरे घर में कवरेज के लिए वितरित
यह पूरे घर के अपग्रेड के लिए ESP32 बोर्ड्स में लगभग $50 है। लेकिन पहले, यह सुनिश्चित करें कि आज काम करे।
फ़ेज़ 4: ऑटोमेशन (पूरा मक़सद)
इसी के लिए सब कुछ बनाया गया है। ये YAML फ़ाइलें लिखी हैं, मेरे दिमाग में सौ बार टेस्ट की हैं, और पेस्ट के लिए तैयार हैं। क्या ये पहली बार में काम करेंगी? चलो पता करते हैं।
ऑटोमेशन 1: Follow-Me लाइटिंग (शोस्टॉपर)
विज़न: एक कमरे में जाओ, लाइट्स तुम्हारा स्वागत करने के लिए जलती हैं। बाहर जाओ, और वे तुम्हारे पीछे एक सम्मानजनक बटलर की तरह धीरे-धीरे बुझ जाती हैं। टोनी स्टार्क का घर। यही लक्ष्य है।
बारीकी: अगर तुमने मैन्युअली लाइट ऑन की, तो सिस्टम उसे छोड़ देता है। तुम्हारी पसंद का सम्मान होता है। हम इसे input_boolean हेल्पर्स से ट्रैक करते हैं। क्योंकि ऐसे ऑटोमेशन से बुरा कुछ नहीं जो तुमसे लड़े।
1# configuration.yaml additions
2input_text:
3 last_occupied_room:
4 name: "Last Occupied Room"
5 initial: "none"
6
7input_boolean:
8 living_room_auto_triggered:
9 name: "Living Room Auto Triggered"
10 kitchen_auto_triggered:
11 name: "Kitchen Auto Triggered"
12 bedroom_auto_triggered:
13 name: "Bedroom Auto Triggered"अब ऑटोमेशन:
1# automations.yaml
2- alias: "Follow Me - Living Room Entry"
3 trigger:
4 - platform: state
5 entity_id: binary_sensor.living_room_occupied
6 to: "on"
7 condition:
8 - condition: state
9 entity_id: light.living_room
10 state: "off"
11 action:
12 # Dim the previous room if it was auto-triggered
13 - choose:
14 - conditions:
15 - condition: template
16 value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
17 - condition: state
18 entity_id: input_boolean.kitchen_auto_triggered
19 state: "on"
20 sequence:
21 - service: light.turn_on
22 target:
23 entity_id: light.kitchen
24 data:
25 brightness_pct: 20
26 transition: 3
27 # Turn on current room
28 - service: light.turn_on
29 target:
30 entity_id: light.living_room
31 data:
32 brightness_pct: 100
33 - service: input_boolean.turn_on
34 target:
35 entity_id: input_boolean.living_room_auto_triggered
36 - service: input_text.set_value
37 target:
38 entity_id: input_text.last_occupied_room
39 data:
40 value: "living_room"
41
42- alias: "Follow Me - Living Room Vacancy"
43 trigger:
44 - platform: state
45 entity_id: binary_sensor.living_room_occupied
46 to: "off"
47 for:
48 minutes: 2
49 condition:
50 - condition: state
51 entity_id: input_boolean.living_room_auto_triggered
52 state: "on"
53 action:
54 - service: light.turn_off
55 target:
56 entity_id: light.living_room
57 data:
58 transition: 5
59 - service: input_boolean.turn_off
60 target:
61 entity_id: input_boolean.living_room_auto_triggeredटेस्ट: एक बार यह डिप्लॉय हो जाए, मेरा बेटा और मैं पूरे घर में चलेंगे और देखेंगे कि यह हमारा पीछा करता है या नहीं। अगर काम किया, तो हम फ़िल्म में होने जैसा महसूस करेंगे। अगर नहीं, तो पिज़्ज़ा खाते हुए डीबग करेंगे।
ऑटोमेशन 2: बेडटाइम लॉकडाउन (मन की शांति)
परिदृश्य: रात 10 बज रहे हैं। मैं बिस्तर पर जाता हूँ। पाँच मिनट बाद, मेरा Eight Sleep कन्फ़र्म करता है कि मैं सच में सो रहा हूँ (सिर्फ़ लेटकर स्क्रॉल नहीं कर रहा)। घर जवाब देता है: हर दरवाज़ा लॉक, गैराज बंद अगर मैं भूल गया (फिर से), थर्मोस्टेट स्लीप मोड में, और ऑटो-ट्रिगर हुई लाइट्स बुझ जाती हैं।
1- alias: "Bedtime - Eight Sleep Triggered Lockdown"
2 trigger:
3 - platform: state
4 entity_id: binary_sensor.eight_sleep_bed_presence
5 to: "on"
6 for:
7 minutes: 5
8 condition:
9 - condition: time
10 after: "21:00:00"
11 before: "06:00:00"
12 action:
13 # Lock all doors
14 - service: lock.lock
15 target:
16 entity_id:
17 - lock.front_door
18 - lock.back_door
19 # Close garage if open
20 - service: cover.close_cover
21 target:
22 entity_id: cover.garage_door
23 # Set Ecobee to sleep mode
24 - service: climate.set_preset_mode
25 target:
26 entity_id: climate.ecobee
27 data:
28 preset_mode: "Sleep"
29 # Turn off auto-triggered lights
30 - service: light.turn_off
31 target:
32 entity_id:
33 - light.living_room
34 - light.kitchen
35 data:
36 transition: 5Eight Sleep नहीं है? टाइम-बेस्ड ट्रिगर (रात 10:30) या फ़ोन चार्जिंग डिटेक्शन से बदलें। लॉजिक वही है।
ऑटोमेशन 3: गैराज ऑटो-क्लोज़ (शादी बचाने वाला)
समस्या: "क्या तुमने गैराज बंद किया?" - इस घर में हफ़्ते में 3 बार पूछा जाने वाला सवाल। अब नहीं। 10 मिनट खुला रहने के बाद, यह ख़ुद बंद हो जाता है और मुझे मैसेज भेजता है।
1- alias: "Garage - Auto Close After 10 Minutes"
2 trigger:
3 - platform: state
4 entity_id: cover.garage_door
5 to: "open"
6 for:
7 minutes: 10
8 action:
9 - service: cover.close_cover
10 target:
11 entity_id: cover.garage_door
12 - service: notify.mobile_app_your_phone
13 data:
14 title: "Garage Secured"
15 message: "Garage was open for 10 minutes. Auto-closed."
16 data:
17 tag: "garage-closed"ऑटोमेशन 4: स्मार्ट क्लाइमेट (एनर्जी सेवर)
लॉजिक: खाली घर क्यों गरम करें? जब हमारे WiFi सेंसर बताते हैं कि 30 मिनट से कोई घर पर नहीं है, Ecobee Away मोड में चला जाता है। जब कोई अंदर आता है, यह फिर से जाग जाता है।
1- alias: "Ecobee - Away When House Empty"
2 trigger:
3 - platform: state
4 entity_id: binary_sensor.home_occupied
5 to: "off"
6 for:
7 minutes: 30
8 action:
9 - service: climate.set_preset_mode
10 target:
11 entity_id: climate.ecobee
12 data:
13 preset_mode: "Away"
14
15- alias: "Ecobee - Home When Occupied"
16 trigger:
17 - platform: state
18 entity_id: binary_sensor.home_occupied
19 to: "on"
20 condition:
21 - condition: state
22 entity_id: climate.ecobee
23 attribute: preset_mode
24 state: "Away"
25 action:
26 - service: climate.set_preset_mode
27 target:
28 entity_id: climate.ecobee
29 data:
30 preset_mode: "Home"एग्रीगेट सेंसर बनाना
binary_sensor.home_occupied एक टेम्प्लेट सेंसर है जो सभी रूम सेंसर को जोड़ता है:
1template:
2 - binary_sensor:
3 - name: "Home Occupied"
4 state: >
5 {{ is_state('binary_sensor.living_room_occupied', 'on')
6 or is_state('binary_sensor.kitchen_occupied', 'on')
7 or is_state('binary_sensor.bedroom_occupied', 'on') }}क्या गलत हो सकता है? (मज़ेदार हिस्सा)
बात यह है: कुछ न कुछ आज गलत होगा। यह निराशावाद नहीं, यह हक़ीक़त है। और ठीक है। यही तो पूरा मक़सद है।
आज की एडवेंचर के संभावित उम्मीदवार:
- Z-Wave लॉक्स - इनमें एटीट्यूड होता है। पेयरिंग में कई प्रयास लग सकते हैं।
- WiFi सेंसर कैलिब्रेशन - बेंच पर काम करता है, लेकिन जब पोज़ीशन में होगा तब?
- ऑटोमेशन एज केसेज़ - क्या होगा अगर कोई 2 सेकंड में कमरे से गुज़र जाए?
- "कल काम कर रहा था" समस्या - टेक्नोलॉजी का पसंदीदा मज़ाक़।
लेकिन इसीलिए हम यह साथ में कर रहे हैं। बाप और बेटा, समस्याएँ सुलझाते हुए, सीखते हुए, शायद बहस करते हुए कि YAML पार्स क्यों नहीं हो रहा। इसी तरह सच में सीखा जाता है: कुछ असली बनाकर, उसे टूटते देखकर और ठीक करके।
ज़ोरबा की खान ढह गई। उसकी प्रतिक्रिया? समुद्र तट पर नाचना। आज जो भी टूटे, हम ठीक कर लेंगे। और अगर नहीं कर पाए, तो डिनर के लिए एक शानदार कहानी होगी।
फ़िलॉसफ़ी
यहाँ वो चीज़ है जो करने वालों को सपने देखने वालों से अलग करती है:
सपने देखने वाले महीनों रिसर्च करते हैं। हर आर्टिकल पढ़ते हैं। "सही" हार्डवेयर का इंतज़ार करते हैं। अपनी योजना को तब तक ऑप्टिमाइज़ करते हैं जब तक परफ़ेक्ट न हो। कभी शुरू नहीं करते।
करने वाले एक प्लान लिखते हैं, ज़रूरी सामान इकट्ठा करते हैं, और अमल करते हैं। चुनौतियाँ उम्मीद करते हैं। चलते-चलते एडजस्ट करते हैं। आगे की तरफ़ असफल होते हैं।
बिना योजना के, कोई रास्ता नहीं: बस लोग अपनी ही बातें सुनने के लिए बोलते हैं। लेकिन बिना अमल के योजना बस एक सपना है जिसमें अतिरिक्त क़दम हैं।
आज की सफलता के मापदंड
- ☐ Home Assistant चल रहा है सभी डिवाइसेज़ कनेक्ट के साथ
- ☐ WiFi सेंसर लिविंग रूम में मूवमेंट डिटेक्ट कर रहा है
- ☐ Follow-me लाइटिंग कम से कम एक कमरे में काम कर रही है
- ☐ बेडटाइम लॉकडाउन ऑटोमेशन इनेबल
- ☐ मेरा बेटा कहे "यह टोनी स्टार्क के घर जैसा है"
आगे क्या (जब आज काम कर जाए)
मान लो हम सफल होते हैं (और होंगे, आखिरकार, भले ही उम्मीद से ज़्यादा समय लगे):
- पूरा 3+3 ESP32 डिप्लॉयमेंट - हर मुख्य कमरे में सेंसिंग, पूरे घर में फ़ॉग कवरेज
- दीवार पर लगा टैबलेट डैशबोर्ड - हॉलवे में हमेशा चालू कंट्रोल पैनल
- लोकल वॉइस कंट्रोल - Wyoming/Piper वॉइस कमांड्स के लिए जो आपके घर से बाहर नहीं जातीं
- वॉटर लीक सेंसर - हर सिंक के नीचे और वॉटर हीटर के पास
लेकिन पहले: आज। पहले: अमल। पहले: साबित करना कि यह सारी प्लानिंग वाकई काम करती है।
"ज़िंदगी वो है जो तुम्हारे साथ तब होती है जब तुम दूसरी योजनाएँ बनाने में व्यस्त हो।" - जॉन लेनन
ग़लत। ज़िंदगी वो है जो तब होती है जब तुम प्लानिंग बंद करो और करना शुरू करो। दूसरी तरफ़ मिलते हैं। कुछ बनाने का वक़्त आ गया है।