Först av allt Nexahome är super, och hekj support är fantastisk!
Nåväl, nu nya utmaningar
Jag har haft tre Jenkinsbird tempsensorer och har loggat utan problem i många veckor nu. Funkar kanon!
Nu har jag köpt Clas Olssons sensor med temp och fuktmätning (med tanke att först övervaka sedan ev. styra luftavfuktaren i tvättstugan)
Mottagning och visning av värde funkar bra i TelldusCenter!
Jag har lagt till parameter rader i Nexahome:
model:temperaturehumidity;id:11;value:humidity
model:temperaturehumidity;id:11;value:temp
Temp och humidity kommer in riktigt och uppdateras i "sensor value kolumnen" i Nexahome
Min save_temp.bsh ser nu ut så här:
Code: Select all
import java.text.SimpleDateFormat;
String[] sensors = { "51","52","53","11","11" }; // device id
String[] values = new String[sensors.length]; // sensor values
String[] timestamps = new String[sensors.length]; // sensor timestamps
date = "";
error = false;
changed = false;
for (int ndx = 0; ndx < sensors.length; ndx++) {
sensor = sensors[ndx];
values[ndx] = getSensorValue(sensor);
if (values[ndx] != null) {
previous_value = getData("previous_value" + sensor);
previous_date = getData("previous_date" + sensor);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
date = sdf.format(Calendar.getInstance().getTime());
float dif = (previous_value != null ? Float.parseFloat(previous_value) - Float.parseFloat(values[ndx]) : 0);
if (Math.abs(dif) > 3.0) {
values[ndx] = previous_value;
}
if (!values[ndx].equals(previous_value) || !date.equals(previous_date)) {
changed = true;
setData("previous_value" + sensor, values[ndx]);
setData("previous_date" + sensor, date);
timestamps[ndx] = getSensorTimestamp(sensor);
}
}
}
if (changed) {
try {
file = "temp_" + date + ".txt";
FileWriter fw = new FileWriter(file, true);
BufferedWriter out = new BufferedWriter(fw);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
date = sdf.format(Calendar.getInstance().getTime());
out.write(date);
for (int ndx = 0; ndx < sensors.length; ndx++) {
out.write("\t" + (values[ndx] != null ? values[ndx] : "").replace('.', ','));
}
out.write("\r\n");
out.close();
} catch (Exception e) {
error = true;
echo("Error: " + e.getMessage());
}
}
if (!error) {
hideOutput();
}
startTimer("save_temp", 60);
2012-12-11 11:56 21,1 21,6 19,7 36 36
2012-12-11 12:03 21,1 21,6 19,8 36 36
2012-12-11 12:04 21,1 21,6 19,8 35 35
2012-12-11 12:16 21,1 21,6 19,8 36 36
Jag gissar att det har att göra med att sensor id är 11 i båda fallen.
Fråga 1:
Hur ska jag göra för att få in temperaturen i kolumn 4?
Fråga 2:
Jag har försökt fixa in fukt värdena i grafritningen också, men där finns någon rutin som gör om "," till "." och den gillar ju inte fuktvärden utan decimal... hur löser jag enklast det? Ska man lägga till decimal ",0" i save_temp?
TAck på förhand!