Raspberry Pi 홈 자동화 설정

Set Up Raspberry Pi Home Automation



홈 오토메이션에서 가장 중요한 것 중 하나는 저전압 DC를 사용하여 고전압 AC를 제어하는 ​​것입니다. Raspberry Pi에서 고전압 AC를 제어하려면 5V 릴레이 스위치가 필요합니다. Raspberry Pi의 GPIO 핀을 사용하여 릴레이 스위치를 제어할 수 있습니다. 그런 다음 릴레이 스위치는 Raspberry Pi를 통해 AC 가전 제품을 제어할 수 있습니다.

이 기사에서는 Raspberry Pi와 5V 릴레이 스위치를 사용하여 모바일 장치에서 전구를 켜고 끄는 방법을 보여줍니다. 이 기사에는 네트워크의 모든 장치에서 액세스하고 가정의 모든 AC 가전 제품을 무선으로 제어할 수 있는 웹 앱이 포함되어 있습니다. 이제 간단한 Raspberry Pi 홈 자동화 실험을 시작해 보겠습니다.







필요한 것

SSH 또는 VNC를 통해 Raspberry Pi 헤드리스를 사용하려면 다음이 필요합니다.



1) 라즈베리 파이 3 또는 라즈베리 파이 4.
2) 5V 릴레이 스위치.
3) 전선.
4) 3개의 암-암 연결 와이어.
5) AC 전구.
6) AC 전구 홀더.
7) AC 플러그.
8) 와이어 커터 및 스트리퍼 도구.
9) CR-V 3 드라이버.
10) Micro-USB(Raspberry Pi 3) 또는 USB Type-C(Raspberry Pi 4) 전원 어댑터.
11) Raspberry Pi OS가 설치된 16GB 또는 32GB microSD 카드가 플래시되었습니다.
12) Raspberry Pi의 네트워크 연결.
13) VNC 원격 데스크톱 액세스 또는 Raspberry Pi에 대한 SSH 액세스를 위한 랩톱 또는 데스크톱 컴퓨터.



SSH 또는 VNC를 통해 원격으로 Raspberry Pi에 액세스하지 않으려면 다음도 필요합니다.





14) 모니터.
15) HDMI 또는 마이크로 HDMI 케이블.
16) 키보드.
17) 쥐.

Raspberry Pi OS 이미지를 microSD 카드로 플래싱하는 데 도움이 필요하면 Raspberry Pi Imager 설치 및 사용 방법 문서를 확인하십시오.



Raspberry Pi 초보자이고 Raspberry Pi에 Raspberry Pi OS를 설치하는 데 도움이 필요하면 기사를 확인하십시오. Raspberry Pi 4에 Raspberry Pi OS를 설치하는 방법.

또한, Raspberry Pi의 헤드리스 설정에 도움이 필요하면 외부 모니터 없이 Raspberry Pi 4에서 Raspberry Pi OS를 설치 및 구성하는 방법 문서를 확인하십시오.

필요한 모든 도구의 이미지가 아래에 나와 있습니다.

라즈베리 파이 전원 켜기

그런 다음 전원 케이블을 Raspberry Pi에 연결하고 Raspberry Pi의 전원을 켭니다.

Raspberry Pi의 전원이 켜지면 VNC 또는 SSH를 통해 Raspberry Pi에 연결할 수 있습니다. 또는 키보드, 마우스, 모니터를 Raspberry Pi에 연결하여 직접 액세스할 수 있습니다.

5V 릴레이 핀아웃

릴레이는 기본적으로 스위치입니다. 그러나 기존의 스위치와 달리 릴레이는 소량의 DC 전압으로 제어할 수 있습니다.

5V 릴레이는 사용하기가 매우 쉽습니다. 양면이 있습니다. 한쪽은 저전압 DC(Raspberry Pi)를 통해 릴레이를 제어하는 ​​데 사용되고 다른 쪽은 릴레이 상태에 따라 고전압 AC(즉, 전구)를 제어하는 ​​데 사용됩니다. .


