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

HSv

Medlemmer
  • Innlegg

    155
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    1

Innlegg skrevet av HSv

  1. Jeg mener dette er min første post her - jeg har hatt mye hjelp av å lese her, og nå er det kanskje på tide jeg bidrar litt.

    Jeg har kikket etter et script som gjør det jeg ønsker (...og ikke minst på den måten jeg ønsker:-) uten å finne det - og har derfor prøvd å skrive et selv.

    Jeg har "hentet inspirasjon" fra noen av Moskus' scripts.

    Input parametre:

       <deviceref>:<start>:<stop>:<time>

     

    Litt opplagt igrunn - men uansett vil dette endre devicen fra start til stopp, og bruke (tilnærmet) tid på det. (På grunn av litt avrundinger, så kan det ta noen sekunder mer eller mindre enn det du oppgir)

    For å ikke sende altfor mange kommandoer, så begrenser jeg meg per default til maks 4 kommandoer per sec (kan konfigureres)

     

    Noen spesialverdier:

    start = -1 - da leser jeg nåværende verdi, og dimmer til stoppverdi

    start = -2 - da leser jeg nåværende verdi, og øker/minker denne med stoppverdien

     

    Eksempler:

    100:10:30:5 - skru dev 100 fra 10% til 30% (uavhengig av hva nåværende verdi er)- og bruke 5 sec på det

    100:-1:30:5 - skru device fra nåværende verdi til 30% - og bruke 5 sec.

    100:-2:-10:5 - endre device 100 med sluttverdien. Her er både positiv og negativ verdi tillatt - Om device 100 var på 35% før du startet scriptet, så vil den være på 25% etterpå. (og igjen - bruker  5 sec)

     

    Dette er ikke veldig foolproof - det er helt sikkert mulig å legge inn verdier som kræsjer hele scriptet - men så lang så fungerer det som jeg vil.
    Blant annet så tester det ikke om det finnes noe <deviceref>... (ikke ennå iallefall)

    Jeg kjører HomeSeer på Linux - ikke testet ut på en Windows-serveer (Og jeg har strengt tatt ikke planer om å gjøre det heller...)

     

    Jeg bruker det hovedsakelig til to ting: Styre utelyset mitt på en litt elegant måte, samt å skånsomt skru opp lyset på soverommet om morgenen.

     

    Kommentarer er mer en velkommen. Endringsforslag og "bug-reports" likeså

     

    Spoiler
    
    ' SmartDimmer.vb , v. 2.0
    '   This script requires 4 parameters, separated by ':'
    '    - Device Reference ID
    '    - Start level (%)  0 - 100 [integer]
    '                       (use -1 for current devicevalue)
    '                       (use -2 to add end level to current value)
    '    - End level (%)    0 - 100 [integer]
    '    - Time (sec)       1 - 3600 [integer]
    '                               HSv, Feb. 2019
    
    Public Module GlobalVars
      Public Shared infoLog  As Boolean = True      ' Log whats happening...?
      Public Shared warnLog  As Boolean = True      ' Log warnings...? (you really should!)
      Public Shared debugLog As Boolean = False     ' Log a bit more...?
    End Module
    
    Public Sub Main(ByVal _params As Object)
      Dim showLoc     As Boolean = False    ' Add location to the devicename when
                                            ' writing to the log
      Dim Waittime    As Integer = 250      ' Default minimum loop time in millisec
                                            ' - i.e. 250 means 4 times per sec.
      Dim MaxTimespan As Integer = 3600     ' Max timespan is one hour - I guess this can be changed if you need to...
      Dim LogID       As String  = "SmartDimmer"
    
    
    ' ---------------------------------------------------
    '  There should not be anything to change below here
    ' ---------------------------------------------------
    
      ' I guess reading the input parameters would eb a good idea...
      Dim deviceRef  As Integer = Integer.parse(_params.ToString.split(":")(0))
      Dim Startvalue As Integer = Integer.parse(_params.ToString.split(":")(1))
      Dim Stopvalue  As Integer = Integer.parse(_params.ToString.split(":")(2))
      Dim Timespan   As Integer = Integer.parse(_params.ToString.split(":")(3))
    
      ' Does the device exist at all...?
      If ( Not hs.DeviceExistsRef(deviceRef)) Then
        Logging(LogID, "warn", "Device " & deviceRef & " does not exist - Exiting!")
        Exit Sub
      End If
    
      ' If startvalue is set to -1, then use the current devicevalue as start.
      ' Do this also if start and endvalue are the same
      ' ( changing from 10 to 10 doesn't make sense, so therefore I assume you meant change from <current> to <new> )
      If ( (Startvalue = -1) OrElse (Startvalue = Stopvalue) ) Then
        Startvalue = hs.DeviceValue(deviceRef)
      ElseIf (Startvalue < -1) Then
        Startvalue = hs.DeviceValue(deviceRef)
        Stopvalue  = Startvalue + Stopvalue
      End If
    
      ' Read the name of the device, as it's more human readable in the log
      Dim deviceName As String
      If showLoc Then
        deviceName = hs.devicename(deviceRef)
      Else
        deviceName = hs.GetDeviceByRef(deviceRef).name(hs)
      End If
    
      ' Check if inputs are within limits
      If Startvalue < 0           Then Startvalue = 0
      If Startvalue > 100         Then Startvalue = 100
      If Stopvalue  < 0           Then Stopvalue  = 0
      If Stopvalue  > 100         Then Stopvalue  = 100
      If Timespan   < 1           Then Timespan   = 1
      If Timespan   > MaxTimespan Then Timespan   = MaxTimespan
    
      ' let the log know what we are up to...
      Logging(LogID, "info", "Device " & deviceName & " - from " & Startvalue & "% to " & Stopvalue & "% over " & Timespan & "sec")
    
      If Stopvalue <> Startvalue Then
        ' Calculate change per <Waittime> millisec.
        Dim DeltaValue As Integer = (Stopvalue - Startvalue) / (Timespan * (1000/Waittime))
    
        ' The minimum change is 1 (or -1) - If it is less I need to change it to 1, and calculate a new step-time
        ' I.e - If I want to change from 0 to 10 in 20 sec - I need to change by 1 every 2 sec.
        If Math.Abs(DeltaValue) < 1 Then
          If Stopvalue < Startvalue Then
            DeltaValue = -1
          Else
            DeltaValue = 1
          End If
          Waittime  = Math.Abs(TimeSpan / (Startvalue - Stopvalue) * 1000)
        End If
        Logging(LogID, "debug", "Device " & deviceName & " - Deltavalue= " & DeltaValue & " , Waittime= " & Waittime)
    
        ' Need to declare this so that I don't bail at the first iteration
        Dim Previouslevel As Integer = Startvalue
    
        For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef)
          For Newlevel As Integer = Startvalue To Stopvalue Step DeltaValue
    
            ' Check if there is an override - i.e. the device has been changed outside the script
            If ((hs.DeviceValue(deviceRef) = Previouslevel) OrElse (Previouslevel = Startvalue)) Then
              ' Set the correct dim level
              cc.ControlValue = Newlevel
              hs.CAPIControlHandler(cc)
              Logging(LogID, "debug", "Device " & deviceName & " : " & Previouslevel & " -> " & Newlevel)
    
              ' Wait the required amount of time
              System.Threading.Thread.Sleep(Waittime)
              Previouslevel = Newlevel
            Else
              ' Manual override - You openend the pod bay doors yourself :-/
              ' Write a warning and get the h... outta' here
              Logging(LogID, "warn", "Device " & deviceName & " - Manual override, bailed out at " & Previouslevel & "% -> " & hs.DeviceValue(deviceRef) & "%")
              Exit Sub
            End If
          Next
    
          ' In case the device end up with an incorrect value (d.t. increments only in integers),
          ' then I set the final value outside the loop.
          If (hs.DeviceValue(deviceRef) <> Stopvalue) Then
            Logging(LogID, "debug", "Device " & deviceName & " : " & Previouslevel & " -> " & Stopvalue & " (Final touch)")
            cc.ControlValue = Stopvalue
            hs.CAPIControlHandler(cc)
          End If
    
          ' Be nice and let the log know we are done :-)
          Logging(LogID, "info", "Device " & deviceName & " - done!")
          Exit Sub
        Next
      Else
        ' Nothing for me to do here
        ' This means that the device is already at the StopValue.
        Logging(LogID, "warn", "Device " & deviceName & " nothing to do!")
      End If
    
    End Sub
    
    ' Routine for writing to the log
    Sub Logging(ByVal LogID As String, ByVal msgType As String, ByVal msg As String)
      Dim msgComplete As String
      Dim writetolog As Boolean = False
    
      Select Case msgType
        Case  "info"
          If GlobalVars.infoLog Then
            msgComplete = "Info: " & msg
            writetolog = True
          End If
    
        Case  "debug"
          If GlobalVars.debugLog Then
            msgComplete = "Debug: " & msg
            writetolog = True
          End If
    
        Case  "warn"
          If GlobalVars.warnLog Then
            msgComplete = "Warning: " & msg
            writetolog = True
          End If
    
        Case Else
          msgComplete = "Msgtype '" & msgType & "' undefined"
          writetolog = True
      End Select
    
      If writetolog Then hs.Writelog (LogID, msgComplete)
    
    End Sub

     

     

     

    • Like 1
  2. Nei, jeg fant ikke ut mer, men har ikke gjort særlig mye for å finne ut noe heller.
    Det er forsåvidt ikke noe stort problem - annet enn at det er irriterende med ting som ikke virker, når de _burde_ virke :-)

    Så veien videre for meg er nok å vurdere hvor lang til det vil ta meg å skape meg et behov for Bulb2...

  3. Min erfaring med denne sensoren er at den fungerer veldig bra. Koblet til strøm så er de veldig bra, men på batteri kommer det en del an på oppsett og plassering. Om de står i et rom med mye bevegelse, der de må sende motion relativt ofte, eller med hyppige rapporteringer så spiser de batteri til frokost. Jeg gikk bort fra å ha de på kjøkken og stue, siden de oftere hadde tomt  batteri enn ikke...

    Men på bad og soverom fungerer de veldig bra. De rapporterer ikke lumin/temp/humid sånn som jeg har konfigurert de - jeg er mer interessert i bevegelse. Jeg vil tro at om du setter den opp til å rapportere humid hver 2. min, så vil de tære kraftig på batterikontoen din :-)

     

    Jeg bruker en på strøm ute ved inngangsdøra, og den er innfelt med den holderen du viser til øverst. Jeg liker den, og kommer nok til å kjøpe flere av de om behovet skulle oppstå. Men som sagt, jeg installerte et fast USB strømuttak der jeg skulle ha sensoren, nettopp for å slippe batteribytter. Det kan også være litt utfordrende å komme til for å skifte batteri om du ikke kommer til ovenfra, i og med av sensoren skrus fast. Du må i så fall ta ut hele holderen, og jeg har ikke testet hvor lett det er å få til. Bør nok kanskje kunne gå siden den holdes på plass av to "fjærer".

     

    Så for å svare konkret på om det er noen god ide, så må jeg helt bestemt si...

    Det kommer an på :-)

  4. takk for svar :-)

     

    Det skjer ikke så mye mer enn da jeg inkluderte noden. Det ser jo ut som den ikke har blå kanal, men jeg hadde tilgang til den tidligere på Zipatile. Jeg begynner nesten på å lure på om Zipato har lagt til noen "features" som gjør at den ikke fungerer skikkelig med andre - Jeg har litt sånn ymse erfaringer med det selskapet der... :-)Skjermbilde2.thumb.PNG.665696e0fd960cdd79a9a6b03b982906.PNG

  5. Hei,
    Jeg er ny på forumet her, selv om jeg har lest og fulgt med en stund.
    Jeg hadde tidligere en Zipatile kontroller, men denne er nå byttet ut med en Homeseer Hometroller SEL.

     

    Det meste fra det gamle systemet funger helt topp med ny kontroller, men jeg sliter med en Z-Wave Zipato RGBW lampe - jeg finner ikke blå channel. Når jeg inkluderer den, så finner kontrolleren kun var-og kaldhvitt, rød og grønn. Lampen fungerte fint med Zipato sine kontroller. Den fungerer fint nå også, med de kanalene som er der, men det er jo litt kjedelig å ikke kunne styre blå...

    Noen som har sett det samme, og forhåpentligvis har en fix...?

    På det vedlagte bildet er det kun "Name" som har blitt endret.

    Skjermbilde.thumb.PNG.b14b096657c0a0730faf3d9d1e97757d.PNG

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