Jump to content
  • Sign Up
Støtt hjemmeautomasjon.no!

Recommended Posts

Posted (edited)

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 [email protected]
        '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

Edited by clio75
  • Like 5
  • Thanks 2
Posted

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

Posted
1 time siden, ZoRaC skrev:

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

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

  • Confused 1
Posted (edited)

 

15 minutes ago, mk1 black limited said:

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

 

 

On 15/10/2019 at 08:12, clio75 said:

Dim numMembers As Integer = 4

 

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 :)

Edited by clio75
Posted
3 minutes ago, clio75 said:

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 :)

Samme feil dessverre...

Posted
1 minute ago, Moskus said:

Kan du prøve med:


Dim numMembers As Integer = json.GetLength(0) - 1

 

Prøvde Men får 

Net Feil: Finner ikke "Public"-medlem GetLength på typen JArray.
Posted (edited)

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 ;) 

Edited by clio75
  • Like 1
Posted (edited)
5 hours ago, clio75 said:

@mk1 black limited  Hva er parrameterne dine på eventen ? 

Da har jeg etter tips fra @Moskus ordnet feilen du meldte inn. 

Kan du prøve igjen :)

Scriptet i Første post skal være oppdatert. 

Edited by clio75
Posted

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...

Posted (edited)

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.

Edited by BME
Posted

@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 ? 

Posted
35 minutter siden, clio75 skrev:

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

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)

 

Posted
5 minutes ago, Moskus said:

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)

 

Takk igjen @Moskus

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

Posted

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
Posted
2 timer siden, BME skrev:

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

Det er nok ikke det.

Posted
16 timer siden, BME skrev:

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.

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?

Posted

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...

Posted
15 minutter siden, BME skrev:

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

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. :) 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.