clio75 Posted October 15, 2019 Posted October 15, 2019 (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. SOM ga meg denne : 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 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 Edited October 22, 2019 by clio75 5 2 Quote
ZoRaC Posted October 15, 2019 Posted October 15, 2019 Synd min kommune ikke er med. jaja, scraping av nettsiden til renovasjonsselskapet funker fortsatt, men bare til de redesigner siden sin... Quote
clio75 Posted October 15, 2019 Author Posted October 15, 2019 (edited) Livet er som en kommode; Skuff på skuff ?? Edited October 15, 2019 by clio75 1 Quote
Oddvar Posted October 15, 2019 Posted October 15, 2019 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 ? 1 Quote
Moskus Posted October 15, 2019 Posted October 15, 2019 Ha! Se der ja! json(i)("FraksjonId") Veldig godt jobbet, @clio75. Et glimrende sluttprodukt. Synd jeg ikke får brukt det selv... Quote
mk1 black limited Posted October 16, 2019 Posted October 16, 2019 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 Quote
clio75 Posted October 16, 2019 Author Posted October 16, 2019 (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 October 16, 2019 by clio75 Quote
mk1 black limited Posted October 16, 2019 Posted October 16, 2019 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... Quote
Moskus Posted October 16, 2019 Posted October 16, 2019 Kan du prøve med: Dim numMembers As Integer = json.GetLength(0) - 1 Quote
clio75 Posted October 16, 2019 Author Posted October 16, 2019 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. Quote
Moskus Posted October 16, 2019 Posted October 16, 2019 Hva med bare: Dim numMembers As Integer = json.Length - 1 EDIT: eller kanskje heller: Dim numMembers As Integer = json.Count - 1 Quote
clio75 Posted October 16, 2019 Author Posted October 16, 2019 (edited) @mk1 black limited Hva er parrameterne dine på eventen ? Edited October 16, 2019 by clio75 Quote
clio75 Posted October 16, 2019 Author Posted October 16, 2019 (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 October 16, 2019 by clio75 1 Quote
clio75 Posted October 16, 2019 Author Posted October 16, 2019 (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 October 16, 2019 by clio75 Quote
BME Posted October 16, 2019 Posted October 16, 2019 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... Quote
BME Posted October 16, 2019 Posted October 16, 2019 (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 October 16, 2019 by BME Quote
clio75 Posted October 17, 2019 Author Posted October 17, 2019 @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 ? Quote
Moskus Posted October 17, 2019 Posted October 17, 2019 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) Quote
clio75 Posted October 17, 2019 Author Posted October 17, 2019 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 Quote
BME Posted October 17, 2019 Posted October 17, 2019 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... 1 Quote
Moskus Posted October 17, 2019 Posted October 17, 2019 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. Quote
mk1 black limited Posted October 17, 2019 Posted October 17, 2019 17 hours ago, clio75 said: 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. Fiksa problemet mitt i alle fall, takk Quote
Moskus Posted October 17, 2019 Posted October 17, 2019 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? Quote
BME Posted October 21, 2019 Posted October 21, 2019 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... Quote
Moskus Posted October 21, 2019 Posted October 21, 2019 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. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.