IOx 기술 설명회 발표자료

IOx
IOS + Linux
김형수 부장
Solution SE
2014년 9월 25일
Application Development Guide

IOS 와 GOS 연결하기

응용프로그램 패키징 및 배포

GOS 구성하기 (yocto linux)

Smart Citizen Kit으로 부터 데이터 읽기

Sample Application 소개
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
2
IOS와 GOS 연결하기
Serial
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Serial
Cisco Confidential
3
Codefest 환경 및 프로그래밍 영역
시스코제공
응용프로그램을 거친
데이터
WiFi
Serial
Embedded Linux
CGR1K
센서
데이터
Smart Citizen Kit(sensor)
DB/Web
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
IOx 응용프로그램 배포
Cisco Confidential
4
응용프로그램 패키징 (1/2)

CGR GOS용 응용프로그램은 아래 규칙에 맞게 패키징 되어야 한다.
app-<name>-ver-<version>.zip (예 app-sensorbot-ver-1.0.zip)

응용프로그램은 GOS의 /software/downloads 폴더에 위치되어야
한다.

응용프로그램의 구조는 아래와 같다
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
5
응용프로그램 패키징 (2/2)
파일이름(대소문자구분)
설명
필수사항
connector.ini
응용프로그램의 meta정보를 기술함
sensorbot
응용프로그램의 바이너리 파일로 실제 Linux VM에서 실행되는 파일임
선택사항
sensorbot.c
응용프로그램의 소스코드
start_script
응용프로그램을 실행 시킬수 있고 필요시 사전 처리을 수행할 수 있음
stop_script
응용프로그램을 종료 시킬수 있고 필요시 사후 처리를 수행할 수 있음
notify_script
IOS로 부터의 수신하게 되는 notification을 처리하는 로직을 수행 함
statistics_script
IOS로 부터 app statistics CLI 요청시 수행 됨
config_script
IOS로부터 app config CLI 요청시 수행 됨
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
6
응용프로그램 배포

응용프로그램은 GOS의 /software/downloads 폴더로 복사가 되어야
하며, SFTP/SCP 와 같은 툴로 app-<name>-ver-<version>.zip 을
복사하면 됨

응용프로그램의 설치/시작/종료/삭제는 전부 IOS에서 수행 함

새로운 응용프로그램을 upgrade하는 경우 응용프로그램 이전 버전
종료, 이전 버전 삭제, 신규 버전 설치, 신규 버전 시작 순서로 진행됨

응용프로그램의 디버깅(log 출력)도 IOS 명령어를 통해서 수행됨

참고 자료 : https://communities.cisco.com/docs/DOC-53050
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
7
GOS(yocto linux) 구성하기

CGR1K용으로 구성된 GOS 이미지 다운로드
개발자 사이트에서 cgr1k-ref-gos-1.20.vmdk 다운로드

VirtualBox를 통해서 VM 생성하기

Python pip 및 library 설치하기

pip 및 setuptools 설치시 context.py 파일 필요

pip 설치 이후 pip install pySerial 설치

Python에 필요한 기본 package 설치된 OVA파일 다운로드

Codefest 사이트에 관련 문서 업로드 예정
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
8
Smart Citizen Kit 설정 및 데이터 읽기
http://arduino.cc/en/Main/Software#toc
2 에서
Arduino 1.0.6 IDE 설치
Serial 설정: carriage return, 115200 baud
rate
SmartCitizenKit 에서 제공하는 명령어 확인
(WiFi 설정)
https://github.com/fablabbcn/SmartCitizen-Kit/blob/master/sckcommands.md
Arduino IDE Serial Monitor 실행화면
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
9
Sample Application - connector.ini (1/2)
[connector:info]
#This section captures general information about connector, connector developer etc
name:XivelyApp
description:Periodically collects sensor data and writes it into Xively
version:1.0
author-name:Cisco Systems
author-link:http://www.cisco.com/
default-id:XivelyApp
[connector:toolkit]
#This section captures connector's dependency on the toolkit (version, services used etc)
toolkit-version:1.0
services-needed:
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
10
Sample Application - connector.ini (2/2)
[connector:runtime]
#This section captures connector's language runtime (python, java etc) details
runtime:generic-linux
[connector:process:main]
#This section captures connector's main process information
runner:start_script
stop:stop_script
notification:notify_script
[connector:global_logging]
#Controls global logging level
level:ERROR
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
11
Sample Application – start_script
#!/bin/bash
#########################################################
#
#
start_script
#
Author: [email protected]
#
Copyright (c) 2010-2013 by cisco Systems, Inc.
#
All rights reserved.
#
#########################################################
#
# This is the 'Start' Script for starting the application
echo "Starting the application"
#IMPORTANT : Start should always block
#The infra passes the APP Path, use it to run your binary
exec python $CAF_APP_PATH/xively-app.py
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
12
Sample Application – stop_script
#!/bin/bash
# Environment variable APP_PID , CHILDREN_PIDS will be passed along to the script
echo "Environment APP_PID: " $APP_PID
echo "Environment CHILDREN_PIDS: " $CHILDREN_PIDS
if [[ ${APP_PID} == 0 ]]; then
echo "Application $APP_PID is not running! "
echo "Exiting.."
exit
fi
echo "Killing all app children"
for p in $CHILDREN_PIDS; do
kill -9 $p
done
echo "Killing app process"
kill -9 $APP_PID
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
13
Sample Application – Sensor 데이터 수집/파싱
Sensor Data
Temperature: 29.7 C
Humidity: 30 %
Light: 76.7 lx
Battery: 100.0 %
Solar Panel: 0 V
Carbon Monxide: 33.693 kOhm
Nitrogen Dioxide: 22.652 kOhm
Noise: 29 mV
Wifi Spots: 0
UTC: 2000-01-01 04:01:05
*******************
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
파싱 후
데이터 전송
Cisco Confidential
14
Sample Application – 서버로 전송
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
15
참고할 만한 사이트

CGR 제품 정보 : http://www.cisco.com/go/cgr1000

시스코 개발자 사이트 :
https://communities.cisco.com/community/developer/networking/i
nternet-of-things/iox

Smart Citizen Kit : http://www.smartcitizen.me/

Yocto project(GOS) : https://www.yoctoproject.org/

REST API: http://www.restapitutorial.com/

Arduino : http://www.arduino.cc/
© 2013-2014 Cisco and/or its affiliates. All rights reserved.
Cisco Confidential
16
Thank you.