DAMDA Docs
  • DAMDA Overview
  • Quick Start
    • 개발환경 구성하기
    • Hello DAMDA 따라하기
    • ThinQ 연결하기
    • 내 컴포넌트 로그 확인하기
    • 내 컴포넌트 원격 제어하기
  • FUNDAMENTALS
    • DAMDA 기기
      • DAMDA Installer
        • DAMDA Installer 설치하기
        • DAMDA 설치하기
        • DAMDA 삭제하기
        • DAMDA Installer 삭제하기
      • DAMDA Debugging Console
      • DAMDA Home
        • 기기 등록 하기
        • 기기 등록 해제하기
      • Custom Sub Device
        • Capability
        • Profile
        • Functions
    • DAMDA Cloud
      • 계정 관리
        • 계정 생성하기
        • 기타
      • 컴포넌트 관리
        • DAMDA Components
        • 컴포넌트 초기화하기
        • 컴포넌트 개발하기
        • 컴포넌트 생성하기
        • 컴포넌트 배포하기
    • DAMDA Tools
      • DAMDA CLI
        • Configuration
        • Component
        • Device
        • Deployment
      • DAMDA Simulator
  • REFERENCE
    • API Reference
      • ThinQ API
        • APIs
          • ThinQ 계정 등록
          • 사용자 홈 목록 가져오기
          • 사용자 기기 목록 가져오기
          • 기기 등록하기
          • 기기 정보 가져오기
          • 기기 제어하기
          • 기기 삭제하기
          • 기기 정보 전달하기
        • Error / Exceptions
      • Hub API
        • APIs
          • 지원 기기타입 가져오기
          • 기기 profile 가져오기
          • Capability 가져오기
          • 서브 디바이스 등록하기
          • 서브 디바이스 삭제하기
          • 등록 / 삭제 결과 확인하기
          • 서브 디바이스 리스트 조회
          • 서브 디바이스 정보 조회
          • 서브 디바이스 상태 조회
          • 서브 디바이스 제어
          • 제어 결과 확인
          • 서브 디바이스 상태 모니터링
          • 전체 서브 디바이스 상태 모니터링
        • Types
          • Device
          • DeviceState
      • 가전 API
        • 가전 상태 조회
        • 가전 제어
        • APIs
          • 공통 | Headers
          • 공통 | Response
          • 공통 | Error
          • 가전 목록 조회
          • 가전 상태 조회
          • 가전 Profile 조회
          • 가전 제어
          • EMP Access Token 발급
          • Event/Push Callback (Websocket)
        • Types
          • Device Type
          • Device Profile
      • webOS TV API
        • TV 리스트 조회
        • TV 등록
        • Custom SSAP Command
        • Control
          • ON/OFF
          • Channel
          • Audio
          • App
          • UI 및 기타
        • Remote
        • Subscribe
    • Samples
      • Hello DAMDA
      • ThinQ 연결하기
      • Debugging App
      • 가전 App
      • Proto Sub Device
      • TV화면 캡쳐 + AWS Rekognition
      • DAMDA Hub
Powered by GitBook
On this page
  • 컴포넌트 정보 입력
  • 컴포넌트 기본 정보 설정
  • Life cycle 상세 설정
  • TroubleShooting
  1. FUNDAMENTALS
  2. DAMDA Cloud
  3. 컴포넌트 관리

컴포넌트 생성하기

컴포넌트 생성 창에서 입력해야 하는 각 항목에 대한 가이드 페이지 입니다.

Previous컴포넌트 개발하기Next컴포넌트 배포하기

Last updated 2 years ago

컴포넌트 정보 입력

에서 "컴포넌트 생성" 버튼을 클릭하여 컴포넌트 만들수 있습니다. 컴포넌트 생성에 필요한 정보들을 입력합니다.

사전에 컴포넌트로 만들 코드를 zip파일로 묶어 준비합니다. 압축파일을 풀었을 때, '압축파일명/' 밑에 코드 파일이 생성되도록 압축해야합니다.

