Thiết lập tự động hóa gia đình Raspberry Pi

Set Up Raspberry Pi Home Automation



Một trong những điều quan trọng nhất đối với tự động hóa gia đình là điều khiển AC cao áp bằng DC điện áp thấp. Để điều khiển điện áp cao AC từ Raspberry Pi, bạn sẽ cần một công tắc rơ le 5V. Bạn có thể điều khiển công tắc chuyển tiếp bằng các chân GPIO của Raspberry Pi. Sau đó, công tắc rơ le có thể điều khiển các thiết bị gia dụng AC thông qua Raspberry Pi.

Bài viết này sẽ hướng dẫn bạn cách sử dụng Raspberry Pi và công tắc rơ le 5V để bật và tắt bóng đèn từ thiết bị di động của bạn. Bài viết bao gồm một ứng dụng web mà bạn có thể truy cập từ bất kỳ thiết bị nào trên mạng của mình và điều khiển không dây bất kỳ thiết bị gia dụng AC nào trong nhà của bạn. Vì vậy, chúng ta hãy bắt đầu với thử nghiệm tự động hóa nhà Raspberry Pi đơn giản của mình.







Những thứ bạn sẽ cần

Nếu bạn muốn sử dụng Raspberry Pi không đầu (thông qua SSH hoặc VNC), bạn sẽ cần những thứ sau:



1) Raspberry Pi 3 hoặc Raspberry Pi 4.
2) Công tắc chuyển tiếp 5V.
3) Dây dẫn điện.
4) 3 dây nối cái - cái.
5) Bóng đèn xoay chiều.
6) Giá đỡ bóng đèn AC.
7) Phích cắm AC.
8) Dụng cụ cắt dây và vũ công thoát y.
9) Tuốc nơ vít CR-V 3.
10) Bộ chuyển đổi nguồn Micro-USB (Raspberry Pi 3) hoặc USB Type-C (Raspberry Pi 4).
11) Thẻ nhớ microSD 16 GB hoặc 32 GB có hệ điều hành Raspberry Pi flash.
12) Kết nối mạng trên Raspberry Pi.
13) Máy tính xách tay hoặc máy tính để bàn để truy cập máy tính để bàn từ xa VNC hoặc truy cập SSH vào Raspberry Pi.



Nếu bạn không muốn truy cập Raspberry Pi từ xa thông qua SSH hoặc VNC, bạn cũng sẽ cần những thứ sau:





14) Một màn hình.
15) Cáp HDMI hoặc micro-HDMI.
16) Một bàn phím.
17) Một con chuột.

Nếu bạn cần hỗ trợ để flash hình ảnh Hệ điều hành Raspberry Pi vào thẻ nhớ microSD, hãy xem bài viết Cách cài đặt và sử dụng Raspberry Pi Imager.



Nếu bạn là người mới bắt đầu sử dụng Raspberry Pi và bạn cần hỗ trợ cài đặt hệ điều hành Raspberry Pi trên Raspberry Pi, hãy xem bài viết Cách cài đặt hệ điều hành Raspberry Pi trên Raspberry Pi 4.

Ngoài ra, nếu bạn cần hỗ trợ với thiết lập không cần cài đặt Raspberry Pi, hãy xem bài viết Cách cài đặt và cấu hình hệ điều hành Raspberry Pi trên Raspberry Pi 4 mà không cần màn hình ngoài.

Hình ảnh của tất cả các công cụ cần thiết được đưa ra dưới đây.

Hỗ trợ Raspberry Pi

Tiếp theo, kết nối cáp nguồn với Raspberry Pi và bật nguồn Raspberry Pi.

Sau khi bật nguồn Raspberry Pi, bạn có thể kết nối với Raspberry Pi qua VNC hoặc SSH. Hoặc, bạn có thể kết nối bàn phím, chuột và màn hình với Raspberry Pi để truy cập trực tiếp.

