# prtg-freifunk
#
# Monitor a given freifunk node and send results to PRTG
# Samples are for my own freifunk node nearby paderborn, germany
#
param (
$meshdataurl ="https://map.hochstift.freifunk.net/data/pb-west/meshviewer.json",
$nodeid = "704f5727b9f6"
)
write-host "prtg-freifunk: Start"
write-host " URL $($meshdataurl)"
write-host " NodeID $($nodeid)"
write-host " Try do download and convert json-file"
try {
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
$jsondata = invoke-webrequest $meshdataurl -usebasicparsing
}
catch{
write-host "prtg-freifunk: Unable to get $($meshdataurl) with $($_.Exception.Message)"
Write-Host ""
Write-Host " 2"
Write-Host " Unabled to get $($meshdataurl) Error $($_.Exception.Message)"
Write-Host ""
exit 2
}
write-host " Try to convert JSON"
try {
$psdata= $jsondata | ConvertFrom-Json
}
catch {
write-host "prtg-freifunk: Unable to convert JSON Error $($_.Exception.Message)"
Write-Host ""
Write-Host " 3"
Write-Host " Unabled to convert JSON Error $($_.Exception.Message)"
Write-Host ""
exit 3
}
write-host " Filter for my node"
$mynode = $psdata.nodes| ?{$_.node_id -eq $nodeid}
if ($mynode) {
write-host "prtg-freifunk: Sending Data to PRTG"
Write-Host ""
Write-Host " "
Write-Host " is_online"
Write-Host " $(if ($mynode.is_online) {"1"} else {"0"})"
Write-Host " Number"
Write-Host " 0"
Write-Host " "
Write-Host " "
Write-Host " loadavg"
Write-Host " $($mynode.loadavg)"
Write-Host " CPU Load"
Write-Host " 1"
Write-Host " "
Write-Host " "
Write-Host " memory_usage"
Write-Host " $($mynode.memory_usage)"
Write-Host " CPU Load"
Write-Host " 1"
Write-Host " "
Write-Host " "
Write-Host " Clients"
Write-Host " $($mynode.clients)"
Write-Host " Number"
Write-Host " 0"
Write-Host " "
Write-Host " "
Write-Host " clients_wifi24"
Write-Host " $($mynode.clients_wifi24)"
Write-Host " Number"
Write-Host " 0"
Write-Host " "
Write-Host " "
Write-Host " clients_wifi5"
Write-Host " $($mynode.clients_wifi5)"
Write-Host " Number"
Write-Host " 0"
Write-Host " "
Write-Host " "
Write-Host " clients_other"
Write-Host " $($mynode.clients_other)"
Write-Host " Number"
Write-Host " 0"
Write-Host " "
Write-Host " 0"
Write-Host " OK"
Write-Host ""
exit 0
}
else {
write-host "prtg-freifunk: Unable to find my node $($nodeid)"
Write-Host ""
Write-Host " 4"
Write-Host " Unabled to find my node"
Write-Host ""
exit 4
}