I-set up ang Raspberry Pi Home Automation

Set Up Raspberry Pi Home Automation



Ang isa sa pinakamahalagang bagay para sa pag-aautomat ng bahay ay ang pagkontrol sa AC na may mataas na boltahe gamit ang isang mababang boltahe DC. Upang makontrol ang mataas na boltahe AC mula sa Raspberry Pi, kakailanganin mo ang isang 5V relay switch. Maaari mong kontrolin ang relay switch gamit ang mga GPIO pin ng Raspberry Pi. Pagkatapos ay makontrol ng relay switch ang mga gamit sa bahay ng AC sa pamamagitan ng Raspberry Pi.

Ipapakita sa iyo ng artikulong ito kung paano gamitin ang Raspberry Pi at ang 5V relay switch upang i-on at i-off ang isang bombilya mula sa iyong mobile device. Kasama sa artikulo ang isang web app na maaari mong ma-access mula sa anumang aparato sa iyong network at kontrolin ang anumang mga AC appliances sa bahay sa iyong wireless nang wireless. Kaya, magsimula tayo sa aming simpleng eksperimento sa automation ng bahay na Raspberry Pi.







Mga Bagay na Kakailanganin Mo

Kung nais mong gamitin ang iyong Raspberry Pi na walang ulo (sa pamamagitan ng SSH o VNC), kakailanganin mo ang mga sumusunod na bagay:



1) Raspberry Pi 3 o Raspberry Pi 4.
2) 5V Relay switch.
3) Mga wire na elektrikal.
4) 3 mga babaeng nagkokonekta na mga wire.
5) bombilya ng AC.
6) may hawak ng bombilya ng AC.
7) AC plug.
8) Wirecutter at stripper tool.
9) CR-V 3 distornilyador.
10) Micro-USB (Raspberry Pi 3) o USB Type-C (Raspberry Pi 4) power adapter.
11) 16 GB o 32 GB microSD card na may Raspberry Pi OS na na-flash.
12) Pagkakonekta sa network sa Raspberry Pi.
13) Laptop o isang desktop computer para sa VNC remote desktop access o SSH access sa Raspberry Pi.



Kung hindi mo nais na ma-access ang Raspberry Pi nang malayuan sa pamamagitan ng SSH o VNC, kakailanganin mo rin ang sumusunod:





14) Isang monitor.
15) HDMI o micro-HDMI cable.
16) Isang keyboard.
17) Isang mouse.

Kung kailangan mo ng tulong sa pag-flashing ng imahe ng Raspberry Pi OS sa microSD card, suriin ang artikulong Paano Mag-install at Gumamit ng Raspberry Pi Imager.



Kung ikaw ay isang baguhan ng Raspberry Pi at kailangan mo ng tulong sa pag-install ng Raspberry Pi OS sa Raspberry Pi, suriin ang artikulo Paano Mag-install ng Raspberry Pi OS sa Raspberry Pi 4.

Gayundin, kung kailangan mo ng tulong sa walang ulo na pag-setup ng Raspberry Pi, suriin ang artikulong Paano Mag-install at I-configure ang Raspberry Pi OS sa Raspberry Pi 4 Nang walang Panlabas na Monitor.

Ang mga imahe ng lahat ng kinakailangang tool ay ibinibigay sa ibaba.

Pagpapatakbo sa Raspberry Pi

Susunod, ikonekta ang power cable sa Raspberry Pi at lakas sa Raspberry Pi.

Kapag ang Raspberry Pi ay pinapagana, maaari kang kumonekta sa Raspberry Pi sa pamamagitan ng VNC o SSH. O kaya, maaari mong ikonekta ang isang keyboard, isang mouse, at isang monitor sa Raspberry Pi upang direktang ma-access ito.

5V Relay Pinout

Ang isang relay ay karaniwang isang switch. Ngunit, hindi katulad ng isang tradisyunal na switch, ang isang relay ay maaaring kontrolin ng isang maliit na halaga ng boltahe ng DC.

Napakadaling gamitin ang relay na 5V. Mayroon itong dalawang panig: ang isang gilid ay ginagamit upang makontrol ang relay sa pamamagitan ng mababang boltahe DC (mula sa Raspberry Pi), at ang kabilang panig ay ginagamit upang makontrol ang mataas na boltahe AC (ibig sabihin, bombilya), depende sa estado ng relay .


