Raspberry Pi Ev Otomasyonunu Ayarlayın

Set Up Raspberry Pi Home Automation



Ev otomasyonu için en önemli şeylerden biri, düşük voltajlı bir DC kullanarak yüksek voltajlı AC'yi kontrol etmektir. Raspberry Pi'den yüksek voltajlı AC'yi kontrol etmek için 5V'luk bir röle anahtarına ihtiyacınız olacak. Raspberry Pi'nin GPIO pinlerini kullanarak röle anahtarını kontrol edebilirsiniz. Röle anahtarı daha sonra AC ev aletlerini Raspberry Pi aracılığıyla kontrol edebilir.

Bu makale, mobil cihazınızdan bir ampulü açıp kapatmak için Raspberry Pi ve 5V röle anahtarını nasıl kullanacağınızı gösterecektir. Makale, ağınızdaki herhangi bir cihazdan erişebileceğiniz ve evinizdeki tüm AC ev aletlerini kablosuz olarak kontrol edebileceğiniz bir web uygulaması içermektedir. O halde basit Raspberry Pi ev otomasyonu deneyimize başlayalım.







İhtiyacınız Olan Şeyler

Raspberry Pi'nizi başsız (SSH veya VNC aracılığıyla) kullanmak istiyorsanız, aşağıdakilere ihtiyacınız olacak:



1) Raspberry Pi 3 veya Raspberry Pi 4.
2) 5V Röle anahtarı.
3) Elektrik telleri.
4) 3 dişi-dişi bağlantı kablosu.
5) AC ampul.
6) AC ampul tutucu.
7) AC fişi.
8) Wirecutter ve striptizci aracı.
9) CR-V 3 tornavida.
10) Micro-USB (Raspberry Pi 3) veya USB Type-C (Raspberry Pi 4) güç adaptörü.
11) Raspberry Pi OS ile 16 GB veya 32 GB microSD kart yanıp söndü.
12) Raspberry Pi'de ağ bağlantısı.
13) Raspberry Pi'ye VNC uzak masaüstü erişimi veya SSH erişimi için dizüstü veya masaüstü bilgisayar.



Raspberry Pi'ye SSH veya VNC üzerinden uzaktan erişmek istemiyorsanız aşağıdakilere de ihtiyacınız olacak:





14) Bir monitör.
15) HDMI veya mikro HDMI kablosu.
16) Bir klavye.
17) Bir fare.

Raspberry Pi OS görüntüsünü microSD karta yüklemek için yardıma ihtiyacınız varsa, Raspberry Pi Imager Nasıl Kurulur ve Kullanılır makalesine bakın.



Raspberry Pi'ye yeni başlayan biriyseniz ve Raspberry Pi'ye Raspberry Pi OS yükleme konusunda yardıma ihtiyacınız varsa, makaleye göz atın Raspberry Pi 4'e Raspberry Pi OS Nasıl Kurulur?

Ayrıca, Raspberry Pi'nin başsız kurulumuyla ilgili yardıma ihtiyacınız varsa, Raspberry Pi 4'te Harici Monitör Olmadan Raspberry Pi İşletim Sistemi Nasıl Kurulur ve Yapılandırılır makalesine bakın.

Gerekli tüm araçların resimleri aşağıda verilmiştir.

Raspberry Pi'yi Açma

Ardından, güç kablosunu Raspberry Pi'ye bağlayın ve Raspberry Pi'yi açın.

Raspberry Pi açıldığında VNC veya SSH üzerinden Raspberry Pi'ye bağlanabilirsiniz. Veya Raspberry Pi'ye doğrudan erişmek için klavye, fare ve monitör bağlayabilirsiniz.

5V Röle Pin Çıkışları

Röle temelde bir anahtardır. Ancak, geleneksel bir anahtarın aksine, bir röle az miktarda DC voltajıyla kontrol edilebilir.

