오늘은 Home Assitant 설정 파일에 대해서 얘기를 해보려고 합니다.
이전에 다룬 방법을 이용하여 FileZilla로 hassbian에 접속하여 HA 설정 폴더로 이동을 합니다.

거기에서 configuration.yaml 파일이 기본 설정 파일입니다. 편집을 해서 Atom으로 열어보세요.
homeassistant:
# Name of the location where Home Assistant is running
name: Home
# Location required to calculate the time the sun rises and sets
latitude: []
longitude: []
# Impacts weather/sunrise data (altitude above sea level in meters)
elevation: 0
# metric for Metric, imperial for Imperial
unit_system: metric
# Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
time_zone: Asia/Seoul
# Customization file
customize: !include customize.yaml
http:
api_password: []
base_url: []
...
# Sensors and Switches
sensor: !include_dir_merge_list sensors/
binary_sensor: !include_dir_merge_list binary_sensors/
switch: !include_dir_merge_list switches/
automation: !include_dir_merge_list automations/
group: !include groups.yaml
script: !include scripts.yaml
...
다음과 같은 형식으로 되어 있는데요. ([삭제]는 제 개인 설정이라 지운겁니다.)
저기에 자신의 설정을 입력해주면 됩니다.
# 으로 시작하는 줄은 주석입니다. 실행은 되지 않는 설명을 적는 줄이라고 생각하시면 되요.
여러분들이 원하는 글로 바꾸워도 상관은 없습니다. 물론 지워도 되고요.
그리고 들여쓰기를 지켜주어야 합니다. 들여쓰기로 설정간의 구분을 하기 때문인데요.
예를 들어서 homeassistant: 다음에 들여쓰기가 된 name: 이나 latitude: 는 homeassistant: 설정 내에 존재하는 세부설정입니다.
아래에 위치한 http:는 homeassistant: 와는 별개의 설정을 뜻하죠.
http: 설정에는 api_password:와 base_url:이라는 세부설정이 존재하는 거고요.
이렇게 들여쓰기를 지켜줘야 합니다. 꼭 잊지 마세요.
제일 처음 적히는 애들을 보통 컴포넌트라고 부릅니다. 

