Moskus Skrevet 14. januar 2019 Skrevet 14. januar 2019 Dette scriptet lar deg hente inn trafikkinformasjon fra EnTur. Finne reiseruter, IDer for "StopPlace" og "Quay" Å bruke scriptet er ikke så vanskelig. Det vanskelige er å finne IDene til stasjonene du vil spore. La oss si at jeg vil finne alle busser som går fra "Tasta Senter" (og mot Stavanger sentrum, men det kommer vi tilbake til) Gå til en-tur.no Tast inn stoppesteder til og fra Kopier URL'en fra nettleseren etter søket (f.eks. som denne) inn URLdecoder.org for å gjøre den lettere å lese. Finn "startID" og kopier ut strengen som begynner med "NSR:". For Tasta Senter er denne "NSR:StopPlace:28163" Oppdatering: Etter tips fra @Odd Are er det enklere å gå hit med brukernavn/passord guest/guest og hente QuayIDer og StopPlaceIDer derfra. Vel og bra! Nå vet vi at busstoppet ved Tasta Senter heter "NSR:StopPlace:28163". Men et busstopp kan faktisk ha flere plattformer, f.eks. en på hver side av veien. Det heter visst "Quay" på engelsk. Jeg er ikke interessert i begge sider av veien for kun en av dem har vanligvis trafikk mot sentrum. For å finne Quay, må vi bruke GraphQL-exploreren til EnTur (som dessverre ikke er like forseggjort som Tibber sin). Vi er interessert i denne spørringen som finner alle avganger for et stoppested, og vi må endre id: "NSR:StopPlace:28163" og avgangstiden (startTime:"2018-06-19T09:00:00+0200") til det riktige. I skrivende stund ser min spørring slik ut. Så går vi gjennom resultatene, vi skal prøve å finne riktig "Quay". Det første treffet er inneholder denne teksten: "destinationDisplay": { "frontText": "Tasta - Vardeneset" }, "quay": { "id": "NSR:Quay:48450" }, ... men en buss med "Tasta - Vardeneset" tar meg i feil retning! Ergo er "NSR:Quay:48450" ikke riktig. Det neste treffet inneholder dette: "destinationDisplay": { "frontText": "Stavanger" }, "quay": { "id": "NSR:Quay:48449" }, Jepp! Riktig! Altså kan vi filtrere på "NSR:Quay:48449" for å finne avganger fra "NSR:StopPlace:28163" som kun går mot Stavanger. Installasjon Du trenger en referanse til Newtonsoft.Json.dll for at scriptet skal fungere. Json er mye i bruk i dag, og siden jeg har oppdaget at Webclient nå er innebygget i HS3 (og superenkel å bruke), så er det bare å legge inn Json-støtte for scripting også. Lukk HS3. Åpne settings.ini Finn linjen som begynner med ScriptingReference= Vanligvis står det kun System.Core;System.Core.dll. Vi skal legge til Newtonsoft bak der. Hos meg (på Windows) skal linjen da se slik ut: ScriptingReferences=System.Core;System.Core.dll,Newtonsoft.Json;C:\Program Files (x86)\HomeSeer HS3\Bin\homeseer\Newtonsoft.Json.dll Lagre og start HS3 igjen. For Linux skal den muligens se slik ut, men du må sjekke plasseringen på /bin/homeseer/Newtonsoft.Json.dll selv. ScriptingReferences=System.Core;System.Core.dll,Newtonsoft.Json;/usr/local/HomeSeer/bin/homeseer/Newtonsoft.Json.dll Kopier scriptet under og lagre det som EnTur.vb. Etter massiv testing fra @Tor-Erik er vi ganske sikre på at det også kjører på Linux. EnTur.vb: Spoiler Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq Imports System.Collections.Generic 'Moskus 2019 'Besøk https://en-tur.no for å finne stop-ider og quay-ider Sub CallsFromStopplace(parm As Object) Dim input() As String = parm.ToString.Split(",") Dim deviceRef As Integer = input(0).Trim Dim stop1 As String = input(1).Trim Dim quay As String = "" Dim entries As Integer = 5 If input.GetLength(0) > 2 Then quay = input(2).Trim If input.GetLength(0) = 4 Then entries = input(3).Trim Dim list As List(Of EstimatedCall) = GetCallsFromStopPlace(stop1, quay, entries) Dim out As String = "" For Each c As EstimatedCall In list out &= c.ToString & "<br>" Next Dim minutesToNextDeparture As Integer = list(0).expectedArrivalTime.Subtract(Now).TotalMinutes hs.SetDeviceString(deviceRef, out, False) hs.SetDeviceValueByRef(deviceRef, minutesToNextDeparture, True) End Sub Sub TripsBetweenStops(parm As Object) Dim input() As String = parm.ToString.Split(",") Dim deviceRef As Integer = input(0).Trim Dim stop1 As String = input(1).Trim Dim stop2 As String = input(2).Trim Dim entries As Integer = 5 If input.GetLength(0) = 4 Then entries = input(3).Trim Dim list As List(Of Trippattern) = GetTripBetweenStops(stop1, stop2, entries) Dim out As String = "" For Each c As Trippattern In list out &= c.ToString & "<br>" Next Dim minutesToNextDeparture As Integer = list(0).startTime.Subtract(Now).TotalMinutes hs.SetDeviceString(deviceRef, out, False) hs.SetDeviceValueByRef(deviceRef, minutesToNextDeparture, True) End Sub Private Function RunQuery(ByVal jsonQuery As String) As String Dim url As String = "https://api.entur.io/journey-planner/v2/graphql" Using client As New System.Net.WebClient Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12 client.Headers.Add("ET-Client-Name", "Moskus-InfoplakatForHomeseer") client.Headers.Add("User-Agent", "EnTur-script by Moskus") client.Headers.Add("Content-Type", "application/graphql") client.Encoding = System.Text.Encoding.UTF8 client.BaseAddress = url Return client.UploadString(url, "POST", jsonQuery) End Using End Function Private Function GetCallsFromStopPlace(ByVal _stop As String, Optional ByVal _quay As String = "", Optional ByVal entries As Integer = 5) As List(Of EstimatedCall) Dim jsonQuery As String = "{stopPlace(id: """ & _stop & """) {id name estimatedCalls(startTime: """ & Now.ToString("yyyy-MM-ddTHH:mm:sszzz") & """, timeRange: 72100, numberOfDepartures: " & (entries * 2 + 2) & "){ realtime aimedArrivalTime expectedArrivalTime destinationDisplay {frontText} quay {id} serviceJourney {journeyPattern {line {id name transportMode}}}}}}" Dim result As String = RunQuery(jsonQuery) Dim enTurJson As EnTur = Newtonsoft.Json.JsonConvert.DeserializeObject(Of EnTur)(result) Dim lst As New List(Of EstimatedCall) Dim count As Integer = 0 For Each e As EstimatedCall In enTurJson.data.stopPlace.estimatedCalls If _quay <> "" Then If e.quay.id = _quay Then lst.Add(e) count += 1 End If Else lst.Add(e) count += 1 End If If count = entries Then Exit For Next Return lst End Function Private Function GetTripBetweenStops(ByVal stop1 As String, ByVal stop2 As String, Optional ByVal entries As Integer = 5) As List(Of Trippattern) Dim jsonQuery As String = "{trip(from:{place: """ & stop1 & """} to: {place: """ & stop2 & """} modes: [bus] numTripPatterns: " & entries & ") { tripPatterns { startTime endTime duration walkDistance legs {mode distance line {id publicCode name } }}}}" Dim result As String = RunQuery(jsonQuery) Dim enTurJson As EnTur = JsonConvert.DeserializeObject(Of EnTur)(result) Return enTurJson.data.trip.tripPatterns End Function Sub Main(parm As Object) ' hs.Writelog("EnTur", GetCallsFromStopPlace("NSR:StopPlace:27753")) ' Dim list As List(Of EstimatedCall) = GetCallsFromStopPlace("NSR:StopPlace:27753", "NSR:Quay:47785") Dim list As List(Of Trippattern) = GetTripBetweenStops("NSR:StopPlace:59854", "NSR:StopPlace:27753") Dim out As String = "" For Each c As Trippattern In list out &= c.ToString & "<br>" Next hs.WriteLog("EnTur", out) End Sub Public Class EnTur Private _data As Data Public Property data() As Data Get Return _data End Get Set(Byval value As Data ) _data = value End Set End Property End Class Public Class Data Private _stopPlace As Stopplace Public Property stopPlace() As Stopplace Get Return _stopPlace End Get Set(Byval value As Stopplace ) _stopPlace = value End Set End Property Private _trip As Trip Public Property trip() As Trip Get Return _trip End Get Set(Byval value As Trip ) _trip = value End Set End Property End Class Public Class Stopplace Private _id As String Public Property id() As String Get Return _id End Get Set(Byval value As String ) _id = value End Set End Property Private _name As String Public Property name() As String Get Return _name End Get Set(Byval value As String ) _name = value End Set End Property Private _estimatedCalls As List(Of EstimatedCall) Public Property estimatedCalls() As List(Of EstimatedCall) Get Return _estimatedCalls End Get Set(Byval value As List(Of EstimatedCall) ) _estimatedCalls = value End Set End Property End Class Public Class EstimatedCall Private _realtime As Boolean Public Property realtime() As Boolean Get Return _realtime End Get Set(Byval value As Boolean ) _realtime = value End Set End Property Private _aimedArrivalTime As Date Public Property aimedArrivalTime() As Date Get Return _aimedArrivalTime End Get Set(Byval value As Date ) _aimedArrivalTime = value End Set End Property Private _aimedDepartureTime As Date Public Property aimedDepartureTime() As Date Get Return _aimedDepartureTime End Get Set(Byval value As Date ) _aimedDepartureTime = value End Set End Property Private _expectedArrivalTime As Date Public Property expectedArrivalTime() As Date Get Return _expectedArrivalTime End Get Set(Byval value As Date ) _expectedArrivalTime = value End Set End Property Private _expectedDepartureTime As Date Public Property expectedDepartureTime() As Date Get Return _expectedDepartureTime End Get Set(Byval value As Date ) _expectedDepartureTime = value End Set End Property Private _actualArrivalTime As Object Public Property actualArrivalTime() As Object Get Return _actualArrivalTime End Get Set(Byval value As Object ) _actualArrivalTime = value End Set End Property Private _actualDepartureTime As Object Public Property actualDepartureTime() As Object Get Return _actualDepartureTime End Get Set(Byval value As Object ) _actualDepartureTime = value End Set End Property Private __date As String Public Property _date() As String Get Return __date End Get Set(Byval value As String ) __date = value End Set End Property Private _forBoarding As Boolean Public Property forBoarding() As Boolean Get Return _forBoarding End Get Set(Byval value As Boolean ) _forBoarding = value End Set End Property Private _forAlighting As Boolean Public Property forAlighting() As Boolean Get Return _forAlighting End Get Set(Byval value As Boolean ) _forAlighting = value End Set End Property Private _destinationDisplay As Destinationdisplay Public Property destinationDisplay() As Destinationdisplay Get Return _destinationDisplay End Get Set(Byval value As Destinationdisplay ) _destinationDisplay = value End Set End Property Private _quay As Quay Public Property quay() As Quay Get Return _quay End Get Set(Byval value As Quay ) _quay = value End Set End Property Private _serviceJourney As Servicejourney Public Property serviceJourney() As Servicejourney Get Return _serviceJourney End Get Set(Byval value As Servicejourney ) _serviceJourney = value End Set End Property Public Overrides Function ToString() As String Return Me.expectedArrivalTime.ToString("HH:mm") & " (" & Me.aimedArrivalTime.ToString("HH:mm") & ")" & ": " & Me.serviceJourney.journeyPattern.line.name & " " & Me.destinationDisplay.frontText End Function Public Shared Sub ToFile(ByVal calls As List(Of EstimatedCall), ByVal filename As String) If calls.Count = 0 Then Exit Sub Dim sb As New Text.StringBuilder 'FEILER 'calls.ForEach(Sub(x) sb.AppendLine(x.ToString)) My.Computer.FileSystem.WriteAllText(Environment.CurrentDirectory & "\" & filename, sb.ToString, False) End Sub End Class Public Class Destinationdisplay Private _frontText As String Public Property frontText() As String Get Return _frontText End Get Set(Byval value As String ) _frontText = value End Set End Property End Class Public Class Quay Private _id As String Public Property id() As String Get Return _id End Get Set(Byval value As String ) _id = value End Set End Property Private _name As String Public Property name() As String Get Return _name End Get Set(Byval value As String ) _name = value End Set End Property End Class Public Class Servicejourney Private _journeyPattern As Journeypattern Public Property journeyPattern() As Journeypattern Get Return _journeyPattern End Get Set(Byval value As Journeypattern ) _journeyPattern = value End Set End Property End Class Public Class Journeypattern Private _line As Line Public Property line() As Line Get Return _line End Get Set(Byval value As Line ) _line = value End Set End Property End Class Public Class Line Private _id As String Public Property id() As String Get Return _id End Get Set(Byval value As String ) _id = value End Set End Property Private _name As String Public Property name() As String Get Return _name End Get Set(Byval value As String ) _name = value End Set End Property Private _transportMode As String Public Property transportMode() As String Get Return _transportMode End Get Set(Byval value As String ) _transportMode = value End Set End Property Private _publicCode As String Public Property publicCode() As String Get Return _publicCode End Get Set(Byval value As String ) _publicCode = value End Set End Property End Class Public Class Trip Private _tripPatterns As List(Of Trippattern) Public Property tripPatterns() As List(Of Trippattern) Get Return _tripPatterns End Get Set(Byval value As List(Of Trippattern) ) _tripPatterns = value End Set End Property End Class Public Class Trippattern Private _startTime As Date Public Property startTime() As Date Get Return _startTime End Get Set(Byval value As Date ) _startTime = value End Set End Property Private _endTime As Date Public Property endTime() As Date Get Return _endTime End Get Set(Byval value As Date ) _endTime = value End Set End Property Private _duration As Integer Public Property duration() As Integer Get Return _duration End Get Set(Byval value As Integer ) _duration = value End Set End Property Private _walkDistance As Double Public Property walkDistance() As Double Get Return _walkDistance End Get Set(Byval value As Double ) _walkDistance = value End Set End Property Private _legs As List(Of Leg) Public Property legs() As List(Of Leg) Get Return _legs End Get Set(Byval value As List(Of Leg) ) _legs = value End Set End Property Public Overrides Function ToString() As String Return Me.startTime.ToString("HH:mm") & " → " & Me.endTime.ToString("HH:mm") & ": Rute " & Me.legs(0).line.name End Function Public Shared Sub ToFile(ByVal calls As List(Of Trippattern), ByVal filename As String) If calls.Count = 0 Then Exit Sub Dim sb As New Text.StringBuilder 'FEILER ' calls.ForEach(Sub(x) sb.AppendLine(x.ToString)) My.Computer.FileSystem.WriteAllText(Environment.CurrentDirectory & "\" & filename, sb.ToString, False) End Sub End Class Public Class Leg Private _mode As String Public Property mode() As String Get Return _mode End Get Set(Byval value As String ) _mode = value End Set End Property Private _distance As Single Public Property distance() As Single Get Return _distance End Get Set(Byval value As Single ) _distance = value End Set End Property Private _line As Line Public Property line() As Line Get Return _line End Get Set(Byval value As Line ) _line = value End Set End Property End Class Du må også lage deg noen devicer selv for å faktisk vise data. Dette gjør foreløpig ikke scriptet for deg. Den trenger ingen status values, men kanskje en enkel status Graphics for å ha et ikon (istedenfor Off/Dim/On-ikoner) Så trenger vi et event for å oppdatere teksten. Dette kan f.eks. kjøre hvert minutt. Parametre for funksjonen "CallsFromStopplace" er deviceID, stopplaceID, quayID (optional), antall_avganger (optional). Du kan ha flere script-kall i et event, hvis du har flere stopp, avganger, etc du vil kontrollere. Parametre for funksjonen "TripsBetweenStops" er deviceID, stopplaceID (fra), stopplaceID (til), antall_avganger (optional). Det er et enkelt ruteoppslag, fint fra større stasjoner (f.eks. "Stavanger") til et bestemt stoppested. DeviceValue i hver device er antall minutter til neste avgang. Kan brukes til automasjon. EDIT: Oppdatert juli 2019 pga. flytting av URL for EnTur APIet. Gjeldene URL er nå: https://api.entur.io/journey-planner/v2/graphql Oppdatert januar 2020 pga. bruk av TSL12. 3 Siter
Kensko Skrevet 15. januar 2019 Skrevet 15. januar 2019 20 hours ago, Moskus said: Installasjon Du trenger en referanse til Newtonsoft.Json.dll for at scriptet skal fungere. Json er mye i bruk i dag, og siden jeg har oppdaget at Webclient nå er innebygget i HS3 (og superenkel å bruke), så er det bare å legge inn Json-støtte for scripting også. Lukk HS3. Åpne settings.ini Finn linjen som begynner med ScriptingReference= Vanligvis står det kun System.Core;System.Core.dll. Vi skal legge til Newtonsoft bak der. Hos meg (på Windows) skal linjen da se slik ut: ScriptingReferences=System.Core;System.Core.dll,Newtonsoft.Json;C:\Program Files (x86)\HomeSeer HS3\Bin\homeseer\Newtonsoft.Json.dll Lagre og start HS3 igjen. For Linux skal den muligens se slik ut, men du må sjekke plasseringen på /bin/homeseer/Newtonsoft.Json.dll selv. ScriptingReferences=System.Core;System.Core.dll,Newtonsoft.Json;/usr/local/HomeSeer/bin/homeseer/Newtonsoft.Json.dll I min HS3 installasjon på Windows, finner jeg ikke noen linje med "ScriptingReference=" i filen ..\HomeSeer HS3\Config\settings.ini. Synes det var litt snålt. Kjører jo vb script. Er det fordi HS3 finner det den trenger til vanlig i path? Siter
Moskus Skrevet 15. januar 2019 Forfatter Skrevet 15. januar 2019 Ja, det synes jeg også er snålt... Men du kan legge den til, rett under [settings] Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 (endret) Tester scripet. Men får feilmelding: Running script C:\Program Files (x86)\HomeSeer HS3\scripts\EnTur.vb :Exception has been thrown by the target of an invocation.->Does entry point CallsFromStopplace exist in script? at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Scheduler.clsRunVBNetScript.ExecuteScript() EDIT: Glem det, glemte "NSR:" foran Quay nummeret. Endret 15. januar 2019 av GeneralVirus Siter
Kensko Skrevet 15. januar 2019 Skrevet 15. januar 2019 Scriptet funger flott. Veldig kjekt å slippe å ta opp mobilen for å sjekke hvor mye bussen er forsinket i dag En annen ting, hvordan takler dere norske "spesialtegn" i device staus? Blir det rotete fordi Windows er på engelsk? Siter
Moskus Skrevet 15. januar 2019 Forfatter Skrevet 15. januar 2019 Ai... webencoding, ja. Sannsynligvis bare å konfigurere webclient riktig. Jeg skal sjekke. Hvilket stoppested er det? EDIT: Sannsynligvis holder med å bare bruke UTF8. Legg til client.Encoding = System.Text.Encoding.UTF8 Mellom using-kodene i RunQuery, evt. bare erstatt hele greia (dvs kun RunQuery) med koden under: Private Function RunQuery(ByVal jsonQuery As String) As String Dim url As String = "https://api.entur.org/journeyplanner/2.0/index/graphql" Using client As New System.Net.WebClient client.Headers.Add("ET-Client-Name", "Moskus-InfoplakatForHomeseer") client.Headers.Add("User-Agent", "EnTur-script by Moskus") client.Headers.Add("Content-Type", "application/graphql") client.Encoding = System.Text.Encoding.UTF8 client.BaseAddress = url Return client.UploadString(url, "POST", jsonQuery) End Using End Function Sjekker du før jeg oppdaterer førstepost? Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 (endret) Funker fint dette! Takk @Moskus Ser EnTur apiet kaller rutene her merkelige navn, bruker xxxxxx-xxxxxxx-xxxxxxx isteden for rute nummeret. Litt irriterende. Og ja, mye æøå feil her også Endret 15. januar 2019 av GeneralVirus Siter
Moskus Skrevet 15. januar 2019 Forfatter Skrevet 15. januar 2019 2 minutter siden, GeneralVirus skrev: Og ja, mye æøå feil her også Sjekk posten over din og rapporter tilbake. Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 6 minutes ago, Moskus said: Sjekk posten over din og rapporter tilbake. Se der ja, det løste æøå problemet. 2 Siter
Moskus Skrevet 15. januar 2019 Forfatter Skrevet 15. januar 2019 Ok, da oppdaterer jeg førsteposten. 1 Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 Synd de ikke har sanntid rutetider. Men det kommer kanskje etterhvert. Siter
Moskus Skrevet 15. januar 2019 Forfatter Skrevet 15. januar 2019 Dette er sanntid: Klokkeslettet i parentes er passeringstidspunktet ihht tabell. Det foran er det reelle. Siter
Kensko Skrevet 15. januar 2019 Skrevet 15. januar 2019 Kikk her: https://www.entur.org/dev/sanntidsdata/ Det ligger tilgjengelig. Må "bare" hentes ut. Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 Funker ikke hos meg ihvertfall, mulig det ikke er aktivert for Troms enda. Siter
GeneralVirus Skrevet 15. januar 2019 Skrevet 15. januar 2019 @Moskus Jeg endret scriptet til å bruke "publiCode" fra apiet istedenfor "name"? Det er vist rutenummeret og brukes som oftest i avgangstavler sammen med frontText. Ble penere for meg da Siter
Moskus Skrevet 16. januar 2019 Forfatter Skrevet 16. januar 2019 11 timer siden, GeneralVirus skrev: @Moskus Jeg endret scriptet til å bruke "publiCode" fra apiet istedenfor "name"? Det er vist rutenummeret og brukes som oftest i avgangstavler sammen med frontText. Ble penere for meg da Hvor? Kan du være litt mer spesifikk? Siter
GeneralVirus Skrevet 16. januar 2019 Skrevet 16. januar 2019 47 minutes ago, Moskus said: Hvor? Kan du være litt mer spesifikk? Endret først denne å la til publicCode Dim jsonQuery As String = "{stopPlace(id: """ & _stop & """) {id name estimatedCalls(startTime: """ & Now.ToString("yyyy-MM-ddTHH:mm:sszzz") & """, timeRange: 72100, numberOfDepartures: " & (entries * 2 + 2) & "){ realtime aimedArrivalTime expectedArrivalTime destinationDisplay {frontText} quay {id} serviceJourney {journeyPattern {line {id name publicCode transportMode}}}}}}" Så denne for å endre hva som legges i HS devicen. Return Me.expectedArrivalTime.ToString("HH:mm") & " (" & Me.aimedArrivalTime.ToString("HH:mm") & ")" & ": Rute " & Me.serviceJourney.journeyPattern.line.publicCode & " " & Me.destinationDisplay.frontText Siter
GeneralVirus Skrevet 16. januar 2019 Skrevet 16. januar 2019 (endret) Før og etter bilder Etter: Før: Endret 16. januar 2019 av GeneralVirus Siter
Kensko Skrevet 16. januar 2019 Skrevet 16. januar 2019 16 hours ago, GeneralVirus said: @Moskus Jeg endret scriptet til å bruke "publiCode" fra apiet istedenfor "name"? Det er vist rutenummeret og brukes som oftest i avgangstavler sammen med frontText. Ble penere for meg da Jeg likte også den bedre. Rutenummer og kortere navn gir bedre info og penere visning. Takk for tipset. Siter
Moskus Skrevet 16. januar 2019 Forfatter Skrevet 16. januar 2019 Ja, det er godt mulig, jeg har jo kun testet de jeg selv har bruk for. Kan gjøre endringen i hovedscriptet øverst. Siter
iceball Skrevet 16. januar 2019 Skrevet 16. januar 2019 Win10 og får ikke kjørt. Forslag? Har satt opp ScriptingReference som forklart. jan-17 00.16.04 Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\EnTur.vb: 'Trim' is not a member of 'String'. jan-17 00.16.04 Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\EnTur.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases. Siter
Moskus Skrevet 17. januar 2019 Forfatter Skrevet 17. januar 2019 8 timer siden, iceball skrev: jan-17 00.16.04 Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\EnTur.vb: 'Trim' is not a member of 'String'. Wow! ? Trim er en standardfunksjon i .NET, ligger under String, og har vært i .NET siden versjon 1.0. Du kan evt. prøve å søk&erstatte alle ".Trim" med ".Trim()", men VB.net trenger ikke parenteser slik som C# gjør. Siter
iceball Skrevet 17. januar 2019 Skrevet 17. januar 2019 29 minutter siden, Moskus skrev: Wow! ? Trim er en standardfunksjon i .NET, ligger under String, og har vært i .NET siden versjon 1.0. Du kan evt. prøve å søk&erstatte alle ".Trim" med ".Trim()", men VB.net trenger ikke parenteser slik som C# gjør. Synes stadig at det er noe smårart med serveren min. Vel, prøvde å endre, ny feilmelding ? 1 Error 3 Running script C:\Program Files (x86)\HomeSeer HS3\scripts\EnTur.vb :Exception has been thrown by the target of an invocation.->Does entry point CallsFromStopplace exist in script? at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Scheduler.clsRunVBNetScript.ExecuteScript() Siter
Moskus Skrevet 17. januar 2019 Forfatter Skrevet 17. januar 2019 44 minutter siden, iceball skrev: Does entry point CallsFromStopplace exist in script? Yes, it does. Har du prøvd å kopiere scriptet en gang til? Kan være du har fått med noen tegn som ikke burde være der. Evt. .NET Repair Tool: https://www.microsoft.com/en-us/download/details.aspx?id=30135 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.