Sa isang panig, ang relay ay may dalawang LEDs (isang pula at isang berde) at tatlong mga pin ( SA, GND, at VCC ). Ang tatlong mga pin na ito ay ginagamit upang makontrol ang relay mula sa Raspberry Pi.

Ang unang dalawang mga pin sa kabilang panig ay ginagamit upang makontrol ang kasangkapan sa bahay ng AC.

Pagkonekta sa 5V Relay sa Raspberry Pi

Upang ikonekta ang 5V relay sa Raspberry Pi, kakailanganin mo ng tatlong mga babaeng nagkokonekta na mga wire.

I-plug ang isang bahagi ng mga nag-uugnay na mga wire sa SA (dilaw na kawad), GND (itim na kawad), at VCC (pulang kawad) na mga pin sa 5V relay, tulad ng ipinakita sa ibaba.


Ang kabilang panig ng mga wire ay papunta sa mga pin ng header ng GPIO ng Raspberry Pi, tulad ng ipinakita sa imahe sa ibaba.

Ang pulang kawad ay dapat pumunta sa PIN 2 (VCC) ng Raspberry Pi.
Ang itim na kawad ay dapat pumasok sa PIN 6 (GND) ng Raspberry Pi.
Ang dilaw na kawad ay dapat pumasok sa PIN 7 (GPIO 4) ng Raspberry Pi.


Kapag ang 5V relay ay konektado sa Raspberry Pi, dapat itong magmukhang ipinakita sa imahe sa ibaba.

Pinapayagan ang Pag-access ng GPIO sa Gumagamit ng Pag-login

Upang payagan ang pag-access sa mga GPIO pin, ang default na gumagamit ng pag-login ng Raspberry Pi OS pi dapat idagdag sa gpio grupo

Maaari mong idagdag ang pi gumagamit sa gpio pangkat na may sumusunod na utos:

$sudousermod-aGgpio $(sino ako)


Upang magkabisa ang mga pagbabago, i-reboot ang Raspberry Pi gamit ang sumusunod na utos:

$sudoi-reboot

Lumilikha ng isang Direktoryo ng Proyekto

Magandang ideya din na panatilihing maayos ang lahat ng mga file ng proyekto.

Upang panatilihing maayos ang mga file ng proyekto, likhain ang direktoryo ng proyekto ~ / www at ang kinakailangang mga subdirectory na may sumusunod na utos:

$mkdir -pv~/www/{mga template, static}


Kapag nilikha ang direktoryo ng proyekto, mag-navigate sa direktoryo ng proyekto tulad ng sumusunod:

$CD~/www

Paglipat ng 5V Relay mula sa Raspberry Pi

Ngayon na ikinonekta mo ang 5V relay sa Raspberry Pi, ililipat mo ang relay mula sa Raspberry Pi gamit ang wika ng programa ng Python.

TANDAAN: Pagpapalit ay isang term na ginamit sa electronics. Ang ibig sabihin ng paglipat ay pagkontrol (ibig sabihin, pag-on / off) ng isang tiyak na elektronikong aparato.

Upang mag-eksperimento sa paglipat ng relay gamit ang wika ng programa ng Python, lumikha ng bagong pagsubok na script ng Python.py sa direktoryo ng proyekto tulad ng sumusunod:

$nanopagsubok.py


I-type ang mga sumusunod na linya ng mga code sa test.py Python script.

mula sagpiozeroangkatLED
mula sa oras angkatmatulog

habang Totoo:
relay=LED(4)
mag-print('Relay: On')
matulog(5)

relaymalapit na()
mag-print('Relay: Off')
matulog(5)

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang pagsubok.py Python script.


Dito, ang pag-import ng linya 1 LED galing sa gpiozero library, at linya 2 import ang matulog pagpapaandar mula sa oras silid aklatan.


Ang mga linya 6-14 ay nasa loob ng isang walang katapusang loop.


Inisyal ng Linya 6 ang isang LED sa GPIO 4 ng Raspberry Pi, na konektado sa SA pin ng relay.


Ang linya 8 ay nakabukas ang relay gamit ang sa () pamamaraan

Ang linya 9 ay naglilimbag ng isang mensahe sa console gamit ang i-print () pagpapaandar