이제 차근차근 하나씩 알아보죠.
homeassistant 컴포넌트는 HA의 가장 기본이 되는 설정입니다.
세부설정 name 은 Home Assistant를 설치하고 사용하는 집의 이름을 적는 겁니다. 원하는 이름을 적어주세요.
latitude와 longitude는 현재 집의 위치(위도와 경도)를 나타냅니다.
구글 지도(https://www.google.com/maps)로 이동해서 자신의 집 위치에 마우스를 클릭하면 아래에 그 위치의 정보가 뜹니다.


<경복궁 근처 - 구글맵>


이때 주소 및에 적힌 숫자가 위도와 경도입니다.
latitude에 왼쪽 숫자(여기서는 37.576080), longitude에 오른쪽 숫자(여기서는 126.976011)를 입력해줍니다.

elevation은 높이를 나타냅니다. 아파트라면 높이를 따로 지정을 해줄 수 있는데요. 저는 딱히 지정해두진 않았습니다.
unit_system과 time_zone은 각각 단위와 시간 설정인데요. metric과 Asia/Seoul 로 해주면 됩니다.. 딱히 건드릴 필요가 없어요. 
customize는 차후에 다룰 예정입니다. 그냥 두세요.

아래에 있는 http 컴포넌트는 HA 홈페이지 접속을 위한 설정입니다. 
api_password는 로그인을 하지 않고 암호만을 입력하여 쉽게 접속할 수 있게 해주는 설정입니다. 
원하는 암호를 설정해두면 앞으로는 그냥 암호만으로 로그인이 가능합니다. 물론 아이디,패스워드를 이용한 로그인도 됩니다.
base_url은 홈페이지의 기본 접속 주소를 나타냅니다. duckdns를 이용하여 만들어준 주소를 적어주면 됩니다.
test라는 이름으로 8080포트에 만들었다면 
http://test.duckdns.org:8080 
이러한 식으로 입력해두면 됩니다.

그다음 …으로 표시를 한 곳에 설정들이 있는데 지금은 딱히 건들지 않아도 되어서 그냥 패스하도록 하겠습니다.
좀더 설정을 만지는데 익숙해 지면 그때 다뤄볼까 합니다.

그다음에 sensor,binary_sensor,switch 컴포넌트가 있는데요.
각각 센서와 바이너리센서(켜짐센서), 스위치를 뜻합니다.
센서 컴포넌트는 다양한 상태에 대해서 알려줄수 있는 컴포넌트입니다.
바이너리센서 컴포넌트는 켜짐,꺼짐 두가지 상태만 얘기할 수 있어요. 센서 컴포넌트의 축소형이라고 할 수 있지요.
스위치 컴포넌트는 말그대로 스위치를 뜻합니다. 스위치와 바이너리센서의 차이점은 스위치는 직접 켜고 끌 수 있고 
바이너리센서는 어떠한 상황(센서등을 생각해보면 쉬워요)에 따라 켜지고 꺼지고가 됩니다.

여기서 우리가 눈여겨 볼 명령은 !include 와 !include_dir_merge_list 입니다.
각각의 의미가 다릅니다.

우선 !include는 파일을 불러오는 명령입니다. 뒤에 파일이름을 적으면 됩니다.
!include scripts.yaml 이러한 방식으로요.

하지만 센서나 스위치는 한개만 존재하지 않고 여러 개가 존재하는 경우가 많습니다.
HA 설정 파일에 모든 센서와 스위치를 적으면 보기가 불편할 수도 있고 헷깔리는 경우가 생길 수 있습니다.
이럴 경우에 따로 파일을 만들어서 거기에 센서만 따로 입력해 두고 그 파일을 설정 파일에서 !include 명령을 통해 불러들이는 거죠.
다만 센서와 스위치의 갯수가 더 많이 존재한다면 따로 만들어준 파일도 복잡하게 많은 설정들이 적히게 될겁니다.

예를 들어보죠. 방3개의 보통의 아파트의 스위치를 한번 생각해 보겠습니다. 
그러면 안방,방1,방2 의 등 스위치가 존재하겠죠 베란다가 있다면 베란다 스위치도 있을거예요. 
거실과 부엌, 현관 스위치도 필요할 겁니다. 거기에 화장실도 있을거예요. 
이걸 전부다 파일 하나에 입력하면 어떤거가 무엇을 의미하는지 알기가 상당히 어려워집니다.
아직 설명을 하지 하지 않았지만 스위치 하나당 각각 하나씩 설정을 해줘야 되거든요.

그럴 때 헷깔리지 않게 파일을 여러개 쪼개는 방법을 사용합니다.
안방에 해당하는 스위치 파일을 하나 만들어서 안방등, 안방베란다, 화장실, 화장대 이러한 식으로 묶어서 적습니다.
방1에 해당하는거도 파일을 만들고, 거실과 부엌, 현관등은 같이 묶어서 파일을 만들고..
이렇게 파일을 쪼개서 설정을 해둔다면 나중에 보기도 편하고 관리하기도 편할 겁니다.
그럴 때 쓰는 명령이 !include_dir_merge_list 입니다. 이 명령은 해당 폴더에 있는 모든 파일을 불러오라는 명령입니다.
!include_dir_merge_list sensors/
는 sensors 폴더에 있는 모든 파일을 불러오는 명령입니다.

처음 시작할 때는 구매한 기기가 얼마 없어서 include 만으로도 충분히 사용이 가능하지만 갯수가 늘어나면서 점점 설정이 늘어나면 
관리가 어려워 질겁니다. 그걸 미리 대비하기 위해서 자주 사용할만한 컴포넌트는 !include_dir_merge_list 를 이용하여 
폴더를 미리 지정해 두는게 좋습니다. 물론 서버에도 폴더를 만들어주면 되겠죠?
<HA 설정 폴더>


다음 시간에는 샤오미 로봇청소기 등록방법과 예전에 적어놨던 홈킷 등록방법에 대해서 얘기해보도록 할게요.


지금까지 Home Assistant 설치와 접속을 위한 설정을 했는데요.

오늘은 설정 파일 수정을 위하여 필요한 프로그램에 관한 이야기를 해보려고 합니다. 

  • sftp 접속을 위한 프로그램 소개
  • 설정 파일 수정을 위한 프로그램 소개

1. sftp 접속을 위한 프로그램 소개

우선 ftp 라는 말을 먼저 설명해야되는데요.
File Transfer Protocol, 즉 파일 전송에 관련한 놈입니다. 
이걸 이용해서 서버(Hassbian)와의 파일을 주고 받을 수 있죠.
우리는 여기서 secured가 붙은 sftp를 이용할 겁니다.
ftp보다 보다 안전하고 무엇보다 ssh를 이용하여 파일을 전송하는 방법이기 때문에 따로 프로그램을 설치할 필요가 없어요.
(ftp만 쓰려면 또 프로그램을 설치해야되요…)

저번 시간에 sftp 설정을 대충(?) 마쳐놨기 때문에 이제 sftp 접속을 위한 프로그램을 소개할까 합니다.
무료면서 많은 사람들이 쓰는 FileZilla 입니다.
해당 사이트에 가서 filezilla client 를 받으면 됩니다. 영어라서 무서울 수도 있지만..
한글을 지원합니다!!

<FileZilla 실행화면>


설치를 끝내고 다음을 입력해서 빠른 연결을 해주면 됩니다.
  • 호스트: hassbian.local  (혹은 OpenWRT에서 고정시킨 IP 주소)
  • 사용자명: pi
  • 비밀번호: (비밀번호)
  • 포트: 22

이렇게 접속을 하면 hassbian 접속이 완료가 되죠. 
이전에 만들어준 링크로 HA 설정 폴더로 바로 이동이 가능합니다.

화면 왼쪽은 컴퓨터 목록이고, 오른쪽은 hassbian의 목록입니다.
파일을 끌어서 넣거나 더블클릭을 하면 서로 파일을 교환할 수 있습니다.

2. 설정 파일 수정을 위한 프로그램 소개

이번엔 Home Assistant 설정 파일 수정을 위한 프로그램을 소개해 보겠습니다.
Atom 이라는 프로그램입니다.
Atom은 yaml 확장자(HA 설정파일)를 인식해서 자동 들여쓰기와 문구 등을 보다 쉽게 쓰고 볼 수 있게 해줍니다.
다운받아서 설치를 합니다.
<Atom 실행 화면>

오른쪽 상단에 뭐가 하나 뜨는데요. 하고 싶은거 하면 됩니다. 보통 yes 하면 됩니다.
그리고 아래에 있는 ‘Install a Package’ 를 클릭하고 korean 을 검색하세요.
<Package 검색화면>

한글 메뉴를 설치하면 메뉴를 한글로 볼 수 있습니다.


이제 준비는 모두 끝났습니다. 
파일질라(FileZilla)에서 컴퓨터로 파일을 옮기고 아톰(Atom)으로 수정한 다음에 다시 서버(hassbian)으로 옮기는 작업을 하면 됩니다.

파일을 옮겨서 수정하는 방법 보다 좀 더 쉽게 할 수 있기도 합니다.
서버에서 수정할 파일을 마우스 오른쪽 클릭으로 편집을 하면 파일을 컴퓨터에 다운 받을 필요없이 바로 아톰이 떠서 수정이 가능합니다.
파일을 저장하면 파일질라가 알아서 파일을 업로드 해줘요.

다음에는 본격적으로 설정 파일들을 건드려 보겠습니다.


Home Assistant의 권한 변경

오늘은 Home Assistant 설정 두번째 이야기입니다.
이전시간에 Hassbian 접속과 관리자 비밀번호 변경에 대해서 알아봤는데요.

우리는 ssh 를 이용하여 ftp 서비스를 사용할겁니다. 보통 sftp 라고 하는데요.
이 방법을 이용하여 Home Assistant의 설정을 수정하려고 합니다.
하지만 이 이야기를 하기 앞서 꼭 다루어야 할 사항이 있는데요. 

오늘은 그 이야기에 대하여 해보려고 합니다. 오늘 할 내용은 다음과 같습니다.

  1. 소유권과 권한 설명
  2. Home Assistant 의 소유권과 권한(퍼미션) 변경 방법
  3. 직접 적용하기
  4. (옵션)Home Assistant 설정 폴더 링크 만들기
(다  아는 설명이면 바로 3번으로 이동하면 됩니다.)


1. 소유권과 권한 설명

Hassbian은 운영체제입니다. 그리고 Home Assistant 는 운영체제 안에 깔려있는 프로그램이고요.
Hassbian은 데비안 운영체제를 기반으로 이루어져 있고 그 데비안은 리눅스 운영체제 중 하나이죠.

왜 이러한 얘기를 하느냐? 
리눅스 운영체제는 항상 소유권과 권한(퍼미션)이라는 걸 중요시 합니다.
이 파일은 누구꺼냐 누가 볼 수 있냐 누가 실행할 수 있냐 부터 시작해서
파일의 소유자와 소유자가 아닌 자가 가진 권한도 각각 다르게 설정이 가능합니다.
따라서 프로그램을 설치를 하면 그 프로그램의 소유자가 누구인가? 소유자 외에 누가 그 설정을 건드릴 수 있느냐 등을 알아야 되고 
필요에 따라서 따로 설정을 해 주어야 하죠.

권한(퍼미션)은 크게 3가지로 구분됩니다. 읽기(Read), 쓰기(Write), 실행(eXecute).. rwx 로 표현을 합니다.
이 rxw는 다시 각각 숫자로 표시하기도 하는데 r=4, w=2, x=1로 씁니다.
만약 파일에 읽기와 쓰기 권한이 있다면 rw 혹은 6(=4+2)으로 표현합니다. 
읽기,쓰기,실행 전부 권한이 있다면 rwx, 7로 표현하죠.

이러한 권한 부여는 총 3가지 종류로 부여가 가능합니다.
소유자/그룹/미소유자

소유자는 말그대로 그 파일(혹은 프로그램)의 소유자를 뜻합니다. 
그룹은 말그대로 한 집단을 뜻합니다. 그 그룹에 속하는 사용자 전원이 권한을 갖게 됩니다.
마지막 미소유자는 소유자나 그룹에 속하지 않은 사용자를 뜻합니다.

따라서 파일에는 총 3가지 형태의 권한이 부여가 되어 있죠.
아래를 캡쳐를 보면 권한 부여 형태가 나옵니다.

<ls -al 명령 (현재 폴더의 파일을 보는 명령 - 숨긴파일과 소유권,권한이 나온다)>


.bashrc 라는 파일은 rw-r—r—  이렇게 되어 잇죠. 세개씩 떼서 소유자/그룹/미소유자의 권한을 뜻합니다.
사용자는 읽기,쓰기가 가능하고 그룹은 읽기만 가능하며, 미소유자도 읽기만 가능하군요. 숫자로 644가 됩니다.
그리고 pi,homeassistant, root 사용자 들이 적혀있는데 왼쪽이 소유자를 뜻하고 오른쪽이 그룹명을 뜻합니다.
그룹과 소유자 이름이 같아서 헷깔릴 수 있는데 서로 다른 이름입니다. 
pi 라는 사용자, pi라는 그룹명 .. 각각 다른 의미를 갖죠.

groups 라는 명령을 이용하면 pi 사용자가 속해 있는 그룹목록들이 나옵니다.

<groups 명령>
pi 사용자는 pi 라는 그룹과 adm, dialout,cdrom,… 마지막으로 homeassistant 라는 그룹까지 속해 있다는 얘기예요.
homeassistant 사용자는 homeassistant 그룹과, dialout,… 해서 gpio 그룹까지 속해 있군요.


2. Home Assistant 의 소유권과 권한(퍼미션) 변경 방법

간략하게 소유권과 권한에 대해 알아봤는데요.
그렇다면 Home Assistant(이하 HA) 라는 프로그램은 누가 소유자인가? 그 설정을 누가 할 수 있는가? 이걸 알아야 될텐데요.
그 소유자는 homeassistant 라는 사용자(계정)입니다.
우리가 hassbian에 접속할 때 사용한 pi라는 사용자는 HA를 수정을 하지 못해요.
hassbian을 설치한 사람은 나인데 내가 따로 설정해 놓지도 않은 homeassistant 사용자가 소유권을 가지냐 의문이 들죠.

우선 homeassistant 계정은 가상의 사용자입니다. 보안 혹은 실수방지(파일을 지운다던지 등)를 위해서 ssh 접속을 하는 pi 사용자와 구분을 해둔거죠.
하지만 이 점 때문에 상당히 귀찮아지게 도는데요.
소유자가 본인(pi)가 아니기 때문에 HA의 설정을 수정할 수가 없기 때문이죠.

이 문제를 해결을 위해 세가지를 선택할 수 있습니다.
1) Hassbian 접속을 pi에서 homeassistant 계정으로 바꾸기
2) 관리자 계정으로 강제로 HA 권한 접근
3) pi 사용자에게 HA 수정 권한을 갖게 그룹 권한 변경하기 