5V rölenin kullanımı çok kolaydır. İki tarafı vardır: bir tarafı düşük voltajlı DC (Raspberry Pi'den) üzerinden röleyi kontrol etmek için kullanılır ve diğer tarafı rölenin durumuna bağlı olarak yüksek voltajlı AC'yi (yani ampulü) kontrol etmek için kullanılır. .


Bir tarafta rölenin iki LED'i (bir kırmızı ve bir yeşil) ve üç pin ( IN, GND, ve VCC ). Bu üç pin, Raspberry Pi'den röleyi kontrol etmek için kullanılır.

Diğer taraftaki ilk iki pin AC ev aletini kontrol etmek için kullanılır.

5V Röleyi Raspberry Pi'ye Bağlama

5V röleyi Raspberry Pi'ye bağlamak için üç dişi-dişi bağlantı kablosuna ihtiyacınız olacak.

Bağlantı kablolarının bir tarafını prize takın. İÇİNDE (sarı tel), GND (siyah tel) ve VCC (kırmızı kablo) pimlerini aşağıda gösterildiği gibi 5V röleye bağlayın.


Tellerin diğer tarafı, aşağıdaki resimde gösterildiği gibi Raspberry Pi'nin GPIO başlık pinlerine gider.

Kırmızı kablo içeri girmeli PIN 2 (VCC) Ahududu Pi'nin.
Siyah tel içeri girmeli PIN 6 (GND) Ahududu Pi'nin.
Sarı tel içeri girmelidir. PIN 7 (GPIO 4) Ahududu Pi'nin.


Raspberry Pi'ye 5V röle bağlandıktan sonra aşağıdaki resimdeki gibi görünmelidir.

Oturum Açma Kullanıcısına GPIO Erişimine İzin Verme

Raspberry Pi OS'nin varsayılan oturum açma kullanıcısı olan GPIO pinlerine erişime izin vermek için pi eklenmeli gpio grup.

ekleyebilirsiniz pi kullanıcı gpio aşağıdaki komutla gruplayın:

$sudokullanıcı modu-aGgpio $(ben kimim)


Değişikliklerin etkili olması için Raspberry Pi'yi aşağıdaki komutla yeniden başlatın:

$sudoyeniden başlat

Proje Dizini Oluşturma

Tüm proje dosyalarını düzenli tutmak da iyi bir fikirdir.

Proje dosyalarını düzenli tutmak için proje dizinini oluşturun ~/www ve aşağıdaki komutla gerekli alt dizinler:

$mkdir -pv~/www/{şablonlar,statik}


Proje dizini oluşturulduktan sonra proje dizinine aşağıdaki gibi gidin:

$CD~/www

Raspberry Pi'den 5V Röleyi Değiştirme

5V röleyi Raspberry Pi'ye bağladığınıza göre, Python programlama dilini kullanarak röleyi Raspberry Pi'den değiştireceksiniz.

NOT: Anahtarlama elektronikte kullanılan bir terimdir. Anahtarlama, belirli bir elektronik cihazı kontrol etmek (yani, açmak/kapatmak) anlamına gelir.

Python programlama dilini kullanarak röle değiştirmeyi denemek için proje dizininde yeni Python komut dosyası test.py'yi aşağıdaki gibi oluşturun:

$nanotest.py


Test.py Python betiğine aşağıdaki kod satırlarını yazın.

itibarengpiozeroiçe aktarmakLED
itibaren zaman içe aktarmakuyku

süre NS:
röle=LED(4)
Yazdır('Röle: Açık')
uyku(5)

röle.kapat()
Yazdır('Röle: Kapalı')
uyku(5)

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için test.py Python komut dosyası.


Burada, satır 1 ithalatı LED itibaren gpiozero kitaplık ve satır 2'yi içe aktarır. uyku işlevinden zaman kütüphane.


6-14 satırları sonsuz bir döngü içindedir.


Hat 6, bir LED'i başlatır. GPIO 4 bağlı olan Raspberry Pi'nin İÇİNDE rölenin pimi.


Hat 8, röleyi kullanarak röleyi açar. üzerinde() yöntem.

Satır 9, konsolda aşağıdaki komutu kullanarak bir mesaj yazdırır: Yazdır() işlev.

Satır 10, aşağıdaki kodu kullanarak sonraki kod satırının yürütülmesini beş saniye geciktirir. uyku() işlev.


Hat 12, röleyi kullanarak röleyi kapatır. kapat() yöntem.

Aynı şekilde, satır 9, konsolda aşağıdaki komutu kullanarak bir mesaj yazdırır: Yazdır() işlev ve satır 10, aşağıdaki kodu kullanarak sonraki kod satırının yürütülmesini 5 saniye geciktirir. uyku() işlev.


Ardından, çalıştırın test.py Python betiği aşağıdaki gibidir:

$python3 testi.py


NS test.py Python betiği 5V röleyi değiştirmeye başlamalıdır. Her beş saniyede bir tıklama sesi duymalısınız. Röle durumu değiştirdiğinde (açıktan kapalıya veya kapalıdan açıka), bir tıklama sesi çıkarır. Bu, rölenin düzgün çalıştığı anlamına gelir.


Röle kapalı durumdayken (normal çalışma – AC yük bağlantısı kesilmiş), yalnızca Aşağıdaki resimde de görebileceğiniz gibi LED yanmalıdır.


Röle açık durumdayken (AC yükü bağlı), hem Yeşil LED ve NS Aşağıdaki resimde de görebileceğiniz gibi LED yanmalıdır.


Test tamamlandığında, düğmesine basın. + C sonlandırmak için test.py senaryo.

AC Ampulünü 5V Röleye Bağlama

5V röle şimdi düzgün çalışıyor olmalıdır. Şimdi AC ev aletinizi (bu durumda bir ampul) 5V röleye bağlayacaksınız.

Önce ampule bağlı olan siyah elektrik telini tel kesici ile kesin.


Ampule bağlanan siyah elektrik teli tel kesici ile kesildikten sonra aşağıdaki resimdeki gibi görünmelidir.


Ardından, aşağıdaki resimde gösterildiği gibi, elektrik kablosunun yaklaşık ½ inç'ini ortaya çıkarmak için dış katmanı soyun.


Ardından, aşağıdaki resimde gösterildiği gibi açıkta kalan kabloları katlayın.


CV-3 tornavida ile rölenin işaretli vidalarını gevşetin.


Daha önce soyup katladığınız açıkta kalan kabloları iki vidalı terminale yerleştirin ve vidaları bir CV-3 tornavidayla sıkın.

AC Yükü Bağladıktan Sonra Röle Anahtarlamanın Test Edilmesi

AC yükü 5V röleye bağlandıktan sonra, ampul fişini duvar prizine bağlayın.


Çalıştır test.py Proje dizininden Python betiği aşağıdaki gibi:

$python3 testi.py


NS test.py Python betiği, yüksek voltajlı AC ampulünü beş saniyelik aralıklarla değiştirecek olan 5V röleyi değiştirmeye başlamalıdır. AC ampulü beş saniye açık kalmalı, ardından beş saniye kapalı kalmalıdır, vb.

Aşağıdaki resimde ampul kapalı.


Aşağıdaki resimde ampul yanıyor.


Gördüğünüz gibi Python programlama dilini kullanarak röleyi açıp yüksek voltajlı AC ampulü kontrol edebiliyoruz. Yani, basın + C sonlandırmak için test.py senaryo.

Şimdi bir sonraki bölüme geçelim.

Ev Otomasyonu Web Uygulamasını Yazma

Bu bölümde size Python programlama dilini kullanarak API tabanlı bir web uygulamasının nasıl yazılacağını göstereceğim. Röleyi ve röleye bağlı AC ev aletlerini veya elektrikli cihazları bir web tarayıcısından kontrol etmek için web uygulamasını kullanabilirsiniz.

NOT: Bu bölümde gösterilen tüm kodlar GitHub depomda mevcuttur. shovon8 / ahududu-pi-ev otomasyonu . İsterseniz GitHub depomu klonlayabilir ve tüm kodları atlayabilirsiniz.

Proje dizininde server.py Python betiğini aşağıdaki gibi oluşturun:

$nanosunucu.py


Aşağıdaki kod satırlarını aşağıdaki alana yazın. sunucu.py Python komut dosyası.

itibarenşişeiçe aktarmakşişe,jsonify,url_for,render_template
itibarengpiozeroiçe aktarmakLED
itibarenuuidiçe aktarmakuuid4
Odalar= {}
Odalar['Oda 1'] = [{
'İD': uuid4(),
'isim':'Işık 1',
'simge':'fa fa-ampul',
'durum':YANLIŞ,
'rölePin':4,
'röleÖrneği':YANLIŞ
}, {
'İD': uuid4(),
'isim':'Fan 1',
'simge':'fa fanı',
'durum':YANLIŞ,
'rölePin':6,
'röleÖrneği':YANLIŞ
}]
Odalar['Banyo 1'] = [{
'İD': uuid4(),
'isim':'Işık 1',
'simge':'fa fa-ampul',
'durum':YANLIŞ,
'rölePin':5,
'röleÖrneği':YANLIŞ
}]
uygulama=şişe(__isim__)
uygulama.yapılandırma['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@uygulama.güzergah('/')
tanımev():
dönüşrender_template('./index.html',Odalar=Odalar)
tanımtoggle_appliance_status(İD):
içinodaiçindeOdalar:
içincihaziçindeOdalar[oda]:
Eğer P(cihaz['İD']) == İD:
Eğercihaz['röleÖrneği']:
cihaz['röleÖrneği'].kapat()
cihaz['röleÖrneği'] = YANLIŞ
Başka:
cihaz['röleÖrneği'] =LED(cihaz['rölePin'])
cihaz['röleÖrneği'].üzerinde()
cihaz['durum'] = Olumsuzcihaz['durum']
dönüş NS
dönüş YANLIŞ
@uygulama.güzergah('/cihaz/geçiş/')
tanımcihaz_toggle(İD):
dönüşjsonify({'durum': toggle_appliance_status(İD)})

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için sunucu.py Python komut dosyası.


Burada 1-3. satırlar gerekli tüm bileşenleri ilgili kitaplıklarından içe aktarır.


5. satır boş bir alan oluşturur Odalar sözlük. Bu sözlükte, web uygulamasından kontrol etmek istediğimiz tüm AC cihazı ayrıntılarını saklayacağız.


NS Odalar ayrıntılar satır 7-29'da saklanır.


Odalardan birinin veri yapısını tartışalım.

Burada, oda adı olacak Oda 1. Yani, Oda 1 anahtarıdır Odalar sözlük.


NS Oda 1 key, değer olarak bir diziyi tutar. Dizi öğelerinin sayısı, o odada bulunan ve web uygulamasından kontrol etmek istediğiniz AC ev aletlerinin sayısına eşittir. Bu durumda, kontrol etmek istediğimiz iki AC ev aletimiz var: Işık 1 ve fan 1 .


Her ev aleti tanımının bir İD . NS İD rastgele oluşturulmuş bir UUID'dir. Bu, API kullanarak hangi odayı kontrol etmek istediğimizi belirlemek için kullanılır.

Bir ev aleti ayrıca aşağıdakilerin tümüne sahiptir:

  • isim (Işık 1 bu durumda)
  • simge (Simgeler için Font Awesome'i kullanacağımız için Font Awesome simge sınıfı)
  • durum (Doğru Eğer üzerinde ve YANLIŞ Eğer kapalı )
  • rölePin (AC ev aletine bağlı röleyi kontrol etmek için kullanılan GPIO pin numarası)
  • röleÖrneği (başlatılan LED Nesnesi gpiozero ilgili GPIO pinini kontrol etmekten sorumlu kütüphane - rölePin )


31. satır bir şişe Python web sunucusunu başlatır.

Satır 32, şişe web sunucusunu yapılandırır.


34-36. satırlar index.html dosyadan şablonlar/ ev otomasyonu web uygulamasını ziyaret ettiğinizde dizin.

Şişe kullanır Jinja2 işlemek için şablonlama dili index.html dosya. Yani, geçtim Odalar sözlük için index.html dosya. Jinja2 kullanarak ana sayfayı oluşturacaktır Odalar veri.


İşlev toggle_appliance_status() 39-52 numaralı satırlarda, ev aleti kapalıysa açmak, açıksa ev aletini kapatmak için kullanılır. İD .

geri döner NS geçiş işlemi başarılı olursa. Hata varsa döner YANLIŞ .


55-57 numaralı hatlar, bir ev aletinde geçiş yapmak için kullanılır. /cihaz/geçiş/ Web sunucusunun API uç noktası. Buraya, İD ev aletinin kimliğidir.


oluştur index.html dosya şablonlar/ projenizin dizini aşağıdaki gibi:

$nanoşablonlar/index.html

Aşağıdaki kod satırlarını aşağıdaki alana yazın. index.html senaryo.


< html dil='üzerinde'>
< kafa >
< meta karakter seti='UTF-8'>
< meta isim='görünüm alanı' içerik='genişlik=cihaz genişliği, başlangıç ​​ölçeği=1.0'>
< bağlantı rel='stil sayfası' href='{{ url_for('static', file) }}'>
< bağlantı rel='stil sayfası' href='{{ url_for('static', file) }}'>
< Başlık >Raspberry Pi ile Ev Otomasyonu</ Başlık >
</ kafa >
< vücut >
< div İD='içerik'>
< h1 >Raspberry Pi Ev Otomasyonu</ h1 >

{Odalardaki oda için %%}
< div sınıf='oda'>
< h2 >{{ oda }}</ h2 >
< div sınıf='cihazlar'>
{odalarda cihaz için %[oda] %}
< div sınıf='cihaz' İD='{{ cihaz['id'] }}'> ='aktif'>
< ben sınıf='{{ cihaz['simge'] }}'></ ben >
< açıklık >{{ cihaz['ad'] }}</ açıklık >
</ div >
{% endfor %}
</ div >
</ div >
{% endfor %}

</ div >

< senaryo kaynak='{{ url_for('static', file) }}' tip='metin/javascript'></ senaryo >
</ vücut >
</ html >

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için index.html dosya.


Oluşturmak stil.css dosya statik/ projenizin dizini aşağıdaki gibi:

$nanostatik/stil.css


Aşağıdaki kod satırlarını aşağıdaki alana yazın. stil.css dosya.

@içe aktarmak url('https://fonts.googleapis.com/css2?family=BenchNine: [e-posta korumalı] ;400;700&display=swap');

* {
kenar boşluğu: 0;
dolgu malzemesi: 0;
font ailesi: 'BenchNine', sans Serif;
}

#içerik >h1{
arka fon:lineer gradyan(ilesağ, rgb(112, 24, 163), rgb(86, 127, 240));
renk: #fff;
Metin hizalama: merkez;
dolgu malzemesi: .5em 0;
}

div.oda {
kenar boşluğu: .5em;
sınır: 2 piksel sağlam rgb(112, 24, 163);
sınır yarıçapı: 5 piksel;
}

div.odah2{
/* arkaplan: rgb(9, 76, 121); */
arka fon:lineer gradyan(ilesağ, rgb(112, 24, 163), rgb(86, 127, 240));
dolgu malzemesi: 0 0 0 .5em;
renk: #fff;
}

div.cihazlar {
kenar boşluğu: .5em .5em 0 0;
Görüntüle:esnek;
esnek sarma:dürüm;
}

div.cihaz {
sınır: 2 piksel sağlam rgb(112, 24, 163);
sınır yarıçapı: 5 piksel;
Genişlik: 110 piksel;
boy uzunluğu: 120 piksel;
Metin hizalama: merkez;
kenar boşluğu: 0 0 .5em .5em;
Görüntüle:esnek;
esnek yön:kolon;
}

div.cihazben.fa {
yazı Boyutu: 4em;
esnek büyüme: 1;
dolgu üstü: 0.3em;
renk: rgb(204, elli, elli);
}

div.cihaz[veri etkin='aktif']ben.fa {
renk: rgb(32, 177, 51);
}

div.cihazaçıklık{
Görüntüle: engellemek;
yazı tipi ağırlığı: gözü pek;
arka fon: rgb(112, 24, 163);
renk: #fff;
}

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için stil.css dosya.


Oluşturduğunuz bir app.js dosya statik/ projenizin dizini aşağıdaki gibi:

$nanostatik/app.js


Aşağıdaki kod satırlarını aşağıdaki alana yazın. app.js dosya.

pencere.addEventListener('yük',ana);

işlevana() {
işlevtoggleApplianceState(Ve) {
neredeİD=Ve.yol[1].İD;

neredehttp= yeniXMLHttpRequest();

http.onreadystatechange = işlev() {
Eğer(Bugün nasılsın.hazırDurum === 4 && Bugün nasılsın.durum === 200) {
Eğer(JSON.ayrıştırmak(Bugün nasılsın.tepkiMetin).durum === NS) {
Eğer(Ve.yol[1].hasAttribute('veri etkin')) {
Ve.yol[1].RemoveAttribute('veri etkin')
} Başka {
Ve.yol[1].setAttribute('veri etkin', 'aktif')
}
}
}
}

http.açık('ELDE ETMEK',``/cihaz/geçiş/${İD}``, NS);
http.göndermek();
}


neredealetleri=belge.getElementsByClassName('cihaz');
için(ben=0;ben<aletler.uzunluk;ben++) {
aletleri[ben].addEventListener('Tıklayın',toggleApplianceState);
}
}

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için app.js dosya.


Burada, 1. satır ana() web sayfası yüklemeyi bitirdiğinde işlev görür.

İçinde index.html dosyası, her ev aleti bir cihaz sınıf. 26-29 arasındaki satırlar, web sayfasından her bir ev aletini seçmek ve eklemek için kullanılır. Tıklayın cihaza olay. Birisi web sayfasından bir ev aletine tıkladığında, toggleApplianceState() fonksiyon çalışacaktır.


4-23. satırlarda, toggleApplianceState() işlevi istemek için kullanılır. /cihaz/geçiş/ tıklanan ev cihazının durumunu değiştirmek için web sunucusunun uç noktası. İstek arka planda AJAX aracılığıyla yapılır. Yanıt alındıktan sonra, web sayfası buna göre güncellenir.


Şuraya gidin: statik/ proje dizininizde aşağıdaki gibi dizin:

$CDstatik/


Aşağıdaki komutla Font Awesome'i indirin:

$wgethttps://use.fontawesome.com/Salıverme/v5.15.1/fontawesome-free-5.15.1-web.zip


Font Awesome indirildikten sonra, yeni zip dosyasını bulmalısınız. fontawesome-free-5.15.1-web.zip içinde statik/ dizin.

$ls -lh


sıkıştırmasını açın fontawesome-free-5.15.1-web.zip aşağıdaki komutla dosya:

$sıkıştırmayı açmakfontawesome-free-5.15.1-web.zip


NS fontawesome-free-5.15.1-web.zip dosya şimdi sıkıştırılmış olmalıdır.


yeni dizin fontawesome-free-5.15.1-web/ aşağıdaki ekran görüntüsünde görebileceğiniz gibi static/ dizinde oluşturulmalıdır.

$ls -lh

dizini yeniden adlandır fontawesome-free-5.15.1-web/ ile fontawesome/ aşağıdaki komutla:

$mv -vfontawesome-ücretsiz-5.15.1-web fontawesome


Şimdi, artık ihtiyacınız yok fontawesome-free-5.15.1-web.zip dosya. Yani, kaldırın fontawesome-free-5.15.1-web.zip aşağıdaki komutla dosya:

$rm -vfontawesome-free-5.15.1-web.zip


NS statik/ dizin yapısı aşağıdaki ekran görüntüsünde gösterildiği gibi görünmelidir.

$ls -lh


Proje dizinine geri gidin ~/www aşağıdaki gibi:

$CD..

Ev Otomasyonu Web Uygulamasını Test Etme

Ev otomasyonu web uygulamasını test etmek için proje dizininizde aşağıdaki komutu çalıştırın:

$FLASK_APP=server.py şişe çalıştırma


Web uygulaması, Raspberry Pi'nizin 5000 numaralı bağlantı noktasında mevcut olmalıdır.


Chromium web tarayıcısından şu adresi ziyaret edin: http://localhost:5000 . Ev otomasyonu web uygulaması yüklenmelidir.

Aşağıdaki resimde gösterilen ampul simgesine tıklayın.


AC ampulü şimdi açık olmalıdır. Simge rengi de ampulün açık olduğunu gösterecek şekilde yeşile dönmelidir.


Yani, ev otomasyonu web uygulaması çalışıyor. basmak + C Web sunucusunu sonlandırmak için.

Ev Otomasyonu Web Uygulaması için Systemd Hizmeti Oluşturma

Bu bölümde, ev otomasyonu web uygulaması için otomatik olarak açılışta başlaması için bir systemd servis dosyasının nasıl oluşturulacağını göstereceğim.

İlk olarak, raspi-home-automation.service proje dizininizde aşağıdaki gibi dosya oluşturun:

$nanoraspi-home-automation.service

raspi-home-automation.service dosyasına aşağıdaki satırları yazın.

[Birim]
Açıklama=Raspberry Pi Ev Otomasyonu Web Hizmeti
Sonrasında=ağ.hedef
[Hizmet]
Çalışma dizini=/ev/pi/www
Çevre=FLASK_APP=sunucu.py
Çevre=FLASK_ENV=üretim
ExecStart=/usr/NS/şişe koşusu--ev sahibi= 0.0.0.0
StandartÇıkış= miras
Standart hata= miras
Tekrar başlat= her zaman
kullanıcı= pi
[Düzenlemek]
AranıyorTarafından=çok kullanıcılı.hedef

İşiniz bittiğinde, basın + X bunu takiben VE ve kaydetmek için raspi-home-automation.service dosya.


Kopyala raspi-home-automation.service dosyaya /etc/systemd/system/ aşağıdaki komutla dizin:

$sudo cp -vraspi-home-automation.service/vesaire/sistem/sistem/


Değişikliklerin geçerli olması için systemd arka plan programlarını aşağıdaki gibi yeniden yükleyin:

$sudosystemctl arka plan programı yeniden yükleme


Ekle raspi-ev-otomasyonu Raspberry Pi OS'nin sistem başlangıcına aşağıdaki komutla hizmet verin:

$sudosistemctletkinleştirmeraspi-home-automation.service


Raspberry Pi'yi aşağıdaki komutla yeniden başlatın:

$sudoyeniden başlat


Raspberry Pi önyüklendiğinde, raspi-ev-otomasyonu Aşağıdaki ekran görüntüsünde de görebileceğiniz gibi hizmet etkin/çalışıyor olmalıdır.

$sudosystemctl durumu raspi-home-automation.service

Ev Otomasyonu Web Uygulamasına Diğer Cihazlardan Erişme

Ev ağınızdaki diğer cihazlardan ev otomasyonu web uygulamasına erişmek için Raspberry Pi cihazınızın IP adresini bilmeniz gerekir.

Raspberry Pi 4 cihazınızın IP adresini ev yönlendiricinizin web yönetim arayüzünden bulabilirsiniz. Benim durumumda IP adresi 192.168.0.103'tür. Bu sizin için farklı olacaktır. Bu nedenle, bundan sonra IP'mi sizinkiyle değiştirdiğinizden emin olun.


Raspberry Pi konsoluna erişiminiz varsa, IP adresini bulmak için aşağıdaki komutu da çalıştırabilirsiniz.

$ana bilgisayar adı -BEN


Raspberry Pi cihazınızın IP adresini öğrendikten sonra ev ağınızdaki herhangi bir cihazdan ona erişebilirsiniz.

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, ev otomasyonu web uygulamasına Android akıllı telefonumdan eriştim.


Ampul fişini duvardaki elektrik prizine taktığınızdan emin olun.


Ampul varsayılan olarak kapalı olmalıdır.


Ev otomasyonu web uygulamasından ampul simgesine dokunursanız, ampul simgesinin rengi, ampulün açık olduğunu gösterecek şekilde yeşile dönmelidir.


Aşağıdaki resimde de görebileceğiniz gibi, ampul yanıyor.

Çözüm

Bu makale, Python programlama dilini kullanarak Raspberry Pi'den yüksek voltajlı bir AC elektrikli cihazı kontrol etmek için 5V rölenin nasıl kullanılacağını gösterdi. Makale ayrıca, röleyi web tarayıcısından kontrol etmek için API tabanlı bir Python şişesi web uygulamasının nasıl yazılacağını da gösterdi. Bu makale, Raspberry Pi kullanarak ev otomasyonuna başlamanıza yardımcı olacaktır.