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 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. 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 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 ? 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) 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 16. oktober 2019 av clio75 Siter
mk1 black limited Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 clio75 skrev (På 16.10.2019 den 13.10): 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 Ekspander 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 Moskus skrev (På 16.10.2019 den 13.16): Kan du prøve med: Dim numMembers As Integer = json.GetLength(0) - 1 Ekspander 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) clio75 skrev (På 16.10.2019 den 13.44): @mk1 black limited Hva er parrameterne dine på eventen ? Ekspander 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 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) Siter
clio75 Skrevet 17. oktober 2019 Forfatter Skrevet 17. oktober 2019 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 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 BME skrev (På 17.10.2019 den 7.56): Mulig jeg må kjøre en New foran, for å opprette en instans av NewtonSoft. Skal prøve det i kveld... Ekspander Det er nok ikke det. Siter
mk1 black limited Skrevet 17. oktober 2019 Skrevet 17. oktober 2019 clio75 skrev (På 16.10.2019 den 18.44): 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. Ekspander Fiksa problemet mitt i alle fall, takk Siter
Moskus Skrevet 17. oktober 2019 Skrevet 17. oktober 2019 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? 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 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. 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.