본문 바로가기
IOT스마트홈 만들기 (Home Assistant)/(FriendlyWrt OS) RK3328에 HA 설치

RK3328이 탑재된 SBC보드 (NanoPi Neo3) 사용기 (2) - 기본 설정 및 도커로 HA 설치 시도 (FriendlyWrt)

by ProjectDH 2021. 4. 23.

이전글

 

RK3328이 탑재된 SBC 서버 NEO3 스펙 소개 및 외관 소개

blog.projectdh.link/69

RK3328이 탑재된 SBC보드 (NanoPi Neo3) 사용기 (1) - OS 올리기 (FriendlyWrt)

blog.projectdh.link/70

 

===========================================

 

OS 설치는 FriendlyWrt, armbian 두 가지를 다뤄볼 예정이지만, 저는 armbian을 사용할 예정입니다.

이 게시물은 FriendlyWrt 세팅 글이오니, 참고용으로만 활용해주시길 바랍니다.

 

이제 OS도 올렸으니, 기본적인 설정을 해봅시다.

 

우선 패스워드 변경부터 해봐야겠죠?

1. 패스워드 변경

FriendlyWrt 관리 페이지 접속 후 로그인을 합니다.

그리고 시스템=>관리로 들어갑니다.

 

암호와 다시 확인을 입력 후 저장하시면 관리 페이지 암호, 터미널 암호 모두 변경됩니다.

저장되지 않은 내용이 있다고 뜨면 적용을 반드시 해주세요.

 

ssh 보안에 민감한 분은 시스템=>관리에서 SSH 접속 들어가고, 포트를 원하는 걸로 변경하고 적용하면 됩니다.

 

2. 타임존 변경

꼭 변경 안 해도 됩니다. 편의를 위해서 시간을 바꿔보겠습니다.

 

시스템=>시스템에 들어갑니다.

시간대를 Asia/Seoul로 바꾸고 적용합니다. 그러면 서울 시간대로 변경완료

 

3. 고정 IP 설정

서버로 사용하는 만큼 IP가 바뀌면 외부에서 접속이 안 되는 곤란한 상황이 발생할 수 있으므로

IP를 고정해서 사용해야합니다.

 

네트워크=>인터페이스에 들어갑니다.

여기서 수정을 선택합니다.

 

프로토콜을 정적주소로 맞추고 프로토콜 변경을 선택합니다.

 

IPv4 주소에 사용할 IP 주소를 넣으시고

netmask는 보통 255.255.255.0입니다.

IPv4 gateway에는 공유기 관리 주소 IP를 넣으시고

broadcast는 그대로 두었습니다.

임의의 DNS 서버 사용에 8.8.8.8, +눌러서 한칸 더 만들고 4.4.4.4를 넣어줍니다.

IPv6는 아직 상용화되지 않았으므로 disable 했습니다.

 

그리고 반드시 저장&적용을 클릭합니다.

몇초 후 저장되고, 바꾼 IP주소로 웹과 SSH 접속하면 됩니다.

 

 

 

이제 웹에서 관리는 끝난 듯 합니다..

SSH로 넘어가서 작업하겠습니다.

 

4. SFTP 활성화

OpenWrt 기반이기 때문에 opkg 명령어가 있습니다.

먼저 패키지 업데이트 후 설치합니다.

 

opkg update

opkg install openssh-sftp-server

 

명령어 복사, 붙여넣기(오른쪽마우스) 후 엔터 치시면 명령어 입력됩니다.

이 명령어 하나면 sftp 서버 활성화 됩니다.

filezila로 접속이 잘 됩니다.

 

5. 네임서버 변경

처음에 네임서버가 127.0.0.1 이길래 당황했는데, 변경하는 방법을 알아냈습니다.

 

rm /etc/resolv.conf

echo "nameserver 8.8.8.8" > /etc/resolv.conf

 

생각보다 변경하는 방법은 쉽네요. 이후 서버 재부팅 (reboot)을 하면 됩니다.

 

6. mosquitto 설치

이제부터는 도커로 IOT 관련 소프트웨어를 설치합니다.

도커가 기본적으로 내장되어 있어서.. 명령어 입력만 하면 됩니다.

 

바로 mqtt 올려봅시다.

 

docker run -d --name=mosquitto -p 1883:1883 -p 9001:9001 --restart=always --net=host -v /home/pi/ha/mosquitto/data:/mosquitto/data -v /home/pi/ha/mosquitto/log:/mosquitto/log eclipse-mosquitto

 

(도커로 패키지 설치하는 속도가 라즈베리파이 4보다 느린 점을 감안해야겠네요. 조금 답답합니다.)

 

네.. 올라가기는 잘 올라갔는데, 로그를 보면 로컬로만 작동한다고 표시되네요.

 

root@FriendlyWrt:/home/pi/ha/z2m# docker logs mosquitto

1618069376: mosquitto version 2.0.10 starting

1618069376: Config loaded from /mosquitto/config/mosquitto.conf.

1618069376: Starting in local only mode. Connections will only be possible from clients running on this machine.

1618069376: Create a configuration file which defines a listener to allow remote access.

1618069376: For more details see https://mosquitto.org/documentation/authentication-methods/

1618069376: Opening ipv4 listen socket on port 1883.

1618069376: Opening ipv6 listen socket on port 1883.

 

바로 설정 건드려보겠습니다.

docker exec -it mosquitto sh 를 입력해서 컨테이너 내부로 진입

cd /mosquitto/config 를 입력해서 설정 폴더로 이동

