Grøtan Skrevet 9. januar 2021 Skrevet 9. januar 2021 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 2 Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.