node-red-contrib-alexa-home-skill 설치 [On Onion Omega2+]



요 전날 Onion Omega2 Plus에서 Node-Red를 설치
그 후, 이 환경에 「 node-red-contrib-alexa-home-skill 」를 인스톨 했으므로, 기록으로서 남겨 둡니다.
또한 npm 명령으로 설치할 때 Out Of Memory가 발생했지만 구그를 피할 수있었습니다.

0. 전제 조건


  • Onion Omega2 Plus
  • BusyBox v1.26.2
  • Ω-ware: 0.1.10 b160 (표준 리포지토리의 2018/06/24 현재 최신 버전)
  • Linux 4.4.46 mipsel LE

  • 2GB Micro-SD Card
  • 파티션 2 분할
  • 512MB = 스왑 용, 나머지 = 시스템 영역 확장 용


  • Omega2 확장 도크
  • Node.js version: v4.3.1
  • Node-RED version: v0.18.4
  • Onion OS (이 작업은 중요하지 않지만 이번에는 설치됨)

  • 1. 설치



    일반적으로 (?)는 Node-Red의 [설정] → [팔레트] → [노드 추가]에서 node-red-contrib-alexa-home-skill을 검색하여 설치하면 되지만 설치할 수 없습니다. 이었다.
    그래서 npm 명령으로 설치를 시도했지만 다음과 같이 Out Of Memory가 발생했습니다. 아무래도 46.5MB의 한계에 도달했기 때문에 오류가있는 것 같습니다.

    오류 로그
    root@Omega-xxxx:~/.node-red# npm install node-red-contrib-alexa-home-skill
    npm WARN package.json [email protected] No repository field.
    npm WARN package.json [email protected] No README data
    npm WARN package.json [email protected] No license field.
    /
    <--- Last few GCs --->
    
      365719 ms: Scavenge 26.6 (46.5) -> 26.6 (46.5) MB, 3.5 / 0 ms (+ 34.1 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep].
      366991 ms: Mark-sweep 26.6 (46.5) -> 26.4 (46.5) MB, 1272.0 / 0 ms (+ 34.1 ms in 1 steps since start of marking, biggest step 34.1 ms) [last resort gc].
      368264 ms: Mark-sweep 26.4 (46.5) -> 26.4 (46.5) MB, 1272.7 / 0 ms [last resort gc].
    
    
    <--- JS stacktrace --->
    
    ==== JS stack trace =========================================
    
    Security context: 0x27f24d59 <JS Object>
        2: resolve [url.js:426] [pc=0x274eb098] (this=0x775f4461 <an Url with map 0x3bd36e65>,relative=0x27f088a9 <String[1]: .>)
        3: resolve(aka urlResolve) [url.js:422] [pc=0x274eadf8] (this=0x490181e9 <an Object with map 0x3bd6bec5>,source=0x775f449d <String[21]: //registry.npmjs.org/>,relative=0x27f088a9 <String[1]: .>)
        4: toNerfDart(aka toNerfDart) [/usr/lib/node_modules/npm/lib/config/nerf...
    
    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
    Aborted
    

    Google에서 검색한 결과 다음 기사를 찾을 수 있었습니다.

    npm install - javascript heap out of memory


    이 기사에서는, --max_old_space_size 옵션으로, npm install시의 메모리 할당을 변경할 수 있다고 설명했습니다.
    그래서 실제로 다음 명령으로 실행해 보았습니다.

    콘솔
    root@Omega-xxxx:~# cd ~/.node-red
    root@Omega-xxxx:~/.node-red# node --max_old_space_size=512 $(which npm) install node-red-contrib-alexa-home-skill
    

    실행 결과는 다음과 같이 성공합니다.
    node-red-contrib-alexa-home-skill을 설치할 수 있었습니다.
    나는 512MB 할당했지만, top 명령으로 이용 메모리량을 보고 있던 느낌, 최대 100MB 정도였으므로, 128MB에서도 괜찮다고 생각합니다.

    실행 결과
    root@Omega-xxxx:~/.node-red# node --max_old_space_size=512 $(which npm) install node-red-contrib-alexa-home-skill
    npm WARN package.json [email protected] No repository field.
    npm WARN package.json [email protected] No README data
    npm WARN package.json [email protected] No license field.
    [email protected] node_modules/node-red-contrib-alexa-home-skill
    tqq [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
    tqq [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
    mqq [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
    

    2. 확인



    Node-Red에 연결하여 Alexa 노드가 있는지 확인합니다.
    제대로, Alexa 노드가 확인할 수 있었습니다.


    다음 번에는 플로우 작성 절차로 진행하고 싶습니다.
    ※전회의 기사에서 node-red-contrib-alexa-local 를 인스톨이라고 기재했습니다만, node-red-contrib-alexa-local 는, ON/OFF 제어만을 서포트라고 하는 것으로, 보다 세세한 제어가 가능 node-red-contrib-alexa-home-skill 했습니다. 그건 그렇고, node-red-contrib-alexa-local은 Node-Red 설정 화면에서 설치할 수있었습니다.

    이상

    좋은 웹페이지 즐겨찾기