【Gracenote Rhythm API】世界最大級音楽ビッグデータGracenoteのAPIで楽曲をレコメンド

2014年12月2日

Pocket

gracenote_thumb

GracenoteのデータはiTunes、Spotifyなど、皆さんもお馴染みの音楽アプリやサービスで使われています。
音楽サービスを始めるならなくてはならないGracenote!!世界最大級の音楽ビッグデータを持つGracenoteのRhythm APIを使って楽曲をレコメンドしてみました!
 
またまた、ハッカソンの話なのですが、GracenoteのAPIは、MUSICIANS HACKATHONとTechCrunch Tokyo Hackathon 2014に参加した時に使わせていただいた、私たちTicaLabお気に入りのAPIです!
情報量が多いので使い道もさまざまで、今までハッカソンだけでもGracenoteを使用した面白いソフトウェアがたくさん作られています。
では、さっそく使ってみましょう。今回は、Rhythm APIを利用してみました。
 
 

APP作成

GracenoteのAPIを利用するためには、まずアカウントを作成しなくてはいけません。
さっそくアカウントを作りましょう。
GracenoteのDeveloperサイトにアクセスし、アカウントを作成して下さい。
Gracenote | Developer Portal
 
アカウント作成が完了したらAPPを作成します。
gracenote1
 
App Nameの名前を入力し、Create Appをクリックします。
gracenote2
 
APPが作成されました。
gracenote4
Client IDは後で使用します。
 
 

ユーザーIDを取得する

user.xmlというファイルをデスクトップに作成します。
user.xmlの中に下記のコードを記入して保存してください。
CLIENT IDのところは、先ほどのCLIENT ID(XXXXXXX-◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯)を入力してください。

<QUERIES>
  <QUERY CMD="REGISTER">
    <CLIENT>CLIENT ID</CLIENT>
  </QUERY>
</QUERIES> 

 
ターミナルを起動します。

//デスクトップに移動
$ cd Desktop
$ curl -d @user.xml https://cXXXXXXX.web.cddbp.net/webapi/xml/1.0/

“XXXXXXX”のところはCLIENT IDのハイフン前の7桁の数字を入れます。
すると下記のようなレスポンスが返ってきます。
 

<RESPONSES>
 <RESPONSE STATUS="OK">
   <USER>△△△△△△△△△△-■■■■■■■■■■■■■■■■■■■■■</USER>
 </RESPONSE>
</RESPONSES>

USERのタグの中に放っているユーザーIDを使用するのでメモしておいてください。
 
 

Rhythm APIで使えるムード、ジャンル、年代を調べる

今回は、Rhythm APIを使用しますのでムード、ジャンル、年代のIDが欲しいので一覧を調べます。
Rhythm APIでは曲名、アーティスト名、ジャンル、年代、ムードなどで楽曲を選曲できるAPIです。
Rhythm API | Gracenote
下記のURLを叩くと一覧情報が返ってきます。
 
ジャンル一覧を見る
”https:/cXXXXXXX.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOGENRE&lang=jpn&client=CLIENT ID&user=USER ID”
 
gracenote3
 
ムード一覧を見る
”https:/cXXXXXXX.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOMOOD&lang=jpn&client=CLIENT ID&user=USER ID”
 
年代一覧を見る
”https:/cXXXXXXX.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOERA&lang=jpn&client=CLIENT ID&user=USER ID”
 
 

ジャンルで楽曲を検索

ジャンルで検索してみたいと思います。
先ほど調べたIDを使用して検索します。
とりあえずポップのジャンルを検索。

<?php
$genre_coad = 36056; //ジャンルーポップのID
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/create?genre=" . $genre_coad ."&lang=jpn&return_count=10&client=CLIENT ID&user=USER ID";//ファイルを指定
$xmlData = simplexml_load_file($xml);//xmlを読み込む

echo "<pre>";
var_dump($xmlData);
echo "</pre>";
?>

ポップのジャンルの楽曲データが10曲取得できました。
 
 

ムードで楽曲を検索

ムードで検索してみたいと思います。
センチメンタルのムードを検索。

