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

Gjøre om device text til desimaltall


Gjelsvik

Anbefalte innlegg

Har et script som setter device text på to virtuelle sensorer. Hhv latitude og longtitude. f.eks "10.675483" og "59.876434"

 

Ønsker å kunne lage en sjekk på om disse to verdiene er mellom noen ytterpunkter slik at jeg kan definere plassering som hjemme eller borte.

Noen som vil begi seg ut på et script som gjør om strengen "xx.yyyyy" til en float? Og deretter sjekke om de er innenfor et gitt str.

f.eks  latitude mellom 10,674000 og 10,67800  (litt usikker på hvor mange meter det utgjør enda)

Lenke til kommentar
Del på andre sider

Ang å konvertere til flyttall:

 

    Public Sub numberHandling(numberString, deviceName)
        Dim tempInt As Double
        If IsNumeric(numberString) Then
            Double.TryParse(numberString), tempInt)
            hs.SetDeviceValueByRef(hs.GetDeviceRefByName(deviceName), tempInt, True)
        End If
    End Sub

 

Lenke til kommentar
Del på andre sider

IsNumeric og Double.TryParse gjør mye det samme. Kan forenkles slik:

    Public Sub numberHandling(numberString, deviceName)
        Dim tempInt As Double
        If Double.TryParse(numberString), tempInt)
            hs.SetDeviceValueByRef(hs.GetDeviceRefByName(deviceName), tempInt, True)
        End If
    End Sub

 

  • Like 1
Lenke til kommentar
Del på andre sider

Takk for svar her.

Hvordan adresserer jeg devicestring? 

 

Jeg kan sette stringen med hs.setdevicestring, men jeg finner ikke noe tilsvarende for å lese den.

Edit: Fant ut av det, det var så enkelt som "hs.devicestring"

Men denne innholder også link til stausgrafikk, og da ble det fort vanskelig å kjøre "string.compare()" mot den.

Endret av Gjelsvik
Lenke til kommentar
Del på andre sider

54 minutter siden, Gjelsvik skrev:

Men denne innholder også link til stausgrafikk, og da ble det fort vanskelig å kjøre "string.compare()" mot den.

Den gjør vanligvis ikke det, men den kan gjøre det hvis plugin'en eller scriptet som setter verdien er skrevet med litt latskap...

 

Men hvis du har et script som setter device text som string, kan du ikke heller endre scriptet til å inkludere å sette verdien som en float

hs.SetDeviceValueByRef() kan sette desimaltall. For å hente ut desimaltallet så er det hs.DeviceValueEX() som brukes.

Lenke til kommentar
Del på andre sider

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • 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.