Live weer uit logfiles weerstation
Het is lang geleden dat ik dit forum weer eens heb opgezocht. Meestal werk ik zelf de uitdagingen wel uit, maar in dit geval zit ik een beetje in de knoop.
Wat is de situatie:
Ik heb een weerstation en wil de gegevens publiceren op het internet. Nu schrijft dit weerstation zijn data weg in een log bestand en om de 5 minuten wordt die data verwerkt in een sql database. Mijn originele idee was om die data te gebruiken om te publiceren. Er zijn echter weer sites die hun data live publiceren. Ik denk dat dit via AJAX gaat, maar ik wil me eerst concentreren op het verkrijgen van de juiste gegevens.
Wat heb ik tot nu toe:
Voor het live weer moet ik die log bestanden in kunnen lezen en daar de juiste (laatste) gegevens uit halen. Het systeem laat een log oplopen tot een aantal Kb en dan vindt er een turnover plaats. Bijvoorbeeld: weerstation.log wordt gerenamed naar weerstation.log.1 en er is een lege weerstation.log die weer gevuld wordt met recente data. Om te voorkomen dat je met een leeg bestand zit moet je deze 2 logfiles dus achterelkaar plakken. So far so good, je kan hier zien hoe de 2 achterelkaar geplakte logfiles eruit zien.
waarschuwing: LET NIET op de clock regels in de logfiles, dit weerstation wordt alleen geleverd met windows software en doordat ik gebruik maak van alternatieve linux software kan ik de ontvanger niet "programmeren", de timestamp is dus leading
De uitdaging:
uit deze data wil ik de laatste (zie timestamp) gegevens verkrijgen van:
Temperature th1
-Temp (in graden celcius)
-Trend (steady/rising/falling)
-Humidity (relatief in %)
-Dew Point (in graden celcius)
Barometer
-Forecast (Cloudy/PartiallyCloudy/Rainy/Sunny/Snowy)
-Absolute pressure (mb)
Wind
-batteryOk (true/false)
-direction (0 t/m 15)
-gust (m/s)
-avg. speed (m/s)
Rain
-batteryOk (true/false)
-This Day (mm)
de "Temperature thInt" sensor wordt overgeslagen, dit is de interne temperatuur sensor in de woonkamer en betekent niets voor het weer ;)
Waar zit ik vast:
Het lukt me om beide bestanden onder elkaar te zetten (zie voorbeeld)
Het lukt me om alleen de laatste regel te tonen van de hele file, maar daar heb ik natuurlijk niets aan omdat dit slechts 1 bericht is van 1 sensor, terwijl ik het laatste bericht van iedere (temp out,baro,wind,rain) sensor wil hebben.
Het lukt me ook om via explode de gegevens van de sensoren te splitsen, ik krijg dan alleen nog steeds een hele lijst van alle timestamps.
Hopelijk zijn jullie php experts bereid mij een beetje te "spoonfeeden" :o)
Groetjes!
Gewijzigd op 18/05/2010 10:46:36 door Sven Dekker
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
// open de 2 log bestanden, zorg er wel voor dat de tijdsvolgorde klopt
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
// voeg de 2 logbestanden samen
$lines = array_merge($file1,$file2);
// zet de array regel voor regel
foreach($lines as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
// tja, en toen zat ik vast... ik wil nu alleen nog alleen van iedere sensor de laatste informatie...
?>
// open de 2 log bestanden, zorg er wel voor dat de tijdsvolgorde klopt
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
// voeg de 2 logbestanden samen
$lines = array_merge($file1,$file2);
// zet de array regel voor regel
foreach($lines as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
// tja, en toen zat ik vast... ik wil nu alleen nog alleen van iedere sensor de laatste informatie...
?>
Gewijzigd op 20/05/2010 08:56:42 door Sven Dekker
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Array met sensors
$aSensor = array();
$aSensor['Barometer'] = NULL;
$aSensor['Temperature_th1'] = NULL;
$aSensor['Rain'] = NULL;
$aSensor['Wind'] = NULL;
/*
Dan door de log heenlopen, ervan uitgaande dat in je huidige logs de nieuwste waarden bovenaan staan.
*/
foreach($lines as $line) {
// Doe je berekeningen
// Check of de sensor nog niet gevuld is
if($aSensor[$parts[4]] == NULL) {
// Vul de sensor
$aSensor[$parts[4]] = $jeHuidigeEcho;
}
}
?>
// Array met sensors
$aSensor = array();
$aSensor['Barometer'] = NULL;
$aSensor['Temperature_th1'] = NULL;
$aSensor['Rain'] = NULL;
$aSensor['Wind'] = NULL;
/*
Dan door de log heenlopen, ervan uitgaande dat in je huidige logs de nieuwste waarden bovenaan staan.
*/
foreach($lines as $line) {
// Doe je berekeningen
// Check of de sensor nog niet gevuld is
if($aSensor[$parts[4]] == NULL) {
// Vul de sensor
$aSensor[$parts[4]] = $jeHuidigeEcho;
}
}
?>
Dan zou je nog een controle kunnen maken of alle elementen in je array al gevuld zijn, dan kan je een break in je foreach zetten. Scheelt weer verwerkingstijd.
Offtopic:
Wat voor weerstation heb je eigenlijk? En waarom de keuze voor linux?
Zelf heb ik de site http://www.grandix.nl gemaakt op basis van mijn vaders weerstation (Davis VP2). Daar heb je heel goede Windows software voor die goede .htm's (of whatever) genereert die je heel goed met PHP kan inlezen.
Ook een leuke om je bij aan te sluiten is http://www.hetweeractueel.nl.
bedankt voor jouw berichtje! Mijn budget strekte niet ver genoeg voor een Davis, ik heb daarom een Oregon WRMS-200 gekocht. Dit bestaat alleen uit een antenne (met barometer en interne temp/hum sensor) en standaard 3 buiten sensoren (wind, regen, temp/hum). De keuze voor linux is gekomen omdat ik dit alles thuis draai op een Qnap nas (TS-109) met daarop een alternatief besturingssysteem (Debian i.p.v. de qnap firmware).
Hoewel ik mcsa ben, ligt mijn voorkeur niet zo zeer bij windows, maar bij de beste oplossing. In mijn geval wilde ik een uber lowpower systeem dat maar toch geschikt om een website op te draaien. Je komt dan al snel uit op dit soort oplossingen, op volle stoom trekt dit dingetje inc. draaiende hdd 15 watt, een windows systeem kan gewoon niet op zo weinig power lopen (en ook nog redelijk performen).
Daarnaast hou ik wel een beetje van een uitdaging en zie het weerstation als hobby projectje, het belangrijkste is dat de opa's en oma's foto's van hun kleindochter kunnen zien (op te roepen nadat ze ingelogd zijn).
Anyway, weer ontopic:
ik ga jouw oplossing thuis proberen, ik denk dat ik jouw zienswijze begrijp. Ik moet gewoon een array_reverse doen, dan staan de laatste log entries boven. dit ga ik wel even proberen :) thnx!
Offtopic:
Wat betreft Windows; ik ben geen fanboy van enig OS, ik vind dat ze allemaal zwakke en sterke kanten hebben, maar wij hebben een micro PC met een Windows Server 2003 install waarop WebcamXP Pro, FireDeamon en Weatherlink draaien. Die vreten ook bijna geen stroom, wat inderdaad een fijne bijkomstigheid is.
De website draait daar overigens niet op. Deze server exporteert de data in verschillende bestanden naar een webstek waar de data door mijn site en bijvoorbeeld Hetweeractueel.nl en Weather Underground worden opgepakt. De site draait gewoon weer op een shared hosting account. Lekker weinig verkeer op die manier over het ADSL lijntje, maar wel de mogelijkheid om veel bezoekers op te vangen.
Maar goed, mocht je willen weten hoe het ongeveer werkt; http://www.grandix.nl/over/techniek/
Bij de weg; mijn budget is ook niet genoeg voor een Davis. Maar ooit komt er één! :) Best verslavend het weer. Voorlopig kan ik in ieder geval mijn ei kwijt in de site. :)
het ziet er al aardig uit, maar werkt nog niet helemaal. Op de een of andere manier worden toch nog de records weergegeven die ik eigenlijk niet wil hebben, en dan nog met data van een andere sensor ook...check dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
// Array met sensors
$aSensor = array();
$aSensor['Barometer'] = NULL;
$aSensor['Temperature_th1'] = NULL;
$aSensor['Rain'] = NULL;
$aSensor['Wind'] = NULL;
// open de 2 log bestanden, zorg er wel voor dat de tijdsvolgorde klopt
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
// voeg de 2 logbestanden samen
$lines = array_reverse(array_merge($file1,$file2));
// zet de array regel voor regel
foreach($lines as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[8];
$temperature_trend = str_replace($special,"",$parts[10]); //haakjes en komma weghalen
$temperature_hum = $parts[12];
$temperature_dew = $parts[17];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
// Check of de sensor nog niet gevuld is
if($aSensor[$parts[4]] == NULL) {
// Vul de sensor
$aSensor[$parts[4]] = $data;
echo $parts[4]." ".$data;
}
}
?>
// Array met sensors
$aSensor = array();
$aSensor['Barometer'] = NULL;
$aSensor['Temperature_th1'] = NULL;
$aSensor['Rain'] = NULL;
$aSensor['Wind'] = NULL;
// open de 2 log bestanden, zorg er wel voor dat de tijdsvolgorde klopt
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
// voeg de 2 logbestanden samen
$lines = array_reverse(array_merge($file1,$file2));
// zet de array regel voor regel
foreach($lines as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[8];
$temperature_trend = str_replace($special,"",$parts[10]); //haakjes en komma weghalen
$temperature_hum = $parts[12];
$temperature_dew = $parts[17];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
$data = $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
// Check of de sensor nog niet gevuld is
if($aSensor[$parts[4]] == NULL) {
// Vul de sensor
$aSensor[$parts[4]] = $data;
echo $parts[4]." ".$data;
}
}
?>
Gewijzigd op 20/05/2010 18:28:00 door Sven Dekker
Ik zou het stukje code eerst los testen door even de $data array te printen. " print_r() " om te kijken of ook echt de juiste regels worden opgeslagen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace("_", " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
?>
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace("_", " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
?>
Gewijzigd op 20/05/2010 20:13:18 door - Mark -
haha.. die gaat me even boven m'n pet. ik raak je kwijt bij "Kijken voor welke sensor de huidige regel is bedoeld." Het script geeft geen foutmeldingen, maar ik zou niet weten hoe ik hier uit data moet tonen...
Groetjes!
if(strpos($log[$i], str_replace("_", " ",$sensor))){
kijkt tot welke sensor de log regel behoort.
Zo zou hij in zijn geheel moeten werken. " Als het goed is. "
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace("_", " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
////////////////////////////////////////////////////////
//// Je eigen stuk voor het uitwerken van de data. ////
//////////////////////////////////////////////////////
foreach($data as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
?>
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace("_", " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
////////////////////////////////////////////////////////
//// Je eigen stuk voor het uitwerken van de data. ////
//////////////////////////////////////////////////////
foreach($data as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
?>
Gewijzigd op 20/05/2010 21:35:54 door - Mark -
werkt! Daar was ik zelf echt niet op gekomen, thanx a million!
Ja hoor, 't Ook heb ik gekeken(en ook aangepast) naar de volgorde van de eerste array en de bewerkingen, helaas zonder succes. Ik heb het vermoeden dat het alleen voorkomt als er regen voorspeld wordt, zou het kunnen dat de sensor "Rain" en de status "Rainy" voor verwarring kunnen zorgen.. of dat dat cr*p wat ik nu praat...
update --> ik praat idd geen cr*p, ik heb de log gekopieerd naar een andere locatie, het script die file uit laten lezen en de status "Rainy" vervangen voor "Regen" en dat werkt wel... nu er nog achter komen wat dit probleem veroorzaakt...
update2 --> ik denk dat 't hier in zit:
Code (php)
1
2
2
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace("_", " ",$sensor))){
if(strpos($log[$i], str_replace("_", " ",$sensor))){
update3 --> heerlijk dat hardop denken :)
Code (php)
1
2
2
#| Kijken voor welke sensor de huidige regel is bedoeld.
if (strpos(substr($log[$i],45,65), str_replace("_", " ",$sensor))){
if (strpos(substr($log[$i],45,65), str_replace("_", " ",$sensor))){
update 4 --> helaas dat werkt niet...
update 5 --> tijdelijk even het weerstation script zelf aangepast, de sensoren zijn nu in het Engels, de waarden in het Nederlands :o)
Gewijzigd op 24/05/2010 10:03:30 door Sven Dekker
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
/*---- INFO! ---->
Lijst met uitzonderingen, Niet zo mooi maar er is niets aan te doen.
(1) " Rainy " word er uit gehaald om te voorkomen dat de barometer sensor roet in het eten gooit voor
de temperatuurs sensor.
(2) " _ " word er uit gehaald omdat de sleutel in de $data array van de temperatuurs sensor niet overeen
komt met wat we zoeken. " We zoeken Temperature th1 en niet Temperature_th1 "
*/
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace(array("_", "Rainy"), " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
////////////////////////////////////////////////////////
//// Je eigen stuk voor het uitwerken van de data. ////
//////////////////////////////////////////////////////
foreach($data as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
?>
#| Set " $data " array voor het opslaan van het laatste log regel per sensor.
$data = array(
'Barometer' => NULL,
'Temperature_th1' => NULL,
'Rain' => NULL,
'Wind' => NULL
);
#| Teller.
$i = 0;
#| open de 2 log bestanden.
$file1 = file("/var/log/wflogger.log.1");
$file2 = file("/var/log/wflogger.log");
#| voeg de 2 logbestanden samen en draai ze om. Het omdraaien is om de laatste logs te verkrijgen.
$log = array_reverse(array_merge($file1,$file2));
#| controleren of het log niet leeg is.
if(is_array($log) and !empty($log)){
#| Log bestand doorlopen tot voor alle sensoren de laatste log regel is gevonden.
/*---- INFO: Er is een marge van 25 regels ingestel voor het geval er iets helemaal fout is. ----*/
while(in_array(NULL, $data) and $i < 25){
#| Alle sensoren aflopen.
foreach($data as $sensor => $value){
#| Controleren of er al data is opgeslagen voor de huidige sensor.
if($value == NULL){
/*---- INFO! ---->
Lijst met uitzonderingen, Niet zo mooi maar er is niets aan te doen.
(1) " Rainy " word er uit gehaald om te voorkomen dat de barometer sensor roet in het eten gooit voor
de temperatuurs sensor.
(2) " _ " word er uit gehaald omdat de sleutel in de $data array van de temperatuurs sensor niet overeen
komt met wat we zoeken. " We zoeken Temperature th1 en niet Temperature_th1 "
*/
#| Kijken voor welke sensor de huidige regel is bedoeld.
if(strpos($log[$i], str_replace(array("_", "Rainy"), " ",$sensor))){
#| Log data opslaan voor de huidige sensor.
$data[$sensor] = $log[$i];
}
}
}
#| Teller updaten.
$i++;
}
}
////////////////////////////////////////////////////////
//// Je eigen stuk voor het uitwerken van de data. ////
//////////////////////////////////////////////////////
foreach($data as $line)
{
// haal uit elkaar om de juiste sensor te vinden
$parts = explode(' ', $line);
// tja, door een explode te doen op een spatie weet je niet meer of het nou de interne of externe temperatuursensor is
$sensor = $parts[4];
// dus als je dat wil weten plak je het 5e deel er nog even achteraan en nu aan elkaar!
if ($sensor == "Temperature"){
$parts[4] = $parts[4]."_".$parts[5];
}
// in de data zitten vervelende characters die we eruit willen hebben, defineer deze
$special = array('(',')',',');
// ok, dan gaan we nu de informatie uit iedere regel halen die we willen hebben
switch($parts[4]){
case 'Barometer':
$barometer_date = $parts[0];
$barometer_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$barometer_forecast = str_replace($special,"",$parts[6]); //even de komma weghalen
$barometer_pressure = $parts[9];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $barometer_date.",".$barometer_time.",".$barometer_forecast.",".$barometer_pressure."<br>";
break;
case 'Temperature_th1':
$temperature_date = $parts[0];
$temperature_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$temperature_temp = $parts[7];
$temperature_trend = str_replace($special,"",$parts[9]); //haakjes en komma weghalen
$temperature_hum = $parts[11];
$temperature_dew = $parts[16];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $temperature_date.",".$temperature_time.",".$temperature_temp.",".$temperature_trend.",".$temperature_trend.",".$temperature_hum.",".$temperature_dew."<br>";
break;
case 'Wind':
$wind_date = $parts[0];
$wind_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$wind_battery = str_replace($special,"",$parts[6]); //komma weghalen
$wind_direction = $parts[8];
$wind_gust = $parts[11];
$wind_avg = $parts[15];
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $wind_date.",".$wind_time.",".$wind_battery.",".$wind_direction.",".$wind_gust.",".$wind_avg."<br>";
break;
case 'Rain':
$rain_date = $parts[0];
$rain_time = substr($parts[1],0,8); //tijd hoeft niet in een duizendste van een seconde
$rain_battery = str_replace($special,"",$parts[7]); //komma weghalen
$rain_rate = str_replace($special,"",$parts[9]); //komma weghalen
$rain_hour = str_replace($special,"",$parts[12]); //komma weghalen
$rain_day = str_replace($special,"",$parts[15]); //komma weghalen
// tijdelijk even laten zien wat we er nu uit hebben gehaald, csv style
echo $rain_date.",".$rain_time.",".$rain_battery.",".$rain_rate.",".$rain_hour.",".$rain_day."<br>";
break;
}
}
?>