<?php
$mood_coad = 65324; //ムードーセンチメンタルのID
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/create?mood=" . $mood_coad . "&lang=jpn&return_count=10&client=CLIENT ID&user=USER ID";//ファイルを指定
$xmlData = simplexml_load_file($xml);//xmlを読み込む

echo "<pre>";
var_dump($xmlData);
echo "</pre>";
?>

センチメンタルのムードの楽曲データが10曲取得できました。
 
 

年代で楽曲を検索

年代で検索してみたいと思います。
2010年代を検索。

<?php
$era_coad = 42877; //年代ー2010年代のID
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/create?era=" . $era_coad . "&lang=jpn&return_count=10&client=CLIENT ID&user=USER ID";//ファイルを指定
$xmlData = simplexml_load_file($xml);//xmlを読み込む

echo "<pre>";
var_dump($xmlData);
echo "</pre>";
?>

2010年代の楽曲データが10曲取得できました。
 
 

気分で楽曲レコメンドDEMO

上記の検索を使ってジャンル、ムード、年代を選んで楽曲をレコメンドしてくれるデモを作ってみました!
楽曲再生にはiTunes APIを使用しています。
 
DEMO
 
HTML

<?php
$submit_flg = false;

if($_POST['submit']){

	$submit_flg = true;

	$genre_id = htmlspecialchars($_POST['genre'],ENT_QUOTES);
	$mood_id = htmlspecialchars($_POST['mood'],ENT_QUOTES);
	$era_id = htmlspecialchars($_POST['era'],ENT_QUOTES);

	$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/create?focus_popularity=1000&genre=" . $genre_id . "&mood=" . $mood_id . "&era=" . $era_id . "&lang=jpn&return_count=10&client=CLIENT ID&user=USER ID";//ファイルを指定
	$xmlData = simplexml_load_file($xml);

}

//ジャンルリスト
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOGENRE&lang=jpn&client=CLIENT ID&user=USER ID";
$genre_xmlData = simplexml_load_file($xml);

//ムードリスト
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOMOOD&lang=jpn&client=CLIENT ID&user=USER ID";
$mood_xmlData = simplexml_load_file($xml);

//年代
$xml = "https://c634880.web.cddbp.net/webapi/xml/1.0/radio/fieldvalues?fieldname=RADIOERA&lang=jpn&client=CLIENT ID&user=USER ID";
$era_xmlData = simplexml_load_file($xml);
?>

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	
	<title>Gracenote DEMO</title>

	<!-- js -->
	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
	
</head>
<body>

<form action="" method="post">

	<div>
		ジャンル
		<select name="genre">
			<?php foreach ($genre_xmlData->RESPONSE->GENRE as $genre_list) : ?>
				<option value="<?php echo $genre_list[0]['ID']; ?>"><?php echo $genre_list[0][0]; ?></option>
			<?php endforeach; ?>
		</select>
	</div>
	
	<div>
		ムード
		<select name="mood">
			<?php foreach ($mood_xmlData->RESPONSE->MOOD as $mood_list) : ?>
				<option value="<?php echo $mood_list[0]['ID']; ?>"><?php echo $mood_list[0][0]; ?></option>
			<?php endforeach; ?>
		</select>
	</div>
	
	<div>
		年代
		<select name="era">
			<?php foreach ($era_xmlData->RESPONSE->ERA as $era_list) : ?>
				<option value="<?php echo $era_list[0]['ID']; ?>"><?php echo $era_list[0][0]; ?></option>
			<?php endforeach; ?>
		</select>
	</div>
	<input type="submit" name="submit" value="検索">

</form>

<?php if($submit_flg) : ?>

	<div class="player">
		<div class="image"></div>
		<p class="play_title"></p>
		<p class="play_artist"></p>
	</div>

	<ul>
		<?php 
		$track_no = 0;
		foreach ($xmlData->RESPONSE->ALBUM as $music) : 
			$track_no++;
		?>
			<li id="track_<?php echo $track_no; ?>">
				<p class="title"><?php echo $music->TRACK->TITLE; ?></p>
				<p class="artist"><?php echo $music->ARTIST; ?></p>
			</li>
		<?php endforeach; ?>
	</ul>