1) Hassbian 접속을 pi에서 homeassistant 계정으로 바꾸기

homeassistant 계정은 외부 로그인이 금지된 계정입니다. 리눅스 운영체제에서는 이러한 로그인 금지 계정이 종종 나오는데요.
보안 상의 이유나 불필요 때문에 꺼두기 때문입니다. 
그래서 ssh로 접속할 때 pi 대신 homeassistant 로 로그인 자체를 할 수가 없죠. 
외부 접속이 금지되어 있기 때문에 어쩔 수 없이 내부에서 로그인해 들어가야합니다.
pi 로 먼저 로그인을 한 후에 계정을 바꿔주는 작업을 해주면 됩니다.
pi 사용자가 homeassistant 계정으로 접근하는건 hassbian에서 아주 쉽게 할 수가 있습니다.
hashell 명령을 이용하면 됩니다.


프롬프트를 통해서 homeassistant로 사용자가 변경된게 보이죠? 

~는 해당 사용자의 홈폴더를 의미하기 때문에 사용자가 변경되면서 /home/pi로 표시가 됩니다.
이제 이 상태로 HA 설정을 해주면 됩니다. (우리가 원하는 방식은 아니라서 자세한 설명은 생략합니다.)
다 완료가 되면 exit 명령으로 빠져나오면 되죠.