Sơ đồ chân tiếp điện 5V

Một rơ le về cơ bản là một công tắc. Tuy nhiên, không giống như một công tắc truyền thống, một rơ le có thể được điều khiển bởi một lượng nhỏ điện áp DC.

Rơ le 5V rất dễ sử dụng. Nó có hai mặt: một mặt được sử dụng để điều khiển rơ le qua DC điện áp thấp (từ Raspberry Pi), và mặt còn lại được sử dụng để điều khiển điện áp cao AC (tức là bóng đèn), tùy thuộc vào trạng thái của rơ le .


Ở một bên, rơ le có hai đèn LED (một màu đỏ và một màu xanh lá cây) và ba chân ( IN, GND,VCC ). Ba chân này dùng để điều khiển rơ le từ Raspberry Pi.

Hai chân đầu tiên ở phía bên kia được sử dụng để điều khiển thiết bị gia dụng AC.

Kết nối Rơ le 5V với Raspberry Pi

Để kết nối rơ le 5V với Raspberry Pi, bạn sẽ cần ba dây kết nối từ cái đến cái.

Cắm một bên của dây kết nối vào TRONG (dây màu vàng), GND (dây đen), và VCC (dây đỏ) chân vào rơ le 5V, như hình dưới đây.


Mặt còn lại của dây đi vào các chân tiêu đề GPIO của Raspberry Pi, như thể hiện trong hình dưới đây.

Dây màu đỏ sẽ đi vào PIN 2 (VCC) của Raspberry Pi.
Dây đen sẽ đi vào PIN 6 (GND) của Raspberry Pi.
Dây màu vàng sẽ đi vào PIN 7 (GPIO 4) của Raspberry Pi.


Khi rơle 5V được kết nối với Raspberry Pi, nó sẽ trông như thể hiện trong hình dưới đây.

Cho phép GPIO truy cập vào người dùng đăng nhập

Để cho phép truy cập vào các chân GPIO, người dùng đăng nhập mặc định của Hệ điều hành Raspberry Pi số Pi nên được thêm vào gpio tập đoàn.

Bạn có thể thêm số Pi người dùng cho gpio nhóm với lệnh sau:

$sudousermod-aGgpio $(tôi là ai)


Để các thay đổi có hiệu lực, hãy khởi động lại Raspberry Pi bằng lệnh sau:

$sudokhởi động lại

Tạo một thư mục dự án

Nó cũng là một ý tưởng hay để giữ cho tất cả các tệp dự án có tổ chức.

Để giữ các tệp dự án có tổ chức, hãy tạo thư mục dự án ~ / www và các thư mục con bắt buộc bằng lệnh sau:

$mkdir -pv~/www/{mẫu, tĩnh}


Khi thư mục dự án được tạo, hãy điều hướng đến thư mục dự án như sau:

$đĩa CD~/www

Chuyển tiếp 5V từ Raspberry Pi

Bây giờ bạn đã kết nối rơle 5V với Raspberry Pi, bạn sẽ chuyển rơle từ Raspberry Pi bằng ngôn ngữ lập trình Python.

LƯU Ý: Chuyển đổi là một thuật ngữ được sử dụng trong điện tử. Chuyển đổi có nghĩa là điều khiển (tức là bật / tắt nguồn) một thiết bị điện tử nhất định.

Để thử nghiệm chuyển đổi rơle bằng ngôn ngữ lập trình Python, hãy tạo tập lệnh Python test.py mới trong thư mục dự án như sau:

$nanotest.py


Nhập các dòng mã sau vào tập lệnh Python test.py.

từgpiozeronhập khẩuDẪN ĐẾN
từ thời gian nhập khẩungủ

trong khi Thật:
tiếp sức=DẪN ĐẾN(4)
in('Chuyển tiếp: Bật')
ngủ(5)

