마이크로파이썬 네임태그 앱 이식 하기(IBM Developer Meetup 2018)

1. 개발 환경 정보

 - Ubuntu 18.04 Destkop amd64  

2. 개발 환경 준비사항

picocom 설치

  sudo apt-get install picocom   

webrepl 다운로드

  git clone https://github.com/micropython/webrepl  

developer-badge-2018-apps 다운로드

  git clone https://github.com/IBM-Developer-Korea/developer-badge-2018-apps
  developer-badge-2018-apps/apps/nametag 

3. webrepl CLI 방식으로 업로드 수행

업로드를 수행 하기전 IOT뱃지와 같은 네트워크 대역대로 설정 하자. 참고로 IOT뱃지는 2.4HZ 기반만 Wifi만 지원 한다. 공유기가 2.4HZ를 지원하는지 체크 한다.

업로드 수행 방법은 CLI 방식과 Web 방식으로 하는 경우가 있는데 web 방식은 단점이 있어 CLI방식으로 사용했다.

Web 방식은 한번 보낸 후 같을 파일을 보내고자 할 경우 다른 파일을 선택 하고 다시 선택 한다. 강사님 말씀으로는 이게 버그란다.

vi 편집기를 오픈 하여 네임 태그  바꾸기 
vi ~/developer-badge-2018-apps/apps/nametag/tagmain.py

1 import ujson as json
2 import uos
3 import util
4 import network
5 import utime as time
6 import urequests
7 import ugfx
8 
9 from home import styles
10 
11 class TagMain():
12 
13     IS_TEST = False
14 
15     # Labels
16     name = '허여송'           ## 이미지 출력 하단 이름 변경 수정 
17     org = '(주)아이렉스넷'    ## 이미지 출력 상단 이름 변경  수정 
18 
19     # Nametag Image Server
20     url = 'https://2018-devday-nametag.au-syd.mybluemix.net/nametag'
21 
22     def __init__(self):
23         # initialize ugfx
24         ugfx.init()
25 
26         # Container
27         width = ugfx.width()
28         height = ugfx.height()
29         self.container = ugfx.Container(0, 0, width, height, style=styles.ibm_st)
30 
31         # Status box
32         self.create_status_box()
33 
34         # Nametag Image
35         self.filename = '/nametag.gif'
 
~/iot_sensor/src/webrepl/webrepl_cli.py -p aaaa ~/iot_sensor/src/developer-badge-2018-apps/apps/nametag/__init__.py 192.168.2.21:/apps/nametag/ 
op:put, host:192.168.2.21, port:8266, passwd:aaaa.
/home/kranian/iot_sensor/src/developer-badge-2018-apps/apps/nametag/__init__.py -> /apps/nametag/__init__.py
Remote WebREPL version: (1, 9, 4)
Sent 107 of 107 bytes


~/iot_sensor/src/webrepl/webrepl_cli.py -p aaaa ~/iot_sensor/src/developer-badge-2018-apps/apps/nametag/tagmain.py 192.168.2.21:/apps/nametag/
op:put, host:192.168.2.21, port:8266, passwd:aaaa.

~/iot_sensor/src/developer-badge-2018-apps/apps/nametag/tagmain.py -> /apps/nametag/tagmain.py
Remote WebREPL version: (1, 9, 4)
Sent 3712 of 3712 bytes

~/iot_sensor/src/webrepl/webrepl_cli.py -p aaaa ~/iot_sensor/src/developer-badge-2018-apps/apps/nametag/app.json 192.168.2.21:/apps/nametag/ 
op:put, host:192.168.2.21, port:8266, passwd:aaaa.
~/src/developer-badge-2018-apps/apps/nametag/app.json -> /apps/nametag/app.json
Remote WebREPL version: (1, 9, 4)
Sent 71 of 71 bytes



여기서 주의사항은 파일 전송시 원격 호스트의 디렉토리 입력시 /app/nametag , /app/nametag/ 하고 차이가 있다.

/app/nametag : 로컬 파일을 다른 파일이름(nametag)로 전송
/app/nametag/ : 로컬 파일을 nametag 디렉토리로 전송 한다는 의미

이 차이점을 꼭 이해 하자   
 
   

4.시리얼 연결 후 디렉토리 조회 명령으로 정상 업로드 여부 확인

$ sudo picocom -b 115200 -r -l /dev/ttyUSB0  
>>> uos.listdir('/apps/nametag')
['tagmain.py', '__init__.py', 'app.json']
>>> run('tagmain')
Restrt to run app tagmain

5.재부팅 후 앱 실행

I (1773) network: CONNECTED
[Errno 2] ENOENT
nametag image file (/nametag.gif) loading failure
---open_status_box---
---set_status_text---:Wait for network
I (3623) event: sta ip: 192.168.2.21, mask: 255.255.255.0, gw: 192.168.2.1
I (3623) network: GOT_IP
---set_status_text---:Network is ready
---set_status_text---:Your device ID is 240AC423C8FC

몇분 후 Network을 통해 이미지를 가져와 이미지를 출력한다.   

6.결과

nametag

7. 행사 참여 후기

  • 이식만 하는데 파일 전송 부분에서 삽질 했다. 해결 과정은 페이북에 공개된 강사 분들의 영상을 보고 문제를 해결 했다.
  • IOT 뱃지 하드웨어,펌웨어,앱을 공개해 주신 IBM 디벨로퍼 애드보케이트(Developer Advocate팀)에 감사드린다.
  • 마지막으로 IBM 공진기 에반젤리스트님은 전체 프로젝트의 개념과 과정을 앞으로 해당 프로젝트가 사용자들 간의 사용 후기와 해당 오픈 프로젝트가 활성화되었으면 좋겠다고 했다.

Comments