Naantala ng linya 10 ang pagpapatupad ng susunod na linya ng code sa loob ng limang segundo gamit ang matulog () pagpapaandar


Pinapatay ng linya 12 ang relay gamit ang isara () pamamaraan

Sa parehong paraan, ang linya 9 ay naglilimbag ng isang mensahe sa console gamit ang i-print () pagpapaandar at linya 10 naantala ang pagpapatupad ng susunod na linya ng code para sa 5 segundo gamit ang matulog () pagpapaandar


Susunod, patakbuhin ang pagsubok.py Ang script ng Python tulad ng sumusunod:

$pagsubok sa python3.py


Ang pagsubok.py Ang Python script ay dapat magsimulang lumipat sa 5V relay. Dapat mong marinig ang isang tunog ng pag-click tuwing limang segundo. Kapag inilipat ng relay ang estado (mula sa hanggang sa off o mula sa off to on), gumagawa ito ng ingay sa pag-click. Nangangahulugan ito na ang relay ay gumagana nang maayos.


Kapag ang relay ay nasa off-state (normal na operasyon - AC load ay naka-disconnect), ang neto Ang LED ay dapat na ilaw, tulad ng nakikita mo sa imahe sa ibaba.


Kapag ang relay ay nasa on-state (AC load ay konektado), pareho ang berde LED at ang neto Ang LED ay dapat na ilaw, tulad ng nakikita mo sa imahe sa ibaba.


Kapag nakumpleto na ang pagsubok, pindutin ang + C upang wakasan ang pagsubok.py iskrip.

Pagkonekta sa AC Lightbulb sa 5V Relay

Ang 5V relay ay dapat na gumana nang maayos. Ngayon, ikokonekta mo ang iyong kasangkapan sa bahay ng AC (isang bombilya, sa kasong ito) sa 5V relay.

Una, gupitin ang itim na wire na elektrikal na konektado sa bombilya gamit ang isang wirecutter.


Kapag ang itim na kawad na elektrikal na konektado sa bombilya ay pinutol ng isang wirecutter, dapat itong magmukhang ipinakita sa imahe sa ibaba.


Susunod, alisin ang panlabas na layer upang mailantad ang tungkol sa ½ pulgada ng de-koryenteng wire, tulad ng ipinakita sa imahe sa ibaba.


Pagkatapos, tiklupin ang mga nakalantad na mga wire, tulad ng ipinakita sa imahe sa ibaba.


Paluwagin ang mga minarkahang turnilyo ng relay gamit ang isang CV-3 screwdriver.


Ipasok ang mga nakalantad na mga wire na iyong hinubaran at nakatiklop nang mas maaga sa dalawang mga terminal ng tornilyo at higpitan ang mga turnilyo gamit ang isang CV-3 distornilyador.

Pagsubok ng Paglipat ng Relay Pagkatapos Kumonekta sa AC Load

Kapag ang pagkarga ng AC ay konektado sa 5V relay, ikonekta ang lightbulb plug sa wall socket.


Patakbuhin ang pagsubok.py Python script mula sa direktoryo ng proyekto tulad ng sumusunod:

$pagsubok sa python3.py


Ang pagsubok.py Ang script ng Python ay dapat magsimulang lumipat ng 5V relay, na, sa turn, ay lilipat ng mataas na boltahe AC lightbulb sa limang segundo na agwat. Ang bombilya ng AC ay dapat manatili sa loob ng limang segundo, pagkatapos ay manatiling limang segundo, at iba pa.

Ang bombilya ay naka-off sa imahe sa ibaba.


Ang bombilya ay nakabukas sa imahe sa ibaba.


Tulad ng nakikita mo, maaari naming ilipat ang relay at makontrol ang mataas na boltahe AC lightbulb gamit ang wika ng programa ng Python. Kaya, pindutin + C upang wakasan ang pagsubok.py iskrip.

Pumunta muna tayo sa susunod na seksyon.

Pagsulat ng Home Automation Web App

Sa seksyong ito, ipapakita ko sa iyo kung paano magsulat ng isang web-based na web app gamit ang wika ng programa ng Python. Maaari mong gamitin ang web app upang makontrol ang relay at ang (mga) kagamitan sa bahay ng AC o (mga) aparato na de-kuryente na konektado sa relay mula sa isang web browser.