tiếp sức.gần()
in('Chuyển tiếp: Tắt')
ngủ(5)

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi để cứu test.py Tập lệnh Python.


Đây, dòng 1 nhập DẪN ĐẾN từ gpiozero thư viện và dòng 2 nhập ngủ chức năng từ thời gian thư viện.


Các dòng 6-14 nằm trong một vòng lặp vô hạn.


Dòng 6 khởi tạo đèn LED trong GPIO 4 của Raspberry Pi, được kết nối với TRONG chân của rơ le.


Dòng 8 bật rơle bằng cách sử dụng trên() phương pháp.

Dòng 9 in thông báo trong bảng điều khiển bằng cách sử dụng in() hàm số.

Dòng 10 trì hoãn việc thực thi dòng mã tiếp theo trong năm giây bằng cách sử dụng ngủ() hàm số.


Dòng 12 tắt rơ le bằng cách sử dụng gần() phương pháp.

Theo cách tương tự, dòng 9 in thông báo trên bảng điều khiển bằng cách sử dụng in() hàm và dòng 10 trì hoãn việc thực thi dòng mã tiếp theo trong 5 giây bằng cách sử dụng ngủ() hàm số.


Tiếp theo, chạy test.py Tập lệnh Python như sau:

$python3 test.py


Các test.py Tập lệnh Python sẽ bắt đầu chuyển tiếp nguồn 5V. Bạn sẽ nghe thấy âm thanh nhấp chuột sau mỗi năm giây. Khi rơ le chuyển trạng thái (từ bật sang tắt hoặc từ tắt sang bật), nó sẽ phát ra tiếng tách. Điều này có nghĩa là rơ le hoạt động bình thường.


Khi rơle ở trạng thái tắt (hoạt động bình thường - ngắt tải AC), chỉ mạng lưới Đèn LED sẽ sáng lên, như bạn có thể thấy trong hình dưới đây.


Khi rơle ở trạng thái bật (tải AC được kết nối), cả màu xanh lá LED và NS mạng lưới Đèn LED sẽ sáng lên, như bạn có thể thấy trong hình dưới đây.


Khi quá trình kiểm tra hoàn tất, hãy nhấn + C để chấm dứt test.py kịch bản.

Kết nối Bóng đèn AC với Rơ le 5V

Rơ le 5V bây giờ sẽ hoạt động bình thường. Bây giờ, bạn sẽ kết nối thiết bị gia dụng AC của mình (trong trường hợp này là bóng đèn) với rơ le 5V.

Đầu tiên, cắt dây điện màu đen kết nối với bóng đèn bằng máy cắt dây.


Sau khi dây điện màu đen kết nối với bóng đèn đã được cắt bằng máy cắt dây, nó sẽ trông như thể hiện trong hình dưới đây.


Tiếp theo, loại bỏ lớp bên ngoài để lộ ra khoảng ½ inch của dây điện, như thể hiện trong hình dưới đây.


Sau đó, gấp các dây tiếp xúc, như trong hình dưới đây.


Nới lỏng các vít được đánh dấu của rơ le bằng tuốc nơ vít CV-3.


Chèn các dây hở mà bạn đã tước và gấp trước đó vào hai đầu nối của vít và siết chặt các vít bằng tuốc nơ vít CV-3.

Kiểm tra chuyển mạch rơ le sau khi kết nối tải AC

Khi tải AC được kết nối với rơ le 5V, hãy kết nối phích cắm của bóng đèn với ổ cắm trên tường.


Chạy test.py Tập lệnh Python từ thư mục dự án như sau:

$python3 test.py


Các test.py Tập lệnh Python sẽ bắt đầu chuyển đổi rơ le 5V, đến lượt nó, sẽ chuyển đổi bóng đèn AC điện áp cao trong khoảng thời gian năm giây. Bóng đèn AC nên bật trong năm giây, sau đó tắt trong năm giây, v.v.

Bóng đèn tắt trong hình ảnh bên dưới.


