- 게이트웨이에 디바이스가 붙어서 데이터를 주고받아야했음.
- 블루투스 연결을 시도했는데 생각보다 블루투스 신호 범위가 약해 고민함.
- 그런데 어떤 통신 방법을 써도 상관 없다는 것을 알고 실무자들(?)끼리 이야기하다
- AP로 연결하고 HTTP 통신으로 요청, 응답 하는게 어떨까로 의견이 좁혀짐
- 시도해본 결과 문제가 없어서 행복 ^^
전제 조건 |
게이트웨이(ARTIK 710 사용)에 이더넷 연결
참고 페이지 : ARTIK Documentation Wi-Fi Access Point(AP)
AP 연결 전 준비 단계 |
1. hostapd configuration 파일을 연다.
$ vi /etc/hostapd/hostapd.conf
2. 해당 파일안의 값 변경(하거나 추가)
interface=wlan0
driber=nl802011
ssid=ARTIK_AP (<- 이름 변경)
hw_mode=g
channel=6
#이 아랫 부분은 제공하는 AP 모드의 성격이 unsecured wi-fi라면 주석처리 한다.
auth_algs=1
wpa=2
wpa_passphrase=artik@iot (<- 비밀번호 5자리이상 입력)
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
3. dnsmasq configuration 파일을 연다.
$ vi /etc/dnsmasq.conf
4. '# bind-interfaces' 부분을 찾아 주석을 해제하고 dhcp-range 설정
# bind-interfaces
dhcp-range=192.168.XXX(제공하고자 하는 주소 범위).2, 192.168.XXX(제공하고자 하는 주소 범위).100
5. aproute.sh 쉘 스크립트를 작성하고 실행권한을 부여한다. 파일 작성 경로 고민 해봐야 함.
$ vi aproute.sh
# aproute.sh
sysctl net.ipv4.ip_forward=1
iptables --flush
iptables -t nat --flush
iptables --delete-chain
iptables -t nat --delete-chain
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE (<- eth0부분을 잘 살핀다. 내가 사용하는 게이트웨이는 eth1이 외부 이더넷과 연결됨)
iptables -A FORWARD -i wlan0 -j ACCEPT
$ chmod 777 aproute.sh
Access Point(AP) 서비스 등록 |
- AP모드를 게이트웨이 부팅시 자동으로 구동시키고 싶기 때문에 스크립트를 만들어 서비스 등록을 해야한다.
- 스크립트 작성이 필요 없다면 AP 모드 활성화 부분의 명령어만 입력하면 된다.
- 스크립트 작성이 필요하다면 AP 모드 활성화의 명령어들을 AP 서비스 스크립트 작성부의 start 명령 부에 써 넣으면 된다.
AP 모드 활성화 |
1. ap모드 활성화전 연결 관리자(connman)가 연결을 가로채지 않도록 비활성화 시키고 재부팅한다.
$ systemctl disable connman
$ reboot
2. 이더넷 구동
$ ifconfig eth0 up
$ dhclient eth0
4. 게이트웨이 IP 주소 지정해서 wi-fi 작동 시작
$ ifconfig wlan0 192.168.(제공하고자 하는 주소 범위).1 up
5. dnsmasq에 구성된 ip 주소 범위 내에서 지정한 호스트 이름 서비스 활성화
$ dnsmasq -C /etc/dnsmasq.conf
6. aproute.sh 실행한다. 스크립트 저장 위치 확인
$ ./aproute.sh
7. 호스트 액세스 지점 백그라운드 실행
$ hostapd /etc/hostapd/hostapd.conf -B
AP 모드 비활성화 |
$ systemctl stop hostapd
$ systemctl stop dnsmasq
$ modporbe -r dhd
$ modprobe dhd op_mode=0
$ ifconfig wlan0 up
$ if [ -f "/usr/lib/systemd/system/wpa_supplicant.service" ]; then
systemctl restart wpa_supplicant
fi
AP 서비스 스크립트 작성 |
#AP_on script 내용
#! /bin/bash
#chkconfig: -98 10
start()
{
// AP 모드 활성화 명령어
}
stop()
{
// AP 모드 비활성화 명령어
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage:$0 {start|sop|restart}"
esac
부팅 서비스 등록하기 |
- 내가 사용하고 있는 710에는 OS로 fedora가 올라가 있음.
- chkconfig로 서비스 등록이 가능 / ubuntu에서는 update-rc.d 나 sysv-rc-conf 사용
- 부팅시 자동으로 작동시킬 기능의 스크립트를 서비스로 등록한다.
- 서비스로 등록할 스크립트는 /etc/init.d 디렉토리에 복사한다.
- 등록한 스크립트 이름이 서비스 이름이 됨.
2. 서비스 런레벨(run level) 설정
- 리눅스 계열마다 약간의 차이는 있지만 보통 0번은 정지 6번은 재시작
- 설정할 런레벨을 옵션으로 입력해 추가한다.
$ chkconfig --level 12345 서비스이름 on (<- on을 잘 까먹게 됨)
3. 서비스 등록 확인
$ chkconfig or $ chkconfig --list
<결과 화면>
- 설정한 런레벨 12345에 on 되어 있는 것을 확인 할 수 있다.
4. 서비스 동작 확인
- 재부팅 해본다.
- 서비스의 동작 상태를 확인한다. 정상 동작 한다면 active(running) 메세지를 확인 할 수 있다.
<결과 화면>
5. 서비스 삭제
$ chkconfig --del 서비스이름
'GATEWAY > ARTIK' 카테고리의 다른 글
[Ubuntu] OS시간, 하드웨어 시간 (0) | 2018.08.24 |
---|---|
[Ubuntu] connmanctl 로 AP 모드 설정 (0) | 2018.08.24 |
Ubuntu service start stop, network list (0) | 2018.08.09 |
Ubuntu mysql 설치 에러 발생시 우회하여 설치하기 (1) | 2018.08.09 |
ARTIK LoRa WAN (SPI) 통신 (0) | 2018.06.26 |