Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Renovasjon for Steinkjer og Snåsa i Homeseer


Grøtan

Anbefalte innlegg

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 Moskus@hjemmeautomasjon.no
'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

 

Capture1.PNG

Capture2.PNG

renovasjon.vb

  • Like 2
Lenke til kommentar
Del på andre sider

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.