色々と忘れてしまっている。
年末はいろいろあるね。そして仕事もプライベートも停滞気味・・・
よく、仕事と家庭と趣味の3本柱で、どれか1つでも充実していれば、
やっていけるというけれど、なんとかならないかな。
と、現実逃避なのだけど、最近Mysql+PHP+Javascriptの構成で遊んでいる。
直接仕事には関係ないけど、いつか役立つ日が来るはず。
今日やることは、WEB経由でRasPiを喋らせること
node.jsとphpでそれぞれやってみた。
node.js
ar http = require('http'); http.createServer( function(req,res){ res.writeHead(200,{'Content-Type':'text/html'}); res.end('Raspberry Pi & Node.js'); } ).listen(8000); ---------------------------------------------------- var http = require('http'); var fs = require('fs'); var url = require('url'); var exec = require("child_process").exec; var server = http.createServer(); server.on('request', doRequest); server.listen(8000); console.log('Server running!'); var cmd = "echo 'ウェブサーバーを起動しました。' | ./aquestalkpi/AquesTalkPi -v f1 -f - | aplay"; exec( cmd, function(err, stdout, stderr) {} ); // リクエストの処理 function doRequest(req, res) { fs.readFile('./hello.html', 'UTF-8', function(err, data) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); res.end(); }); if(req.method=='GET') { var url_parts = url.parse(req.url,true); console.log(url_parts.query); if('talk' in url_parts.query){ cmd = "echo '要求" + url_parts.query['talk']+"' | ./aquestalkpi/AquesTalkPi -v f1 -f - | aplay"; exec( cmd, function(err, stdout, stderr) {} ); } } } ----------------------------------------------------sample Sample Page
これはNode.jsのサンプルページです。
php
/dev/null &'); }else{ exec('echo '.$s_talk.' | /home/pi/aquestalkpi/AquesTalkPi -v -f1 -f - | aplay > /dev/null &'); } echo <<< EODAquesTalkのテスト WebからRaspiを喋らせる
WebからAquesTalkPiを制御するサンプル。EOD; ?>
やっていて困ったこと、phpで外部プログラムを実行しようとしたら、
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:682: audio open error: No such file or directory
とエラーが出てしまった。
どうやらapacheの権限では、aplayを実行できないような気がする。
そこで、apacheの実行ユーザーを一般ユーザー(pi)に変えてみた
(参考)http://j-caw.co.jp/blog/?p=1407
/etc/apache2/envvars の
export APACHE_RUN_USER=www-data これをpiに変更
これで動いた!
0 件のコメント:
コメントを投稿