This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
0 件のコメント:
コメントを投稿