Micke-Falo wrote:Går det få den att själv leta reda på respektive givare och värde? För nu om man gör om i systemet så får man gå in och ändra för alla andra givare så att rätt värde visar på rätt ställe.hekj wrote:Jag kör också med WinXP (bsh script ska fungera lika bra oavsett plattform).Björn wrote:Tack, testar utan resultat, glömde skriva att jag kör WinXP *.bsh förmodar jag körs med operativsystem under Linux.
LogTemp sparar till textfiler så som jag kör nu. Tanken med NexaHome var att slippa köra även det programmet och att NexaHome skulle kunna hämta data direkt ifrån MAXIM's 1-wire, där man pollar USB-porten direkt där alla deras givare finns. Hur detta i övrigt går till har jag ingen aaaning om.
Logtemp sparar alla inlästa data i filer med respektive givares namn som ID, typ 510008014D026D10.txt som innehåller ex:Har skrivit ett VB-program som pollar v just en sådan fil (utomhusgivare) och lägger upp sista resultatet som "last.txt". Denna fil läses av http://temperatur.nu ungefär var 5:te minut och visas på Sandsjön som är där jag mäter och delar med mig av resultatet.Code: Select all
26.01.2011; 11:42:20;-5.69 26.01.2011; 11:47:29;-5.50 26.01.2011; 11:52:38;-5.50 26.01.2011; 11:57:46;-5.38 26.01.2011; 12:02:54;-5.56
Lät nu LogTemp spara till en cvs-fil där data från alla givarna finns:Code: Select all
"ROMId","Value","dd.mm.yyyy","hh:nn:ss", "510008014D026D10",-8.81,26.01.2011,18:51:44, "F60008014CF2B010",5.25,26.01.2011,18:51:41, "FD0008014D2C1F10",2.75,26.01.2011,18:51:47, "A000080192AAA610",15.75,26.01.2011,18:51:42, "3C000801847A7710",-1.00,26.01.2011,18:51:46, "5E00080192D3DD10",7.38,26.01.2011,18:51:45, "8A000001112E6226-T",-2.47,26.01.2011,18:51:47, "8A000001112E6226-DP",-4.76,26.01.2011,18:51:48, "8A000001112E6226-H",85.01,26.01.2011,18:51:48,
Glömde att tala om att du måste modifiera dom första raderna i scriptet så att:
1) den kommaseparerade filen pekas ut
2) rad och kolumn för fältet man vill läsa anges
http://www.telldus.se/forum/viewtopic.p ... =330#p5926Code: Select all
String csvFile = "/apps/nexahome/weather.csv"; int findRow = 1; int findColumn = 4; String delimiter = ",;\t ";
Jag testade med ditt data och ändrade nedanstående rader i scriptet för att hämta värdet -8.81Code: Select all
String csvFile = "C:\\apps\\nexahome\\1-wire.csv"; int findRow = 2; int findColumn = 2;
Code: Select all
String csvFile = "C:/apps/nexahome/1-wire.csv";
String findRow = "510008014D026D10";
int findColumn = 2;
String delimiter = ",;\t ";
int currentColumn = 1;
boolean found = false;
try {
BufferedReader in;
in = new BufferedReader(new FileReader(csvFile));
String line = null;
do {
line = in.readLine();
if (line != null && line.indexOf(findRow) != -1) {
StringTokenizer st = new StringTokenizer(line, delimiter);
if (st.countTokens() >= findColumn) {
while (currentColumn < findColumn) {
st.nextToken();
currentColumn++;
}
outAppend(st.nextToken());
found = true;
} else {
line = null;
}
}
} while(line != null && !found);
if (line == null) {
errAppend("Unable to find value!");
}
in.close();
} catch(Exception e) {
errAppend(e.getMessage());
}