TANDAAN: Ang lahat ng mga code na ipinakita sa seksyon na ito ay magagamit sa aking GitHub na imbakan shovon8 / raspberry-pi-home-automation . Kung nais mo, maaari mong i-clone ang aking GitHub repository at laktawan ang lahat ng mga code.

Lumikha ng server.py Python script sa direktoryo ng proyekto tulad ng sumusunod:

$nanoserver.py


I-type ang mga sumusunod na linya ng mga code sa server.py Python script.

mula saprasongangkatPrasko,jsonify,url_para,render_template
mula sagpiozeroangkatLED
mula sauuidangkatuuid4
mga silid= {}
mga silid['Room 1'] = [{
'id': uuid4(),
'pangalan':'Light 1',
'icon':'fa fa-lightbulb',
'katayuan':Mali,
'relayPin':4,
'relayInstance':Mali
}, {
'id': uuid4(),
'pangalan':'Fan 1',
'icon':'fa fa-fan',
'katayuan':Mali,
'relayPin':6,
'relayInstance':Mali
}]
mga silid['Banyo 1'] = [{
'id': uuid4(),
'pangalan':'Light 1',
'icon':'fa fa-lightbulb',
'katayuan':Mali,
'relayPin':5,
'relayInstance':Mali
}]
app=Prasko(__name__)
appconfig['SEND_emium_MAX_AGE_DEFAULT'] = 0
@appruta('/')
defbahay():
bumalik karender_template('./index.html',mga silid=mga silid)
deftoggle_appliance_status(id):
para sasilidsamga silid:
para saappliancesamga silid[silid]:
kung p(appliance['id']) == id:
kungappliance['relayInstance']:
appliance['relayInstance'].malapit na()
appliance['relayInstance'] = Mali
iba pa:
appliance['relayInstance'] =LED(appliance['relayPin'])
appliance['relayInstance'].sa()
appliance['katayuan'] = hindiappliance['katayuan']
bumalik ka Totoo
bumalik ka Mali
@appruta('/ appliance / toggle /')
defappliance_toggle(id):
bumalik kajsonify({'katayuan': toggle_appliance_status(id)})

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang server.py Python script.


Dito, ang mga linya 1-3 ay nag-i-import ng lahat ng kinakailangang mga sangkap mula sa kani-kanilang mga aklatan.


Lumilikha ang Linya 5 ng walang laman mga silid diksyonaryo Sa diksyunaryo na ito, maiimbak namin ang lahat ng mga detalye ng appliance ng AC na nais naming kontrolin mula sa web app.


Ang mga silid ang mga detalye ay nakaimbak sa mga linya 7-29.


Talakayin natin ang istraktura ng data ng isa sa mga silid.

Dito, ang pangalan ng silid ay magiging Silid 1. Kaya, Silid 1 ay ang susi sa mga silid diksyonaryo


Ang Silid 1 key humahawak ng isang array bilang ang halaga. Ang bilang ng mga elemento ng array ay katumbas ng bilang ng mga AC appliances na mayroon ka sa silid na iyon na nais mo ring kontrolin mula sa web app. Sa kasong ito, mayroon kaming dalawang mga gamit sa bahay na AC na nais naming kontrolin: Liwanag 1 at Fan 1 .


Ang bawat kahulugan ng appliances sa bahay ay mayroong isang id . Ang id ay isang random na nabuong UUID. Ginagamit ito upang makilala kung aling silid ang nais naming kontrolin gamit ang API.

Ang isang appliance sa bahay ay mayroon ding lahat ng mga sumusunod:

  • pangalan (Ilaw 1 sa kasong ito)
  • icon (Font Kahanga-hangang klase ng icon, dahil gagamitin namin ang Font Kahanga-hanga para sa mga icon)
  • katayuan (Totoo kung sa at Mali kung off )
  • relayPin (ang numero ng GPIO pin na ginamit upang makontrol ang relay na konektado sa AC appliance sa bahay)
  • relayInstance (ang pinasimulan LED bagay ng gpiozero aklatan na responsable para sa pagkontrol sa kani-kanilang GPIO pin - relayPin )


Pinasimulan ng linya 31 ang isang flask Python web server.

Ang linya 32 ay nag-configure ng flask web server.


Mga linya 34-36 ipadala ang index.html file mula sa mga template / direktoryo kapag binisita mo ang home automation web app.

