Code: Alles auswählen
#!/usr/bin/perl
use CGI::Carp "fatalsToBrowser";
use LWP::Simple qw ($ua get);
$ua->timeout(5);
$ua->agent('Parser - mainFile');
$ua->credentials('demo.poolcontroller.de:80','NeedPassword','username'=>'passwort');
print "Content-type: text/html\n\n";
#### URL zur GetState.csv am Controller (http://IP-ADRESSE/GetState.csv)
$controllerip = "http://demo.poolcontroller.de/GetState.csv";
####Controller abfragen
@data = get($controllerip) || die print "timeout";
$data = "@data";
### Zeilen der GetState splitten
### 1. Zeile enthält System-Infos wie z.B. Firmwareversion, Uptime, Status der Dosierungen (AUS oder AUTO), etc...
### 2. Zeile enthält Namen der Sensoren/Aktoren
### 3. Zeile Einheiten der Messwerte
### 4. Zeile Offset um aus dem Rohmesswert einen fertigen Messwert zu berechnen
### 5. Zeile GAIN um aus dem Rohmesswert einen fertigen Messwert zu berechnen
### 6. Zeile Rohmesswerte
($sys,$names,$units,$offset,$gain,$value) = split(/\n/,$data);
### Beispiel um alle Namen einzelnen Variablen zu zu ordnen
($controllertimen,$adc1n,$adc2n,$adc3n,$adc4n,$adc5n,$rdxn,$phn,$temp1n,$temp2n,$temp3n,$temp4n,$temp5n,$temp6n,$temp7n,$temp8n,$relais1n,$relais2n,$rrelais3n,$relais4n,$relais5n,$relais6n,$relais7n,$relais8n,$di1n,$di2n,$di3n,$di4n,$rel9n,$rel10n,$rel11n,$rel12n,$rel13n,$rel14n,$rel15n,$rel16n,$clkanistern,$phminuskanistern,$phpluskanistern) = split(/,/,$names);
### Beispiel um alle Einheiten einzelnen Variablen zu zu ordnen
($controlelrtimeu,$adc1u,$adc2u,$adc3u,$adc4u,$adc5u,$rdxu,$phu,$temp1u,$temp2u,$temp3u,$temp4u,$temp5u,$temp6u,$temp7u,$temp8u,$relais1u,$relais2u,$rrelais3u,$relais4u,$relais5u,$relais6u,$relais7u,$relais8u,$di1u,$di2u,$di3u,$di4u,$rel9u,$rel10u,$rel11u,$rel12u,$rel13u,$rel14u,$rel15u,$rel16u,$clkanisteru,$phminuskanisteru,$phpluskanisteru) = split(/\,/,$units);
### Beispiel um alle Rohwerte einzelnen Variablen zu zu ordnen
($controllertimev,$adc1v,$adc2v,$adc3v,$adc4v,$adc5v,$rdxv,$phv,$t1v,$t2v,$t3v,$t4v,$t5v,$t6v,$t7v,$t8v,$r1v,$r2v,$r3v,$r4v,$r5v,$r6v,$r7v,$r8v,$di1v,$di2v,$di3v,$di4v,$r9v,$r10v,$r11v,$r12v,$r13v,$r14v,$r15v,$r16v,$clkanisterv,$phminuskanisterv,$phpluskanisterv) = split(/\,/,$value);
### Beispiel um aus allen Rohwerten mit Hilfe von "OffSet" und "Gain" einen fertigen Messwert zu berechnen und aus zu geben
@names = split(",", $names);
@units = split(",", $units);
@value = split(",", $value);
@offset = split(",", $offset);
@gain = split(",", $gain);
### Controlleruhrzeit aus den Rohdaten ermitteln
if (($controllertimev & 0xFF) < 10) { $time = ($controllertimev>>8).":0".($controllertimev & 0xFF); }
else { $time = ($controllertimev>>8).":".($controllertimev & 0xFF); }
print "<table cellpadding=2>";
print "<tr><td> Uhrzeit: </td> <td> $time @units[0]</td></tr>";
for ($i=1;$i<$#value+1;$i++)
{
### fertigen Messwert berechnen
$wert = @offset[$i] + (@gain[$i] * @value[$i]);
### Messwert auf 2 Nachkommastellen runden
$wert = sprintf("%.2f", $wert);
###Ausgeben
print "<tr><td> @names[$i]: </td> <td> $wert @units[$i]</td></tr>";
}
print "</table>";
exit;
Demo Ausgabe sieht hier dann so aus: http://www.lembi.de/pool/demo.pl