애들 장난감용 SoundBox 제작 중

애들이 어려서 버튼을 누르면 동물소리, 노래, 멜로디 등이 나오는 사운드북(멜로디북)을 많이 사용하고 있습니다.

그런데 구입하고 얼마 지나지 않으면 항상 고장이 나더군요.. 배터리를 교체해봐도 안되는 걸 보면 대부분 버튼이나 내부에 뭔가 고장이 나는 것 같습니다.

그래서 책은 아니지만 버튼을 누르면 각종 소리가 나는 사운드박스(SoundBox)를 만들기로 했습니다. 각 버튼에 따른 소리는 수시로 업데이트가 가능하게 만들 예정입니다.

 

대략적인 구성은 아래와 같습니다.

SoundBox 구성

 

알리에서 주문한 부품 중 가장 중요한 부품이 도착해서 바로 개발을 시작했습니다.

 

하드웨어

 

아래는 ESP8266 기반의 보드로 wifi 모듈과 충전회로가 포함되어 있습니다. 저처럼 하드웨어를 잘 모르는 사람이 사용하기 딱 좋습니다.

Wemos esp-wroom-02 Pocket 8266 D1 mini WIFI Module

 

NodeMCU 펌웨어를 올리고 LUA 언어로 개발할 수 있습니다.

Read More

Home Assistant (HA) 설치

홈 오토메이션용 허브인 Home Assistant (HA)를 설치해보았습니다.

 

설치 환경

 

보통 라즈베리 파이(Raspberry Pi)에 많이 설치하는데 저는 홈 서버를 운영 중이라서 도커(docker)에 컨테이너로 올렸습니다.

홈 서버에 가상화 호스트 OS인 ESXi가 올라가 있고, 도커용 OS인 CoreOS가 게스트 OS로 구동 중

 

설치

 

CoreOS 터미널에 접속하여 아래 명령만 내려주면 바로 설치에 실행까지 됩니다. 물론 포트나 볼륨 설정 등은 각자 환경에 맞게 수정해야 됩니다.

Read More

도커용 OS CoreOS 설치

기존에는 각종 도커 컨테이너를 Synology NAS(DSM 5)의 도커 패키지로 관리했었는데요..

도커 이미지 검색부터 설정, 실행을 모두 웹에서 관리할 수 있어 좋지만, NAS가 강제 재시작되면 기존에 실행된 컨테이너가 자동으로 시작되지 않는 문제가 있었습니다.

 

그래서 도커용 OS인 CoreOS를 esxi에 설치했습니다.

esxi에서 쉽게 설치하려면 아래 페이지에서 ova 파일을 받아서 설치하면 됩니다.

https://coreos.com/os/docs/latest/booting-on-vmware.html

 

CoreOS는 컨테이너를 설치/실행하려면 쉘에서 명령어로 처리해야 됩니다. 웹에서 편하게 관리하려고 portainer를 설치하였습니다.

전 OS 시작 시 자동 시작되도록 아래 명령으로 설치하였습니다.

portainer 설치 후 http://CoreOS 아이피:9000/ 으로 접속하면 아래와 같은 화면을 볼 수 있습니다.

Portainer

이제 웹에서 컨테이너를 쉽게 관리(시작, 중지, 삭제, 로그 조회, 콘솔 접속 등)할 수 있습니다.

TortoiseSVN 사용 중 ‘xxx’ is not under version control 에러 처리

원인: 해당 파일 또는 폴더가 SVN 저장소에 없을 경우 발생함

해결 방법: .svn\wc.db 파일을 SQLite 툴에서 오픈한 다음 아래 쿼리 실행 (trunk/xxx_V8_R2/test 대신 에러가 발생한 파일의 경로를 넣어줌)

HAProxy 패키지 활용

시놀로지 나스에서 HAProxy 패키지를 사용하여 도메인으로 내부 여러 서버 또는 서비스를 쉽게 접속하는 방법입니다.

이 팁을 적용하면 아래와 같은 방식으로 나스의 각종 서비스에 접속할 수 있습니다.

https://photo.mydomain.com -> 포토스테이션

https://file.mydomain.com -> 파일스테이션

https://note.mydomain.com -> 노트스테이션

 

1. 지원 모델 확인

 

HAProxy 패키지를 설치할 수 있는 Architectures는 아래와 같습니다.

braswell armada38x x86 bromolow cedarview avoton 88f628x alpine alpine4k armada370 armada375 armadaxp comcerto2k evansport ppc853x qoriq monaco

위 아키텍처에 맞는 모델명은 아래 사이트에서 확인 바랍니다.

https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model

https://www.synology.com/en-us/knowledgebase/DSM/tutorial/General/What_kind_of_CPU_does_my_NAS_have

 

2. HAProxy 패키지 설치

 

패키지 센터를 실행한 후 “설정” 버튼을 눌러 “패키지 소스” 탭에서 아래 그림과 같이 소스를 추가합니다.

이름: SynoCommunity

위치: http://packages.synocommunity.com/

Read More

nas4dual에 chroot 설치하기

chroot를 설치하는 방법입니다.

 

chroot의 의미는 wikipedia에 아래와 같이 설명되어 있습니다.

