-
Innlegg
16 849 -
Ble med
-
Besøkte siden sist
-
Dager vunnet
799
Innholdstype
Profiler
Forum
Blogger
Nedlastninger
Artikler
Regler
Hendelser
Galleri
Store
Alt skrevet av Moskus
-
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.
-
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
-
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?
-
Skrev det ferdig for å kunne bruke det litt mer generelt:
-
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
-
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).
-
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
-
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#.
-
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.
-
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.
-
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.
-
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 svar
-
- 1
-
... 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})
-
Bare fordi en dings kan måle noe det betyr ikke at det måles riktig...
- 5 svar
-
- 1
-
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.
- 1 svar
-
- hometroller s6
- win7
-
(og 2 andre)
Merket med:
-
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)
- 13 svar
-
- 1
-
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(" ", " ").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
-
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})
-
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).
-
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.
-
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...
-
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"
-
Hva skal du bruke det til?