Gumagamit ang Flask Jinja2 templating wika upang mai-render ang index.html file Kaya, nakapasa ako sa mga silid diksyonaryo sa index.html file Jinja2 ilalagay ang homepage gamit ang mga silid data


Ang pagpapaandar toggle_appliance_status () sa mga linya 39-52 ay ginagamit upang i-on ang gamit sa bahay kung ito ay patayin at patayin ang gamit sa bahay kung ito ay gumagamit ng appliance's id .

Nagbabalik ito Totoo kung matagumpay ang pagpapatakbo ng toggle. Kung mayroong isang error, ito ay babalik Mali .


Ginagamit ang mga linya na 55-57 upang i-toggle ang isang gamit sa bahay gamit ang / appliance / toggle / Endpoint ng API ng webserver. Dito, id ay ang ID ng gamit sa bahay.


Lumikha ng index.html file sa mga template / direktoryo ng iyong proyekto tulad ng sumusunod:

$nanomga template/index.html

I-type ang mga sumusunod na linya ng mga code sa index.html iskrip.


< html lang='sa'>
< ulo >
< meta charset='UTF-8'>
< meta pangalan='viewport' nilalaman='lapad = lapad ng aparato, paunang iskala = 1.0'>
< link rel='styleheet' href='{{url_for (' static ', filename =' fontawesome / css / all.min.css ')}}'>
< link rel='styleheet' href='{{url_for (' static ', filename =' style.css ')}}'>
< pamagat >Home Automation kasama ang Raspberry Pi</ pamagat >
</ ulo >
< katawan >
< div id='nilalaman'>
< h1 >Raspberry Pi Home Automation</ h1 >

{% para sa silid sa mga silid%}
< div klase='silid'>
< h2 >{{room}}</ h2 >
< div klase='appliances'>
{% para sa appliance sa mga silid [room]%}
< div klase='appliance' id='{{appliance [' id ']}}'> ='aktibo'>
< ako klase='{{appliance [' icon ']}}'></ ako >
< span >{{appliance ['pangalan']}}</ span >
</ div >
{% endfor%}
</ div >
</ div >
{% endfor%}

</ div >

< iskrip src='{{url_for (' static ', filename =' app.js ')}}' uri='text / javascript'></ iskrip >
</ katawan >
</ html >

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang index.html file


Gumawa ng style.css file sa static / direktoryo ng iyong proyekto tulad ng sumusunod:

$nanostatic/style.css


I-type ang mga sumusunod na linya ng mga code sa style.css file

@angkat url('https://fonts.googleapis.com/css2?family=BenchNine: [protektado ng email]; 400; 700 & display = swap');

* {
margin: 0;
padding: 0;
font-pamilya: 'BenchNine', sans-serif;
}

#nilalaman >h1{
background:linear-gradient(satama, rgb(112, 24, 163), rgb(86, 127, 240));
kulay: #fff;
text-align: gitna;
padding: .5em 0;
}

div.bahay {
margin: .5em;
hangganan: 2px matibay rgb(112, 24, 163);
border-radius: 5px;
}

div.bahayh2{
/ * background: rgb (9, 76, 121); * /
background:linear-gradient(satama, rgb(112, 24, 163), rgb(86, 127, 240));
padding: 0 0 0 .5em;
kulay: #fff;
}

div.mga kagamitan {
margin: .5em .5em 0 0;
ipakita:baluktot;
baluktot-balot:balot;
}

div.pliance {
hangganan: 2px matibay rgb(112, 24, 163);
border-radius: 5px;
lapad: 110px;
taas: 120px;
text-align: gitna;
margin: 0 0 .5em .5em;
ipakita:baluktot;
baluktot-direksyon:haligi;
}

div.plianceako.fa {
laki ng font: 4em;
palakihin: 1;
padding-top: 0.3em;
kulay: rgb(204, limampu, limampu);
}

div.pliance[aktibo sa data='aktibo']ako.fa {
kulay: rgb(32, 177, 51);
}

div.pliancespan{
ipakita: harangan;
font-bigat: matapang;
background: rgb(112, 24, 163);
kulay: #fff;
}

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang style.css file


Lumikha ng isang app.js file sa static / direktoryo ng iyong proyekto tulad ng sumusunod:

$nanostatic/app.js