예를들어 hellodamda.zip 압축을 해제하면 아래와 같이 구성하는 컴포넌트를 구성하는 파일들이 바로 보여야 합니다.

컴포넌트 기본 정보 설정

컴포넌트 명 (필수)

com.[damda계정].[컴포넌트명] 으로 정의합니다 컴포넌트명이 중복되는 경우 생성할 수 없습니다.

계정이 damda.user@lge.com이고 hellodamda라는 컴포넌트를 만들고 싶은 경우, com.damda.user.hellodamda 라고 컴포넌트 명을 입력합니다.

규칙에 맞지 않는 컴포넌트 명을 사용할 수도 있습니다. 다만, 이 경우 damda 시스템 내에 중복되는 이름이 존재해서, 컴포넌트가 정상적으로 생성되지 않을 수 있습니다.

위와 같은 형식으로 컴포넌트 명을 작성하시길 권장합니다.

설명 (필수)

어떤 컴포넌트인지 간략한 설명을 적어줍니다. 필수로 입력해야 합니다.

태그

컴포넌트의 기타 정보를 태그로 추가해서 관리할 수 있습니다. AppName 태그를 추가하는 경우, home에서 태그의 값으로 앱 이름이 보이게 됩니다. 태그 정보 입력 후 "+"를 눌러주어야 추가되니 주의해주세요.

코드 (필수)

zip파일로 올립니다. 이때 zip 파일명을 기준으로 실행스크립트 경로를 작성하게 됩니다.

app.py 실행 스크립트 예시
python {root}/zip파일명 app.py 

컴포넌트 버전을 추가할 때마다 zip파일을 다시 업로드 해주어야 합니다.

환경 변수

컴포넌트가 실행될 때 사용할 환경 변수를 정의합니다. 여기서 설정한 환경변수는 모든 lifecycle(초기 설정, 설치, 실행, 종료)에 적용됩니다. port, phase등 실행을 위해 필요한 configuration 정보를 환경 변수로 관리할 때 사용합니다.

실행 스크립트 (Life cycle 스크립트)

실행스크립트는 컴포넌트의 life cycle 별로 정의합니다. 초기 설정, 설치, 실행, 종료 4가지 종류가 있습니다.

다음과 같은 경우에 실행됩니다.

  • 컴포넌트가 코어 디바이스에 처음 배포 될 때

  • 컴포넌트의 버전이 바뀌었을때

  • 컴포넌트의 설정 업데이트로 bootstrap 스크립트가 바뀌었을때

  • GGC s/w가 재시작되거나 코어 디바이스가 재시작 될 때 실행

다음과 같은 항목을 포함할 수 있습니다.

  • Script: bootstrap에서 실행할 스크립트

  • RequiresPrivilege: root 권한으로 실행할지 여부 (default: false)

  • Skipif: 스크립트의 실행 여부를 판단

    • onpath runnable: runnable이 있으면 skip

    • exists file: file이 있으면 skip

  • Timeout: 스크립트 실행에 대한 타임아웃 (default: 120초)

  • Setenv: bootstrap에서만 사용할 환경변수

활용 예시

  • 컴포넌트 실행을 위해 필요한 apt install

다음과 같은 경우에 실행됩니다.

  • 컴포넌트를 설치할때 실행

  • GGC s/w가 실행 (launch)될 때 마다 실행

다음과 같은 항목을 포함할 수 있습니다.

  • Script: install에서 실행할 스크립트

  • RequiresPrivilege: root 권한으로 실행할지 여부 (default: false)

  • Skipif: 스크립트의 실행 여부를 판단

    • onpath runnable: runnable이 있으면 skip

    • exists file: file이 있으면 skip

  • Timeout: 스크립트 실행에 대한 타임아웃 (default: 120초)

  • Setenv: install에서만 사용할 환경변수