한쪽에는 릴레이 2개(빨간색 1개, 녹색 1개)와 핀 3개( 인, 접지, 그리고 VCC ). 이 3개의 핀은 Raspberry Pi에서 릴레이를 제어하는 ​​데 사용됩니다.

반대쪽에 있는 처음 두 개의 핀은 AC 가전 제품을 제어하는 ​​데 사용됩니다.

라즈베리파이에 5V 릴레이 연결하기

5V 릴레이를 Raspberry Pi에 연결하려면 3개의 암-암 연결 와이어가 필요합니다.

연결 전선의 한쪽을 (노란선), 접지 (검은색 와이어), VCC (빨간색 선) 핀을 아래 그림과 같이 5V 릴레이에 연결합니다.


와이어의 다른 쪽은 아래 이미지와 같이 Raspberry Pi의 GPIO 헤더 핀에 연결됩니다.

빨간선은 안으로 들어가야 합니다. PIN 2(VCC) 라즈베리파이의.
검은 선은 안으로 들어가야 합니다. 핀 6(GND) 라즈베리파이의.
노란색 와이어는 핀 7(GPIO 4) 라즈베리파이의.


5V 릴레이가 Raspberry Pi에 연결되면 아래 이미지와 같이 표시되어야 합니다.

로그인 사용자에게 GPIO 액세스 허용

GPIO 핀에 대한 액세스를 허용하려면 Raspberry Pi OS의 기본 로그인 사용자입니다. 파이 에 추가되어야 합니다. 지피오 그룹.

추가할 수 있습니다 파이 사용자에게 지피오 다음 명령으로 그룹화하십시오.

$수도사용자 모드-aG지피오 $(워미)


변경 사항을 적용하려면 다음 명령을 사용하여 Raspberry Pi를 재부팅하십시오.

$수도재부팅

프로젝트 디렉토리 생성

또한 모든 프로젝트 파일을 정리하는 것이 좋습니다.

프로젝트 파일을 체계적으로 유지하려면 프로젝트 디렉토리를 만드십시오. ~/www 다음 명령을 사용하여 필요한 하위 디렉터리:

$mkdir -pv~/www/{템플릿,정적}


프로젝트 디렉토리가 생성되면 다음과 같이 프로젝트 디렉토리로 이동합니다.

$CD~/www

Raspberry Pi에서 5V 릴레이 전환

이제 5V 릴레이를 Raspberry Pi에 연결했으므로 Python 프로그래밍 언어를 사용하여 Raspberry Pi에서 릴레이를 전환합니다.

참고: 전환 전자공학에서 사용하는 용어입니다. 스위칭은 특정 전자 장치를 제어(즉, 전원 켜기/끄기)하는 것을 의미합니다.

Python 프로그래밍 언어를 사용하여 릴레이 전환을 실험하려면 다음과 같이 프로젝트 디렉터리에 새로운 Python 스크립트 test.py를 만듭니다.

$나노test.py


test.py Python 스크립트에 다음 코드 줄을 입력합니다.

~에서지피오제로수입주도의
~에서 시각 수입

동안 진실:
계전기=주도의(4)
인쇄('릴레이: 켜기')
(5)

계전기.닫다()
인쇄('릴레이: 꺼짐')
(5)

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 test.py 파이썬 스크립트.


여기에서 1행 수입 주도의 ~로부터 지피오제로 라이브러리 및 라인 2는 기능 시각 도서관.


라인 6-14는 무한 루프 내에 있습니다.


라인 6은 LED를 초기화합니다. GPIO 4 연결된 Raspberry Pi의 릴레이의 핀.


라인 8은 다음을 사용하여 릴레이를 켭니다. 에() 방법.

9행은 다음을 사용하여 콘솔에 메시지를 인쇄합니다. 인쇄() 기능.

10행은 다음 코드 행의 실행을 5초 동안 지연시킵니다. 잠() 기능.


라인 12는 다음을 사용하여 릴레이를 끕니다. 닫다() 방법.