유닉스 운영 체제에서 chroot는 현재 실행 중인 프로세스와 차일드 프로세스 그룹에서 루트 디렉터리를 변경하는 작업이다.

이렇게 수정된 환경에서 실행되는 프로그램은 지정된 디렉터리 트리 밖의 파일들의 이름을 지정할 수 없으므로(즉, 일반적으로는 접근이 불가능하므로) chroot 감옥으로 부른다.

나스 같은 환경에서는 특정 디렉토리에 리눅스(주로 데비안) 시스템 파일을 올려두고 그 디렉토리를 루트 디렉토리로 변경하여 기본 환경에 없는 각종 프로그램을 이용하는 목적으로 많이 사용합니다.

아래는  Arm 프로세서를 사용하는 라우트(RT-AC56U, RT-AC68U, RT-AC87U, RT-AC88U, RT-AC3200, RT-AC5300…)용으로 chroot를 설치하는 방법을 nas4dual에 맞게 수정한 것입니다.

원본은 아래 링크에서 확인할 수 있습니다.

https://www.hqt.ro/how-to-install-debian-jessie-arm/

 

준비 작업

아래 링크를 참고하여 entware를 설치합니다.

http://isulnara.com/wp/archives/1307

Read More

nas4daul에 Entware 설치

Entware란

– Entware is package repository for embedded devices. bootstrap과 비슷하다고 보면 됩니다. opkg 명령으로 각종 프로그램을 설치해서 실행할 수 있습니다.

https://github.com/Entware-ng/Entware-ng

 

설치 가능한 패키지 리스트는 아래 링크에서 확인 가능합니다.

http://pkg.entware.net/binaries/armv7/Packages.html

 

설치

 

 리부팅 후 /opt 심볼릭 링크를 자동 생성하고 entware 자동시작 스크립트 실행하는 방법

/etc/rc 스크립트가 리부팅하면 초기화 되어서 편법을 사용했습니다.

BubbleUPNPServer 플러그인을 설치하고 실행 후 아래의 스크립트에

/mnt/HDD1/@plugin/java/bubbleupnpserver/bubbleupnpserver_start.sh

다음처럼 두 번째 라인을 추가합니다.

세 번째 라인은 entware에 설치된 각종 시작 스트립트를 실행해주는 명령입니다.

 

자동 시작 스크립트에서 사용하는 툴을 설치하기 위해서 아래 명령을 한 번 내려줍니다.

 

패키지 설치는 아래처럼 하면 됩니다.

 

* Entware를 알려주신 KB님(http://isulnara.com/wp/archives/1152#comment-202542) 고맙습니다^^

NAS4DUAL에 톰캣 올리기

NAS4DUAL에 톰캣(tomcat)을 올려보았습니다.

 

NAS4DUAL에는 기본으로 java가 설치되어 있습니다.

java 설치 위치: /mnt/HDD1/@plugin/system/bin/java

 

아래 명령으로 톰캣을 다운로드하고 압축을 해제합다.

 

catalina.sh 파일에서 “# OS specific support”를 찾아서 바로 위에 JAVA_HOME 환경변수를 설정합니다.  이때 플러그인 폴더의 경로를 자신의 환경에 맞게 수정해야 됩니다.

catalina.sh 파일의 수정된 내용

 

이제 터미널에서 root 사용자로 전환하여 톰캣을 실행합니다. (java는 root 사용자로만 실행 가능함)

 

이제 톰캣이 구동되었습니다.

구글 홈용 Action – 미세먼지 상태 조회

구글 홈(Google Home)용 Action을 만들어봤습니다.

미세먼지 상태를 알려주는 Action입니다.

“Okay, Google” 후

“Weather in Korea”라고 하면 주소가 필요하다고 물어봅니다. 이때 Okay라고 하면 구글 홈의 위경도가 제가 만든 서버로 전송되고,

서버에서 구글 홈과 가장 가까운 위치에 있는 미세먼지 관측소를 찾아서 미세먼지 정보를 구한 다음 상태를 음성으로 알려줍니다.

주소 권한 요청은 처음에만 물어보고, 승인되면 구글 홈 사용자 계정의 고유 아이디와 가장 가까운 관측소의 정보를 서버에 저장하여, 그 다음부터는 바로 결과를 알려줍니다.

 

Action을 요청할 때 현재 임시로 “Weather in Korea”로 해두었는데.. 무엇으로 해야될지 고민이네요..

처음에는 Fine dust로 하려고 했는데.. 발음이 안좋아서인지.. fine과 dust를 엉뚱한 글자로 인식하네요. “Weather in Korea”는 대강 얘기해도 바로 알아 듣습니다.

동영상 보시면 알겠지만 발음 좋지 않아서 한 번에 동작되지 않는 경우가 좀 됩니다 ㅠ.ㅠ

 

현재 개발이 완료된 상태이며, 조만간 배포할 예정입니다.

구글에 배포 승인 받으려면 서비스 약관에 앱 이미지, 설명 등 준비해야될 게 좀 되네요..

 

* 배포되지 않은 상태에서는 실제 기기에서 몇 시간 동안만 테스트할 수 있습니다. 테스트 시간은 계속 연장 가능하나 계속 사용하려면 배포가 필수네요..