2017-01-15 5 views
3

Amazon 대시 버튼에서 버튼을 누르면 응답하는 Node.js 응용 프로그램과 함께 Raspberry Pi를 설정했습니다. 그것은 원래 https://github.com/initialstate/silent-doorbell에서 조용한 초인종으로되어 있었지만, 로컬 사운드 파일을 재생하고 싶습니다. 어느 정도는 쉬워야한다고 생각하지만, 코딩에 익숙하지 않아 인터넷을 통해 발견 할 수있는 새로운 것을 시도하고 있습니다.Node.js를 사용하여 RPi에서 로컬 파일 재생

나는 다음과 같이 터미널에서 파일을 재생할 수 있습니다 그것은 잘 재생 : 상관없이 나는 Node.js를 응용 프로그램 및 트리거에 넣어하려고 방법,

$ omxplayer example.mp3 

을하지만 할 때 대시 버튼 누르면 작동하지 않습니다. 제안 메이저 버전이 사이트 http://thisdavej.com/upgrading-to-more-recent-versions-of-node-js-on-the-raspberry-pi/에 방향을 Upgrade를 사용 @Quentin에 의해 최신 버전으로 Node.js를 업그레이드 한 후

/home/pi/node_modules/node-dash-button/doorbell.js:7 
let spawn = require('child_process').spawn; 
    ^^^^^ 
SyntaxError: Unexpected identifier 
    at exports.runInThisContext (vm.js:73:16) 
    at Module._compile (module.js:443:25) 
    at Object.Module._extensions..js (module.js:478:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Function.Module.runMain (module.js:501:10) 
    at startup (node.js:129:16) 
    at node.js:814:3 

: 위와 같이 내 최신 실행

var dash_button = require('node-dash-button'), 
    dash = dash_button('XX:XX:XX:XX:XX:XX'), //REPLACE WITH YOUR ADDRESS 
    exec = require('child_process').exec; 
    Omx = require('node-omxplayer'); 
    player = Omx('~/node_modules/node-dash-button/example.mp3'); 

let spawn = require('child_process').spawn; 

dash.on('detected', function() { 
    console.log('Button pushed!'); 
    player.play(); 
}); 

,이 얻을 나는 이것을 지나갈 수 있었다. 이제는 omxplayer를 올바르게 사용하는 방법을 배울 수 없습니다.

[email protected]:~/node_modules/node-dash-button $ sudo node doorbell.js 
Button pushed! 
/home/pi/node_modules/node-omxplayer/index.js:103 
         throw new Error('Player is closed.'); 
         ^

Error: Player is closed. 
    at writeStdin (/home/pi/node_modules/node-omxplayer/index.js:103:10) 
    at EventEmitter.Omx.omxplayer.play (/home/pi/node_modules/node-omxplayer/index.js:133:27) 
    at Readable.<anonymous> (/home/pi/node_modules/node-dash-button/doorbell.js:13:12) 
    at emitOne (events.js:96:13) 
    at Readable.emit (events.js:188:7) 
    at PcapSession.<anonymous> (/home/pi/node_modules/node-dash-button/index.js:87:28) 
    at emitOne (events.js:96:13) 
    at PcapSession.emit (events.js:188:7) 
    at PcapSession.on_packet_ready (/home/pi/node_modules/node-dash-button/node_modules/pcap/pcap.js:99:10) 
    at packet_ready (/home/pi/node_modules/node-dash-button/node_modules/pcap/pcap.js:44:14) 

내가 시도하고 플레이어를 얻을 수있는 몇 가지 다른 일을 시도 : 같은 코드를 실행하면 Node.js를 한 후 위와 같이하는 것은 지금 다음 응용 프로그램을 충돌 아마존 대시 버튼을 누른 후이 오류가 업그레이드 운이없는 산란. 참조 된 index.js 파일에서 player.running 명령을 사용하는 것에 대해 언급하고 있지만 사용하려고 시도 할 때 여전히 플레이어가 닫히는 오류가 발생합니다.

답변

0

4.x 시리즈보다 오래된 노드 버전을 사용 중입니다.

결과적으로 키워드가 아니라 식별자로 let이 표시되므로 다른 식별자 (spawn)가 바로 뒤에 오는 것은 아닙니다.

노드 설치를 현재 버전으로 업그레이드하십시오.


또는 다른 변수 선언 (예 : var)을 사용하십시오.

+0

네, 그게 문제였습니다. 고마워요. 나는 라스베리 파이 (Raspberry Pi)에서 사용 가능한 최신 버전을 사용하고 있다고 생각했습니다. 약간의 연구 끝에 나는 그것을 강제해야한다는 것을 깨달았다. 그래서이 사이트 http://tisdavej.com/upgrading-to-more-recent-versions-of-node-js-on-the-raspberry-pi/를 사용하여 메이저 버전 업그레이드에서 나는 최신 버전을 얻을 수있었습니다. 번역. 그 후에 나는 재건해야했고 현재의 문제는 해결되었습니다. 이제 omxplayer가 "Error : Player is closed." – Erik