같은 방식으로 9행은 다음을 사용하여 콘솔에 메시지를 인쇄합니다. 인쇄() 함수와 라인 10은 다음 코드 라인의 실행을 5초 동안 지연시킵니다. 잠() 기능.


다음으로 실행 test.py 다음과 같은 Python 스크립트:

$python3 test.py


NS test.py Python 스크립트는 5V 릴레이 전환을 시작해야 합니다. 5초마다 딸깍하는 소리가 들릴 것입니다. 릴레이가 상태를 전환할 때(켜짐에서 꺼짐 또는 꺼짐에서 켜짐) 딸깍하는 소리가 납니다. 이것은 릴레이가 제대로 작동하고 있음을 의미합니다.


릴레이가 꺼진 상태(정상 작동 - AC 부하가 차단됨)일 때만 그물 아래 이미지에서 볼 수 있듯이 LED가 켜져야 합니다.


릴레이가 온 상태(AC 부하가 연결됨)일 때, 초록 LED와 NS 그물 아래 이미지에서 볼 수 있듯이 LED가 켜져야 합니다.


테스트가 완료되면 다음을 누릅니다. + C 종료 test.py 스크립트.

AC 전구를 5V 릴레이에 연결하기

이제 5V 릴레이가 제대로 작동해야 합니다. 이제 AC 가전 제품(이 경우 전구)을 5V 릴레이에 연결합니다.

먼저 전구에 연결된 검은색 전선을 와이어 커터로 자릅니다.


전구에 연결된 검은색 전선을 커터로 자르면 아래 그림과 같은 모양이 됩니다.


그런 다음 아래 이미지와 같이 외부 레이어를 벗겨서 전선의 약 1/2인치가 노출되도록 합니다.


그런 다음 아래 이미지와 같이 노출된 전선을 접습니다.


CV-3 드라이버로 릴레이의 표시된 나사를 풉니다.


이전에 벗기고 접은 노출된 전선을 두 개의 나사 단자에 삽입하고 CV-3 드라이버로 나사를 조입니다.

AC 부하 연결 후 릴레이 스위칭 테스트

AC 부하가 5V 릴레이에 연결되면 전구 플러그를 벽면 소켓에 연결합니다.


실행 test.py 프로젝트 디렉토리의 Python 스크립트는 다음과 같습니다.

$python3 test.py


NS test.py Python 스크립트는 5V 릴레이 전환을 시작해야 하며, 이는 차례로 5초 간격으로 고전압 AC 전구를 전환합니다. AC 전구는 5초 동안 켜져 있어야 하고 5초 동안 꺼져 있어야 합니다.

아래 이미지에서 전구가 꺼져 있습니다.


아래 이미지에서 전구가 켜져 있습니다.


보시다시피 Python 프로그래밍 언어를 사용하여 릴레이를 전환하고 고전압 AC 전구를 제어할 수 있습니다. 그래서, 누르십시오 + C 종료 test.py 스크립트.

이제 다음 섹션으로 넘어가겠습니다.

홈 오토메이션 웹 앱 작성

이 섹션에서는 Python 프로그래밍 언어를 사용하여 API 기반 웹 앱을 작성하는 방법을 보여줍니다. 웹 앱을 사용하여 웹 브라우저에서 릴레이 및 릴레이에 연결된 AC 가전 제품 또는 전기 장치를 제어할 수 있습니다.

노트: 이 섹션에 표시된 모든 코드는 내 GitHub 리포지토리에서 사용할 수 있습니다. shovon8 / raspberry-pi-home-automation . 원하는 경우 내 GitHub 리포지토리를 복제하고 모든 코드를 건너뛸 수 있습니다.

다음과 같이 프로젝트 디렉터리에 server.py Python 스크립트를 만듭니다.

$나노서버.py


다음 코드 줄을 입력하십시오. 서버.py 파이썬 스크립트.