Bóng đèn được bật trong hình ảnh bên dưới.


Như bạn có thể thấy, chúng ta có thể chuyển đổi rơ le và điều khiển bóng đèn xoay chiều điện áp cao bằng ngôn ngữ lập trình Python. Vì vậy, hãy nhấn + C để chấm dứt test.py kịch bản.

Bây giờ chúng ta hãy chuyển sang phần tiếp theo.

Viết ứng dụng web tự động hóa gia đình

Trong phần này, tôi sẽ chỉ cho bạn cách viết một ứng dụng web dựa trên API bằng ngôn ngữ lập trình Python. Bạn có thể sử dụng ứng dụng web để điều khiển rơ le và (các) thiết bị gia dụng AC hoặc (các) thiết bị điện được kết nối với rơ le từ trình duyệt web.

GHI CHÚ: Tất cả các mã hiển thị trong phần này đều có sẵn trong kho lưu trữ GitHub của tôi shovon8 / raspberry-pi-home-Automation . Nếu muốn, bạn có thể sao chép kho lưu trữ GitHub của tôi và bỏ qua tất cả các mã.

Tạo tập lệnh Python server.py trong thư mục dự án như sau:

$nanoserver.py


Nhập các dòng mã sau vào server.py Tập lệnh Python.

từbình giữ nhiệtnhập khẩuBình giữ nhiệt,jsonify,url_for,render_template
từgpiozeronhập khẩuDẪN ĐẾN
từuuidnhập khẩuuuid4
phòng= {}
phòng['Phòng 1'] = [{
'Tôi': uuid4(),
'Tên':'Light 1',
'biểu tượng':'fa fa-lightbulb',
'trạng thái':Sai,
'relayPin':4,
'relayInstance':Sai
}, {
'Tôi': uuid4(),
'Tên':'Người hâm mộ 1',
'biểu tượng':'fa fa-fan',
'trạng thái':Sai,
'relayPin':6,
'relayInstance':Sai
}]
phòng['Phòng tắm 1'] = [{
'Tôi': uuid4(),
'Tên':'Light 1',
'biểu tượng':'fa fa-lightbulb',
'trạng thái':Sai,
'relayPin':5,
'relayInstance':Sai
}]
ứng dụng=Bình giữ nhiệt(__Tên__)
ứng dụng.cấu hình['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@ứng dụng.tuyến đường('/')
phản đốiTrang Chủ():
trở lạirender_template('./index.html',phòng=phòng)
phản đốitoggle_appliance_status(Tôi):
phòngtrongphòng:
thiết bịtrongphòng[phòng]:
nếu như P(thiết bị['Tôi']) == Tôi:
nếu nhưthiết bị['relayInstance']:
thiết bị['relayInstance'].gần()
thiết bị['relayInstance'] = Sai
khác:
thiết bị['relayInstance'] =DẪN ĐẾN(thiết bị['relayPin'])
thiết bị['relayInstance'].trên()
thiết bị['trạng thái'] = không phảithiết bị['trạng thái']
trở lại Thật
trở lại Sai
@ứng dụng.tuyến đường('/ Dụng cụ / chuyển đổi /')
phản đốiDụng cụ_toggle(Tôi):
trở lạijsonify({'trạng thái': toggle_appliance_status(Tôi)})

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi để cứu server.py Tập lệnh Python.


Tại đây, dòng 1-3 nhập tất cả các thành phần cần thiết từ các thư viện tương ứng của chúng.


Dòng 5 tạo ra một khoảng trống phòng từ điển. Trong từ điển này, chúng tôi sẽ lưu trữ tất cả các chi tiết thiết bị AC mà chúng tôi muốn kiểm soát từ ứng dụng web.


Các phòng chi tiết được lưu trong dòng 7-29.


Hãy để chúng tôi thảo luận về cấu trúc dữ liệu của một trong các phòng.

Ở đây, tên phòng sẽ là Phòng 1. Vì thế, Phòng 1 là chìa khóa cho phòng từ điển.


Các Phòng 1 khóa giữ một mảng dưới dạng giá trị. Số phần tử của mảng bằng với số lượng thiết bị gia dụng AC bạn có trong phòng mà bạn cũng muốn điều khiển từ ứng dụng web. Trong trường hợp này, chúng tôi có hai thiết bị gia dụng AC mà chúng tôi muốn kiểm soát: Ánh sáng 1Quạt 1 .


Mỗi định nghĩa về thiết bị gia dụng có một Tôi . Các Tôi là một UUID được tạo ngẫu nhiên. Điều này được sử dụng để xác định phòng chúng tôi muốn kiểm soát bằng cách sử dụng API.

Một thiết bị gia dụng cũng có tất cả những điều sau đây:

  • tên (Đèn 1 trong trường hợp này)
  • biểu tượng (Lớp biểu tượng Font Awesome, vì chúng ta sẽ sử dụng Font Awesome cho các biểu tượng)
  • tình trạng (Đúng nếu như trênSai nếu như tắt )
  • relayPin (số chân GPIO được sử dụng để điều khiển rơ le được kết nối với thiết bị gia dụng AC)
  • relayInstance (khởi tạo DẪN ĐẾN Đối tượng gpiozero thư viện chịu trách nhiệm kiểm soát chân GPIO tương ứng - relayPin )


Dòng 31 khởi tạo máy chủ web Python bình.

Dòng 32 định cấu hình máy chủ web bình.


Dòng 34-36 gửi index.html tập tin từ mẫu / khi bạn truy cập ứng dụng web tự động hóa gia đình.

Sử dụng bình Jinja2 ngôn ngữ tạo mẫu để kết xuất index.html tập tin. Vì vậy, tôi đã vượt qua phòng từ điển vào index.html tập tin. Jinja2 sẽ hiển thị trang chủ bằng cách sử dụng phòng dữ liệu.


Chức năng toggle_appliance_status () trong dòng 39-52 được sử dụng để bật thiết bị gia đình nếu nó đang tắt và tắt thiết bị gia đình nếu nó đang sử dụng Tôi .

Nó trở lại Thật nếu hoạt động chuyển đổi thành công. Nếu có lỗi sẽ trả về Sai .


Các dòng 55-57 được sử dụng để chuyển đổi một thiết bị gia đình bằng cách sử dụng / Dụng cụ / chuyển đổi / Điểm cuối API của máy chủ web. Ở đây, Tôi là ID của thiết bị gia dụng.


Tạo index.html tập tin trong mẫu / thư mục của dự án của bạn như sau:

$nanomẫu/index.html

Nhập các dòng mã sau vào index.html kịch bản.


< html lang='trên'>
< cái đầu >
< meta bảng chữ cái='UTF-8'>
< meta Tên='khung nhìn' Nội dung='width = device-width, initial-scale = 1.0'>
< liên kết quan hệ='bảng định kiểu' href='{{url_for (' static ', filename =' fontawesome / css / all.min.css ')}}'>
< liên kết quan hệ='bảng định kiểu' href='{{url_for (' static ', filename =' style.css ')}}'>
< chức vụ >Tự động hóa gia đình với Raspberry Pi</ chức vụ >
</ cái đầu >
< cơ thể người >
< div Tôi='Nội dung'>
< h1 >Tự động hóa gia đình Raspberry Pi</ h1 >

{% cho phòng trong các phòng%}
< div lớp='phòng'>
< h2 >{{ phòng }}</ h2 >
< div lớp='thiết bị'>
{% cho thiết bị trong phòng [room]%}
< div lớp='thiết bị' Tôi='{{Dụng cụ [' id ']}} '> ='tích cực'>
< tôi lớp='{{Dụng cụ [' icon ']}}'></ tôi >
< nhịp >{{Dụng cụ ['name']}}</ nhịp >
</ div >
{% endfor%}
</ div >
</ div >
{% endfor%}

</ div >

< kịch bản src='{{url_for (' static ', filename =' app.js ')}}' kiểu='text / javascript'></ kịch bản >
</ cơ thể người >
</ html >

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi để cứu index.html tập tin.


Tạo một style.css tập tin trong tĩnh / thư mục của dự án của bạn như sau:

$nanotĩnh/style.css


Nhập các dòng mã sau vào style.css tập tin.

@nhập khẩu url('https://fonts.googleapis.com/css2?family=BenchNine: [email protected]; 400; 700 & display = swap');

* {
lề: 0;
đệm lót: 0;
font-family: 'BenchNine', sans serif;
}

#Nội dung >h1{
lai lịch:gradient tuyến tính(đếnđúng, rgb(112, 24, 163), rgb(86, 127, 240));
màu sắc: #fff;
căn chỉnh văn bản: Trung tâm;
đệm lót: .5em 0;
}