<?php endif; ?>
</body>
</html>

focus_popularity=1000としているのですが、曲のポピュラー度を制御しています、。
数値が大きくなるほどポピュラー度が高くなります。
 
JS

var track_count = 1;

var artist_name = $('#track_1').children('.artist').html();
var music_title = $('#track_1').children('.title').html();

// 検索する
search({
  term: artist_name + ' ' + music_title,
  limit: 1,
  entity: 'song',
  country: 'JP',
});

//iTunes APIから楽曲を取得する
function search(options) {

  var params = {
    lang: 'ja_jp',
    entry: 'music',
    media: 'music',
    country: 'JP',
  };

  if (options && options.term) {
    params.term = options.term;
  }

  if (options && options.limit) {
    params.limit = options.limit;
  }

  $.ajax({
    url: 'https://itunes.apple.com/search',
    method: 'GET',
    data: params,
    dataType: 'jsonp',

    success: function(json) {
      showData(json, options);
    },

    error: function() {
      console.log('itunes api search error. ', arguments);
    },
  });
};

//取得した楽曲を表示
var music_url = "";
var TARGET;
var showData = function(json) {

	if(json.results.length == 0){

		track_count++;

		artist_name = $('#track_' + track_count).children('.artist').html();
		music_title = $('#track_' + track_count).children('.title').html();
        	
		// 検索する
		search({
		term: artist_name[data_key] + ' ' + music_title[data_key],
		limit: 1,
		entity: 'song',
		country: 'JP',
		});

	 }else{
  
	    for (var i = 0, len = json.results.length; i < len; i++) {

	      var result = json.results[i];

	      music_url = result.previewUrl;

	      var html = '<audio id="sound" src="' + result.previewUrl + '" controls />';
	      $('.player').children('audio').remove();
	      $('.player').append(html);
	      var html = '<img src="' + result.artworkUrl100 + '">';
	      $('.player').children('.image').empty().append(html);

	      $('.player').children('.play_artist').html(artist_name);
	      $('.player').children('.play_title').html(music_title);

	      TARGET = document.getElementById('sound');

	      play();

	      track_count++;
	    }

	}

}

function play(){
    TARGET.play();
    timeupdate();
}

function timeupdate(){
    TARGET.play();
    TARGET.addEventListener("timeupdate", function() {
  
        if(TARGET.currentTime == TARGET.duration){

        	artist_name = $('#track_' + track_count).children('.artist').html();
			music_title = $('#track_' + track_count).children('.title').html();
        	// 検索する
			search({
			  term: artist_name + ' ' + music_title,
			  limit: 1,
			  entity: 'song',
			  country: 'JP',
			});
        }

    }, true);
}

 
 
 

他にもざまざまな方法で楽曲をレコメンドできるので、いろいろ試してみてください。
自分専用に好みの検索のかけ方をプログラミングして楽曲レコメンドアプリを作ってもいいかもしれません!
http://www.gracenote.com/?language=ja

続きを読む

【Spotify WEB API】SpotifyのWEB APIを使って楽曲を取得し再生する

2014年12月1日

Pocket

spotify_thamb

海外では大人気の音楽ストリーミングサービス『Spotify』
日本上陸も目前!?のはずなので、いち早くSpotifyのAPIの使い方を解説したいと思います!
Spotify WEB APIを利用して検索をかけたり、プレイヤーを埋め込んだりしてみました。
 
先日、
MUSICIANS HACKATHONに参加したのですが、参加者は期間限定でSpotifyのプレミアム会員になれるのです!
これは使わなくては損だということで、ハッカソンではSpotifyとGracenoteのAPIを利用してサービスを作りました!!
今回のハッカソンで私はGracenote使用部分を作成していたので、Spotifyの部分は担当していないのですが、勉強のためにSpotifyも個人的に実験してみました。
 
 
Spotify Web API – Spotify Developer
 
 
 

アプリ作成