~에서플라스크수입플라스크,jsonify,url_for,렌더링 템플릿
~에서지피오제로수입주도의
~에서uuid수입uuid4
= {}
['방1'] = [{
'ID': uuid4(),
'이름':'라이트1',
'상':'파파 전구',
'상태':거짓,
'릴레이핀':4,
'릴레이 인스턴스':거짓
}, {
'ID': uuid4(),
'이름':'팬1',
'상':'파파팬',
'상태':거짓,
'릴레이핀':6,
'릴레이 인스턴스':거짓
}]
['화장실1'] = [{
'ID': uuid4(),
'이름':'라이트1',
'상':'파파 전구',
'상태':거짓,
'릴레이핀':5,
'릴레이 인스턴스':거짓
}]
=플라스크(__이름__)
앱.구성['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@앱.노선('/')
데프():
반품렌더링 템플릿('./인덱스.html',=)
데프toggle_appliance_status(ID):
~을위한~에방:
~을위한기구~에[]:
만약 NS(기구['ID']) == ID:
만약기구['릴레이 인스턴스']:
기구['릴레이 인스턴스'].닫다()
기구['릴레이 인스턴스'] = 거짓
또 다른:
기구['릴레이 인스턴스'] =주도의(기구['릴레이핀'])
기구['릴레이 인스턴스'].~에()
기구['상태'] = ~ 아니다기구['상태']
반품 진실
반품 거짓
@앱.노선('/기기/토글/')
데프Appliance_toggle(ID):
반품jsonify({'상태': toggle_appliance_status(ID)})

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 서버.py 파이썬 스크립트.


여기에서 줄 1-3은 해당 라이브러리에서 필요한 모든 구성 요소를 가져옵니다.


5행은 공백을 생성합니다. 사전. 이 사전에는 웹 앱에서 제어하려는 모든 AC 기기 세부 정보가 저장됩니다.


NS 세부 정보는 7-29행에 저장됩니다.


방 중 하나의 데이터 구조에 대해 논의해 보겠습니다.

여기서 방 이름은 방 1. 그래서, 방 1 의 핵심이다 사전.


NS 방 1 키는 배열을 값으로 보유합니다. 어레이 요소의 수는 웹 앱에서 제어하려는 방에 있는 AC 가전 제품의 수와 같습니다. 이 경우 제어하려는 두 개의 AC 가전 제품이 있습니다. 라이트 1 그리고 팬 1 .


각 가전 제품 정의에는 ID . NS ID 무작위로 생성된 UUID입니다. 이것은 API를 사용하여 제어하려는 방을 식별하는 데 사용됩니다.

가전 ​​제품에는 다음이 모두 포함됩니다.

  • 이름(라이트 1 이 경우)
  • (Font Awesome 아이콘 클래스, 아이콘에 Font Awesome을 사용할 것이므로)
  • 상태(참 만약 ~에 그리고 거짓 만약 끄다 )
  • 릴레이 핀 (AC 가전에 연결된 릴레이를 제어하기 위한 GPIO 핀 번호)
  • 릴레이 인스턴스 (초기화된 주도의 의 대상 지피오제로 각 GPIO 핀 제어를 담당하는 라이브러리 – 릴레이 핀 )


31행은 플라스크 Python 웹 서버를 초기화합니다.

32행은 플라스크 웹 서버를 구성합니다.


34-36행은 index.html 파일에서 템플릿/ 홈 자동화 웹 앱을 방문할 때 디렉토리.

플라스크 용도 진자2 렌더링할 템플릿 언어 index.html 파일. 그래서 나는 합격했다. 사전 index.html 파일. 진자2 를 사용하여 홈페이지를 렌더링합니다. 데이터.


함수 toggle_appliance_status() 39-52 행에서 가전 제품이 꺼져 있으면 켜고 가전 제품이 켜져 있으면 끄는 데 사용됩니다. ID .

그것은 반환 진실 토글 작업이 성공한 경우. 오류가 있으면 반환됩니다. 거짓 .


라인 55-57은 다음을 사용하여 가전 제품을 토글하는 데 사용됩니다. /기기/토글/ 웹 서버의 API 끝점입니다. 여기, ID 가전제품의 ID입니다.


생성 index.html 에 있는 파일 템플릿/ 다음과 같이 프로젝트의 디렉토리:

$나노템플릿/index.html

다음 코드 줄을 입력하십시오. index.html 스크립트.


< HTML ='에'>
< 머리 >
< 메타 문자 집합='UTF-8'>
< 메타 이름='뷰포트' 콘텐츠='너비=장치 너비, 초기 크기=1.0'>
< 링크 상대='스타일시트' href='{{ url_for('정적', 파일 이름='fontawesome/css/all.min.css') }}'>
< 링크 상대='스타일시트' href='{{ url_for('정적', 파일 이름='스타일.css') }}'>
< 제목 >Raspberry Pi를 사용한 홈 자동화</ 제목 >
</ 머리 >
< 신체 >
< div ID='콘텐츠'>
< h1 >라즈베리 파이 홈 오토메이션</ h1 >

{객실 %}
< div 수업='방'>
< h2 >{{ 방 }}</ h2 >
< div 수업='가전'>
{객실[room]에 있는 기기 %}
< div 수업='기구' ID='{{ 기기['id'] }}'> ='활동적인'>
< NS 수업='{{ 기기['icon'] }}'></ NS >
< 기간 >{{ 기기['이름'] }}</ 기간 >
</ div >
{% endfor %}
</ div >
</ div >
{% endfor %}

</ div >

< 스크립트 src='{{ url_for('정적', 파일 이름='app.js') }}' 유형='텍스트/자바스크립트'></ 스크립트 >
</ 신체 >
</ HTML >

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 index.html 파일.


만들기 스타일.css 에 있는 파일 공전/ 다음과 같이 프로젝트의 디렉토리:

$나노공전/스타일.css


다음 코드 줄을 입력하십시오. 스타일.css 파일.

@수입 URL('https://fonts.googleapis.com/css2?family=BenchNine: [이메일 보호] ;400;700&display=swap');

* {
여유: 0;
: 0;
글꼴 패밀리: '벤치나인', 산세 리프;
}

#콘텐츠 >h1{
배경:선형 그라데이션(에게오른쪽, RGB(112, 24, 163), RGB(86, 127, 240));
색상: #ffff;
텍스트 정렬: 센터;
: .5em 0;
}