div.phòng {
lề: .5em;
biên giới: 2px chất rắn rgb(112, 24, 163);
bán kính biên giới: 5px;
}

div.phòngh2{
/ * nền: rgb (9, 76, 121); * /
lai lịch:gradient tuyến tính(đếnđúng, rgb(112, 24, 163), rgb(86, 127, 240));
đệm lót: 0 0 0 .5em;
màu sắc: #fff;
}

div.appliances {
lề: .5em .5em 0 0;
trưng bày:uốn cong;
flex-wrap:bọc;
}

div.appliance {
biên giới: 2px chất rắn rgb(112, 24, 163);
bán kính biên giới: 5px;
chiều rộng: 110px;
Chiều cao: 120px;
căn chỉnh văn bản: Trung tâm;
lề: 0 0 .5em .5em;
trưng bày:uốn cong;
hướng uốn:cột;
}

div.appliancetôi.fa {
cỡ chữ: 4em;
uốn cong: 1;
padding-top: 0,3em;
màu sắc: rgb(204, năm mươi, năm mươi);
}

div.appliance[hoạt động dữ liệu='tích cực']tôi.fa {
màu sắc: rgb(32, 177, 51);
}

div.appliancenhịp{
trưng bày: khối;
font-weight: in đậm;
lai lịch: rgb(112, 24, 163);
màu sắc: #fff;
}

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi để cứu style.css tập tin.