2) 관리자 계정으로 HA 권한 접근

관리자 계정(슈퍼유저라고도 함)은  root 라는 아이디를 갖습니다.
이 사용자는 모든 권한을 무시하고 데이터에 접근이 가능하죠.
하지만 권한 남용(?)이나 보안의 이유로 이러한 root 사용자의 사용은 기본적으로 금지가 되어 있습니다.
금지를 풀어서 관리자 계정을 사용해 보려면 2가지 방법이 있는데요.
하나는 root의 사용 금지 자체를 풀어주는 것과 나머지 하나는 관리자 실행명령만 따로 사용하는겁니다.
root의 사용 금지를 풀어버리면 보안 상 큰 문제가 발생할 우려가 많습니다.
우리는 후자인 관리자 실행명령을 사용해 보겠습니다.
관리자 실행명령이라는게 조금 헷깔릴 수도 있는데 쉽게 설명하면 '이 명령은 관리자가 실행하는 명령으로 인식해라’라는 명령을 쓰겠다는 겁니다.
sudo 라는 명령인데요. 모든 명령에 sudo 를 입력하면 관리자가 실행하는 걸로 인식을 합니다.
참 간단한 명령이죠? 하지만 이것도 너무 남발을 하면 좋지 않으니 필요할 때만 sudo 명령을 쓰기를 추천합니다.

하지만 이 방법의 치명적인 문제가 있습니다.
관리자가 실행하는 걸로 인식을 하기 때문에 파일을 생성하면 소유자를 관리자로 지정해 버리기 때문이죠. 

나중에 소유자 변경 작업이 필요하게 됩니다. 
(이방법도 우리가 원하는 방식은 아니라서 자세한 설명은 생략합니다.)

3) pi 사용자가 HA 권한 갖게 하기

HA의 소유권은 homeassistant가 가지고 있습니다. 그리고 homeassistant 그룹이 할당되어 있습니다.
설정 폴더의 권한을 775로 바꾼다면 그룹도 모든게 가능해집니다. 위에서 pi는 homeassistant 그룹에도 속해 있다고 했었죠.
따라서 pi 또한 쓰기가 가능해지죠. 다음 명령을 쓰면 됩니다.
pi@hassbian:~ $ sudo chmod -R 775 /home/homeassistant/.homeassistant/

<권한 변경후 목록 보기 명령 사용>