I-type ang mga sumusunod na linya ng mga code sa app.js file

bintanaaddEventListener('load',pangunahing);

pagpapaandarpangunahing() {
pagpapaandartoggleApplianceState(At) {
kung saanid=At.landas[1].id;

kung saanhttp= bagoXMLHttpRequest();

http.onreadystatechange = pagpapaandar() {
kung(ito.handa na Estado === 4 && ito.katayuan === 200) {
kung(Si JSON.parse(ito.tugonTeksto).katayuan === totoo) {
kung(At.landas[1].mayAttribute('aktibo ng data')) {
At.landas[1].alisinAttribute('aktibo ng data')
} iba pa {
At.landas[1].setAttribut('aktibo ng data', 'aktibo')
}
}
}
}

http.buksan('GET','/appliance/toggle/${id}', totoo);
http.magpadala();
}


kung saankagamitan sa bahay=dokumentogetE ElementByClassName('appliance');
para sa(ako=0;ako<kagamitan sa bahayhaba;ako++) {
kagamitan sa bahay[ako].addEventListener('click',toggleApplianceState);
}
}

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang app.js file


Dito, tumatakbo ang linya 1 sa pangunahing () gumana kapag natapos ang paglo-load ng web page.

Nasa index.html file, ang bawat kagamitan sa bahay ay nakapaloob sa isang appliance klase Ginagamit ang mga linya na 26-29 upang mapili ang bawat kagamitan sa bahay mula sa web page at ilakip ang mag-click kaganapan sa appliance. Kapag may nag-click sa isang appliance sa bahay mula sa web page, ang toggleApplianceState () tatakbo ang pagpapaandar.


Sa mga linya 4-23, ang toggleApplianceState () ang pagpapaandar ay ginagamit upang humiling ng / appliance / toggle / endpoint ng webserver upang baguhin ang estado ng na-click na appliance sa bahay. Ang kahilingan ay ginawa sa background sa pamamagitan ng AJAX. Kapag natanggap ang tugon, na-update ang web page nang naaayon.


Mag-navigate sa static / direktoryo sa iyong direktoryo ng proyekto tulad ng sumusunod:

$CDstatic/


Mag-download ng Font Kahanga-hanga sa sumusunod na utos:

$wgethttps://use.bestawesome.com/naglalabas/v5.15.1/fontawesome-free-5.15.1-web.zip


Kapag na-download na ang Font Awesome, dapat mong makita ang bagong zip file fontawesome-free-5.15.1-web.zip nasa static / direktoryo

$ls -lh


I-zip ang fontawesome-free-5.15.1-web.zip file kasama ang sumusunod na utos:

$i-unzipfontawesome-free-5.15.1-web.zip


Ang fontawesome-free-5.15.1-web.zip dapat na ma-unzip ang file ngayon.


Ang bagong direktoryo fontawesome-free-5.15.1-web / dapat nilikha sa static / direktoryo, tulad ng nakikita mo sa screenshot sa ibaba.

$ls -lh

Palitan ang pangalan ng direktoryo fontawesome-free-5.15.1-web / sa fontawesome / kasama ang sumusunod na utos:

$mv -vfontawesome-free-5.15.1-web fontawesome


Ngayon, hindi mo na kailangan ang fontawesome-free-5.15.1-web.zip file Kaya, alisin ang fontawesome-free-5.15.1-web.zip file kasama ang sumusunod na utos:

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


Ang static / ang istraktura ng direktoryo ay dapat magmukhang ipinakita sa screenshot sa ibaba.

$ls -lh


Mag-navigate pabalik sa direktoryo ng proyekto ~ / www tulad ng sumusunod:

$CD..

Pagsubok sa Home Automation Web App

Upang subukan ang web app ng automation ng bahay, patakbuhin ang sumusunod na utos sa iyong direktoryo ng proyekto:

$FLASK_APP= server.py flask run


Ang web app ay dapat na magagamit sa port 5000 ng iyong Raspberry Pi.


Mula sa web browser ng Chromium, bisitahin http: // localhost: 5000 . Dapat mag-load ang web app ng automation ng bahay.

Mag-click sa icon ng lightbulb, ipinahiwatig sa imahe sa ibaba.


Dapat na buksan ang bombilya ng AC. Ang kulay ng icon ay dapat ding baguhin sa berde, na nagpapahiwatig na ang ilaw ng bombilya ay nakabukas.