vi mosquitto.conf 를 입력해서 설정 파일 수정

 

vi 에디터 기본 사용법i를 입력하면 수정모드, Esc 누르면 다시 명령모드이고 :wq를 입력하면 저장됩니다. 강제 종료는 :q!입니다.

 

맨 첫줄에 두 문장을 추가합니다.

외부에서도 접근할 수 있게 설정하는 것입니다.

 

listener 1883 0.0.0.0

allow_anonymous true

 

i를 입력해서 수정모드, 내용 입력, ESC 누른 다음 :wq 입력해서 저장 후 빠져 나와집니다.

 

거기서 Control키 + D를 입력해서 도커 컨테이너에서 빠져나오고

docker restart mosquitto를 입력해서 컨테이너를 재시작합니다.

 

그러면 이제 윈도우에서 mqtt.fx 설치 후 열고 서버 주소에 Neo3의 ip를 입력하면 mqtt 접속이 됩니다.

mqtt 설치까지는 아직 잘 됩니다.

 

7. zigbee2mqtt 설치

mosquitto 설치보다 더 간단합니다. 명령어 하나면 끝납니다.

 

docker run -d --name="z2m" --net=host --restart=always -v /home/pi/ha/z2m:/app/data --device=/dev/ttyACM0 -v /run/udev:/run/udev:ro -e TZ=Asia/Seoul --privileged=true koenkk/zigbee2mqtt

 

설치 전에 lsusb, dmesg로 확인해보니 CC2531 정상적으로 인식합니다.

device 설정에서

cc2531 동글을 사용한다면 /dev/ttyACM0, cc2538 동글을 사용한다면 /dev/ttyUSB0을 넣습니다.

 

 

(Eddy님이 같이 넣어주신 USB 허브에 연결해서 사용 중입니다. 엇 그러면 iptime 무선 랜카드 n100mini도 드라이버 자동으로 잡히지 않을까 해서 연결해봤는데.. 안되네요. rtl8188cus 기반입니다. 우분투나 데비안 기반에서는 바로 인식되던데요.)

 

설정파일은 /home/pi/ha/z2m 폴더에 configuration.yaml로 있는데

cd /home/pi/ha/z2m 입력해서 폴더로 이동

vi configuration.yaml 입력해서 파일 수정

vi 에디터 기본 편집 방법을 사용해서 permit_join 옵션을 true(기본적으로 true), homeassistant 옵션을 true(기본적으로 false)로 변경합니다.

 

docker logs z2m 입력해서 로그를 확인해보니 mqtt 연결도 잘 되고, 시험삼아 샤오미 버튼을 페어링 해봤는데 잘 됩니다.

mqtt.fx로 동작 상태를 확인해봤는데, 올라오는 속도가 빠릅니다.

 

 

 

https://www.youtube.com/watch?v=DxZ1PuGgKPc&feature=youtu.be

 

영상에 나오는 샤오미 미지아 무선 버튼은 총 5가지 동작 지정이 가능합니다.

1~4번 + 길게 (길게에서도 몇 초 눌렀는지 시간도 떠서 일정시간 이상, 이하로 동작을 또 나눌 수 있을듯 합니다.)

아직 리뷰 글은 올리지 않았습니다.. 앞으로 천천히 제 IOT 기기들 모두 소개해보려고 노력해보겠습니다.

 

8. HomeAssistant 설치 (용량 부족으로 설치 실패 ㅠㅠ)

 

설치 명령어입니다.

docker run -d --name=home-assistant -v /data/homeassistant/config:/config --net=host --restart=unless-stopped homeassistant/home-assistant

 

오늘의 최종 목표는 Home Assistant 설치였으나, HA를 설치하려면 용량이 많이 필요한가 봅니다.

이미지 pull까지 정상적으로 되고나서, 좀 시간이 오래 걸리더니

갑자기 용량 부족 (no space left on device) 라고 뜨면서 모든 도커 작업이 안 됩니다..

 

 

도커 명령어가 입력이 안 되는 상황이어서

용량 큰 폴더를 찾아봤습니다.

 

 

HA 도커 관련 폴더였고, 그 폴더를 삭제하고 나서 HA 이미지 삭제를 진행했습니다.

(실제로 웹 관리 페이지에서도 남은 용량은 1.1GB였습니다.)

 

rm -r 폴더명

 

테스트 종료입니다. (오후 10시 30분 ~ 글 작성 시간 포함 새벽 3시까지 총 4시간 반정도 노력한 결과, z2m설치 후 동작한다는 것을 확인했습니다.)

 

시작부터 64GB 메모리를 썼으면 됐는데 말입니다. ㅠㅠ 집에 샌디스크 64GB 마이크로 SD카드가 있습니다. 시간날 때 새로운 메모리에 제가 쓴 설치과정 그대로 작업하면 설치 되는지 다시 처음부터 진행해보겠습니다. (글 검토를 위해, 64GB에 이미지 올려서..)

 

(그래도 지그비 통신은 성공했으니, 반쯤 성공은 맞습니다. HA는 가상 서버(VPS)에 설치하고 mqtt ip를 외부로 포트포워딩 시키고, 그 주소를 vps에 설치된 HA에서 설정해도되지만, 저는 이 Neo3로 IOT 서버 문제를 해결하는게 목표입니다.)

 

 

 

포스팅 끝입니다.

(방열판이 있지만 발열이 좀 있습니다. 60도~62도 왔다갔다합니다. 방열판이 있는데도 이렇다니..)

 

댓글