webからの家電の遠隔操作をするためのプログラム

このQ&Aのポイント
  • ラズベリーパイを使用して外出先からエアコンなどの家電をON/OFFするためのプログラムを作成したい。
  • 赤外線を解析し、コマンドプロンプトでコマンドを入力することはできるが、スマホからHTMLファイルのボタンを押しても家電がONにならない。
  • HTML+PHPで作成したファイル内にあるボタンを押すと、プログラムが実行されてエアコンがONになる流れを作りたいが、プログラムの知識がないため手詰まりの状態である。
回答を見る
  • ベストアンサー

webからの家電の遠隔操作をするためのプログラム

ラズベリーパイという小型コンピュータを使って、エアコンなどを外出先からON/OFFしようしています。 赤外線を解析し、コマンドプロンプトでコマンドを入力し、ON/OFF出来る所まではできています。 (例) pi% irsend SEND_ONCE air on [上をコマンドプロンプトで入力・実行すればエアコンはONになります] スマホなどからラズベリーパイに置いたhtmlファイルにはアクセスできます。 しかし、そのhtml+PHPで作ったファイル内にあるボタンを押しても、エアコンがONになりません。 ボタンを押す→先ほどのコマンド実行→エアコンON のような流れを作っているのですが、プログラムの知識が全くないので完全に手詰まりの状態です。 ---以下はhtml内のプログラム--- <html> <head> <meta name="viewport" content="width=450"> </head> <body> <H1>weblirc</H1> <HR width="400px" align=left> <?php if( $_POST["air"] == "air on" ) { exec("irsend SEND_ONCE air on"); print "air on!"; } else if( $_POST["air"] == "air off") { exec("irsend SEND_ONCE air off"); print "air off!"; } ?> <form action="./usr/bin/irsend" method="post"> <input type="submit" value="air on" name="air" style="width:200px;height:80px"> <input type="submit" value="air off" name="air" style="width:200px;height:80px"> <HR width="400px" align=left> </form> </body> ---以上までがプログラム--- どの部分がおかしいのか、また必要な情報が足りないのであれば言ってください! できる限り今週中までには完成させたいと思っています。 ご助力のほどよろしくお願いいたします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.2

> とのことですが、実際にどうやって実行権を付加させるのでしょうか・・・? まず irsend ファイルの所有者・パーミッションを確認しましょう。 続いてhttpdの実行ユーザーを確認しましょう。 それぞれの状況に合わせて chmod コマンド等で適切なパーミッションを設定しましょう。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.1

httpdの実行ユーザーに irsend コマンドの実行権が無いとか。

eisen0502
質問者

補足

