Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

Anbefalte innlegg

Skrevet (endret)

Hva skal hentes denne uka er et gjentagende SPM hjemme hos oss. 
Så jeg fant APPEN "Min renovasjon.". Men en app er jo ikke løsningen på noe. For man vil jo ha denne informasjonen inn i homeseer. 

 

MinRenovasjon.vb

Sub Main(ByVal parameters As Object)
        'Clio75  All Credits to Moskus@hjemmeautomasjon.no
        'Inspired and based on Moskus scrip NewsReader.vb 

        Dim DevID     As Integer = parameters.ToString.Split("|")(0)
        Dim KommuneNr As String  = parameters.ToString.Split("|")(1)
        Dim Gatekode  As String  = parameters.ToString.Split("|")(2)
        Dim GateNavn  As String  = parameters.ToString.Split("|")(3)
        Dim GateNr    As String  = parameters.ToString.Split("|")(4)
        
'Sette sammen URL: 
        Dim kommuneURL as string = "kommunenr=" & KommuneNr 
        Dim GateKodeURL as string = "gatekode=" & Gatekode  
        Dim GateNavnURL as string = "gatenavn=" & GateNavn  
        Dim GateNrURL as string = "husnr=" & GateNr    

        Dim url As String = "https://komteksky.norkart.no/komtek.renovasjonwebapi/api/tommekalender/?" & kommuneURL & "&" & GateNavnURL & "&" & GateKodeURL   & "&" & GateNrURL  
        'hs.WriteLog("Soppel Error", "url " & url)
        Dim source As String = ""
        Try
            Using client As New System.Net.WebClient
                'Sette Headers 
                client.headers.set("Kommunenr", KommuneNr )
                client.headers.set("RenovasjonAppKey", "AE13DEEC-804F-4615-A74E-B4FAC11F0A30")
                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 json as Newtonsoft.Json.string = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)
            Dim json as Object = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

            Dim numMembers As Integer = json.Count -1            
            Dim DeviceText As String = ""
            For i As Integer = 0 To numMembers

                 Dim output As String = ""
                 Dim output2 As String = ""
                 output  = json(i)("FraksjonId")
                 output2 = json(i)("Tommedatoer")(0) & " Neste :" 

                      Try
                         output2 &= json(i)("Tommedatoer")(1)
                      Catch ex As Exception
                         output2 &= " -- "
                      End Try

                 Select Case Output
                     Case "1"
                          output = Replace(output, "1", "<b>Restavfall  : </b><br>")
                     Case "2"
                          output = Replace(output, "2", "<b>Papiravfall : </b><br>")
                     Case "3"
                          output = Replace(output, "3", "<b>Matavfall   : </b> <br>")
                     Case "4"
                          output = Replace(output, "4", "<b>Glass/Metall :  </b><br>")
                     Case "5"
                          output = Replace(output, "5", "<b>Drikkekartonger </b><br>")
                     Case "6"
                          output = Replace(output, "6", "<b>Grovavfall   : </b><br>")
                     Case "7"
                          output = Replace(output, "7", "<b>Plastavfall  : </b><br>")
                 End Select
                 DeviceText &= "" & output & " " & output2 & "<br>"
             Next

           hs.SetDeviceString(DevID, DeviceText , True)
        Catch ex As Exception
            hs.WriteLog("Soppel Error", "Net Feil: " & ex.Message)
        End Try
    End Sub

Så en event : 

Parameters

DevieRef | Kommunenummer | Gatenummer | GataNavn | Husnummer

 

Ser jeg forsatt har manuell trigger i screenshot, men en gang i døgnet burde vel holde i de fleste tilfeller. 

image.png.c25f52fae3d7a60ac0bbba9f83d32ad6.png

 

SOM ga meg denne

 

image.thumb.png.0f3004246eaff7665054805cddbbbab5.png

 

Instalering 

VeiNummer: 

For å finne vegnummeret kan du gå inn på https://www.vegvesen.no/vegkart zoom deg inn på vegen din og nærmest mulig huset ditt klikker du på veien, Så finner du de 5 sifferene du trenger(Rødt). 

Kommune Nummeret var de fire første her i Blått : 0710 

image.png.0686e031300c79f59ba2d70baf77abd3.png

 

HomeSeer trenger en referanse til Newtonsoft.Json.Dll, det kan du sette opp ved å lese under "Installasjon" i denne tråden: https://www.hjemmeautomasjon.no/forums/topic/4338-script-enturvb-få-inn-data-fra-entur/

 

Takk Til: 