Tạo ra một app.js tập tin trong tĩnh / thư mục của dự án của bạn như sau:

$nanotĩnh/app.js


Nhập các dòng mã sau vào app.js tập tin.

cửa sổ.addEventListener('trọng tải',chủ chốt);

hàm sốchủ chốt() {
hàm sốtoggleApplianceState() {
ở đâuTôi=Và.con đường[1].Tôi;

ở đâuhttp= MớiXMLHttpRequest();

http.onreadystatechange = hàm số() {
nếu như(cái này.readyState === 4 && cái này.trạng thái === 200) {
nếu như(JSON.phân tích cú pháp(cái này.responseText).trạng thái === thật) {
nếu như(Và.con đường[1].hasAttribute('dữ liệu hoạt động')) {
Và.con đường[1].removeAttribute('dữ liệu hoạt động')
} khác {
Và.con đường[1].setAttribute('dữ liệu hoạt động', 'tích cực')
}
}
}
}

http.mở ra('HIỂU ĐƯỢC',``/thiết bị/chuyển đổi/${Tôi}``, thật);
http.gửi();
}


ở đâuđồ gia dụng=tài liệu.getElementsByClassName('thiết bị');
(tôi=0;tôi<thiết bị gia dụng.chiều dài;tôi++) {
đồ gia dụng[tôi].addEventListener('nhấp chuột',toggleApplianceState);
}
}

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi và để lưu app.js tập tin.