이렇게 사용하면 pi 라는 계정으로 파일을 수정할 수 있습니다.
(물론 여기서 무엇을 수정하고 이럴 생각은 없어요. 차후에 쉽게 수정하는 방법도 얘기해볼게요.)
파일을 수정하는데는 아무런 문제가 없지만 없는 파일을 만들어주는 경우 문제가 발생하게 됩니다.
pi가 만들면 소유자와 그룹이 각각 pi,pi 로 바뀌게 됩니다.
물론 pi 사용자가 수정하고 그러는데는 아무런 문제가 없지만 homeassistant 계정은 pi 그룹이 아니기 때문에 그 파일을 수정할 권한이 없습니다.
그래서 homeassistant 계정을 pi 그룹에 추가해서 이 문제를 해결할 겁니다.

3. 직접 적용하기

이제 위에 설명한 3)의 내용을 토대로 서버에 적용해 보도록 해요.

우선 pi 계정으로 hassbian에 로그인하고 다음 명령을 입력합니다.
$ sudo chmod -R 775 /home/homeassistant/.homeassistant/
$ sudo usermod -aG pi homeassistant
1줄 의미: HA 설정 폴더 권한 변경
2줄 의미: homeassistant 계정을 pi 그룹에 추가

나중에 sftp에서 파일을 올렸을때 자동으로 775 퍼미션이 되도록 /etc/ssh/sshd_config 파일을 수정합니다.
$ sudo nano /etc/ssh/sshd_config

<콘솔화면에서 nano 에디터 실행화면>

115번째(혹은 그 근처.. 거의 맨 밑에 위치해 있어요) 줄에 -u 0002 를 추가해 주세요. 

# override default of no subsystems
Subsystem       sftp    /usr/lib/openssh/sftp-server -u 0002

그리고 컨트롤+X를 누르고 저장(Y)를 누른 후 엔터를 눌러 종료하면 됩니다. 
그리고 다음 명령을 이용하여 ssh 서버를 재시작 해줍니다.
sudo service ssh restart
이러면 소유자와 권한 문제가 해결이 됩니다.


4. (옵션)Home Assistant 설정 폴더 링크 만들기

나중에 sftp 접속을 할 때 귀찮은 점이 하나 있는데요. 바로 HA 설정 폴더의 위치로 이동입니다.
/home/homeassistant/.homeassistant 라는 폴더로 이동하는게 클릭질이 좀 필요합니다. (한 세번..?)
이걸 한번에 처리할 수 있게 하려고 합니다. 링크를 만들어서요.
다음 명령을 치면 됩니다.
$ ln -s /home/homeassistant/.homeassitant homeassistant

<링크 생성후 파일 확인 장면>

이러면 나중에 sftp 접속시 간단하게 폴더 이동이 가능해집니다.


오늘은 참 많은 얘기를 했는데요. 리눅스 운영체제 자체가 윈도우와는 달라서 사용하기 불편해서 접속이 꺼려집니다.
오늘 이렇게 접속해서 설정을 마쳤으니 업데이트 할때를 제외하고 따로 접속할 일은 없을겁니다.

쉽게 설명한다고 적어봤는데 뭔가 상당히 어수선하고 정신이 없는거 같아요 ㅠㅠ
글솜씨가 영 꽝이라…. ㅠㅠ

다음시간에는 sftp 를 이용하여 파일을 업로드하고 바로 수정하는 방법에 대해서 해보겠습니다.


Hassbian 접속과 비밀번호 변경

이젠에 Hassbian 설치방법에 대해서 알아봤었는데요.

오늘은 Home Assistant 접속과 비밀번호변경에 대해서 얘기해 보려고 합니다.

  • Hassbian 접속
  • 간단한 터미널 화면 설명
  • Hassbian 로그인 비밀번호 변경


