上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/RaspberryPi/WEBリモコン/WEBアクセスでリモコン
をテンプレートにして作成
資料室
PC/RaspberryPi/WEBリモコン/WEBアクセスでリモコン をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
* WEBアクセスでリモコン
[[リモコン信号を送受信出来るようになった>../学習リモコン...
** apacheを入れる
HTTPプロトコルを使ってリモコン操作するため,WEBサーバーソ...
# apt-get install apache2 php7.0
として,apacheとphp7(Rasbian StretchだとPHP5はパッケージ...
''/etc/apache2/apache2.conf''を編集する。
<Directory /var/www/>
:
Allow from All
:
</Directory>
''/etc/apache2/ports.conf''を編集する。
Listen xxxx
<IfModule ssl_module>
Listen yyyy
</IfModule>
<IfModule mod_gnutls.c>
Listen yyyyy
</IfModule>
と,使用するポートを変更した。
apacheを再起動する。
# systemctl status apache2.service
** インターネットからアクセスできるようにする
ルータでアドレス変換(静的IPマスカレード)して,Raspberry...
** リモコン信号をWEBからアクセスできるようにする
POSTリクエストからリモコン送信する内容を取り出して,リモ...
POSTリクエストからリモコン内容を取り出して,送信するコマ...
後で[[IFTTT>https://ifttt.com/]]を使ってGoogle Home mini...
''remokon.php''
<?php
include (dirname(__FILE__)."/controller.php");
$json_string = file_get_contents('php://input');
//$filename = "input.txt";
//file_put_contents($filename, $json_string, FILE_APPEN...
$json = json_decode($json_string);
$exp = $json->{"exp"};
$message_tmp = $json->{"message"};
$message = str_replace(array(" ", " "), "", $message_t...
//shell_exec("echo $exp $message > test1.txt");
if ($exp == 'TV' || $exp == 'AIRCON') {
switch ($message) {
case 'オン':
case '電源オン':
case 'の電源オン':
case 'をオン':
case 'オフ':
case '電源オフ':
case 'の電源オフ':
case 'つけて':
case 'をオフ':
case 'をつける':
case 'をつけて':
case 'を消す':
case 'を消して':
case '消して':
case '音':
$mes = "power";
break;
case 'ボリュームアップ':
case '音アップ':
case '音上げる':
case '音量アップ':
case 'の音量アップ':
case '音上げて':
case 'の音上げて':
$mes = 'volup';
break;
case 'ボリュームダウン':
case 'ボリューム ダウン':
case '音ダウン':
case '音下げる':
case '音量ダウン':
case 'の音量ダウン':
case '音下げて':
case 'の音下げて':
$mes = 'voldown';
break;
case 'チャンネルアップ':
case 'チャンネル進める':
$mes = 'chup';
break;
case 'チャンネルダウン':
case 'チャンネル戻す':
$mes = 'chdown';
break;
case 'いち':
case 'イチ':
case '1':
$mes = '1';
break;
case 'に':
case 'ニ':
case '2':
$mes = '2';
break;
case 'さん':
case 'サン':
case '3':
$mes = '3';
break;
case 'よん':
case 'ヨン':
case '4':
$mes = '4';
break;
case 'ご':
case 'ゴ':
case '5':
$mes = '5';
break;
case 'ろく':
case 'ロク':
case '6':
$mes = '6';
break;
case 'なな':
case 'ナナ':
case '7':
$mes = '7';
break;
case 'はち':
case 'ハチ':
case '8':
$mes = '8';
break;
case 'きゅう':
case 'キュウ':
case '9':
$mes = '9';
break;
case 'じゅう':
case 'ジュウ':
case '10':
$mes = '10';
break;
case 'じゅういち':
case 'ジュウイチ':
case '11':
$mes = '11';
break;
case 'じゅうに':
case 'ジュウニ':
case '12':
$mes = '12';
break;
case 'びーえすいち':
case 'BS 1':
$mes = 'bs1';
break;
case 'びーえすに':
case 'BS 2':
$mes = 'bs2';
break;
case 'びーえすさん':
case 'BS 3':
$mes = 'bs3';
break;
case 'びーえすよん':
case 'BS 4':
$mes = 'bs4';
break;
case 'びーえすご':
case 'BS 5':
$mes = 'bs5';
break;
case 'びーえすろく':
case 'BS 6':
$mes = 'bs6';
break;
case 'びーえすなな':
case 'BS 7':
$mes = 'bs7';
break;
case 'びーえすはち':
case 'BS 8':
$mes = 'bs8';
break;
case 'びーえすきゅう':
case 'BS 9':
$mes = 'bs9';
break;
case 'びーえすじゅう':
case 'BS 10':
$mes = 'bs10';
break;
case 'びーえすじゅういち':
case 'BS 11':
$mes = 'bs11';
break;
case 'びーえすじゅうに':
case 'BS 12':
$mes = 'bs12';
break;
case 'にゅうりょくぷらす':
case 'ニュウリョクプラス':
case '入力進む':
case '入力プラス':
case '入力+':
case '入力':
case 'INPUT+':
$mes = 'input+';
break;
case 'にゅうりょくまいなす':
case 'ニュウリョクマイナス':
case '入力マイナス':
case '入力戻す':
case '入力-':
case 'INPUT-':
$mes = 'input-';
break;
case 'えんたー':
case 'エンター':
$mes = 'enter';
break;
case 'もどる':
case '戻る':
$mes = 'return';
break;
case 'いぐじっと':
case 'イグジット':
case '終了':
$mes = 'exit';
break;
case 'みぎ':
case '右':
$mes = 'right';
break;
case 'ひだり':
case '左':
$mes = 'leftt';
break;
case 'うえ':
case '上':
case 'UP':
$mes = 'up';
break;
case 'した':
case '下':
case 'DOWN':
$mes = 'down';
break;
case 'さいせい':
case '再生':
case 'を再生':
case 'PLAY':
$mes = 'play';
break;
case 'ていし':
case '停止':
case 'を停止':
case 'STOP':
$mes = 'stop';
break;
case 'まきもどし':
case '巻き戻し':
$mes = 'back';
break;
case 'はやおくり':
case '早送り':
$mes = 'forwd';
break;
case 'みぎすきっぷ':
case '右スキップ':
$mes = 'rskip';
break;
case 'ひだりすきっぷ':
case '左スキップ':
$mes = 'lskip';
break;
case 'みゅーと':
case 'ミュート':
case '消音':
$mes = 'mute';
break;
case 'ひょうじ':
case '表示':
$mes = 'display';
break;
case 'くいっく':
case 'クイック':
$mes = 'quick';
break;
case 'ばんぐみひょう':
case '番組表':
case '番組':
$mes = 'epg';
break;
case 'れぐざりんく':
case 'レグザリンク':
case 'リンク':
$mes = 'link';
break;
case '空清':
case 'クウセイ':
$mes = 'kuusei';
break;
case '除湿':
$mes = 'dry';
break;
case '運転切替':
case 'モード':
$mes = 'mode';
break;
default:
$mes = 'none';
break;
}
}
if ($exp == 'PanaFan') {
switch ($message) {
case 'オン':
case '電源オン':
case 'の電源オン':
case 'をオン':
case 'オフ':
case '電源オフ':
case 'の電源オフ':
case 'つけて':
case 'をオフ':
case 'をつける':
case 'をつけて':
case 'を消す':
case 'を消して':
case '消して':
case 'けして':
case '音':
$mes = 'power';
break;
case 'アップ':
case '上げる':
case '上げて':
case 'あげて':
case 'を上げて':
case '風量アップ':
case '風量上げて':
case '強く':
case 'を強く':
case 'を強くして':
$mes = 'plus';
break;
case 'ダウン':
case '下げる':
case '下げて':
case 'さげる':
case 'さげて':
case 'を下げて':
case '風量ダウン':
case '風量下げて':
case '弱く':
case 'を弱く':
case 'を弱くして':
$mes = 'minus';
break;
case 'ナノイ':
case 'ナノイー':
case 'なのい':
$mes = 'nanoi';
break;
case 'ゆらぎ':
case 'ユラギ':
$mes = 'yuragi';
break;
case '縦':
case 'たて':
case 'タテ':
case '縦振り':
case '縦フリ':
case 'タテフリ':
$mes = 'tate';
break;
case '横':
case 'よこ':
case 'ヨコ':
case '横振り':
case '横フリ':
case 'ヨコフリ':
$mes = 'yoko';
break;
case 'タイマーオン':
$mes = 'timeron';
break;
case 'タイマーオフ':
$mes = 'timeroff';
break;
case '控えめ':
case 'ヒカエメ':
$mes = 'hikaeme';
break;
case 'センサー':
case 'せんさー':
case 'sensor':
$mes = 'sensor';
break;
default:
$mes = 'none';
break;
}
}
if ($exp == 'SPEECH') {
$mes = $message;
}
//shell_exec("echo $exp $mes > test.txt");
$controller = new Controller();
$controller->sendMessage($exp,$mes);
?>
''controller.php''
<?php
class Controller{
public function sendMessage($exp,$message){
switch ($exp) {
case 'TV':
case 'AIRCON':
case 'PanaFan':
$command = "irsend -#3 SEND_ONCE " . $exp . " " . $...
shell_exec($command);
break;
default:
break;
}
}
}
?>
実際には,トークンなんかをやり取りした方が良いかも。
//リモコンには必要ないが,リモコン以外に,部屋の温度・湿...
Kernel 4.19以降を使っている場合は,irsendコマンドに-#3を...
** WEBインターフェースを使ってリモコン信号を送信
curlを使ってPOSTでリモコンデータを送信してみる。
$ curl -X POST -H "Content-Type: application/json" -d '{...
うまくテレビが反応した。
終了行:
* WEBアクセスでリモコン
[[リモコン信号を送受信出来るようになった>../学習リモコン...
** apacheを入れる
HTTPプロトコルを使ってリモコン操作するため,WEBサーバーソ...
# apt-get install apache2 php7.0
として,apacheとphp7(Rasbian StretchだとPHP5はパッケージ...
''/etc/apache2/apache2.conf''を編集する。
<Directory /var/www/>
:
Allow from All
:
</Directory>
''/etc/apache2/ports.conf''を編集する。
Listen xxxx
<IfModule ssl_module>
Listen yyyy
</IfModule>
<IfModule mod_gnutls.c>
Listen yyyyy
</IfModule>
と,使用するポートを変更した。
apacheを再起動する。
# systemctl status apache2.service
** インターネットからアクセスできるようにする
ルータでアドレス変換(静的IPマスカレード)して,Raspberry...
** リモコン信号をWEBからアクセスできるようにする
POSTリクエストからリモコン送信する内容を取り出して,リモ...
POSTリクエストからリモコン内容を取り出して,送信するコマ...
後で[[IFTTT>https://ifttt.com/]]を使ってGoogle Home mini...
''remokon.php''
<?php
include (dirname(__FILE__)."/controller.php");
$json_string = file_get_contents('php://input');
//$filename = "input.txt";
//file_put_contents($filename, $json_string, FILE_APPEN...
$json = json_decode($json_string);
$exp = $json->{"exp"};
$message_tmp = $json->{"message"};
$message = str_replace(array(" ", " "), "", $message_t...
//shell_exec("echo $exp $message > test1.txt");
if ($exp == 'TV' || $exp == 'AIRCON') {
switch ($message) {
case 'オン':
case '電源オン':
case 'の電源オン':
case 'をオン':
case 'オフ':
case '電源オフ':
case 'の電源オフ':
case 'つけて':
case 'をオフ':
case 'をつける':
case 'をつけて':
case 'を消す':
case 'を消して':
case '消して':
case '音':
$mes = "power";
break;
case 'ボリュームアップ':
case '音アップ':
case '音上げる':
case '音量アップ':
case 'の音量アップ':
case '音上げて':
case 'の音上げて':
$mes = 'volup';
break;
case 'ボリュームダウン':
case 'ボリューム ダウン':
case '音ダウン':
case '音下げる':
case '音量ダウン':
case 'の音量ダウン':
case '音下げて':
case 'の音下げて':
$mes = 'voldown';
break;
case 'チャンネルアップ':
case 'チャンネル進める':
$mes = 'chup';
break;
case 'チャンネルダウン':
case 'チャンネル戻す':
$mes = 'chdown';
break;
case 'いち':
case 'イチ':
case '1':
$mes = '1';
break;
case 'に':
case 'ニ':
case '2':
$mes = '2';
break;
case 'さん':
case 'サン':
case '3':
$mes = '3';
break;
case 'よん':
case 'ヨン':
case '4':
$mes = '4';
break;
case 'ご':
case 'ゴ':
case '5':
$mes = '5';
break;
case 'ろく':
case 'ロク':
case '6':
$mes = '6';
break;
case 'なな':
case 'ナナ':
case '7':
$mes = '7';
break;
case 'はち':
case 'ハチ':
case '8':
$mes = '8';
break;
case 'きゅう':
case 'キュウ':
case '9':
$mes = '9';
break;
case 'じゅう':
case 'ジュウ':
case '10':
$mes = '10';
break;
case 'じゅういち':
case 'ジュウイチ':
case '11':
$mes = '11';
break;
case 'じゅうに':
case 'ジュウニ':
case '12':
$mes = '12';
break;
case 'びーえすいち':
case 'BS 1':
$mes = 'bs1';
break;
case 'びーえすに':
case 'BS 2':
$mes = 'bs2';
break;
case 'びーえすさん':
case 'BS 3':
$mes = 'bs3';
break;
case 'びーえすよん':
case 'BS 4':
$mes = 'bs4';
break;
case 'びーえすご':
case 'BS 5':
$mes = 'bs5';
break;
case 'びーえすろく':
case 'BS 6':
$mes = 'bs6';
break;
case 'びーえすなな':
case 'BS 7':
$mes = 'bs7';
break;
case 'びーえすはち':
case 'BS 8':
$mes = 'bs8';
break;
case 'びーえすきゅう':
case 'BS 9':
$mes = 'bs9';
break;
case 'びーえすじゅう':
case 'BS 10':
$mes = 'bs10';
break;
case 'びーえすじゅういち':
case 'BS 11':
$mes = 'bs11';
break;
case 'びーえすじゅうに':
case 'BS 12':
$mes = 'bs12';
break;
case 'にゅうりょくぷらす':
case 'ニュウリョクプラス':
case '入力進む':
case '入力プラス':
case '入力+':
case '入力':
case 'INPUT+':
$mes = 'input+';
break;
case 'にゅうりょくまいなす':
case 'ニュウリョクマイナス':
case '入力マイナス':
case '入力戻す':
case '入力-':
case 'INPUT-':
$mes = 'input-';
break;
case 'えんたー':
case 'エンター':
$mes = 'enter';
break;
case 'もどる':
case '戻る':
$mes = 'return';
break;
case 'いぐじっと':
case 'イグジット':
case '終了':
$mes = 'exit';
break;
case 'みぎ':
case '右':
$mes = 'right';
break;
case 'ひだり':
case '左':
$mes = 'leftt';
break;
case 'うえ':
case '上':
case 'UP':
$mes = 'up';
break;
case 'した':
case '下':
case 'DOWN':
$mes = 'down';
break;
case 'さいせい':
case '再生':
case 'を再生':
case 'PLAY':
$mes = 'play';
break;
case 'ていし':
case '停止':
case 'を停止':
case 'STOP':
$mes = 'stop';
break;
case 'まきもどし':
case '巻き戻し':
$mes = 'back';
break;
case 'はやおくり':
case '早送り':
$mes = 'forwd';
break;
case 'みぎすきっぷ':
case '右スキップ':
$mes = 'rskip';
break;
case 'ひだりすきっぷ':
case '左スキップ':
$mes = 'lskip';
break;
case 'みゅーと':
case 'ミュート':
case '消音':
$mes = 'mute';
break;
case 'ひょうじ':
case '表示':
$mes = 'display';
break;
case 'くいっく':
case 'クイック':
$mes = 'quick';
break;
case 'ばんぐみひょう':
case '番組表':
case '番組':
$mes = 'epg';
break;
case 'れぐざりんく':
case 'レグザリンク':
case 'リンク':
$mes = 'link';
break;
case '空清':
case 'クウセイ':
$mes = 'kuusei';
break;
case '除湿':
$mes = 'dry';
break;
case '運転切替':
case 'モード':
$mes = 'mode';
break;
default:
$mes = 'none';
break;
}
}
if ($exp == 'PanaFan') {
switch ($message) {
case 'オン':
case '電源オン':
case 'の電源オン':
case 'をオン':
case 'オフ':
case '電源オフ':
case 'の電源オフ':
case 'つけて':
case 'をオフ':
case 'をつける':
case 'をつけて':
case 'を消す':
case 'を消して':
case '消して':
case 'けして':
case '音':
$mes = 'power';
break;
case 'アップ':
case '上げる':
case '上げて':
case 'あげて':
case 'を上げて':
case '風量アップ':
case '風量上げて':
case '強く':
case 'を強く':
case 'を強くして':
$mes = 'plus';
break;
case 'ダウン':
case '下げる':
case '下げて':
case 'さげる':
case 'さげて':
case 'を下げて':
case '風量ダウン':
case '風量下げて':
case '弱く':
case 'を弱く':
case 'を弱くして':
$mes = 'minus';
break;
case 'ナノイ':
case 'ナノイー':
case 'なのい':
$mes = 'nanoi';
break;
case 'ゆらぎ':
case 'ユラギ':
$mes = 'yuragi';
break;
case '縦':
case 'たて':
case 'タテ':
case '縦振り':
case '縦フリ':
case 'タテフリ':
$mes = 'tate';
break;
case '横':
case 'よこ':
case 'ヨコ':
case '横振り':
case '横フリ':
case 'ヨコフリ':
$mes = 'yoko';
break;
case 'タイマーオン':
$mes = 'timeron';
break;
case 'タイマーオフ':
$mes = 'timeroff';
break;
case '控えめ':
case 'ヒカエメ':
$mes = 'hikaeme';
break;
case 'センサー':
case 'せんさー':
case 'sensor':
$mes = 'sensor';
break;
default:
$mes = 'none';
break;
}
}
if ($exp == 'SPEECH') {
$mes = $message;
}
//shell_exec("echo $exp $mes > test.txt");
$controller = new Controller();
$controller->sendMessage($exp,$mes);
?>
''controller.php''
<?php
class Controller{
public function sendMessage($exp,$message){
switch ($exp) {
case 'TV':
case 'AIRCON':
case 'PanaFan':
$command = "irsend -#3 SEND_ONCE " . $exp . " " . $...
shell_exec($command);
break;
default:
break;
}
}
}
?>
実際には,トークンなんかをやり取りした方が良いかも。
//リモコンには必要ないが,リモコン以外に,部屋の温度・湿...
Kernel 4.19以降を使っている場合は,irsendコマンドに-#3を...
** WEBインターフェースを使ってリモコン信号を送信
curlを使ってPOSTでリモコンデータを送信してみる。
$ curl -X POST -H "Content-Type: application/json" -d '{...
うまくテレビが反応した。
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