色々と忘れてしまっている。
年末はいろいろあるね。そして仕事もプライベートも停滞気味・・・
よく、仕事と家庭と趣味の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 <<< EOD
AquesTalkのテスト
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 件のコメント:
コメントを投稿