2017年5月18日木曜日

Processingでm2xのデータをダウンロード

import java.io.InputStreamReader;
import java.io.BufferedInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
Table dataTable;
String filePath;
final String dataFile="dataFile.csv";
final String[] stream={"Temp1", "Temp2", "Temp3", "Temp4", "Humid1", "Humid2", "Humid3", "Humid4"};
final String apiKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
final String deviceId="yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
void setup() {
tableSetup();
getData();
exit();
}
void draw() {
}
void getData() {
String request;
String startTime="";
for (int i=0; i<stream.length; i++) {
int lastIdx=dataTable.getInt(0, stream[i]);
if (lastIdx==0) {
request="?sort=timestamp&dir=desc&limit=1";
}
else {
startTime=dataTable.getString(lastIdx, "time"+stream[i]);
request="?sort=timestamp&dir=asc&limit=1000&start="+startTime;
}
try {
String s="http://api-m2x.att.com/v2/devices/"+deviceId+"/streams/"+stream[i]+"/values.csv"+request;
println(s);
URL url = new URL(s);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-M2X-KEY", apiKey);
con.connect();
int res=con.getResponseCode();
if (res==200) {
InputStream inputStr = new BufferedInputStream(con.getInputStream());
BufferedReader rd= new BufferedReader(new InputStreamReader(inputStr));
String line=rd.readLine();
while (line!=null) {
String[] csvData = split(line, ',');
String time=csvData[0];
float data=float(csvData[1]);
println(time+", "+data);
if (!time.equals(startTime)) {
int idx=dataTable.getInt(0, stream[i]);
idx++;
if (dataTable.getRowCount()<=idx) dataTable.addRow();
dataTable.setString(idx, "time"+stream[i], time);
dataTable.setFloat(idx, stream[i], data);
dataTable.setInt(0, stream[i], idx);
}
line=rd.readLine();
}
}
else println("Http Error "+con.getErrorStream());
}
catch(IOException e) {
println("EXCEPTION "+e);
}
}
saveTable(dataTable, filePath+dataFile);
println("File saved: "+filePath+dataFile);
}
void tableSetup() {
filePath=sketchPath("");
File f=new File(filePath+dataFile);
if (f.exists()) {
dataTable=loadTable(filePath+dataFile, "header");
println("File loaded: "+filePath+dataFile);
}
else {
dataTable = new Table();
for (int i=0; i<stream.length; i++) {
dataTable.addColumn("time"+stream[i]);
dataTable.addColumn(stream[i]);
}
dataTable.addRow();
for (int i=0; i<stream.length; i++) {
dataTable.setInt(0, stream[i], 0);
}
saveTable(dataTable, filePath+dataFile);
println("File created: "+filePath+dataFile);
}
}
view raw m2x0561c.pde hosted with ❤ by GitHub

0 件のコメント:

コメントを投稿