# prtg-tfareader
#
# reads the given
#
param (
[string]$inputfile = "C:\ProgramData\KlimaLogg.dat1"
)
#set-psdebug -strict
$ErrorActionPreference="SilentlyContinue"
$error.clear()
write-host "Start PRTG Sensor"
write-host "Inputfile:" $Inputfile
$inifile = get-content $inputfile
[string]$resultxml=""
[string]$inisection=""
foreach ($line in $inifile) {
write-host "Processing $line"
if ($line[0] -eq "[") {
if ($inisection -ne "") {
write-host "Closing old inisection: $inisection"
$resultxml+=("$inisection>`r`n")
}
$inisection = $line.replace("[","").replace("]","")
write-host "Found new inisection: $inisection"
$resultxml+=("<$inisection>`r`n")
}
elseif ($line -like "*=*") {
$key=($line.split("=")[0])
$value=($line.split("=")[1])
write-host "Found parameterline Key: $key Value:$value"
$resultxml+=("<$key>$value$key>`r`n")
}
else {
write-host "Skip line"
}
}
$resultxml+=("$inisection>`r`n")
$resultxml+=""
[xml]$inixml= $resultxml
[string]$result="`r`n"
$lastactualization = [long]($inixml.inifile.time.last_actualisation.replace("""",""))
write-host "Timestamp lastactualization: $lastactualization"
$timestampageseconds = [long](((Get-Date).touniversaltime().addseconds(-$lastactualization) - (get-date 1.1.1900)).totalseconds)
write-host "Timestamp age in minutes $timestampageseconds"
if ($timestampageseconds -gt 120) {
$result+="1`r`n"
$result+="Data to old. last Update $timestampageseconds Seconds. Check Klimalogger-Service`r`n"
}
else {
foreach ($count in (0..8)) {
write-host "Processing Channel $count"
$result+=" `r`n"
$result+=" Temperature("+$count+")`r`n"
$result+=" "+$inixml.inifile.("temperature_channel_"+$count).deg_c.replace("""","")+"`r`n"
$result+=" Temperature`r`n"
$result+=" Celsius`r`n"
$result+=" Absolute`r`n"
$result+=" 1`r`n"
$result+=" `r`n"
$result+=" `r`n"
$result+=" Humidy("+$count+")`r`n"
$result+=" "+$inixml.inifile.("humidity_channel_"+$count).percent.replace("""","")+"`r`n"
$result+=" Percent`r`n"
$result+=" Absolute`r`n"
$result+=" `r`n"
}
$result+="No errors found`r`n"
}
$result+=""
write-host "End: ExitCode "$error.count
Write-host "Sending Result to output pipeline"
$result
if ($error) {
#write-host "Found Errors"
EXIT 1
}