div.방 {
여유: .5em;
국경: 2픽셀 단단한 RGB(112, 24, 163);
경계 반경: 5픽셀;
}

div.방h2{
/* 배경: rgb(9, 76, 121); */
배경:선형 그라데이션(에게오른쪽, RGB(112, 24, 163), RGB(86, 127, 240));
: 0 0 0 .5em;
색상: #ffff;
}

div.가전 {
여유: .5em .5em 0 0;
표시하다:몸을 풀다;
플렉스 랩:포장하다;
}

div.기구 {
국경: 2픽셀 단단한 RGB(112, 24, 163);
경계 반경: 5픽셀;
너비: 110픽셀;
: 120픽셀;
텍스트 정렬: 센터;
여유: 0 0 .5em .5em;
표시하다:몸을 풀다;
플렉스 방향:;
}

div.기구NS.파 {
글꼴 크기: 4em;
플렉스 성장: 1;
패딩 탑: 0.3em;
색상: RGB(204, 오십, 오십);
}

div.appliance[데이터 활성='활동적인']NS.파 {
색상: RGB(32, 177, 51);
}

div.기구기간{
표시하다: 블록;
글꼴 두께: 굵게;
배경: RGB(112, 24, 163);
색상: #ffff;
}

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 스타일.css 파일.


만들기 앱.js 에 있는 파일 공전/ 다음과 같이 프로젝트의 디렉토리:

$나노공전/앱.js


다음 코드 줄을 입력하십시오. 앱.js 파일.

창문.추가 이벤트 리스너('짐',기본);