접속은 ssh(Secure SHell)을 이용할 겁니다. ssh 접속을 지원하는 프로그램을 사용하면 되는데요.
흔히 사용하는 PuTTY(https://www.putty.org)를 이용하면 됩니다. 무료예요.

PuTTY를 실행하고 Host Name과 Port를 입력하고 Connect 버튼으로 접속하면 됩니다.
접속 아이디(username)와 비밀번호는 아래에 적힌걸로 하고요.
접속은 같은 네트워크(같은 공유기) 상에서 해야됩니다.
  • ​Host Name: hassbian.local
  • Port: 22
  • username: pi
  • password: raspberry
다만 접속중에 비밀번호를 적으면 **과 같은게 안나오고 아예 적지 않은거 처럼 나옵니다. 
정상이니까 그냥 그대로 치고 엔터를 치면 접속이 됩니다. 다음처럼 말이죠.

<Hassbian ssh 접속화면>


보통 윈도우처럼 그래픽 화면에 마우스 조작이 가능한 방법을 GUI(Graphical user interface)라고 합니다.
Hassbian은 글자로만 표현하고 키보드로만 조작이 가능하죠. 이런걸 CUI(Character User Interface; 혹은 CLI:Command-Line Interface)라고 합니다. 그리고 외부에서 접속하여 들어간 저화면을 콘솔화면 또는 터미널 등으로 얘기를 하기도 해요.


처음 Hassbian에 접속하면 위 화면처럼 나오지는 않아요. 영어로 비밀번호를 변경하라는 경고가 나올겁니다.
(전 변경을 벌써 해서 안떠요.)

터미널 화면에서 맨 아랫줄이 현재의 상태를 알려주는 프롬프트 라고 하는데요.
위 캡쳐화면의 'pi@hassbian: ~ $ ‘는 전부다 의미를 가지고 있습니다.
@ 왼쪽에 위치한 pi는 현재 접속한 id입니다. (접속할때 username에 pi 입력해서 들어왔었죠? 그겁니다.)
@ 오른쪽에 위치한 hassbian은 컴퓨터 이름입니다. (네트워크에서 나오는 그 이름입니다.)
: 오른쪽에 위치한 ~ 는 현재 폴더의 위치를 뜻합니다. 바탕화면이냐 내문서냐 이런거 말이죠.
마지막으로 $ 는 명령을 입력받을 준비가 됐다는 뜻입니다. 저 $뒤에 명령을 입력하는거죠.
pwd 를 입력해보세요.
<pwd 명령>
pwd는 현재 폴더를 알려줍니다. ~는 홈폴더로 사용자의 기본폴더를 나타냅니다. 
pi라는 사용자는 /home/pi 라는 폴더를 기본 폴더로 갖는다는 뜻이죠.

명령어를 배우는 목적이 아닌지라 모든 명령에 대해서 설명하긴 힘들고..
가면서 필요한 명령들만 조금씩 설명하는 식으로 글을 적으려고 해요.
만약 명령어가 무슨 뜻인지 모를때엔 구글링을 하시면 됩니다. 
다만 앞에 우분트 (혹은 리눅스) 를 붙히고 명령어를 검색하면 훨신 찾기 수월할거예요.
이런 식으로요.

<구글 검색화면>



이제 pi 사용자의 비밀번호를 변경해보도록 하죠. 
hassbian은 기본설치 비밀번호가 만국공통(?)이기 때문에 보안을 위해서라도 비밀번호를 바꾸어주는게 좋습니다.
비밀번호를 바꾸는 명령은 passwd 입니다. 기존 비밀번호를 먼저 적고 새비밀번호를 두번 적어주면 비밀번호가 바뀝니다.
이것도 로그인과 마찬가지로 입력 시 아무런 표시를 하지 않아요. 그냥 치고 엔터를 누르면 됩니다.


아직 해야할 얘기가 많아요. 
설정은 이제부터가 시작이거든요.
다음에는 Home Assistant의 소유권과 권한 등에 관해서 얘기해볼게요.



이전에 우리는 DuckDNS를 이용하여 DDNS 등록을 했었는데요.
오늘은 Home Assistant 외부 접속을 위하여 OpenWRT 설정을 하는 방법에 대하여 얘기해 보겠습니다.


해야 할 작업목록

  • Hassbian 의 IP 고정
  • 포트포워딩 


처음 해야할 작업은 Hassbian이 깔려있는 라즈베리파이의 IP를 고정하는겁니다.
IP는 이전에 설명했듯이 그 컴퓨터가 누군가를 판별해주는 주소의 역할을 하기 때문에 무조건 부여가 되어야 하는데요.
공유기는 외부(인터넷망)에서 IP를 부여받아서 내부에 인터넷이 가능하게 해줍니다. 
그리고 공유기에 연결된 기기(스마트폰,컴퓨터 등)에 내부에서만 판별 가능한 주소(IP)를 부여하는데 DHCP(Dynamic Host Configuration Protocol)라고 하는 방식을 이용하는데 IP가 고정이 되어 있지 않고 무작위로 분배를 하는 방식입니다.

우리는 이러한 무작위로 바뀌는 IP를 고정해보려고 합니다.
우선 공유기 설정 메뉴에서 네트워크 - DHCP와 DNS 로 이동하여 맨 아래로 내려가보면 Static Lease 가 있는데요. 

<LuCI DHCP 설정화면>


여기에 MAC 주소에서 hassbian.lan 이 적혀있는 걸로 선택을 합니다.
IPv4 주소는 페이지 위에 있는 Active DHCP 임대목록을 참고하여 hassbian에 해당하는 IP를 선택하면 됩니다.
그리고 저장 & 적용을 해주면 IP 고정이 완료가 됩니다.


이제 포트포워딩 작업을 해봅시다.
컴퓨터는 통신작업을 포트를 이용하여 하게 됩니다.
통신작업은 인터넷 웹페이지를 보여주는 웹서비스 뿐아니라 메일서비스, 프린트서비스 외부접속서비스 등 다양한대요.
기본적으로 웹서비스는 80, ssh는 22 등 이러한 포트명을 가지고 있습니다.
Home Assistant의 웹서비스도 포트가 따로 존재합니다. 바로 접속 주소 http://hassbian.local:8123 에 나와있는 숫자 8123 입니다.

이걸 공유기를 통해 외부에서 들어오는 통신을 받아서 보내주는 작업을 하게 될텐데요.

관리페이지 상단 메뉴의 네트워크 - 방화벽 으로 이동합니다.
그 페이지에서 Port Forwards 탭으로 이동하면 다음이 나오죠.
<LuCI 포트포워딩 설정화면>

밑에 New port forward 에 입력을 하면 됩니다.
이름은 원하는걸로 아무거나 적으면 됩니다.
프로토콜은 할얘기가 좀 있지만 여기서는 그냥 두도록 하죠.
External zone 과 Internal zone은 그냥 두면 됩니다. 
External port는 80을 입력해주고
Internal IP address는 Hassbian의 고정시킨 IP를 선택해줍니다.
Internal port는 HA의 포트인 8123을 입력하고 추가를 하면 모든 작업이 끝나게 됩니다.

이제 외부에서 DuckDNS에서 만들어준 주소로 접속을 하면 HA 홈화면이 나올 겁니다.
끝~!


여기서 한가지 좀 얘기하고 싶은게 있는데요. 80 포트는 웹서비스를 표시하는 대표적인 포트입니다.
따라서 난 외부에 내 페이지가 공개되는게 싫다라고 생각하거나 보안 상의 이유로 80포트가 아닌 다른 포트를 사용하는 경우도 많이 있습니다.
다만 다른 포트로 바꿔서 쓰는 경우에는 항상 주소 뒤에 포트번호를 입력해주어야 합니다.
예를 들어 DuckDNS로 만들어준 주소가 http://test.duckdns.org 이고 포트포워딩에서 포트를 8080으로 설정했다면
접속을 위해서 http://test.duckdns.org:8080 이라는 주소를 입력을 해야됩니다.


DuckDNS를 이용하여 OpenWRT에 DDNS 등록

준비물
  • ​OpenWRT가 설치된 공유기
  • DuckDNS 가입

인터넷을 사용하기 위해서는 항상 IP가 필요합니다.
IP는 3자리 숫자를 4개 합하여 구성이 됩니다. 123.456.789.101 이러한 형태로 말이죠.
우리가 sk나 kt, lg와 같은 인터넷 제공업체에서 기가 인터넷망 등을 사용하게 되면 꼭 IP라는 걸 부여받게 됩니다.
이 IP는 누가 어디에서 접속하고 있는가를 알려주는 주소의 역할을 하게 되죠.
외부에서 집으로 내가 쓰는 컴퓨터(혹은 공유기) 등으로 접속을 하려면 이 IP를 알면 됩니다.
물론 이러한 숫자를 외우기는 쉽지는 않기 때문에 DNS(Domain Name System) 등록 작업을 하게 됩니다.
흔히 알고 있는 문자로 된 인터넷 주소는 이러한 IP를 알기쉬운 문자로 바꾸어 주는 DNS 등록을 해서 만들어진겁니다.
물론 접속의 편리함 때문에 DNS 등록을 하는거지 하지않고 숫자 그대로 써도 상관이 없기는 합니다.

따라서 집에서 사용하는 인터넷망의 IP를 알고 있다면 외부에서 내부로 바로 접속이 가능하죠.(물론 몇가지 작업이 필요하긴 합니다.)
다만 여기에선 가장 큰 문제가 있는데요.
인터넷업체에서 제공해주는 IP는 동적IP라고 해서 고정되어 있지 않고 일정 시간이 지나면 바뀌게 된다는 거죠.
그럼 바뀔때마다 DNS 등록을 다시 하거나 IP를 다시 외우던지 해야되는데 여간 귀찮은게 아닙니다.

이러한 불편함을 없앤 것이 DDNS(Dynamic DNS)입니다.
IP가 바뀌면 자동으로 DNS 등록을 갱신해줘서 문제없이 인터넷 주소를 사용할 수 있게 해주는 서비스입니다.
다만 IP가 바뀌는 상황을 알아야 하기 때문에 일반 DNS 등록과는 다르게 집 컴퓨터(공유기)에 관련 프로그램의 설치가 필요해요.

DDNS를 서비스하는 업체는 많이 있지만 무료로 서비스하는 duckdns를 사용해 보겠습니다.


<DuckDNS 접속화면>


상단에 있는 5개 계정 중 하나를 이용하면 됩니다. 저는 google 계정을 이용하였습니다.

<DuckDNS 등록작업>

로그인 후 상단에 나오는 sub domain 상자에 자신이 원하는 인터넷 주소를 적고 add domain 버튼을 클릭하면 됩니다.
그럼 하단에 추가한 이름과 현재 집에서 사용중인 인터넷망의 ip가 등록되죠.

이제 공유기 설정을 건들여봅시다.
우선 공유기로 ssh 접속을 합니다.

그리고 ddns-scripts 패키지 설치를 합니다.
$ opkg update
$ opkg install ddns-scripts
그리고 /etc/config/ddns 파일을 수정하여 안에 내용을 다 지우고 다음으로 바꿉니다. 
config service "duckdns"
option enabled "1"
option domain "<duckdns Domain>.duckdns.org"
option username "<duckdns Domain>"
option password "<duckdns Token>"
option ip_source "network"
option ip_network "wan"
option force_interval "72"
option force_unit "hours"
option check_interval "10"
option check_unit "minutes"
option update_url "http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]"
<duckdns Domain> 에 아까 만들어준 sub domain 값을 넣어주고, <duckdns Token>에는 duckdns 로그인했을 때 가운데 뜨는 Token을 입력해줍니다.
그리고 파일을 저장한 후 다음 명령어를 그대로 적어줍니다.
$ sh
$ . /usr/lib/ddns/dynamic_dns_functions.sh # (.) .
$ start_daemon_for_all_ddns_sections "wan"
$ exit
그러면 모든 설정이 끝나게 됩니다. 
잘 돌아가는지 확인해 보려면 다음의 명령어를 쳐봅시다.
$ /usr/lib/ddns/dynamic_dns_updater.sh -v 1 start

이제 http://<가입한id>.duckdns.org 로 집에서 쓰는 인터넷망으로 접속이 가능하게 됩니다.


다음엔 공유기에서 Home Assistant 페이지로 포트 포워딩하는 방법에 대해서 해보죠.

최근 레트로파이가 설치되어 있던 게임기(라즈베리파이)를 분해해서 하스비안(Hassbian)을 설치하였습니다.

제가 솔직히 제일 처음 이쪽 관심을 가지게 된건 애플 iOS(이제는 macOS까지)에 들어있는 홈 앱 때문입니다.

HomeKit 이라는 방식으로 작동하는 기기 뿐 아니라 지원안하는 기기도 프로그램(?)의 도움을 이용해서 사용해 보려고요.

그래서 찾은게 Home Assistant 였죠.


물론 Home Assistant 를 설치하는 방법은 여러가지가 있습니다만 여러 사이트와 카페를 검색하면서 우리집에 가장 적용이 쉬운 방법이 라즈베리파이에 Hassbian을 설치하는거 였어요.


그래서 라즈베리파이에 Hassbian을 설치하는 방법에 대해서 적어보려고 합니다.



1. microSD 카드로 Hassbian 복사하기


우선 파일부터 받아야겠죠? PC에 파일을 받읍시다.


SD카드로 이미지를 복사하는 방법이 여럿 존재하는데 전 쉬운 방법을 택했습니다.


자신에게 맞는 프로그램을 받으세요. 전 맥을 쓰고 있어서 맥용 프로그램을 받아 설치했습니다.

Etcher를 실행하면 다음 화면이 뜹니다.


왼쪽 첫번째 버튼을 클릭하고 다운받은 Hassbian을 선택합니다. 압축을 안풀고 zip파일 그대로 쓰면 됩니다.

두번째 버튼을 누르고 설치할 SD카드를 선택하세요. 마지막으로 Flash!를 누르면 복사가 시작됩니다.

복사가 끝나고 제대로 복사가 이루어졌는지 확인작업을 한번 하고 완료가 됩니다.


2. (선택) 와이파이 설정하기 

위 과정이 끝나면 SD카드가 자동으로 마운트해제(usb 꺼내기와 같은 의미)되어 있습니다. 뺏다가 다시 껴서 인식을 시켜주세요.

그리고 SD카드로 이동해서 다음의 파일을 하나 만듭니다.

wpa_supplicant.conf 

country=KR

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1


network={

    ssid="YOUR_SSID"

    psk="YOUR_PASSWORD"

}


ssid에는 와이파이 이름을 적고, psk에는 비밀번호를 적고 저장합니다.


이제 SD카드를 빼고 라즈베리파이에 끼운 후 부팅을 하면 설치가 완료됩니다.


3. Home Assistant 접속

인터넷 주소창에 주소를 치고 들어가면 HA 의 처음 화면이 나오게 됩니다.


약간 기다림의 시간이 필요할 수 있습니다. Hassbian은 설치 후 최초 부팅시 업데이트를 하고 앱을 초기화 하기 때문이죠.

안뜨면 기다렸다가 다시 들어가보면 됩니다. 전 한 10분? 잘 기억은 안나지만 그정도 기다린거 같아요.


4. (선택) 접속이 안되는 경우

충분히 기다렸는데도 안된다면 문제가 있는거겠죠.

ssh 접속을 합니다. 보통 윈도우에서는 putty라는 프로그램을 다운받아 접속하면 됩니다.

Host Name 에 hassbian.local , Port에 22, 바로밑에 SSH를 선택하고 connect 를 누르면 접속이 됩니다. 

아이디 pi, 초기 비밀번호 raspberry 로 로그인을 하세요.

Host Name: hassibian.local

Port: 22

username: pi

password: raspberry


그러면 hassbian 특유의 이모티콘과 간단한 시스템 정보를 출력하고 로그인이 됩니다.

거기에 밑에 내용을 쳐요.

pi@hassbian:~ $ cd /home/homeassistant/.homeassistant/

pi@hassbian:/home/homeassistant/.homeassistant $ ls


($를 기준으로 앞에는 글자가 벌써 적혀있지요. 뒤의 내용만 적으면 됩니다. 

참고로 pi@hassbian:/home/homeassistant/.homeassistant 의 의미는 pi라는 사용자가 hassbian에 접속해서 

/home/homeassistant/.homeassistant 폴더에 이동해 있다 라는 뜻이에요.

앞으로는 $ 앞의 내용은 생략하고 $ 뒤의 내용만을 적도록 할게요.)


저렇게 쳤을때 아무런 내용없이 바로 ' pi@hassbian:/home/homeassistant/.homeassistant $ ' 이 나온다면 설치작업이 제대로 안된거예요.

다음의 명령어를 입력해서 설치 작업을 다시 시작해 줍니다.

sudo systemctl start install_homeassistant.service


그리고 파일리스트가 주르륵 나오면 설치가 된거고 아직 초기화 작업 중이니까 조금만 더 참고 기다려봅니다.


그렇게 기다림의 시간이 끝나면 설치가 완료된 Home Assistant 페이지를 보게 될거예요.



+ Recent posts