Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Moskus

Administrator
  • Innlegg

    16 848
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    799

Alt skrevet av Moskus

  1. Gjør faktisk akkurat det samme, men med Netcam Studio istedenfor Blue Iris. Men nå er ungene såpass store at muting av ringeklokke ikke er like aktuelt lenger.
  2. Jeg har med vilje tatt ut datoen fra strengen for det er i mange tilfeller unødvendig informasjon, og det er nok grunnen til at det har sett usortert ut. Du kan evt. legge dem til igjen. Det er EnTur som sorterer, ikke jeg. Skal jeg sortere noe som helst bruker jeg helst Linq (for det er mest effektivt), men Linq er bare delvis fungerende i scripts... Ang. tekstbegrensningen tror jeg at jeg forstår hva du mener. Standard-designet til HStouch fjerner mye tekst dem hvis du klikker på dem, det gjør HS Mobile også. I HStouch er det i det minste mulig å lage sitt eget skjermbilde som håndterer EnTur sin device type.
  3. Denne skal støtte scener, så mulig at du må bruke scene som trigger istedenfor button action (vet ikke hvordan Homey har organisert det). Videre kan du ikke bruke assosiasjon for Z-wave og Zigbee snakker ikke sammen utenom via Homey. Assosiasjoner har med hvordan Z-wave router trafikken sin. F.eks. kan en knapp sende av/på direkte til en annen dimmer via assosiasjon, men kun hvis begge er Z-wave.
  4. Da er det generelt sett ikke en god idé å optimalisere. Nettverket blir faktisk tregere av det. Da kan du glemme det meste som har med Multilevel 2, og assosiasjoner på gruppe 4 og 5. Det er rett og slett ikke relevant.
  5. Fungerer det å logge på myhs.homeseer.com når du får den feilmeldingen?
  6. Det er faktisk forholdsvis sjeldent at det er selve interfacet som er problemet, men det har skjedd...
  7. Ser jo sortert ut? Er vel mer et problem at bussene går så sjeldent?
  8. Oookay, det er snålt Prøv dette, da: Endre GetCallsFromStopPlace("NSR:StopPlace:27753", "NSR:Quay:47785") til: GetCallsFromStopPlace("NSR:StopPlace:27753") Sortering av hva? Det er vel sortert slik det skal? Å laste over i en tabell for å sortere den er vel å gå over bekken etter vann. I HStouch ser man hele strengen, det er jo ikke et problem. Du må evt. utvide selve labelen.
  9. Wait, what? Seriøst? Det var overraskende, HomeSeer bruker ikke så lang tid (men nå virker jo ikke det med UZB1 lenger).
  10. Dette burde jo være enkelt med Blocky, så jeg ville brukt litt tid på å lære det. Det kan være ganske kraftig. https://manuals.fibaro.com/knowledge-base-browse/block-scenes/
  11. Så bra! ... kan du prøve dette: Sub Main(parm As Object) Dim list As List(Of EstimatedCall) = GetCallsFromStopPlace("NSR:StopPlace:27753", "NSR:Quay:47785") Dim out As String = "" For Each c As EstimatedCall In list out &= c.ToString & "<br>" Next hs.WriteLog("EnTur", out) End Sub
  12. .... Men fungerer Main-rutinene some vi hard postet før?
  13. Det verste som kan skje er at restore feiler. Men det er i teorien. Jeg har vel et par UZB1'er liggende. Kanskje jeg skal teste.
  14. Nå fikset @lasseruud sitt datoproblem så nå burde det fungere bedre for alle.
  15. Ja, det er nok Sense du har hørt om. Tibber kan ikke dette, det er kun rene tallverdier. Tibber bruker kun dataen som kommer fra AMS-målerne, og det er en grunn til at de ikke kan være så detaljerte. Det er ikke bare selve forbruket men faseforskjeller og andre forstyrrelser som måles for å prøve å identifisere ulike apparater (hvis jeg forstod det).
  16. Ja, det betyr at en del webservere har fått oppgradert sikkerheten i mellomtiden.
  17. Moskus

    Wheel.me

    Ja, disse har vel vært på "banen" en stund, og hadde jo vært helt geniale å hatt hjemme. Men kan man få kjøpt dem i det hele tatt?
  18. Her er artikkelen åpent: https://www.tu.no/artikler/stigs-smarthus-er-en-effektbombe/481834?key=S2hy9clg ... men jeg vet ikke om det står. De gikk ikke akkurat i dybden, og det hadde sikkert blitt for teknisk for folk flest, selv på TU.no.
  19. Ja, HStouch skal bestå, det er opplest og vedtatt for lenge siden, ellers er det nok ganske mange "travere" som ikke hadde oppdatert (bl.a. meg). Jeg krysser også fingrene for en oppdatert designer, men det er mer ønsketenkning enn noe annet, dessverre...
  20. Det betyr ikke mer enn at WebClient defaulter til TSL 1.0/1.1, men den kan tvinges til å bruke 1.2. Jeg fant en fornuftig forklaring på det første gang jeg møtte problemet, men har glemt det nå...
  21. OK, jeg fant bug'en. ... og selvfølgelig er det slik at når jeg har funnet den så burde jeg ha tenkt på den med en gang. Det mangler en linje i RunQuery-funksjonen. Den skal altså se slik ut: 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 ... som tvinger WebClient til å bruke TLS12. Hele scriptet skal altså være slik: 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) 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 ... eller bruk denne: EnTur.vb
  22. Nei, det spiller ingen rolle. Pluginene definerer selv hvilken versjon de skal bruke og hvor den ligger.
  23. OK, da ser det ut som om jeg kan replikere feilen. Alltid enklere da. Jeg forstår bare ikke hvorfor det fungerer på noen maskiner, men ikke på andre.
  24. Ah, pokker. Glemte entries, rart debuggeren ikke tok det... Sub Main(parm As Object) Dim stop1 As String = "NSR:StopPlace:59854" Dim stop2 As String = "NSR:StopPlace:27753" Dim entries as Integer = 5 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) hs.WriteLog("EnTur", result) End Sub
  25. Ok, da prøver vi dette: Sub Main(parm As Object) Dim stop1 As String = "NSR:StopPlace:59854" Dim stop2 As String = "NSR:StopPlace:27753" 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) hs.WriteLog("EnTur", result) End Sub Hvis dette fungerer, så er det noe tull med JSON. Hvis dette ikke fungerer, så er det noe funky med WebClient, men det burde det ikke være.
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.