Etter inspirasjon fra denne tråden har jeg laget/modifisert script for henting av tømmedatoer i Steinkjer og Snåsa.
Har laget og drifter en mobilapp for tømmedatoer så jeg laget en rute i backend for å gjøre det litt enklere å tilpasse til Homeseer.
Man må lage 3 virtuelle enheter med On/Off mulighet der On er 1 og Off er 0.
Scriptet slår på enhetene som har tømming neste dag og slår av enhetene som ikke har tømming neste dag.
Nå vet ikke jeg hvor mange som bruker Homeseer i Steinkjer/Snåsa, men det kan jo finnes noen 😊
Public Class Readomrade
Public Property id As Integer
Public Property omradetekst As String
End Class
Public Class Readrute
Public Property id As Integer
Public Property ruteomradeid As Integer
Public Property rutetekst As String
Public Property rutebeskrivelse As String
End Class
Public Class TommePlan
Public Property id As Integer
Public Property dato As DateTime
Public Property rutetype As String
Public Property readomrade As Readomrade
Public Property readrute As Readrute
End Class
Sub Main(ByVal parameters As Object)
' Tømmeplan Steinkjer og Snåsa. https://grsoft.no/tommeplan
' Parameter:
' 1: Devref Restavfall
' 2: Devref Papp
' 3: Devref Plast
' 4: Områdenr.
' 5: Rutenr. Område og Rutenr hentes fra: https://www.steinkjer.kommune.no/renovasjon.460804.no.html
' ruteType:
' 1,2 = Matavfall og Restavfall
' 1,3 = Matavfall og Papp/Papir
' 4 = Plast
' 5 = Plast sentrum nord for Steinkjerelva
' 6 = Plast sentrum sør for Steinkjerelva
'Clio75 All Credits to
[email protected]
'Inspired and based on Moskus scrip NewsReader.vb
Dim devIDRest As Integer = parameters.ToString.Split("|")(0)
Dim devIDPapp As Integer = parameters.ToString.Split("|")(1)
Dim devIDPlast As Integer = parameters.ToString.Split("|")(2)
Dim omradeID As String = parameters.ToString.Split("|")(3)
Dim ruteID As String = parameters.ToString.Split("|")(4)
'Angir hvor mange fremtidige tømminger som skal hentes
Dim fetchLimit As String = "2"
Dim ruteType As String = ""
Dim devID As Integer = 0
For x As Integer = 0 To 2
Select Case x
Case 0
ruteType = "1,2"
'Device ref til Restavfall
devID = devIDRest
Case 1
ruteType = "1,3"
'Device ref til Papp
devID = devIDPapp
Case 2
'Endre denne til 5 eller 6 om du bor i sentrum av Steinkjer
ruteType = "4"
'Device ref til Plast
devID = devIDPlast
End Select
Dim url As String = "https://tommeplan.grsoft.no/v1/getha?omradeID=" & omradeID & "&ruteID=" & ruteID & "&ruteType=" & ruteType & "&fetchLimit=" & fetchLimit
Dim source As String = ""
Try
Using client As New System.Net.WebClient
' Denne api nøkkelen kan alle bruke
client.headers.set("X-Api-Key", "ZABtfylm48W01BPcEGKmnpbm7XCLWKAo")
Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12
client.Encoding = System.Text.Encoding.UTF8
source = client.DownloadString(url)
End Using
Catch ex As Exception
hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message)
End Try
If source = "" Then
hs.WriteLog("soppel Error", "Got no response from url: " & url)
Exit Sub
End If
Try
Dim tommePlan() as TommePlan = Newtonsoft.Json.JsonConvert.DeserializeObject(Of TommePlan())(source)
Dim devTekst = ""
' Dim firstDate As DateTime
Dim imorgen As Date = DateAdd("d",1,Today)
Dim tommeDato As Date
For i As Integer = 0 To tommePlan.Count -1
Dim ruteTypeTekst As String = ""
Dim dato As DateTime = Convert.ToDateTime(tommePlan(i).dato)
Dim formattedDate As String = dato.ToString("ddd d MMM")
Select Case i
Case 0
devTekst = formattedDate+" <br>"
tommeDato = tommePlan(i).dato
If imorgen = tommeDato Then
' Slår på virtuell enhet om det er tømming i morgen
hs.SetDeviceValueByRef(devID, 1, True)
Else
' Slår av virtuell enhet om det ikke er tømming i morgen
hs.SetDeviceValueByRef(devID, 0, True)
End If
Case 1
devTekst = devTekst + "<b>Neste:</b> " + formattedDate
End Select
hs.SetDeviceString(devID, devTekst , True)
Next
Catch ex As Exception
hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message)
End Try
Next
End Sub
renovasjon.vb