Kaya, gumagana ang home automation web app. Pindutin + C upang wakasan ang webserver.

Lumilikha ng Serbisyo ng Systemd para sa Home Automation Web App

Sa seksyong ito, ipapakita ko sa iyo kung paano lumikha ng isang systemd na file ng serbisyo para sa home automation web app upang awtomatiko itong magsimula sa boot.

Una, lumikha ng raspi-home-automation.service file sa iyong direktoryo ng proyekto tulad ng sumusunod:

$nanoraspi-home-automation.service

I-type ang mga sumusunod na linya sa raspi-home-automation.service file.

[Yunit]
Paglalarawan= Serbisyo sa Pag-automate ng Web sa Raspberry Pi
Pagkatapos= network.target
[Serbisyo]
WorkingDirectory=/bahay/pi/www
Kapaligiran=FLASK_APP= server.py
Kapaligiran=FLASK_ENV= paggawa
ExecStart=/usr/am/patakbo ng prasko--host= 0.0.0.0
StandardOutput= manain
Karaniwang Error= manain
I-restart= lagi
Gumagamit= pi
[I-install]
WantedBy= multi-user.target

Kapag tapos ka na, pindutin ang + X sinundan ng AT at upang mai-save ang raspi-home-automation.service file


Kopyahin ang raspi-home-automation.service file sa / etc / systemd / system / direktoryo na may sumusunod na utos:

$sudo cp -vraspi-home-automation.service/atbp/sistema/sistema/


I-reload ang mga systemd daemons para magkabisa ang mga pagbabago tulad ng sumusunod:

$sudosystemctl daemon-reload


Idagdag ang raspi-home-automation serbisyo sa startup ng system ng Raspberry Pi OS na may sumusunod na utos:

$sudosystemctlpaganahinraspi-home-automation.service


I-reboot ang Raspberry Pi gamit ang sumusunod na utos:

$sudoi-reboot


Kapag Raspberry Pi boots, ang raspi-home-automation ang serbisyo ay dapat na aktibo / tumatakbo, tulad ng nakikita mo sa screenshot sa ibaba.

$sudokatayuan ng systemctl raspi-home-automation.service

Pag-access sa Home Automation Web App mula sa Iba Pang Mga Device

Upang ma-access ang home automation web app mula sa iba pang mga aparato sa iyong home network, kakailanganin mong malaman ang IP address ng iyong Raspberry Pi device.

Maaari mong mahanap ang IP address ng iyong aparato na Raspberry Pi 4 mula sa interface ng pamamahala ng web ng iyong router sa bahay. Sa aking kaso, ang IP address ay 192.168.0.103. Magiging iba ito para sa iyo. Kaya, tiyaking palitan ang aking IP ng sa iyo mula ngayon.


Kung mayroon kang access sa Raspberry Pi console, maaari mong patakbuhin ang sumusunod na utos upang hanapin din ang IP address.

$hostname -Ako


Kapag nalaman mo ang IP address ng iyong aparato na Raspberry Pi, maaari mo itong ma-access mula sa anumang aparato sa iyong home network.

Tulad ng nakikita mo sa screenshot sa ibaba, na-access ko ang home automation web app mula sa aking Android smartphone.


Siguraduhing i-plug ang lightbulb plug sa outlet ng kuryente sa dingding.


Ang bombilya ay dapat na patayin bilang default.


Kung na-tap mo ang icon ng lightbulb mula sa home automation web app, ang kulay ng icon ng lightbulb ay dapat na maging berde, na nagpapahiwatig na ang ilaw ng bombilya ay nakabukas.


Tulad ng nakikita mo sa imahe sa ibaba, ang bombilya ay nakabukas.

Konklusyon

Ipinakita sa iyo ng artikulong ito kung paano gumamit ng 5V relay upang makontrol ang isang mataas na boltahe AC aparato ng kuryente mula sa Raspberry Pi gamit ang wika ng programa ng Python. Ipinakita rin sa iyo ng artikulo kung paano magsulat ng isang batay sa API na Python flask web app upang makontrol ang relay mula sa web browser. Ang artikulong ito ay dapat makatulong sa iyo na makapagsimula sa pag-automate ng bahay gamit ang Raspberry Pi.