Unajua dunia ina watu wa aina gani wa kutosha? Watu wanaozungumza kuhusu watakachofanya siku moja. Waotaji wamekaa mikono juu, wakisubiri wakati kamili, mpangilio kamili, kitu chochote kamili. Wakati huo huo maisha yanaendelea kupita.
"Nilihisi tena jinsi furaha ilivyo rahisi na ya kawaida: glasi ya mvinyo, kashata ya kuchoma, jiko dogo la huruma, sauti ya bahari. Hakuna kingine." Nikos Kazantzakis, Zorba Mgiriki
Zorba hakusubiri. Zorba alicheza. Zorba alishindwa kwa njia ya kushangaza na kucheka kuhusu hilo. Mgodi wake mkubwa ulipobomoka, kwa maana halisi ulibomoka, alikamata chupa ya mvinyo na kuanza kucheza kwenye ufukwe. Ni bora kushindwa kama Zorba kuliko kukaa mikono juu.
Kwa hivyo leo, mimi na mwanangu tunatekeleza. Mpango umeandikwa. Vifaa vimeandaliwa. Vingi vimejaribiwa kibinafsi: otomatiki zinafanya kazi, sensori zinagunduza, msimbo unakompile. Sasa tuone kama vyote vinafanya kazi pamoja. Je, kitu kitaenda vibaya? Labda. Je, tuko tayari kwa changamoto? Kabisa. Hiyo ndiyo sehemu ya kufurahisha.
Bila mpango, hakuna njia ya mbele. Watu wanaozungumza ili kusikia sauti zao tu. Ndoto tu. Hii si ndoto. Huu ni muhtasari wa utekelezaji.
Misheni
Wakati tutakapokuwa tukichoma nyama ya chakula cha jioni leo usiku, nyumba hii itakuwa:
- Kuwasha taa kwenye chumba unachoingia, na kuzipunguza ukitoka
- Kufunga milango yote wakati kitanda kinaposensa tumelala
- Kufunga gereji kiotomatiki tunaposahau (tena)
- Kurekebisha hali ya hewa kulingana na vyumba vipi vinatumika kweli
- Kuzalisha kelele ya WiFi ili mtu yeyote nje asiweze kutumia teknolojia hiyo hiyo dhidi yetu
Na Amazon hawatajua kitu. Kila kitu kinafanya kazi ndani ya nyumba. Hakuna wingu. Hakuna usajili. Hakuna uvunaji wa data.
Silaha (Tayari Zimewekwa)
Ubongo: Raspberry Pi 5 - TAYARI
Kitu hiki kimekuwa kwenye dawati langu kwa wiki mbili, kimesanidiwa kikamilifu, kikisubiri leo. Pi 5 ni kupita kiasi kwa otomatiki ya kawaida ya nyumba. Napenda kupita kiasi. Inafanya kazi na Raspberry Pi OS Lite, Docker imewekwa, Portainer inafanya kazi. Ninachohitaji kufanya ni kuiunganisha mahali itakapoishi.
Nilichagua kifurushi cha Argon ONE V3 M.2 NVME PCIE Case. Tayari imekusanywa:
- M.2 SSD yenye OS iliyoflashiwa (hakuna matatizo ya kadi ya SD kwetu)
- Docker + Portainer zimewekwa na kujaribiwa
- Kontena ya Home Assistant tayari kupelekwa
- IP tuli imepewa kwenye mtandao
Orodha ya Ukaguzi wa Kabla ya Kuruka - IMEKAMILIKA
- ☑ Raspberry Pi OS Lite imeflashiwa kwenye SSD
- ☑ SSH imewezeshwa, stakabadhi zimewekwa
- ☑ Mtandao umesanidiwa na IP tuli
- ☑ Docker + Portainer zinafanya kazi
- ☑ Faili za usanidi wa Home Assistant zimeandaliwa
Sensori: Bodi za ESP32 - ZIMEFLASHIWA NA KUJARIBIWA
Hizi bodi ndogo za ESP32 zimekuwa sehemu ya kufurahisha zaidi. Mimi na mwanangu tulitumia wikendi iliyopita kuziflashia na kutazama data ya ishara ya WiFi ikitiririka. Zinafanya kazi. Imethibitishwa.
- Kitengo cha WiFi Sensing - Kinagundua mwendo kwa kupima usumbufu wa ishara ya WiFi. Kilijaribiwa kwa kutembea kwenye sebule; kinagunduza mwendo kupitia kuta, umbali wa karibu mita 4.5 hadi 6.
- Kitengo cha WiFi Fog - Kinazalisha kelele ili kupofusha WiFi sensing yoyote ya nje. Kinafanya kazi kwa kujitegemea, kikitengeneza machafuko mazuri katika eneo la ishara.
Leo tunaziunganisha kwenye Home Assistant na kuona kama otomatiki zinafanya kazi ipasavyo. Msimbo unafanya kazi kwenye majaribio. Swali ni: je, inafanya kazi wakati kila kitu kimeunganishwa?
(Ukitaka kujua sababu hii ni muhimu, soma makala zangu kuhusu WiFi sensing na hatua za kupambana na WiFi.)
Miundombinu Iliyopo - TAYARI IMEWEKWA
Hatuanzi kutoka mwanzo. Nyumba tayari ina vitu vya smart, lakini vinafanya kazi kwenye programu tofauti kama visiwa vilivyotengana. Leo tunaunganisha ufalme:
- Balbu za Philips Hue - Tayari zimewekwa kote nyumbani. Sasa zinadhibitiwa na programu ya Hue. Leo: Home Assistant inachukua usukani.
- Thermostati ya Ecobee - Tayari inajua vyumba vipi vinatumika kupitia sensori zake. Leo: tunaunganisha data hiyo.
- Kitanda cha Eight Sleep - Tayari kinafuatilia wakati ninalala. Leo: kinaanzisha otomatiki ya kufunga.
- Kufuli za Kwikset (Z-Wave) - Tayari kwenye milango. Leo: zinajifunza kujifunga zenyewe.
- Gereji ya MyQ - Tayari imewekwa. Leo: hakuna tena kurudi nyumbani kwa sababu nilisahau kufunga.
Jambo kuu: Labda tayari una vifaa vingi vya nyumba ya smart kuliko unavyofikiri. Vinaendelea tu bila kuongea.
Awamu ya 1: Miundombinu (IMEFANYIKA)
Hii ni kazi ya wikendi iliyopita. Ukifuata baadaye, hapa kuna tulichofanya. Ukisoma makala yangu kuhusu Docker, unajua kwa nini tuliyaweka yote kwenye kontena.
bash# Docker + Portainer - Already running
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-cePortainer inaishi kwenye http://raspberrypi.local:9000. GUI nzuri ya usimamizi wa kontena. Imethibitishwa.
Awamu ya 2: Home Assistant (KAZI YA KWANZA YA LEO)
Faili ya docker-compose imeandikwa. Saraka ya usanidi imeandaliwa. Leo tunaiwasha kwa kweli na kuanza kuunganisha vifaa.
yaml# docker-compose.yml - ready to deploy
version: '3'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- /home/pi/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: hostMpango: Kukimbia docker-compose up -d, kufungua mchawi wa usanidi, na kuunganisha muunganisho huu mmoja baada ya mwingine:
- Philips Hue - Inapaswa kujigunduza kiotomatiki kwenye mtandao
- Ecobee - Mtiririko wa OAuth, lazima niwe na programu karibu
- Eight Sleep - Muunganisho wa API, stakabadhi tayari
- Z-Wave - Hii inaweza kuwa ngumu, kufuli zinaweza kuwa na tabia
- MyQ - Rahisi, nimefanya hapo awali
- ESPHome - Kwa vifaa vya ESP32 tulivyoflashia wikendi iliyopita
Changamoto inayotarajiwa: Z-Wave. Kufuli daima zina mtazamo. Tutaona.
Awamu ya 3: Muunganisho wa WiFi Sensing (SEHEMU YA KUFURAHISHA YA LEO)
Kitengo cha Sensing - TAYARI KUUNGANISHWA
Wikendi iliyopita mwanangu alitazama monitor ya serial wakati kitu hiki kilinigundua nikitembea kwenye sebule. Maneno yake halisi: "Baba, hii ni ya kutisha na ya ajabu."
ESP32 tayari imeflashiwa na ESPHome. Tayari inagunduza mwendo kupitia WiFi CSI (Channel State Information). Leo tunaiunganisha kwenye Home Assistant na kuipa jina: binary_sensor.living_room_occupied
Jaribio: Ingia kwenye sebule. Je, Home Assistant inaiona? Ikiwa ndio, tuko kwenye biashara.
Kitengo cha Fog - SAFU YA FARAGHA TAYARI
ESP32 ya pili inafanya kazi na jenereta ya kelele kutoka kwenye makala yangu ya hatua za kupambana. Imekuwa ikifanya kazi kwenye benchi yangu kwa wiki moja, ikizalisha machafuko mazuri katika wigo wa WiFi.
Ndio, tunatumia WiFi sensing kwa otomatiki yetu wenyewe huku tukijilinda wakati huo huo dhidi ya wengine kufanya vivyo hivyo kwetu. Si unafiki. Ni usalama wa kiutendaji. Na mwanangu anafikiri ni kitu baridi zaidi kuwahi kuwepo.
Upanuzi wa Baadaye: 3+3
Lengo la leo ni kuthibitisha dhana na sensori moja na kifaa kimoja cha fog. Tukiwa na uhakika:
- Vifaa 3 vya sensing: Sebule, jikoni, chumba cha kulala
- Vifaa 3 vya fog: Vimesambazwa kote kwa chanjo kamili
Hiyo ni takriban $50 ya bodi za ESP32 kwa maboresho ya nyumba nzima. Lakini kwanza, tuone kama leo inafanya kazi.
Awamu ya 4: Otomatiki (SABABU YA YOTE)
Hivi ndivyo tulivyokuwa tukijenga. Faili hizi za YAML zimeandikwa, zimejaribiwa kichwani mwangu mara mia, na tayari kubandikwa. Je, zitafanya kazi mara ya kwanza? Tuone.
Otomatiki ya 1: Taa Zinazofuata (TAMASHA KUBWA)
Maono: Ingia chumbani, taa zinainuka kukusalimia. Ondoka, na zinapungua nyuma yako kama mtumishi mwenye heshima. Nyumba ya Tony Stark. Hiyo ndiyo lengo.
Ujanja: Ukiwasha taa kwa mikono, mfumo unaacha kama ilivyo. Chaguo lako linaheshimiwa. Tunafuatilia hii na wasaidizi wa input_boolean. Kwa sababu hakuna kitu kibaya zaidi ya otomatiki inayopigana nawe.
yaml# configuration.yaml additions
input_text:
last_occupied_room:
name: "Last Occupied Room"
initial: "none"
input_boolean:
living_room_auto_triggered:
name: "Living Room Auto Triggered"
kitchen_auto_triggered:
name: "Kitchen Auto Triggered"
bedroom_auto_triggered:
name: "Bedroom Auto Triggered"Sasa otomatiki:
yaml# automations.yaml
- alias: "Follow Me - Living Room Entry"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "on"
condition:
- condition: state
entity_id: light.living_room
state: "off"
action:
# Dim the previous room if it was auto-triggered
- choose:
- conditions:
- condition: template
value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
- condition: state
entity_id: input_boolean.kitchen_auto_triggered
state: "on"
sequence:
- service: light.turn_on
target:
entity_id: light.kitchen
data:
brightness_pct: 20
transition: 3
# Turn on current room
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 100
- service: input_boolean.turn_on
target:
entity_id: input_boolean.living_room_auto_triggered
- service: input_text.set_value
target:
entity_id: input_text.last_occupied_room
data:
value: "living_room"
- alias: "Follow Me - Living Room Vacancy"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "off"
for:
minutes: 2
condition:
- condition: state
entity_id: input_boolean.living_room_auto_triggered
state: "on"
action:
- service: light.turn_off
target:
entity_id: light.living_room
data:
transition: 5
- service: input_boolean.turn_off
target:
entity_id: input_boolean.living_room_auto_triggeredJaribio: Mara tu hii itakapopelekwa, mimi na mwanangu tutatembea nyumbani na kuona kama inatufuata. Ikifanya kazi, tutajisikia kama tuko kwenye filamu. Isipofanya kazi, tutasuluhisha kwa pizza.
Otomatiki ya 2: Kufunga Usiku (AMANI YA AKILI)
Hali: Ni saa 4 usiku. Napanda kitandani. Dakika tano baadaye, Eight Sleep inathibitisha kwamba kweli ninalala (si kulala tu nikisogeza simu). Nyumba inajibu: milango yote inafungwa, gereji inafunga ikiwa nilisahau (tena), thermostati inabadilika kwa hali ya kulala, na taa zilizowashwa kiotomatiki zinapungua.
yaml- alias: "Bedtime - Eight Sleep Triggered Lockdown"
trigger:
- platform: state
entity_id: binary_sensor.eight_sleep_bed_presence
to: "on"
for:
minutes: 5
condition:
- condition: time
after: "21:00:00"
before: "06:00:00"
action:
# Lock all doors
- service: lock.lock
target:
entity_id:
- lock.front_door
- lock.back_door
# Close garage if open
- service: cover.close_cover
target:
entity_id: cover.garage_door
# Set Ecobee to sleep mode
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Sleep"
# Turn off auto-triggered lights
- service: light.turn_off
target:
entity_id:
- light.living_room
- light.kitchen
data:
transition: 5Huna Eight Sleep? Badilisha na kichochezi cha msingi wa wakati (10:30 PM) au ugunduzi wa kuchaji simu. Mantiki ni ile ile.
Otomatiki ya 3: Gereji Inafunga Yenyewe (MWOKOZI WA NDOA)
Tatizo: "Ulifunga gereji?" Swali linaloduliwa mara 3 kwa wiki katika nyumba hii. Hapana tena. Baada ya dakika 10 wazi, inajifunga yenyewe na kunijulisha.
yaml- alias: "Garage - Auto Close After 10 Minutes"
trigger:
- platform: state
entity_id: cover.garage_door
to: "open"
for:
minutes: 10
action:
- service: cover.close_cover
target:
entity_id: cover.garage_door
- service: notify.mobile_app_your_phone
data:
title: "Garage Secured"
message: "Garage was open for 10 minutes. Auto-closed."
data:
tag: "garage-closed"Otomatiki ya 4: Hali ya Hewa ya Smart (MWOKOA NISHATI)
Mantiki: Kwa nini kupasha joto nyumba tupu? Sensori zetu za WiFi zinaposema hakuna mtu nyumbani kwa dakika 30, Ecobee inabadilika kwa hali ya Kutokuwepo. Mtu anapoingia, inajiamsha tena.
yaml- alias: "Ecobee - Away When House Empty"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "off"
for:
minutes: 30
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Away"
- alias: "Ecobee - Home When Occupied"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "on"
condition:
- condition: state
entity_id: climate.ecobee
attribute: preset_mode
state: "Away"
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Home"Kuunda Sensori ya Jumla
binary_sensor.home_occupied ni sensori ya kiolezo inayochanganya sensori zote za vyumba:
yamltemplate:
- binary_sensor:
- name: "Home Occupied"
state: >
{{ is_state('binary_sensor.living_room_occupied', 'on')
or is_state('binary_sensor.kitchen_occupied', 'on')
or is_state('binary_sensor.bedroom_occupied', 'on') }}Nini Kinaweza Kwenda Vibaya? (Sehemu ya Kufurahisha)
Hivi ndivyo ilivyo: kitu KITAENDA vibaya leo. Hiyo si kukata tamaa. Ni ukweli. Na ni sawa. Hiyo ndiyo sababu yote.
Wagombea wa uwezekano kwa tukio la leo:
- Kufuli za Z-Wave - Vitu hivi vina tabia. Kuoanisha kunaweza kuchukua majaribio kadhaa.
- Ukalibresheni wa sensori ya WiFi - Inafanya kazi kwenye benchi, lakini vipi ikiwa mahali pake?
- Hali za ukingo wa otomatiki - Nini kinatokea mtu akipita chumbani kwa sekunde 2?
- Tatizo la "ilifanya kazi jana" - Utani unaoupenda zaidi wa teknolojia.
Lakini ndiyo maana tunafanya hivi pamoja. Baba na mwana, tukisuluhisha matatizo, tukijifunza, labda tukibisana kuhusu kwa nini YAML haiparsiwi. Hivi ndivyo unavyojifunza kweli, kwa kujenga kitu halisi na kutazama kikiharibika na kukitengeneza.
Mgodi wa Zorba ulibomoka. Jibu lake? Kucheza kwenye ufukwe. Chochote kilichoharibika leo, tutakitatua. Na kama hatuwezi, tutakuwa na hadithi nzuri ya chakula cha jioni.
Falsafa
Hivi ndivyo vinavyotenganisha watendaji na waotaji:
Waotaji wanafanya utafiti kwa miezi. Wanasoma kila makala. Wanasubiri vifaa "sahihi". Wanaboresha mpango wao hadi ukamilike. Hawanzi kamwe.
Watendaji wanaandika mpango, wanakusanya wanachohitaji, na kutekeleza. Wanatarajia changamoto. Wanabadilika wakati ukiendelea. Wanashindwa wakielekea mbele.
Bila mpango, hakuna njia ya mbele. Watu wanaozungumza ili kusikia sauti zao tu. Lakini mpango bila utekelezaji ni ndoto tu yenye hatua za ziada.
Vigezo vya Mafanikio vya Leo
- ☐ Home Assistant inafanya kazi na vifaa vyote vimeunganishwa
- ☐ Sensori ya WiFi inagunduza mwendo kwenye sebule
- ☐ Taa zinazofuata zinafanya kazi angalau kwenye chumba kimoja
- ☐ Otomatiki ya kufunga usiku imewezeshwa
- ☐ Mwanangu anasema "hii ni kama nyumba ya Tony Stark"
Nini Kinafuata (Baada ya Leo Kufanya Kazi)
Tukidhani tutafanikiwa, na tutafanikiwa, hata kama itachukua muda zaidi kuliko inavyotarajiwa:
- Kupeleka ESP32 kamili 3+3 - Sensing katika kila chumba kikuu, chanjo ya fog kote
- Dashibodi ya kibao kwenye ukuta - Paneli ya udhibiti inayoendelea kwenye korido
- Udhibiti wa sauti wa ndani - Wyoming/Piper kwa amri za sauti ambazo haziondoki nyumbani
- Sensori za kuvuja kwa maji - Chini ya kila sinki na karibu na kipashia maji
Lakini kwanza: leo. Kwanza: utekelezaji. Kwanza: kuthibitisha kuwa mipango hii yote inafanya kazi kweli.
"Maisha ni yale yanayokutokea wakati uko busy kufanya mipango mingine." John Lennon
Vibaya. Maisha ni yale yanayotokea unapoacha kupanga na kuanza kufanya. Tutaonana upande wa pili. Wakati wa kwenda kujenga kitu.