まず、Spotifyのログインします。
Spotify DeveloperのMy Applicationsのページでアプリを作成します。
アプリ作成
 
“CREATE AN APP”をクリックします。
spotify1
アプリが作成されました。
Application NameとApplication Descriptionを入力し、”CREATE”をクリックします。
spotify2
 
Redirect URIsを設定します。
spotify3
見えないように伏せていますが、Client IDとClient Secretが表示されているはずです。
Client IDとClient Secretはあとで使います。
 
 

情報取得

アプリの作成が終わったので、次に使用ファイルをダウンロードします。
Spotify DeveloperサイトのWeb API -> Code Exampleページでさまざまなサンプルコードが見れます。
今回は、spotify-web-api-phpを利用しますので、下の方にあるjwilsson/spotify-web-api-phpをクリックし、spotify-web-api-phpのzipファイルをダウンロードします。
https://github.com/jwilsson/spotify-web-api-php
 
spotify4
 
ダウロードしたファイルを解凍し中にあるsrcフォルダを任意の場所に置きます。
私は、spotifyをいうファルダを作成しその中にsrcフォルダを入れましたので、それで解説していきます。
 
spotifyフォルダの中にdemo.phpというファイルを作り、下記のコードを書きます

<?php
require 'src/SpotifyWebAPI.php';
require 'src/Request.php';
require 'src/Session.php';
require 'src/SpotifyWebAPIException.php';

$session = new Session(
'SPOTIFY_CLIENT_ID', //APPのCLIENT_IDを入れる
'SPOTIFY_CLIENT_SECRET', //APPのCLIENT_SECRETを入れる
'SPOTIFY_REDIRECT_URI' //APPのRedirect URIsを入れる
);
$api = new SpotifyWebAPI();

if (isset($_GET['code'])) {
    $session->requestToken($_GET['code']);
    $api->setAccessToken($session->getAccessToken());

    print_r($api->me());
} else {
    header('Location: ' . $session->getAuthorizeUrl(array(
        'scope' => array('user-read-email', 'user-library-modify')
    )));
}
?>

 
実行するとログイン画面が表示されます。
spotify6
 
ログインするとログインしたアカウントのユーザー情報が取得でき、表示されます。
ログインすると他のユーザーのプレイリストを見れたり、ログインした人のプレイリストにトラックを追加したり、さまざまなことができるようになります。
 
 

プレイリスト作成デモ

ユーザー『pixiesofficial』のプレイリストを一つ取得して、トラックを表示させるデモを作ってみました。
Spotifyのアカウントお持ちの方はログインすると見れます。
 
DEMO
 
spotify7
 
コード

<?php
require 'src/SpotifyWebAPI.php';
require 'src/Request.php';
require 'src/Session.php';
require 'src/SpotifyWebAPIException.php';

$session = new Session('SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET', 'SPOTIFY_REDIRECT_URI');
$api = new SpotifyWebAPI();

if (isset($_GET['code'])) {
    $session->requestToken($_GET['code']);
    $api->setAccessToken($session->getAccessToken());

    //pixiesofficialというユーザー名でプレイリストを一つ取得
    $playlists = $api->getUserPlaylists('pixiesofficial', array(
        'limit' => 1
    ));
    //取得したプレイリストのIDを変数へ代入
    $playlist_id = $playlists->items[0]->id;

    //pixiesofficialというユーザー名での$playlist_idのトラックを取得
    $tracks = $api->getUserPlaylistTracks('pixiesofficial', $playlist_id);

} else {
    header('Location: ' . $session->getAuthorizeUrl(array(
        'scope' => array('user-read-email', 'user-library-modify')
    )));
}

?>


<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
</head>
<body>

	<?php foreach ($tracks->items as $track) : ?>
	       <!-- Spotify埋め込み -->
		<iframe src="https://embed.spotify.com/?uri=spotify:track:<?php echo $track->track->id; ?>" width="300" height="380" frameborder="0" allowtransparency="true"></iframe>

	<? endforeach; ?>

</body>
</html>

 
 

楽曲を検索デモ