Dette hadde jeg ikke klart alene.

 @Moskus skal ha en stor takk for sine delinger av script. Tatt utgangspunktet i hans NewsReader.VB

 @Marhil  Takk for tipset om Min renovasjons app eller hvordan jeg fant Gatenummer

Og alle de andre som deler kode og eksempler åpnet på nett :)

 

image.png

Endret av clio75
  • Like 5
  • Thanks 2
Skrevet
  ZoRaC skrev (På 15.10.2019 den 6.19):

Synd min kommune ikke er med. :( jaja, scraping av nettsiden til renovasjonsselskapet funker fortsatt, men bare til de redesigner siden sin...

Ekspander  

Bedre det enn en PDF som kommunen vår har ?

  • Confused 1
Skrevet (endret)

 

  mk1 black limited skrev (På 16.10.2019 den 12.55):

Hm, får denne i loggen jeg:

Net Feil: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

 

Ekspander  

 

  clio75 skrev (På 15.10.2019 den 6.12):

Dim numMembers As Integer = 4

Ekspander  

 

Kan du prøve å sette denne til 3 ?

 

Når jeg får mer tid skal jeg prøve å finne en måte å gjøre den delen mer robust. Om noen vet hvordan man kan finne ut hvor mange elementer det er i Json arrayet så skrik gjerne ut :)

Endret av clio75
Skrevet (endret)

Til Andres info :
Ikke bruk "cannot run for " muligheten når du skal feilsøke i et skript. 

I alle fall ikke når den er satt opp til å bare kjøre en gang i døgnet ;) 

Endret av clio75
  • Like 1
Skrevet

Scriptet kjører ikke på Linux.

 

Får feilmelding: Compiling script /usr/local/HomeSeer/scripts/Soppel.vb: The import 'System.Core' could not be found.

 

Har skjønt at dette kan være et typisk problem med script som kjører på Windows som er mer tilgivende enn Linx, men jeg har ikke klart å identifisere hva det er som er feil her...

Skrevet (endret)

Fikk trøbbel med: 

Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12

I stedet for å bruke enumen, erstattet jeg den med verdien, som er 3072

 

Nå stopper jeg opp på denne linjen:

Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

med feilmelding: Compiling script /usr/local/HomeSeer/scripts/Soppel.vb: Variable declaration without an 'As' clause; Object type assumed.

Endret av BME
Skrevet

@ZoRaC Noen Innspill på hvordan denne burde være deklarert på Linux ? 

Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

@Moskus Virker Newsreader.VB på linux hos deg ? 

Skrevet
  clio75 skrev (På 17.10.2019 den 6.07):

@Moskus Virker Newsreader.VB på linux hos deg ? 

Ekspander  

Kjører ikke Linux, så vet ikke.

 

Men mulig det holder å gjøre dette, siden mono er så vanvittig grinete på deklarasjonene:

Dim json as Object = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

 

Skrevet
  Moskus skrev (På 17.10.2019 den 6.42):

Kjører ikke Linux, så vet ikke.

 

Men mulig det holder å gjøre dette, siden mono er så vanvittig grinete på deklarasjonene:

Dim json as Object = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

 

Ekspander  

Takk igjen @Moskus

Med den endringen virker det fremdeles hos meg, så da må @BME Teste igjen. Første Posten er oppdatert :)

Skrevet

Prøvde det i går, men det virket ikke.

 

Mulig jeg må kjøre en New foran, for å opprette en instans av NewtonSoft. Skal prøve det i kveld...

  • Like 1
Skrevet
  BME skrev (På 16.10.2019 den 21.17):

Nå stopper jeg opp på denne linjen:

Dim json = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Object)(source)

med feilmelding: Compiling script /usr/local/HomeSeer/scripts/Soppel.vb: Variable declaration without an 'As' clause; Object type assumed.

Ekspander  

Men det er strengt tatt ikke en feilmelding. Den regner rett med at det er et object, men det burde ikke stoppe der.

Får du andre feilmeldinger?

Skrevet

Fant en lignende sak på Homeseer-forum.

Kan se ut som jeg må oppdatere setting.ini med ScriptingReference for å peke på NewtonSoft, men har ikke fått prøvd enda...

Skrevet
  BME skrev (På 21.10.2019 den 19.07):

Kan se ut som jeg må oppdatere setting.ini med ScriptingReference for å peke på NewtonSoft, men har ikke fått prøvd enda...

Ekspander  

Hvis du ikke har riktig ScriptingReference så er det ikke rart det ikke fungerer. Det ville vært et mirakel hvis det faktisk hadde fungert. :) 

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.