clio75 Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 (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 [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 Endret 22. oktober 2019 av clio75 5 2 Siter
ZoRaC Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 Synd min kommune ikke er med. jaja, scraping av nettsiden til renovasjonsselskapet funker fortsatt, men bare til de redesigner siden sin... Siter
clio75 Skrevet 15. oktober 2019 Forfatter Skrevet 15. oktober 2019 (endret) Livet er som en kommode; Skuff på skuff ?? Endret 15. oktober 2019 av clio75 1 Siter
Oddvar Skrevet 15. oktober 2019 Skrevet 15. oktober 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 Siter
Moskus Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 Ha! Se der ja! json(i)("FraksjonId") Veldig godt jobbet, @clio75. Et glimrende sluttprodukt. Synd jeg ikke får brukt det selv... Siter
mk1 black limited Skrevet 16. oktober 2019 Skrevet 16. oktober 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 Siter
clio75 Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 (endret) 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 Endret 16. oktober 2019 av clio75 Siter
mk1 black limited Skrevet 16. oktober 2019 Skrevet 16. oktober 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... Siter
Moskus Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 Kan du prøve med: Dim numMembers As Integer = json.GetLength(0) - 1 Siter
clio75 Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 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. Siter
Moskus Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 Hva med bare: Dim numMembers As Integer = json.Length - 1 EDIT: eller kanskje heller: Dim numMembers As Integer = json.Count - 1 Siter
clio75 Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 (endret) @mk1 black limited Hva er parrameterne dine på eventen ? Endret 16. oktober 2019 av clio75 Siter
clio75 Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 (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 16. oktober 2019 av clio75 1 Siter
clio75 Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 (endret) 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. Endret 16. oktober 2019 av clio75 Siter
BME Skrevet 16. oktober 2019 Skrevet 16. oktober 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... Siter
BME Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 (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 16. oktober 2019 av BME Siter
clio75 Skrevet 17. oktober 2019 Forfatter Skrevet 17. oktober 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 ? Siter
Moskus Skrevet 17. oktober 2019 Skrevet 17. oktober 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) Siter
clio75 Skrevet 17. oktober 2019 Forfatter Skrevet 17. oktober 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 Siter
BME Skrevet 17. oktober 2019 Skrevet 17. oktober 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 Siter
Moskus Skrevet 17. oktober 2019 Skrevet 17. oktober 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. Siter
mk1 black limited Skrevet 17. oktober 2019 Skrevet 17. oktober 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 Siter
Moskus Skrevet 17. oktober 2019 Skrevet 17. oktober 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? Siter
BME Skrevet 21. oktober 2019 Skrevet 21. oktober 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... Siter
Moskus Skrevet 21. oktober 2019 Skrevet 21. oktober 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. 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.