Ở đây, dòng 1 chạy chủ chốt() hoạt động khi trang web tải xong.

bên trong index.html tệp, mỗi thiết bị gia dụng được bao gồm trong một thiết bị lớp. Dòng 26-29 được sử dụng để chọn từng thiết bị gia dụng từ trang web và đính kèm nhấp chuột sự kiện đối với thiết bị. Khi ai đó nhấp vào một thiết bị gia dụng từ trang web, toggleApplianceState () chức năng sẽ chạy.


Trong dòng 4-23, toggleApplianceState () hàm được sử dụng để yêu cầu / Dụng cụ / chuyển đổi / điểm cuối của máy chủ web để thay đổi trạng thái của thiết bị gia đình được nhấp. Yêu cầu được thực hiện ở chế độ nền thông qua AJAX. Sau khi nhận được phản hồi, trang web sẽ được cập nhật tương ứng.


Điều hướng đến tĩnh / thư mục trong thư mục dự án của bạn như sau:

$đĩa CDtĩnh/


Tải xuống Font Awesome bằng lệnh sau:

$wgethttps://use.fontawesome.com/phát hành/v5.15.1/fontawesome-free-5.15.1-web.zip


Sau khi tải xuống Font Awesome, bạn sẽ tìm thấy tệp zip mới fontawesome-free-5.15.1-web.zip bên trong tĩnh / danh mục.

$ls -lh


Giải nén fontawesome-free-5.15.1-web.zip tệp bằng lệnh sau:

$giải nénfontawesome-free-5.15.1-web.zip


Các fontawesome-free-5.15.1-web.zip tệp bây giờ sẽ được giải nén.


Thư mục mới fontawesome-free-5.15.1-web / sẽ được tạo trong thư mục static /, như bạn có thể thấy trong ảnh chụp màn hình bên dưới.

$ls -lh

Đổi tên thư mục fontawesome-free-5.15.1-web / đến fontawesome / bằng lệnh sau:

$mv -vfontawesome-free-5.15.1-web fontawesome


Bây giờ, bạn không còn cần fontawesome-free-5.15.1-web.zip tập tin. Vì vậy, hãy loại bỏ fontawesome-free-5.15.1-web.zip tệp bằng lệnh sau:

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


Các tĩnh / cấu trúc thư mục sẽ trông như thể hiện trong ảnh chụp màn hình bên dưới.

$ls -lh


Điều hướng trở lại thư mục dự án ~ / www như sau:

$đĩa CD..

Kiểm tra ứng dụng web tự động hóa gia đình

Để kiểm tra ứng dụng web tự động hóa gia đình, hãy chạy lệnh sau trong thư mục dự án của bạn:

$FLASK_APP= server.py chạy flask


Ứng dụng web sẽ có sẵn trên cổng 5000 của Raspberry Pi của bạn.


Từ trình duyệt web Chromium, hãy truy cập http: // localhost: 5000 . Ứng dụng web tự động hóa gia đình sẽ tải.

Nhấp vào biểu tượng bóng đèn, được chỉ ra trong hình ảnh bên dưới.


Bóng đèn AC bây giờ sẽ được bật. Màu biểu tượng cũng sẽ chuyển sang màu xanh lục, cho biết rằng bóng đèn đang bật.


Vì vậy, ứng dụng web tự động hóa gia đình đang hoạt động. nhấn + C để chấm dứt máy chủ web.

Tạo dịch vụ Systemd cho ứng dụng web tự động hóa gia đình

Trong phần này, tôi sẽ chỉ cho bạn cách tạo tệp dịch vụ systemd cho ứng dụng web tự động hóa gia đình để nó tự động khởi động khi khởi động.

Đầu tiên, hãy tạo raspi-home-Automation.service tệp trong thư mục dự án của bạn như sau:

$nanoraspi-home-Automation.service

Nhập các dòng sau vào tệp raspi-home-Automation.service.

