ajaxを使用してgpio変数を表示および変更するために、webiopi RESTful apiを使用したいと考えています。
使用できる php 関数がありますが、javascript (ajax?) を使用してそれを呼び出すことをやめられないか、これはベスト プラクティスではありません。
APIの例。
GPIO 関数を設定
HTTP POST /GPIO/(gpioNumber)/function/("in" or "out" or "pwm")
新しい設定を返します: "in" or "out" or "pwm"
例:
GPIO 0 を入力として設定するには: HTTP POST /GPIO/0/function/in
GPIO 1 を出力に設定する場合 : HTTP POST /GPIO/1/function/outGPIO 値を取得
する HTTP GET /GPIO/(gpioNumber)/value
0 または 1 を返す
例:
GPIO 0 値を取得する場合: HTTP GET /GPIO/0/value
そしてphp関数
function WebIOPi($path, $method) {
$url = 'http://192.168.1.170'.$path;
// Open Connection
$ch = curl_init();
// set the url, user/pass, port
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, 'webiopi:raspberry');
curl_setopt($ch, CURLOPT_PORT, 8000);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// Execute POST
$result = curl_exec($ch);
// Close Connection
curl_close($ch);
return $result;
}
どうにかしてデータの配列を作成し、ピンを制御するボタンを含むフォームを作成することもできると思います。各ボタンなどに対して行うのではなく.
編集*
これは私が提案を使用して試したものですが、まだ残りのサーバーと通信できません。どこが間違っていますか。
<?php //goes here
function WebIOPi($path, $method) {
$url = 'http://192.168.0.17'.$path;
// Open Connection
$ch = curl_init();
// set the url, user/pass, port
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, 'webiopi:pass');
curl_setopt($ch, CURLOPT_PORT, 8000);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// Execute POST
$result = curl_exec($ch);
// Close Connection
curl_close($ch);
return $result;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Page Title</title>
<link rel="stylesheet" href="css/style.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
</head>
<body>
<script>
$.post('http://192.168.0.17/api.php',
{ 'method':'POST', 'path':'/GPIO/4/function/out' },
function(data) {
alert(data);
});
</script>
</body>
</html>