기능기본() {
기능토글 기기 상태(그리고) {
어디ID=그리고.[1].ID;

어디http= 새로운XMLHttpRequest();

http.준비 상태 변경 = 기능() {
만약(이것.준비 상태 === 4 && 이것.상태 === 200) {
만약(JSON.분석하다(이것.응답 텍스트).상태 === 진실) {
만약(그리고.[1].hasAttribute('데이터 활성')) {
그리고.[1].제거 속성('데이터 활성')
} 또 다른 {
그리고.[1].세트 속성('데이터 활성', '활동적인')
}
}
}
}

http.열려있는('가져 오기',``/기구/비녀장/${ID}``, 진실);
http.보내다();
}


어디가전제품=문서.getElementsByClassName('기구');
~을위한(NS=0;NS<가전제품.길이;NS++) {
가전제품[NS].추가 이벤트 리스너('딸깍 하는 소리',토글 기기 상태);
}
}

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 앱.js 파일.


여기서 1행은 다음을 실행합니다. 기본() 웹 페이지 로드가 완료되면 함수.

에서 index.html 파일, 각 가전 제품은 기구 수업. 26~29행은 웹페이지에서 각 가전제품을 선택하여 첨부합니다. 딸깍 하는 소리 기기에 이벤트를 표시합니다. 누군가 웹페이지에서 가전제품을 클릭하면, 토글 기기 상태() 기능이 실행됩니다.


4-23행에서 토글 기기 상태() 함수는 요청하는 데 사용됩니다. /기기/토글/ 클릭한 가전제품의 상태를 변경하기 위해 웹서버의 끝점. 요청은 AJAX를 통해 백그라운드에서 이루어집니다. 응답이 수신되면 그에 따라 웹 페이지가 업데이트됩니다.


다음으로 이동합니다. 공전/ 다음과 같이 프로젝트 디렉토리의 디렉토리:

$CD공전/


다음 명령으로 Font Awesome을 다운로드하십시오.

$wgethttps ://use.fontawesome.com/릴리스/v5.15.1/fontawesome-free-5.15.1-web.zip


Font Awesome이 다운로드되면 새 zip 파일을 찾아야 합니다. fontawesome-free-5.15.1-web.zip 에서 공전/ 예배 규칙서.

$ -ㅋ


압축을 푼다 fontawesome-free-5.15.1-web.zip 다음 명령으로 파일:

$압축을 풀다fontawesome-free-5.15.1-web.zip


NS fontawesome-free-5.15.1-web.zip 이제 파일의 압축을 풀어야 합니다.


새 디렉토리 fontawesome-free-5.15.1-web/ 아래 스크린샷에서 볼 수 있듯이 static/ 디렉토리에 생성되어야 합니다.

$ -ㅋ

디렉토리 이름 바꾸기 fontawesome-free-5.15.1-web/ 에게 멋진/ 다음 명령으로:

$뮤직비디오 -Vfontawesome-free-5.15.1-web fontawesome


이제 더 이상 필요하지 않습니다. fontawesome-free-5.15.1-web.zip 파일. 그래서, 제거 fontawesome-free-5.15.1-web.zip 다음 명령으로 파일:

$NS -Vfontawesome-free-5.15.1-web.zip


NS 공전/ 디렉토리 구조는 아래 스크린샷과 같아야 합니다.

$ -ㅋ


프로젝트 디렉토리로 다시 이동 ~/www 다음과 같이:

$CD..

홈 오토메이션 웹 앱 테스트

홈 자동화 웹 앱을 테스트하려면 프로젝트 디렉터리에서 다음 명령을 실행합니다.

$FLASK_APP=server.py 플라스크 실행


웹 앱은 Raspberry Pi의 포트 5000에서 사용할 수 있어야 합니다.


Chromium 웹 브라우저에서 http://localhost:5000 . 홈 자동화 웹 앱이 로드되어야 합니다.

아래 이미지에 표시된 전구 아이콘을 클릭합니다.


이제 AC 전구가 켜져 있어야 합니다. 아이콘 색상도 녹색으로 변경되어 전구가 켜져 있음을 나타냅니다.


