I de som finns i "Visa sensor"-värden-tråden så går det bara logga ett värde per minut och det är ju lite långt när man mäter "öppettider" för en dörrbrytare. Det är ju oftast så att de bara är öppna ett par sekunder.
Jag har "återanvänt" precis samma tillvägagångssätt för detta för att adda informartionen i en graf som för sensorerna och det funkar prima, förutom problemet då att det loggas data "per sekund" istället för minut.
Följande kod för att läsa in värden till grafen:
Code: Select all
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
StringTokenizer st1 = new StringTokenizer(buf.toString(), "\n");
while (st1.hasMoreTokens()) {
StringTokenizer st2 = new StringTokenizer(st1.nextToken().replaceAll("\t\t", "\t?\t"), "\t");
if (st2.hasMoreTokens()) {
String timestamp = st2.nextToken();
Date date = sdf.parse(timestamp, new ParsePosition(0));
if (date != null) {
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int gNdx = 0;
while (st2.hasMoreTokens() && gNdx < labels.length) {
String value = st2.nextToken().replace(',', '.');
if (!value.equals("?")) {
try {
double d = Double.parseDouble(value);
SensorChart.addValue(gNdx, year, month, day, hour, minute, d);
dataAdded = true;
} catch(NumberFormatException nfe) {
// ignore
}
}
gNdx = gNdx + 1;
}
}
}
}
Men jag får inte det att funka då. Tiderna är loggade i formatet "2013-07-25 15:15:37 1
2013-07-25 15:19:41 0".
Tack på förhand!
/Henke