会員じゃない人がログインしないでも見れる検索方法もあります。
楽曲を検索してヒットしたトラックのプレイヤーを作成します。
 
DEMO
 
 
コード

<?php
require 'src/SpotifyWebAPI.php';
require 'src/Request.php';
require 'src/Session.php';
require 'src/SpotifyWebAPIException.php';

$submit_flg = false;

if($_POST['submit']){

	$submit_flg = true;

	$artist = htmlspecialchars($_POST['artist'],ENT_QUOTES);
	$title = htmlspecialchars($_POST['title'],ENT_QUOTES);

	$api = new SpotifyWebAPI();

	//キーワードの含まれるトラックを検索
	$tracks = $api->search($artist . '  ' . $title, 'track',array(
    'limit' => 1
));

	//トラックのIDを変数へ代入
	$track_id = $tracks->tracks->items[0]->id;

}


?>

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
</head>
<body>

<form action="" method="post">
	アーティスト<input type="input" name="artist"><br>
	曲名<input type="input" name="title"><br>
	<input type="submit" name="submit" value="検索">
</form>

<?php if($submit_flg) : ?>
	       
		<iframe src="https://embed.spotify.com/?uri=spotify:track:<?php echo $track_id; ?>" width="300" height="380" frameborder="0" allowtransparency="true"></iframe>

<?php endif; ?>

</body>
</html>

 
 
Spotifyは、まだ日本に入ってきてないサービスですのす。プレミアム会員になるには対応している国のクレジット情報が必要ですので、現状日本ではまだしばらく全てのAPIは利用できない状態です。

続きを読む

【Intel(R)Edison × Arduino】WiFi接続してArduinoでデータ送信しPHPで受け取る

2014年11月18日

Pocket

edison_thamb2

極小のサーバーが作れるIntel(インテル)のEdisonにはWiFiも積んであるので、別途WiFiルーターが不要でネットに接続できます!
これを使えば、よりコンパクトなIOTの開発が実現できます!!
今回はIntelのEdisonを使用して、任意のサイトにWiFi接続してみました。
 
前回
超小型Linux Intel(R)Edison】EdisonをセットアップからArduinoでLチカまでやってみたでEduisonのセットアップは済ませてあるので、引き続きEdisonでWiFi接続の方法をご説明いたします。
 
 
 

準備物

Edison
Arduino Expansion Board(Arduino拡張ボード)
Arduino Base Shield
Light sensor(光センサー)
MicroUSBケーブル
電源ケーブル
PC
WiFi環境
 
 

ネットワークのIPアドレス変更

ネットワーク環境設定を開いて
[Edison]を選択します。
何も設定していない状態だと、オレンジになっていると思います。
edison10
IPv4の設定を[手入力]を選択します。
IPアドレスに”192.168.2.2”を設定します。
サブネットマスクを”255.255.255.0”を設定します。
edison11
 
 

EdisonのWiFi設定

ターミナルを立ち上げて前回と同じように

# screen /dev/tty.usbserial-A402IY3C 115200 -L

を入力してEdisonにログインします。

# configure_edison --wifi

と入力しEnterを押し、WiFiの読み込みが終わるまでしばらく待ちます。
読み込みが終わると、WiFiの候補があがりSSIDを聞かれます。
edison12
中から接続したいWiFiの番号を入力しEnterを押ます。

Is SSID correct? [Y or N]: y
Password must be between 8 and 63 characters.
What is the network password?: WiFiのパスワード

パスワードも入力します
 
 

ArduinoでWiFi接続

Arduino IDEを立ち上げ、ファイル -> スケッチの例 -> WiFi -> WiFiWebClientを開きます。
edison13
 

char ssid[] = "yourNetwork"; //  your network SSID (name) 
char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP)

の箇所を書き換えます。
”yourNetwork”にSSID、
”secretPassword”にWiFiパスワードを書きます。
スケッチにエラーがなければ、Edisonに書き込みます。
シリアルポートを開き、しばらくして
googleの情報が返って来たらWiFi接続成功です。
edison14
 
 

任意のサイトに値を渡す