早速の回答ありがとうございます! >httpdの実行ユーザーに irsend コマンドの実行権が無い とのことですが、実際にどうやって実行権を付加させるのでしょうか・・・? UNIX系でOSはラズビアンです。 よろしくお願いいたします(ノД`)・゜・。

関連するQ&A

  • arduinoでエアコンを遠隔操作

    http://www.youtube.com/watch?v=hZYBxJElJKc のように外出先から自宅のエアコンを操作したいと考えています。 arduinoは今勉強中です。このようにするには、エアコンのON,OFFコマンドをネット経由で行っているようですが、このネット経由でコマンドを送る仕組みがわかりません。 どのようにすればこういう事が可能なのでしょうか?

  • $_POSTの内容をMySQLに保存するには?

    いつも大変お世話になり誠にありがとうございます。 度々申し訳ございません。 標記の件。 エラーメッセージは Parse error: syntax error, unexpected identifier "into", expecting ")" in C:\xampp\htdocs\kanryou.php on line 9 です。 コードは先ほども提示したように blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <form action="/kanryou.php" method=""> <input type="submit" value="送信する"> </form> </main> </body> kanryou.php <?php require_once(blog_create.php); try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $count = $db->exec(INSERT into blog (id,name,title ,category ,content,post_at) ($_POST["id"],$_POST["name"],$_POST["title"],$_POST["category"],$_POST["content"],$_POST["post_at"]){ echo 'DB接続エラー' . $e->getMessage(); } </main> </body> echo "送信完了です。ありがとうございました。"; ?> 本当に申し訳ありません どうか教えてください。 どこを直せばいいでしょうか? ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • フォームデータの受取り方

    お世話になっております。フォームデータの受取り方が判らず質問させて下さい。 少々長いのですが、以下はPHPで作ったファイルです。 (IDは重なってはならないと考え、変数で番号を与えて回避しています) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="EUC-JP" /> <title></title> <script type="text/javascript" src="/jquery/js/jquery.min.js"></script> </head> <body> <script> $(document).ready(function(){ $('#send1').click(function(){ var data = {comment : $('#comment1').val()}; $.ajax({ type: "POST", url: "send.php", data: data, success: function(data, dataType){ }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert('Error : ' + errorThrown); } }); return false; }); }); </script> <form method="post"> <INPUT type="hidden" name="comment_no" id="comment_no" value="1"><p><textarea name="comment1" id="comment1" style="width:400px; height:20px; padding:6px 5px; font-size:13px; overflow:hidden; vertical-align:text-bottom;" onkeyup="resize(this)"></textarea></p> <p><input id="send1" value="送信1" type="submit" /></p> </form> <hr> <script> $(document).ready(function(){ $('#send2').click(function(){ var data = {comment : $('#comment2').val()}; $.ajax({ type: "POST", url: "send.php", data: data, success: function(data, dataType){ }, error: function(XMLHttpRequest, textStatus, errorThrown){ alert('Error : ' + errorThrown); } }); return false; }); }); </script> <form method="post"> <INPUT type="hidden" name="comment_no" id="comment_no2" value="2"><p><textarea name="comment2" id="comment2" style="width:400px; height:20px; padding:6px 5px; font-size:13px; overflow:hidden; vertical-align:text-bottom;" onkeyup="resize(this)"></textarea></p> <p><input id="send2" value="送信2" type="submit" /></p> </form> </body> </html> ここで質問させて下さい。 上記フォームデータの受取り先である、send.phpは $comment = $_POST['comment']; としてテキストフォームの値を拾っているのですが、 hidden データの comment_no は、どのように値を拾ったらよろしいのでしょうか? 前回の質問同様、AJAXを触り初めて間もなく、googleで調べようにも適切なキーワードが判らずにいる次第です。 お忙しいなか恐縮ですが、アドバイスのほど頂戴出来たら幸いです。 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • 画像アップロード時の複数パターンのリサイズ

    皆さんのお知恵をお貸し下さい。 現在PHPでアップロードした画像を処理していますが、 これを複数パターンのサイズ変更が出来なくて悩んでいます。 1つのファイルで 【width 280px height 430px】 【width 240px height 320px】 【width 170px height 200】 【width 60px height 60px 】 お手数ですがご教授して頂けると幸いです。 ※汚いコードで申し訳ございません。 PHP:5.2.17  サーバー:さくらインターネット up.php ------------ <?php if($_POST['id'] === ""){ echo 'ID Error'; exit(); } if($_POST['name'] === ""){ echo 'Name Error'; exit(); } if($id = $_POST['id']){ preg_match("/^[0-9]+$/",$id) or die('ID Error'); } //写真アップロード処理    for ($i = 0; $i < 4; $i++) { if ( $_FILES["upfile"]["size"][$i] === 0 ) { $img_filename[$i] = "no_image.jpg"; } else { $file_nm = $_FILES['upfile']['name'][$i]; $filename = $_FILES['upfile']['name'][$i]; $extension = pathinfo($file_nm, PATHINFO_EXTENSION); $tmpFilename = $_FILES['upfile']['tmp_name'][$i]; $imgDir = 'img'; $thumbnailDir = 'thumbnail'; list($width,$height)=getimagesize($_FILES['upfile']['tmp_name'][$i]); //ファイル名 $img_filename[$i] = $_POST['cast_id']."_$i". "." . $extension; # ファイルを移動 $destFilename = $imgDir . "/" . $img_filename[$i]; move_uploaded_file($tmpFilename, $destFilename) or die("Failed to upload $filename"); #画像比率 $new_width = 100; $rate = $new_width / $width; $new_height = $rate * $height; # 次にファイルをリサイズしてサムネイル用のディレクトリに保存する $thumbnailFilename = $thumbnailDir . "/" . $img_filename[$i]; exec("convert -resize {$new_width}x{$new_height}! $destFilename $thumbnailFilename", $result, $status); ($status == 0) or die ("Failed to create thumbnail image"); } $photo[$i] = $img_filename[$i]; } ?> よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPのプログラム

    初心者でPHPのプログラムを組んでもレイアウトが崩れてしまいます。 どのようにすれば直るのでしょうか?詳しい方、どうかよろしくお願いします。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sugoweb</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="container"> <div id="header"> </div> <div id="topimg"> </div> <div id="left_navi"> <div id="menu"> <ul> <li><a href="index.html">XXXXX</a></li> <li><a href="grudge.html">当社のこだわり</a></li> <li><a href="question.html">Q&A</a></li> <li><a href="plan.html">PLAN</a></li> <li><a href="flow.html">FLOW</a></li> <li><a href="inquiry.php">問い合わせ</a></li> <li><a href="blog.html">ブログ</a></li> </ul> </div> </div> <div id="contents"> <form method="POST" action="inquiry_check.php"> <p class="form">氏名</p> <input type="text" name="name" size="40"><br> <p class="form">電話番号</p> <input type="text" name="tel" size="40"><br> <p class="form">Eメール</p> <input type="text" name="email" size="40"><br> <input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女 <textarea name="bikou" cols="50" rows="10"></textarea> <input type="submit" value="確認"> <input type="reset" value="リセット"> <form method="POST" action="inquiry_check.php"> </div> <div id="footer"> </div> </body> </html> CSS部分 *{margin:0; padding:0; } body { text-align:center; } #container{ width:900px; height:auto; margin:0 auto; text-align:left; } #header{ width:900px; height:90px; border:solid 1px gray; background-image:url("images/header/header_bg.jpg"); position:relative; } .inquiry_btn{ position:absolute; top:8px; left:660px; border:none; } .logo{ border:none; } #topimg{ width:900px; height:250px; } #left_navi{ width:180px; height:1000px; float:left; } #contents{ width:680px; float:right; padding-top:20px; padding-right:20px; } .right{ float:right; margin-left:15px; margin-bottom:20px; } .left{ float:left; margin-right:15px; margin-bottom:20px; } h2{ width:100%; border-left:solid 3px navy; border-bottom:solid 1px navy; padding-left:10px; font-size:18px; padding-bottom:3px; margin-bottom:30px; } h3{ width:100%; border-left:solid 3px navy; border-bottom:solid 1px navy; padding-left:10px; font-size:15px; padding-bottom:3px; margin-bottom:10px; margin-top:10px; } #footer{ width:900px; height:50px; border:solid 1px gray; clear:both; text-align: center; padding-top: 10px; } #footer ul{ list-style-image:url(images/listmark.gif); } #footer li{ display:inline; } #footer a{ display:inline; font-size:12px; padding:10px; text-decoration:none; color:#333; width:auto; } #footer a:hover{ color:red; } #contents p{ line-height:150%; letter-spacing:1px; font-size:13px; margin-bottom:70px; } dl.qa{ margin-bottom:20px; } dt.question{ font-size: 15px; margin-bottom:20px; font-weight:bold; border-left:solid 3px navy; border-bottom:solid 1px navy; padding-bottom:2px; padding-left:5px; } dd.answer{ margin-bottom:25px; } #menu ul{ margin; 0; padding: 0; list-style: none; } #menu li{ display: inline; padding: 0; margin: 0; } #menu a{ display: block; border-top: 1px solid #9F99A3; border-left: 5px solid blue; border-right: 1px solid #9F99A3; background-color: #EEEEEE; font-size: small; padding: 3px 10px; text-decoration: none; color: #333; width: 150px; margin: 0px; text-align: left; } #menu a:hover{ text-decoration: underline; border-top: 1px solid #8593A9; border-left: 5px solid gray; border-right: 1px solid #8593A9; background-color: pink; } #left_navi{ margin-top: 20px; } P.form{ margin-bottom:10px; }

    • ベストアンサー
    • PHP
  • php パラメータ

    新規登録として登録できたら別ウインドウに遷移せずそのままtopに戻し戻ってきたらデータが登録されているようにしたいですがなかなか出来ません 調べたら、exec関数を使えばできるとのことですが $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); こんな例がありましたが自分の力ではこのプログラムのどこを修正すればtop.phpに返ってくるかわかりません 下記は新規登録を行うための入力フォームです 登録するボタンを押したらそのままtopに移動したいのですがいまはinsert.phpに飛んでしまいます regist.php <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <a href="http://localhost/top.php"> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"></A> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 下記はinsert.phpです <!--insert.php 登録完了--> <html> <body> <blockquote> <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '') { $id = mysqli_real_escape_string($con, $_POST['ID']); $name = mysqli_real_escape_string($con, $_POST['NAME']); $addr = mysqli_real_escape_string($con, $_POST['ADDR']); $sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "登録完了しました"; } else { echo "<br><br>データが未入力の箇所があります。すべてデータを入力してください"; } mysqli_close($con); $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); ?> <br><br><br> <a href="http://localhost/regist.php"> <INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> <br><br><br> <A HREF="http://localhost/top.php"> <INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> </blockquote> </body> </html> どこを直せばいいですか? 本格的に直さないとできないですか?

    • ベストアンサー
    • PHP
  • safariだけ、cssが効きません!

    こんばんは。css入門者です。 Firefoxなどは大丈夫なのですが、safariだけ、 .staffのmargin-bottom:20px;が効きません。 どこが間違ってるのかわからず、困っています。 どうぞよろしくお願いいたします。 <div class="staff"> <p class="staff_name"><img src="img/name_shige.gif" width="107" height="85" alt="ああ)" /></p><br /> <p class="staff_word">いいいいいい</p> <div class="clearfix"><hr /></div> </div><!-- staff end --> ------------------------ .staff { width:670px; margin-bottom:20px; background-color:#d1ece6; line-height:150%; } .staff_name { float:left; margin:0px; } .staff_word { background-color:#FFF; margin:0px 20px 20px 107px; padding:7px; }

    • 締切済み
    • CSS
  • WEBアンケート

    WEBで簡単なアンケートを取ろうと思い、form を書いたのですが、一部、思ったようになりません。 お知恵をお貸しください。 希望するメール本文は、 Q1の回答, Q2aのチェック状況, Q2aの自由記述、Q2bのチェック状況,Q2cのチェック状況, Q2cの自由記述、Q2dのチェック状況 というカンマで区切られた回答一覧なのですが、 Q1に関しては希望した動作になりますが、Q2が、チェックを入れても入れなくても、チェック状況はa,b,c,d が帰ってきます。 チェックをしないとき、該当項目が空欄になる、あるいは別の文字になるようにする方法、教えてください。 <html> <body> <form onsubmit="return sendmail(this)"> <b>Q1</b> <br> <select name="Q1"> <option selected value="3">改善された</option> <option value="2">変わらない</option> <option value="1">改悪された</option> <option value="0">わからない</option> </select><br> <br> <b>Q2</b> <br> <input type="checkbox" value="a" name="Q2"> 項目 <input style="HEIGHT: 20px; WIDTH: 271px" size="25" name="Q4a1">が欠如している<br> <input type="checkbox" value="b" name="Q2"> 必要十分である<br> <input type="checkbox" value="c" name="Q2"> 不要な項目 <input style="HEIGHT: 20px; WIDTH: 326px" size="24" name="Q4c1">がある<br> <input type="checkbox" value="d" name="Q2"> わからない<br> <br> <br> <input style="HEIGHT: 53px; WIDTH: 109px" size="13" type="submit" value="メール作成" name="send"> <script type="text/javascript"> F=document.getElementsByTagName('form')[0]; function sendmail(F){ title = [ 'アンケート回答' ].join('%20'); cmnd = [ F.elements[0].value,",", F.elements[1].value,",", F.elements[2].value,",", F.elements[3].value,",", F.elements[4].value,",", F.elements[5].value,",", F.elements[6].value ].join('%20'); location.href="mailto:hoge@hoge?subject=" + title + "&body=" + cmnd; return false; } </script></form>

    • ベストアンサー
    • HTML
  • php $_SESSIONでデータが残らない。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? 今度はCSSなども書きます。 どうぞよろしくお願い致します。 記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ブログ</title> <meta name="description" content="このWebサイトは、初めてHTMLで作るブログページです。"> <link rel="stylesheet" href="./css/style.css"> <style> body{ width: 100%; max-width: 800px; margin-top: auto; margin-left: auto; margin-right: auto; background-color: rgb(71, 133, 157); padding: 10px; text-align: center; } div{ background-color: rgb(247, 248, 245); padding: 2em; } script{ margin-top: 12em; } p { margin-left: 2em; text-align: left; font-size: 25px; font-weight: bold; color: rgb(10, 10, 10); } form { font-size: 25px; font-weight: bold; color: blue; } input { font-size: 25px; margin:auto; } </style> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • エアコンとリモコンの奇妙な関係

    20年近くになる天井埋め込み型エアコンについての質問です。パナソニック製です。 オリジナルのリモコンが壊れたのでオーム社のエアコン用学習リモコン(0AR-10HR)を買いました。 このリモコンの運転ボタンでエアコンをオンにするとリモコンには稼働状態を示す表示が出ます。オフにすると表示が消えます。ここまでは不都合ありません。しかし私はエアコンを設定時間でオフになるようにしています。おそらくその設定はエアコン本体に記録されていると思います。 するとリモコンでオンにしたのに「リモコンは使わないで」オフになります。当然リモコンは表示が出たままです。リモコンでエアコンをオンにしようとして運転ボタンを押すとオフになるのです。 仕方ないので部屋の外でリモコンを「空撃ち(笑)」して運転ボタンを押す毎日です(笑) 以上のように大変不便な思いをしてエアコンを使っています。何かいい方法はありませんか?