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

Moskus

Administrator
  • Innlegg

    16 849
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    799

Alt skrevet av Moskus

  1. Ja OK. Kan du sjekke selve .vb-filen at det ikke er noen merkelige tegn? Av og til skjer det noe spesielt når kode kopieres herfra.
  2. Strengt tatt skal @toonwolf kunne bruke dette (gitt at device 707 inneholder en kode, og device 647 er root til en lås): Sub Main(ByVal inputArgs As String) hs.WriteLog("Add user", "Adding user...") Dim interfaceID As String = hs.GetINISetting("Interfaces", "IFace_0_Unique", "", "Z-Wave.ini") hs.WriteLog("Add user", "InterfaceID: " & interfaceID) Dim place As Integer = 79 Dim PINnumber As Integer = hs.DeviceValue(737) Dim PINstring As String = PINnumber.ToString("0000") Dim nodeNumber As String = ZwaveUtil_GetNodeIdByRef(647) Dim configResult = hs.PluginFunction("Z-Wave", "", "AddUserCodePin", {nodeNumber, place.ToString, PINstring, "TEST-user", interfaceID}) hs.WriteLog("Add user", "Done with result " & configResult.ToString) End Sub Public Function ZwaveUtil_GetNodeIdByRef(ByVal deviceId As Integer) As Integer Dim nodeId As Integer = -1 If (deviceId > 0) Then Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(deviceId) If (device IsNot Nothing) Then Dim pdata As HomeSeerAPI.PlugExtraData.clsPlugExtraData = device.PlugExtraData_Get(hs) If (pdata IsNot Nothing) Then nodeId = pdata.GetNamed("node_id") End If End If Else Throw New System.Exception("Device not found: " + deviceId) End If Return nodeId End Function
  3. Igjen tror jeg du må ta opp BLlock-spesifikke spørsmål med Blade. Men: ¨ Du vet vel bedre enn andre at du må starte på plass 60 for 150-versjonen? Støtter i det hele tatt 101 flere brukere med Z-wave?
  4. Skrev det ferdig for å kunne bruke det litt mer generelt:
  5. Inspirert til å løse @toonwolf sitt problem. Se under: Sub Add(ByVal inputArgs As String) 'Input: RootReference;place;NewPin 'Example: 342;65;1234 hs.WriteLog("Add user", "Adding user...") Dim interfaceID As String = hs.GetINISetting("Interfaces", "IFace_0_Unique", "", "Z-Wave.ini") hs.WriteLog("Add user", "InterfaceID: " & interfaceID) Dim rootDeviceRef As Integer = inputArgs.Split(";")(0) Dim place As Integer = inputArgs.Split(";")(1) Dim PINnumber As Integer = inputArgs.Split(";")(2) Dim PINstring As String = PINnumber.ToString("0000") Dim nodeNumber As String = ZwaveUtil_GetNodeIdByRef(rootDeviceRef) hs.WriteLog("Removing user", "Node number: " & nodeNumber) Dim configResult = hs.PluginFunction("Z-Wave", "", "AddUserCodePin", {nodeNumber, place.ToString, PINstring, "TEST-user", interfaceID}) hs.WriteLog("Add user", "Done with result " & configResult.ToString) End Sub Sub Remove(ByVal inputArgs As String) 'Input: RootReference;place 'Example: 342;65 hs.WriteLog("Removing user", "Removing user...") Dim interfaceID As String = hs.GetINISetting("Interfaces", "IFace_0_Unique", "", "Z-Wave.ini") hs.WriteLog("Removing user", "InterfaceID: " & interfaceID) Dim rootDeviceRef As Integer = inputArgs.Split(";")(0) Dim place As Integer = inputArgs.Split(";")(1) Dim nodeNumber As String = ZwaveUtil_GetNodeIdByRef(rootDeviceRef) hs.WriteLog("Removing user", "Node number: " & nodeNumber) Dim ConfigResult = hs.PluginFunction("Z-Wave", "", "RemoveUserCodePin", {nodeNumber, place.ToString, interfaceID}) hs.WriteLog("Removing user", "Done with result " & ConfigResult.ToString) End Sub Public Function ZwaveUtil_GetNodeIdByRef(ByVal deviceId As Integer) As Integer Dim nodeId As Integer = -1 If (deviceId > 0) Then Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(deviceId) If (device IsNot Nothing) Then Dim pdata As HomeSeerAPI.PlugExtraData.clsPlugExtraData = device.PlugExtraData_Get(hs) If (pdata IsNot Nothing) Then nodeId = pdata.GetNamed("node_id") End If End If Else Throw New System.Exception("Device not found: " + deviceId) End If Return nodeId End Function
  6. Here we go! Sub Main(ByVal inputArgs As String) hs.WriteLog("Add user", "Adding user...") Dim interfaceID As String = hs.GetINISetting("Interfaces", "IFace_0_Unique", "", "Z-Wave.ini") hs.WriteLog("Add user", "InterfaceID: " & interfaceID) Dim place As Integer = inputArgs.Split(";")(0) Dim PINnumber As Integer = CInt(inputArgs.Split(";")(1)) Dim PINstring As String = PINnumber.ToString("0000") Dim nodeNumber As String = ZwaveUtil_GetNodeIdByRef(3465) Dim configResult = hs.PluginFunction("Z-Wave", "", "AddUserCodePin", {nodeNumber, place.ToString, PINstring, "TEST-user", interfaceID}) hs.WriteLog("Add user", "Done with result " & configResult.ToString) End Sub Public Function ZwaveUtil_GetNodeIdByRef(ByVal deviceId As Integer) As Integer Dim nodeId As Integer = -1 If (deviceId > 0) Then Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(deviceId) If (device IsNot Nothing) Then Dim pdata As HomeSeerAPI.PlugExtraData.clsPlugExtraData = device.PlugExtraData_Get(hs) If (pdata IsNot Nothing) Then nodeId = pdata.GetNamed("node_id") End If End If Else Throw New System.Exception("Device not found: " + deviceId) End If Return nodeId End Function ... med dette: ... gav dette: .... og dette: gav dette: ... merk at lås-Root er hardkodet i eksempelet over (3465).
  7. Det kan til og med være at du trenger "New Object()" foran {, men i teorien burde man ikke det. Kan også skrive det ut med fulle variabler... Sub Main (byval inputArgs as string) Dim PINnumber as Integer = hs.DeviceValue(707) Dim PINstring as String = PINnumber.ToString("0000") hs.PluginFunction("Z-Wave", "", "AddUserCodePin", New Object(){"647", "79", PINstring, "TEST", "955BFE54AEE6"}) End Sub
  8. Det er vel sagt "i løpet av 2020". Men hvis vi skal trekke erfaringer fra HS2->HS3, så ble vel HS3 annonsert i 2010/2011, og sluppet i 2013... Jeg hadde håpet at de gikk over på .NET Core, men jeg er redd at Core ikke har alle biblioteker. Det er ikke bare-bare å konvertere et såpass komplisert prosjekt. Haha, nei faktisk ikke. Det er en konsekvens at at hvis jeg skulle trenge hjelp av proffer når jeg koder i jobb-sammenheng, så er det mye lettere hvis prosjektet er i C#.
  9. Jeg kan nå begge deler. Nesten alt man kan i C# kan man i VB.net også, forskjellene er omtrent ikke-eksisterende nå. Men synes C# har noen fordeler med forenkling av syntax, spesielt når det gjelder lambda-funksjoner. Men ellers er VB.net mye enklere å lese: Det er som å skrive pseudo-kode og leselig for alle.
  10. Jo, wops! Jeg har sagt det mange ganger at det er fint mulig å overloade funksjoner og rutiner i .NET, men har ikke vunnet fram så langt. Det var strengt tatt ikke mulig i VB5.0 så vidt jeg husker, men DET begynner å bli lenge siden. Kanskje verdt å ta kampen en gang til med HS4. Jo, men hvorfor trenger man to funksjoner? 24 og 24,0 er det samme tallet. Hvis man lagrer et heltall i devicen, så får man et heltall ut, desimaltall hvis ikke. Det ble gjort for å "lette overgangen" fra HS2, men siden overgangen var såpass stor uansett kunne man bare tatt 10 minutter ekstra for å gi en fornuftig struktur.
  11. Nei, fordi SetDeviceValue-funksjonen finnes allerede. Strengt tatt burde det være mulig å bruke overrides (altså flere funksjoner med forskjellig input), men HS er merkelig nok ikke glad i det. F.eks. har de hs.DeviceValue for å hente device-verdien i heltall og hs.DeviceValueEX for å hente device-verdien som desimaltall. Det er ikke galt. Bare gammelt.
  12. Og akkurat DER oppsummerte du det absolutt dummeste valget HomeSeer-folka gjorde i 2013. Ja, det er inkonsekvent og helt fjernt. Man kan ikke ødelegge APIens egen struktur slik. ... og nå er jeg redd det er for sent.
  13. Moskus

    Heatit Z-TRM2fx

    Nåja, det er nok (selvfølgelig) det andre alternativet: "There was a communications problem" Hvis det er det, så flytt NUCen midlertidig.
  14. ... og der tror jeg du traff spikeren på hodet. Fordi det er ikke det som står her: Der er 0123 et tall siden det ikke står i gåseøyne og de blir trimmet til 123. Jeg hadde brukt dette: Dim PIN as String = hs.DeviceValue(dev_ref).ToString("0000") hs.PluginFunction("Z-Wave", "", "AddUserCodePin", {NodeId, LockLocationId, PIN, Username, InterfaceID})
  15. Moskus

    Heatit Z-TRM2fx

    Denne feilmeldingen må vi faktisk se for å tolke, den har jeg aldri hørt om før. Hvilket interface har du? I prinsippet burde det gå helt fint, spesielt hvis det er unsecure.
  16. Bare fordi en dings kan måle noe det betyr ikke at det måles riktig...
  17. Regnekraft og minnebruk er ikke nødvendigvis det samme... men det koster jo nesten ingenting å gjøre noe med det. 2GB er litt lite, selv med Win7.
  18. hs.SetDeviceValueByRef(dev_ref, hs.DeviceValue(dev_ref) + 1, True) for å justere opp... og hs.SetDeviceValueByRef(dev_ref, hs.DeviceValue(dev_ref) - 1, True) for å justere ned. Alle "dev_ref" må endres til deviceIDen til "Heat Pump, Target Temperature"-IDen (den står øverst på Advanced-tab'en på device property siden)
  19. Oppdatert og bedre versjon av dette scriptet. Den gjør bl.a. dette: ... om til dette: ... og scriptet takler nå at noen er ferdig navngitt og andre ikke er, og kan brukes selv hvis du bytter navn på Squeezebox'en. Input er IDen til Name-devicen. RenameSqueezeboxDevices.vb: Sub Main(Byval input As Object) Dim rootRef As Integer = input.ToString Dim rootDevice As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(rootRef) Dim name As String = StripTags(hs.DeviceString(rootRef)).Replace("&nbsp;", " ").Trim hs.WriteLog("RenameDevices", "Starting with player name: " & name) rootDevice.Name(hs) = name + ", " + GetPostFix(rootDevice.Name(hs)) Dim i As Integer For Each i In rootDevice.AssociatedDevices(hs) Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(i) device.Name(hs) = name + ", " + GetPostFix(device.Name(hs)) Next hs.SaveEventsDevices() hs.WriteLog("RenameDevices", "Done renaming " & name) End Sub Function GetPostFix(ByVal input As String) As String Dim ret As String = "" If input.StartsWith("Player") Then Dim substring As String = input.Substring(8) Dim startIndex As Integer = substring.IndexOf(" ", 0) ret = substring.Substring(startIndex).Trim ElseIf input.Contains(",") Then Dim startIndex As Integer = input.IndexOf(",") ret = input.Substring(startIndex + 1).Trim End If Return ret End Function Function StripTags(ByVal html As String) As String ' Remove HTML tags. Return System.Text.RegularExpressions.Regex.Replace(html, "<.*?>", "") End Function
  20. Ser ut til at du kan bruke native kode istedenfor å gå via BLlock slik: Dim ConfigResult = hs.PluginFunction("Z-Wave", "", "AddUserCodePin", {NodeId, LockLocationId, PIN, Username, InterfaceID}) Tatt fra vedlegget (nederst) i denne posten: https://forums.homeseer.com/forum/homeseer-products-services/system-software-controllers/hs3-hs3pro-software/hs3-hs3pro-discussion/82745-setting-z-wave-lock-user-codes-via-event-script?p=1268067#post1268067 Edit: Tilsvarende for å fjerne en kode: Dim ConfigResult = hs.PluginFunction("Z-Wave", "", "RemoveUserCodePin", {NodeId, LockLocationId, InterfaceID})
  21. Dette er en BLlock-funksjon, så jeg tror du må ta det med Blade. Vi vet ikke hva de andre parametrene er. Men fortell oss gjerne hva du fant ut. Z-wave pluginen har helt sikkert en dedikert funksjon for å legge til koder, men jeg vet ikke hva den er... (jeg har tenkt å finne den, dog).
  22. Moskus

    Heatit Z-TRM2fx

    Root device -> Z-wave (tab) -> "Remove bad node" (knapp). Men det kan være verdt å først prøve knappen "Test Connectivity". Hvis den ikke svarer hadde jeg prøvd å skru den av og på, og deretter prøvd å ta sikringen.
  23. Aha, OK. Vi har helt motsatt tilnærming her, men feiltrykking er minimert til det absolutte minimum, mest fordi det er så sjeldent det er behov for noe trykking uansett...
  24. APIen ble flyttet 1. juli. Det betyr at denne linja i funksjonen "RunQuery": Dim url As String = "https://api.entur.org/journeyplanner/2.0/index/graphql" ... må endres til dette: Dim url As String = "https://api.entur.io/journey-planner/v2/graphql"
  25. Hva skal du bruke det til?
×
×
  • 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.