Files
datex/datex.ps1
2021-12-21 10:29:20 +01:00

271 lines
12 KiB
PowerShell

# Used everytime
$User = "username"
#$password = Get-Content /home/httpd/sites/datex/cred.txt | ConvertTo-SecureString
#$credential = New-Object System.Management.Automation.PsCredential($User,$password)
# Magic
#[xml]$Weather = Invoke-WebRequest -Credential $credential https://www.vegvesen.no/ws/no/vegvesen/veg/trafikkpublikasjon/vaer/2/GetMeasurementWeatherSiteTable
$securepassword = ConvertTo-SecureString "password" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential($User, $securepassword)
[xml]$Weather = Invoke-WebRequest -Uri "https://www.vegvesen.no/ws/no/vegvesen/veg/trafikkpublikasjon/vaer/2/GetMeasuredWeatherData" -Credential $credentials
#MET
Invoke-webrequest https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview -Outfile "response.xml"
[xml]$met = New-Object -TypeName xml
$met.load("response.xml")
$ostlandet_24 = $met.textforecast.time[0].forecasttype.location[0].innertext | Out-File /home/httpd/sites/datex/met24.inc
$ostlandet_48 = $met.textforecast.time[1].forecasttype.location[0].innertext | Out-File /home/httpd/sites/datex/met48.inc
# MET SLUTT
$EndResult = @()
$IDs = "206","217","342","1740","73","175","202","142","341","277","210","249","163"
Foreach ($place in $IDs) {
$Location = $Weather.d2LogicalModel.payloadPublication.siteMeasurements | Where-Object { $_.measurementsitereference.id -eq $place }
$LocationAirTemp = ($Location.measuredValue | Where-Object {$_.index -eq "101"}).innertext
$LocationHumidity = ($Location.measuredValue | Where-Object {$_.index -eq "201"}).innertext + " %"
$LocationDewPoint = ($Location.measuredValue | Where-Object {$_.index -eq "301"}).innertext
$LocationRoadTemp = ($Location.measuredValue | Where-Object {$_.index -eq "801"}).innertext
[float]$LocationWindSpeed = ($Location.measuredValue | Where-Object {$_.index -eq "901"}).innertext
#$LocationWindDir = ($Location.measuredValue | Where-Object {$_.index -eq "901"}).innertext
# $LocationVisibility = ($Location.measuredValue | Where-Object {$_.index -eq "1401"}).innertext
$LocationPrecipitation = ($Location.measuredValue | Where-Object {$_.index -eq "2501"}).innertext + " mm/h"
# $LocationSnowDepth = ($Location.measuredValue | Where-Object {$_.index -eq "3301"}).innertext
#if (!$LocationSnowDepth) {$LocationSnowDepth = "-"}
if (!$LocationWindSpeed) {[string]$LocationWindSpeed = "-"} else { $LocationWindSpeed = $LocationWindSpeed*5/18 } # Omregning fra km/t til m/s
if (!$LocationVisibility) {$LocationVisibility = "-"}
$Place = $Place.Replace("206","Lygna").Replace("217","Bekkehallum").Replace("342","Vardalsåsen").Replace("1740","Vingromåsen").Replace("73","Eggemoen").Replace("175","Stryken").Replace("202","Brovoll").Replace("142","Gjelleråsen").Replace("341","Tonsåsen").Replace("277","Andelva").Replace("210","Minnesund").Replace("249","Espa").Replace("163","Vikselv")
$Resultname = [PSCustomObject][ordered]@{
Lokasjon = $place
Lufttemperatur = $LocationAirTemp
Duggpunkt = $LocationDewPoint
Veibanetemperatur = $LocationRoadTemp
Nedbørintensitet = $LocationPrecipitation
Vindhastighet = $LocationWindSpeed
# Snødybde = $LocationSnowDepth
Luftfuktighet = $LocationHumidity
# Siktrekkevidde = $LocationVisibility
}
$EndResult += $ResultName
}
$EndResult|Format-Table
$fragments = @()
$fragments += @'
<script>
$(document).ready(function(){
var refreshUsers = setInterval(function() {
$("#Container").load("mestatable.inc");
}, 1000); // 300000 ms = 5 min
});
</script>
<script type="text/javascript">
setInterval("my_function();",1000);
function my_function(){
$('#refresh').load(location.href + ' #time');
}
</script>
'@
$fragments+= '<H1><img src="logo-mesta1.png"> Værstatistikk </H1>'
[xml]$html = $EndResult | convertto-html -Fragment
# Lufttemp
for ($i=1;$i -le $html.table.tr.count-1;$i++) {
if ([float]$html.table.tr[$i].td[1] -lt 0) {
$class = $html.CreateAttribute("class")
$class.value = 'minus'
$html.table.tr[$i].childnodes[1].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[1].innertext = ($html.table.tr[$i].childnodes[1].innertext) + " °C"
}
else {
$class = $html.CreateAttribute("class")
$class.value = 'pluss'
$html.table.tr[$i].childnodes[1].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[1].innertext = ($html.table.tr[$i].childnodes[1].innertext) + " °C"
}
}
# Duggpunkt
for ($i=1;$i -le $html.table.tr.count-1;$i++) {
if ([float]$html.table.tr[$i].td[2] -lt 0) {
$class = $html.CreateAttribute("class")
$class.value = 'minus'
$html.table.tr[$i].childnodes[2].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[2].InnerText = ($html.table.tr[$i].childnodes[2].'#text') + " °C"
}
else {
$class = $html.CreateAttribute("class")
$class.value = 'pluss'
$html.table.tr[$i].childnodes[2].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[2].InnerText = ($html.table.tr[$i].childnodes[2].'#text') + " °C"
}
}
# Veibanetemp
for ($i=1;$i -le $html.table.tr.count-1;$i++) {
if ([float]$html.table.tr[$i].td[3] -lt 0) {
$class = $html.CreateAttribute("class")
$class.value = 'minus'
$html.table.tr[$i].childnodes[3].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[3].InnerText = ($html.table.tr[$i].childnodes[3].'#text') + " °C"
}
else {
$class = $html.CreateAttribute("class")
$class.value = 'pluss'
$html.table.tr[$i].childnodes[3].attributes.append($class) | out-null
$html.table.tr[$i].childnodes[3].InnerText = ($html.table.tr[$i].childnodes[3].'#text') + " °C"
}
}
# Vindhastighet
for ($i=1;$i -le $html.table.tr.count-1;$i++) {
if ($html.table.tr[$i].td[5] -ne "-") {
$html.table.tr[$i].childnodes[5].InnerText = ($html.table.tr[$i].childnodes[5].'#text') + " m/s"
}
}
# Snødybde
#for ($i=1;$i -le $html.table.tr.count-1;$i++) {
# if ($html.table.tr[$i].td[6] -ne "-") {
# $html.table.tr[$i].childnodes[6].'#text' = ($html.table.tr[$i].childnodes[6].'#text') + " meter"
#}
#s}
# Siktrekkevidde
#for ($i=1;$i -le $html.table.tr.count-1;$i++) {
# if ($html.table.tr[$i].td[7] -ne "-") {
# $html.table.tr[$i].childnodes[7].'#text' = ($html.table.tr[$i].childnodes[7].'#text') + " meter"
# }
#}
#:Send-MailMessage -From 'User01 <steinar@engelund.nu>' -To 'User02 <zoyzat@gmail.com>' -Subject 'Test mail' -SmtpServer 'smtp.domeneshop.no'
#$fragments += $html.InnerXml
$html.InnerXml | Out-File /home/httpd/sites/datex/mestatable.inc
$fragments += @'
<div id="Container">
<? include 'mestatable.inc'; ?>
</div>
<div id="refresh">
<div id="time">
<p class='footer'>Siste oppdatering: <?php echo date('H:i:s');?></p>
<meta http-equiv="refresh" content="5">
</div>
</div>
'@
$fragments +="<h1>Værvarsel fra met.no</h1>
<b>Østlandet 24 timer:</b><p>$ostlandet_24</p>
<b>Østlandet 48 timer:</b><p>$ostlandet_48</p></br>"
$fragments += @'
<div class="w3-content w3-section" style="max-width:500px">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=109104" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=452531" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=2152383" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=440787" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=108543" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=750415" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=2056087" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=452497" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=729525" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=659547" style="width="640" Height="480">
<img class="mySlides" src="http://185.44.99.133/jpg/image.jpg" style="width="640" Height="480">
<img class="mySlides" src="https://www.synnfjellhytteeierforening.no/Images/Webcam/2/webcam2.jpgs" style="width="640" Height="480">
</div>
<div class="w3-content w3-section" style="max-width:500px">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=109104" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=452531" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=2152383" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=440787" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=108543" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=750415" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=2056087" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=452497" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=729525" style="width="640" Height="480">
<img class="mySlides" src="https://www.vegvesen.no/public/webkamera/kamera?id=659547" style="width="640" Height="480">
<img class="mySlides" src="http://185.44.99.133/jpg/image.jpg" style="width="640" Height="480">
<img class="mySlides" src="https://www.synnfjellhytteeierforening.no/Images/Webcam/2/webcam2.jpgs" style="width="640" Height="480">
</div>
<script>
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("mySlides");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}
x[myIndex-1].style.display = "block";
setTimeout(carousel, 5000); // Change image every 2 seconds
}
</script>
</br>
<script src="https://www.yr.no/sted/Norge/Oppland/Gran/Lygna/ekstern_boks_time_for_time.js"></script><noscript><a href="https://www.yr.no/sted/Norge/Oppland/Gran/Lygna/">yr.no: Værvarsel for Lygna</a></noscript>
<script src="https://www.yr.no/sted/Norge/Oppland/Lunner/Stryken/ekstern_boks_time_for_time.js"></script><noscript><a href="https://www.yr.no/sted/Norge/Oppland/Lunner/Stryken/">yr.no: Værvarsel for Stryken</a></noscript>
<script src="https://www.yr.no/sted/Norge/Oppland/Nordre_Land/Dokka/ekstern_boks_time_for_time.js"></script><noscript><a href="https://www.yr.no/sted/Norge/Oppland/Nordre_Land/Dokka/">yr.no: Værvarsel for Dokka</a></noscript>
'@
$convertParams = @{
head = @"
<Title>Mesta Værstatistikk - datex.glaeserud.no</Title>
<style>
body { background-color:#E5E4E2;
font-family:Monospace;
font-size:10pt; }
td,
th { border:0px solid black;
border-collapse:collapse;
white-space:pre;
text-align:center; }
th { color:white;
background-color:black; }
table, tr, td, th { padding: 2px; margin: 0px ;white-space:pre; }
tr:nth-child(odd) {background-color: lightgray}
table { width:500px;margin-left:5px; margin-bottom:20px;}
h2 {
font-family:Tahoma;
color:#6D7B8D;
}
.minus {
color: blue;
}
.pluss {
color: red;
}
.footer
{ color:green;
margin-left:10px;
font-family:Tahoma;
font-size:8pt;
font-style:italic;
}
</style>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
"@
body = $fragments
}
convertto-html @convertParams | out-file /home/httpd/sites/datex/index7.php