先ほどのWiFiWebClientのファイルをさらに書き換えていきます。

//char server[] = "www.google.com";    // name address for Google (using DNS)
char server[] = "ホスト";

googleのアドレスが記入されている箇所を接続したいURLのホストネーム入力します。
 

if (client.connect(server, 80)) {
    Serial.println("connected to server");
    // Make a HTTP request:
    //client.println("GET /search?q=arduino HTTP/1.1");
    client.println("GET /接続先のパス?q=GETで渡したい値 HTTP/1.1");
    //client.println("Host: www.google.com");
    client.println("Host: 先ほど入力したホスト名");
    client.println("Connection: close");
    client.println();
}

接続に成功した場合、データを送信します。
これだけでWEBサイトに渡したい情報を渡せます。
 
 

光センサーから取得した値をWEBサイトに渡してPHPで受け取り保存してみます

サーバー上にedison.phpというファイルを作成します。
data.txtファイルをedison.phpと同じディレクトリに作成します。
edison.phpに以下のコードを書きます。
 
edison.php

<?php 
$text = htmlspecialchars($_GET['light'], ENT_QUOTES, 'UTF-8');

//ファイル書き換え
$fp = fopen('data.txt', "w");

if (fwrite($fp,  $text) === FALSE){
    echo('Error');
}else{
    echo('Success!!');
}

fclose($fp);

?>

 
EdisonボードにArduino Base Shieldを乗せます。
アナログ入力A0に光センサーを接続します。
edison15
 
Arduino IDEで下記のコードをEdisonに書き込みます。
Arduino

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "SSID"; //  your network SSID (name) 
char pass[] = "パスワード";    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "ホストネーム";

const int LIGHT = A0; //光センサー
int LIGHT_val = 0; //光センサーの値を入れる変数

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
WiFiClient client;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600); 
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  pinMode(LIGHT,INPUT); //光センサーをインプットに設定
  
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    // don't continue:
    while(true);
  } 

  String fv = WiFi.firmwareVersion();
  if( fv != "1.1.0" )
    Serial.println("Please upgrade the firmware");
  
  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);
  
    // wait 10 seconds for connection:
    delay(10000);
  } 
  Serial.println("Connected to wifi");
  printWifiStatus();
  
  Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected to server");
    
    LIGHT_val = analogRead(LIGHT); //光センサーの値取得
   
    String PostTex = "GET /headphone/edison.php?light=";
    PostTex.concat(LIGHT_val);
    PostTex.concat(" HTTP/1.1");
    
    // Make a HTTP request:
    client.println(PostTex); //サイトに値を渡す
    client.println("Host: ホストネーム");
    client.println("Connection: close");
    client.println();
  }
}

void loop() {
  // if there are incoming bytes available 
  // from the server, read them and print them:
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();

    // do nothing forevermore:
    while(true);
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

 

シリアルポートを開き、「Success!!」と表示されれば成功です。
data.txtファイルの中身を見てみると光センサーから取得した値が入っているはずです。
 
 
 

とりあえず簡単に値を渡しましたが、Nodejsを使うともっとスムーズに値を渡すことができます。
私は、はじめはArduinoで値を渡していたのですが、遅いし挙動がおかしかったです。
でも、インテルの方にNodejsでの値の渡し方を教わり、実行してみるとすごいスムーズに動くようになりました。
 
とりあえずセットアップ中心にご紹介してみましたが、Edisonの良いところってサーバー部分だと思うので、
また、余裕があればNodejsやらPythonやらでなんか作ってみたいと思います!
 
 
超小型Linux Intel(R)Edison】EdisonをセットアップからArduinoでLチカまでやってみた
【Edison+Node.js】Node.js+MRAAでArduinoを操作してみた
【Arduino入門 第一弾】Webデザイナーでもできる電子工作~LED点滅~

続きを読む

このサイトについて


『意識低い系女と高い系男の一年戦争』はクリエイティブ会社エアゼの代表2人が運営するブログです。エアゼは、アプリ・Web・IoT・インタラクティブコンテンツのデザイン・開発を手がけています。

エアゼ ホームページ