특징

  • 완료 시 컴포넌트 상태가 "INSTALLED"로 됨

활용 예시

  • pip3 install이나 컴포넌트 실행을 위해 필요한 configuration 준비

다음과 같은 경우에 실행됩니다.

  • 컴포넌트가 시작 될 때 실행

다음과 같은 항목을 포함할 수 있습니다.

  • Script: run에서 실행할 스크립트

  • RequiresPrivilege: root 권한으로 실행할지 여부 (default: false)

  • Skipif: 스크립트의 실행 여부를 판단

    • onpath runnable: runnable이 있으면 skip

    • exists file: file이 있으면 skip

  • Timeout: 스크립트 실행에 대한 타임아웃, 타임아웃이 없음

  • Setenv: run에서만 사용할 환경변수

특징

  • 스크립트 실행 중에는 "RUNNING"로 되고, 완료 시 컴포넌트 상태가 "FINISHED"로 됨

  • 타임아웃이 없음

  • Startup이나 Run 둘 중 하나만 사용할 수 있음

활용 예시

  • 타임아웃이 없기 때문에 서버를 띄우거나 호스팅을 할때 이 스크립트를 활용

  • 여러개 서버를 띄우거나 호스팅 할 경우 괄호()로 스크립트를 묶어주고 && 로 여러개 스크립트를 백그라운드(&)로 실행

다음과 같은 경우에 실행됩니다.

  • 컴포넌트를 내릴 때 실행 (shut down)

다음과 같은 항목을 포함할 수 있습니다.

  • Script: shutdown에서 실행할 스크립트

  • RequiresPrivilege: root 권한으로 실행할지 여부 (default: false)

  • Skipif: 스크립트의 실행 여부를 판단

    • onpath runnable: runnable이 있으면 skip

    • exists file: file이 있으면 skip

  • Timeout: 스크립트 실행에 대한 타임아웃 (default: 15초)

  • Setenv: shutdown에서만 사용할 환경변수

특징

  • 스크립트 실행 중에는 "STOPPING"로 됨

  • Startup에서 실행한 백그라운드 프로세스를 내릴때 사용

활용 예시

  • MySQL process 내리기 (/etc/init.d/mysqld stop)

Life cycle 상세 설정

각 life cycle 의 '작성' 버튼을 눌러 단계별 세부내용을 설정할 수 있습니다.

환경 변수

각 life cycle에서 사용될 환경변수를 정의합니다. 이 곳에 선언된 환경변수는, 정의된 life cycle에서만 유효합니다.

Script

Script 항목에서 '+'를 누르면 스크립트를 입력할 수 있는 칸이 생성됩니다. 여러 줄의 스크립트를 작성하고 싶은 경우, 칸을 추가하며 한 칸당 하나의 스크립트를 입력합니다. 이때 추가한 스크립트들은 컴포넌트 정보 창에서 아래와 같은 형태로 보여지게 됩니다.

(스크립트 1) && (스크립트 2) && (스크립트 3)

TroubleShooting

ValidationExcption 발생

코드 파일이 업로드 중인 경우 ValidationException 이 발생할 수 있습니다 잠시 기다렸다가 다시 저장버튼을 눌러주세요

"동일한 버전이 존재합니다" 혹 "NotOwnedComponentError" 에러 발생

컴포넌트 생성 시, 같은 이름을 가진 컴포넌트가 존재하는 경우 "동일한 버전이 존재합니다" 혹 "NotOwnedComponentError" 라는 에러가 발생 합니다.

기존에 만든 컴포넌트에 새로운 버전을 추가 할때도 버전을 잘 못입력하면 "동일한 버전이 존재합니다"라는 에러가 발생할 수 있습니다.

예시로 Debugging Console의 설치 스크립트는 아래와 같이 작성됩니다. 같은 내용을 Debugging Console의 상세화면에서 확인할 수 있습니다.

Damda Console