따라서 홈 오토메이션 웹 앱이 작동합니다. 누르다 + C 웹 서버를 종료합니다.

홈 오토메이션 웹 앱을 위한 시스템화된 서비스 만들기

이 섹션에서는 홈 오토메이션 웹 앱이 부팅 시 자동으로 시작되도록 시스템화된 서비스 파일을 만드는 방법을 보여줍니다.

먼저, 생성 raspi-home-automation.service 다음과 같이 프로젝트 디렉토리에 파일을 만듭니다.

$나노raspi-home-automation.service

raspi-home-automation.service 파일에 다음 줄을 입력합니다.

[단위]
설명=라즈베리 파이 홈 오토메이션 웹 서비스
후에=네트워크.타겟
[서비스]
작업 디렉토리=//파이/www
환경=FLASK_APP=서버.py
환경=플라스크_ENV=생산
실행 시작=/usr/오전/플라스크 실행--주인= 0.0.0.0
표준출력=상속
표준 에러=상속
재시작=항상
사용자= 파이
[설치]
원티드바이=다중 사용자.대상

완료되면 다음을 누릅니다. + X 뒤이어 그리고 그리고 저장하기 위해 raspi-home-automation.service 파일.


복사 raspi-home-automation.service 에 파일 /etc/systemd/system/ 다음 명령으로 디렉토리:

$수도 cp -Vraspi-home-automation.service//체계/체계/


다음과 같이 변경 사항을 적용하려면 systemd 데몬을 다시 로드하십시오.

$수도systemctl 데몬 다시 로드


추가 raspi-home-automation 다음 명령을 사용하여 Raspberry Pi OS의 시스템 시작에 서비스를 제공합니다.

$수도시스템 컨트롤~ 할 수있게하다raspi-home-automation.service


다음 명령을 사용하여 Raspberry Pi를 재부팅합니다.

$수도재부팅


라즈베리파이가 부팅되면 raspi-home-automation 아래 스크린샷에서 볼 수 있듯이 서비스가 활성/실행 중이어야 합니다.

$수도systemctl 상태 raspi-home-automation.service

다른 장치에서 홈 오토메이션 웹 앱에 액세스

홈 네트워크의 다른 장치에서 홈 자동화 웹 앱에 액세스하려면 Raspberry Pi 장치의 IP 주소를 알아야 합니다.

홈 라우터의 웹 관리 인터페이스에서 Raspberry Pi 4 장치의 IP 주소를 찾을 수 있습니다. 제 경우 IP 주소는 192.168.0.103입니다. 이것은 당신을 위해 다를 것입니다. 따라서 지금부터 내 IP를 귀하의 것으로 교체하십시오.


Raspberry Pi 콘솔에 액세스할 수 있는 경우 다음 명령을 실행하여 IP 주소도 찾을 수 있습니다.

$호스트 이름 -NS


Raspberry Pi 장치의 IP 주소를 알면 홈 네트워크의 모든 장치에서 액세스할 수 있습니다.

아래 스크린샷에서 볼 수 있듯이 Android 스마트폰에서 홈 오토메이션 웹 앱에 액세스했습니다.


전구 플러그를 벽면 콘센트에 꽂으십시오.


전구는 기본적으로 꺼져 있어야 합니다.


홈 오토메이션 웹 앱에서 전구 아이콘을 탭하면 전구 아이콘 색상이 녹색으로 바뀌어 전구가 켜져 있음을 나타냅니다.


아래 이미지에서 볼 수 있듯이 전구가 켜져 있습니다.

결론

이 기사에서는 Python 프로그래밍 언어를 사용하여 Raspberry Pi에서 고전압 AC 전기 장치를 제어하기 위해 5V 릴레이를 사용하는 방법을 보여주었습니다. 이 기사에서는 웹 브라우저에서 릴레이를 제어하기 위해 API 기반 Python flask 웹 앱을 작성하는 방법도 보여주었습니다. 이 기사는 Raspberry Pi를 사용하여 홈 자동화를 시작하는 데 도움이 될 것입니다.