[Đơn vị]
Sự miêu tả= Dịch vụ web tự động hóa gia đình Raspberry Pi
Sau= network.target
[Dịch vụ]
Thư mục làm việc=/Trang Chủ/số Pi/www
Môi trường=FLASK_APP= server.py
Môi trường=FLASK_ENV= sản xuất
ExecStart=/usr//chạy bình--tổ chức= 0,0.0,0
StandardOutput= kế thừa
StandardError= kế thừa
Khởi động lại= luôn luôn
Người sử dụng= pi
[Cài đặt]
WantedBy= multi-user.target

Sau khi bạn hoàn thành, hãy nhấn + X theo dõi bởi và để lưu raspi-home-Automation.service tập tin.


Sao chép raspi-home-Automation.service nộp vào / etc / systemd / system / thư mục bằng lệnh sau:

$sudo cp -vraspi-home-Automation.service/Vân vân/hệ thống/hệ thống/


Tải lại các daemon systemd để các thay đổi có hiệu lực như sau:

$sudosystemctl daemon-tải lại


Thêm tự động hóa raspi-home dịch vụ khởi động hệ thống của Raspberry Pi OS bằng lệnh sau:

$sudosystemctlcho phépraspi-home-Automation.service


Khởi động lại Raspberry Pi bằng lệnh sau:

$sudokhởi động lại


Sau khi Raspberry Pi khởi động, tự động hóa raspi-home dịch vụ sẽ hoạt động / đang chạy, như bạn có thể thấy trong ảnh chụp màn hình bên dưới.

$sudotrạng thái systemctl raspi-home-Automation.service

Truy cập ứng dụng web Tự động hóa gia đình từ các thiết bị khác

Để truy cập ứng dụng web tự động hóa gia đình từ các thiết bị khác trong mạng gia đình, bạn sẽ cần biết địa chỉ IP của thiết bị Raspberry Pi của mình.

Bạn có thể tìm thấy địa chỉ IP của thiết bị Raspberry Pi 4 từ giao diện quản lý web của bộ định tuyến tại nhà. Trong trường hợp của tôi, địa chỉ IP là 192.168.0.103. Điều này sẽ khác đối với bạn. Vì vậy, hãy đảm bảo thay thế IP của tôi bằng IP của bạn từ bây giờ.


Nếu bạn có quyền truy cập vào bảng điều khiển Raspberry Pi, bạn cũng có thể chạy lệnh sau để tìm địa chỉ IP.

$tên máy chủ -TÔI


Sau khi biết địa chỉ IP của thiết bị Raspberry Pi, bạn có thể truy cập địa chỉ này từ bất kỳ thiết bị nào trong mạng gia đình của mình.

Như bạn có thể thấy trong ảnh chụp màn hình bên dưới, tôi đã truy cập ứng dụng web tự động hóa gia đình từ điện thoại thông minh Android của mình.


Đảm bảo cắm phích cắm của bóng đèn vào ổ cắm điện trên tường.


Bóng đèn nên được tắt theo mặc định.


Nếu bạn nhấn vào biểu tượng bóng đèn từ ứng dụng web tự động hóa gia đình, màu biểu tượng bóng đèn sẽ chuyển sang màu xanh lục, cho biết rằng bóng đèn đang bật.


Như bạn có thể thấy trong hình dưới đây, bóng đèn đang bật.

Phần kết luận

Bài viết này đã hướng dẫn bạn cách sử dụng rơ le 5V để điều khiển thiết bị điện xoay chiều cao áp từ Raspberry Pi bằng ngôn ngữ lập trình Python. Bài viết cũng hướng dẫn bạn cách viết ứng dụng web bình Python dựa trên API để điều khiển chuyển tiếp từ trình duyệt web. Bài viết này sẽ giúp bạn bắt đầu tự động hóa gia đình bằng Raspberry Pi.