Gå til innhold

Hjemmeautomasjon - Hva er det og hvorfor skulle jeg bry meg? (Automasjonskaféen)


Anbefalte innlegg

Nå har jo du vist hvordan en kan lage en knapp selv, så da tenkte jeg at en kunne lage en knapp som heter DIM5 og BRIGHT5 så slapp en å kalle opp skript fra Actionen.

For da ville jo disse dukke opp i command lista.

 

Det dumme er jo at en måtte endre knappen dersom Z-wave enhenten byttet House/device kode (?)

 

Det finnes ikke noen måte for knappen å spørre systemet om hvilken device han er hektet på?

 

En type "this" eller "Me" eller noe lignende?

Lenke til kommentar
Videoannonse
Annonse

 

Om ingen bryr seg så er det jo ikke så farlig ;)

 

Jeg tenkte bare på noe småtteri for oss som vanket her, -ikke noe stort oppslagsverk for almuen.

 

Noen scripts

noen linker til nettbutikker

 

- noe som var lettere å lete i enn å bla tilbake 200 postinger :)

 

Og helst med godkjent innlogging for å kunne skrive, så vi ikke drukner i spam :(

Jeg søkte om wiki-plass hos ourproject.org, så får vi se. :)

  • Liker 1
Lenke til kommentar

 

Det dumme er jo at en måtte endre knappen dersom Z-wave enhenten byttet House/device kode (?)

 

Det finnes ikke noen måte for knappen å spørre systemet om hvilken device han er hektet på?

 

En type "this" eller "Me" eller noe lignende?

Ingen "this" eller "Me", nei.

 

I plugins blir både house/dev-kode og knappnavn sent til plugin'en og så er det opp til plugin'en å utføre riktig handling.

 

Scriptede knapper er enklere. De kjører bare et script med parametre du har bestemt. Ferdig med det. Men det er ikke verre enn å lage en "Sub RemoveButtons(byval device as String)" i scriptet ditt, og så legge til knappene igjen etterpå. :)

Lenke til kommentar

Jeg søkte om wiki-plass hos ourproject.org, så får vi se. :)

hehe Kult

 

JEG kjøpte "hjemmeautomasjon.info" (og .com og .net) i går så kan vi jo peke en av dem dit :)

 

Ellers tenkte jeg å se om jeg fant noen gamle bokser (et QNAP NAS feks) å sette opp her på jobben....

(Vi har 100Mb Internet linje her :))

 

Men det blir ikke sånn med en gang....

Lenke til kommentar

 

*Sukk*. Da skriver vi om scriptet en gang til, selv om jeg er sikker på at SetDeviceValue burde fungere (jeg bruker den i et par plugin'er):

Ingen grunn til det.

Jeg koblet meg hjem nå og testet og dette skriptet dimmer en Z-wave modul helt fint.

 

Mogens sjekk dette oppsettet:

post-275475-0-51122000-1383728392_thumb.png

Lenke til kommentar

... men da må du også bruke SetDeviceStatus, som er på vei ut i HS3. ;)

 

Ja faktisk. (Jeg testet det nå) Så ditt første script vil ikke funke. (Det vil vise lampen OFF selv om den er dimmet til 10%)

Men SetDeviceLastChange er ikke nødvenlig (i denne sammengengen ihvertfall)

 

Mogens:

Bare glem mitt script og bruk Moskus sine. Poenget mitt var å vise deg hele skjermen med oppkallet og det hele.

 

Fermate, du vet at Hungarian Notation gikk ut i 2003? http://msdn.microsoft.com/en-us/library/ms229045.aspx :p

 

Ja for du har forsøkt å erte meg med det før ;)

 

Men jeg kommer til å fortsette å bruke den notasjonen jeg vil, uansett hva du eller Microsoft eller noen andre mener om den saken :tease:

Og jeg har programmert så lenge at jeg kommer til å fortsette å vise kode her og la meg erte uten å ta meg så (altfor) nær av det :D

Lenke til kommentar

 

Ja faktisk. (Jeg testet det nå) Så ditt første script vil ikke funke. (Det vil vise lampen OFF selv om den er dimmet til 10%)

Men SetDeviceLastChange er ikke nødvenlig (i denne sammengengen ihvertfall)

Jo, men det er det som er så merkelig. Jeg mener SetDeviceValue ikke bare skal oppdatere selve devicen men også styre lyset fysisk. Jeg må sjekke litt plugin-kode.

 

hs.Transmit skal iallfall gjøre ting riktig, uavhengig av protokoll.

Lenke til kommentar

Jo, men det er det som er så merkelig. Jeg mener SetDeviceValue ikke bare skal oppdatere selve devicen men også styre lyset fysisk.

Å ja Nei. Det er ikke det jeg mener. (Det er bare jeg som uttrykker meg klønete)

 

SetDeviceValue oppdaterer devicen OG lyset fysisk.

Men STATUS på devicen vil fortsatt vise OFF (eller ON) om du ikke bruker SetDeviceStatus til å korrigere det på 0% og 100%

Endret av Fermate
Lenke til kommentar

Å ja Nei. Det er ikke det jeg mener. (Det er bare jeg som uttrykker meg klønete)

 

SetDeviceValue oppdaterer devicen OG lyset fysisk.

Men STATUS på devicen vil fortsatt vise OFF (eller ON) om du ikke bruker SetDeviceStatus til å korrigere det på 0% og 100%

Ah... gjør den? På Nexa/RFXCOM mener jeg det var slik (for en stund siden), da fikk man "Dim 0%" eller "Dim 100%", istedenfor Off/On. Men det ble endret der også.

Lenke til kommentar

Ah... gjør den? På Nexa/RFXCOM mener jeg det var slik (for en stund siden), da fikk man "Dim 0%" eller "Dim 100%", istedenfor Off/On. Men det ble endret der også.

 

Jeg tok å kommenterte vekk SetDeviceStatus og kjørte en "Bright" (SetDeviceValue) på disse to lampene nå:

Jeg sitter på jobb og har desverre ikke noe webkamera på badet så lyset kan jeg ikke si noe om :) men du ser problemet her:

post-275475-0-93268900-1383740763_thumb.png

Lenke til kommentar

 

Jeg tok å kommenterte vekk SetDeviceStatus og kjørte en "Bright" (SetDeviceValue) på disse to lampene nå:

Jeg sitter på jobb og har desverre ikke noe webkamera på badet så lyset kan jeg ikke si noe om :) men du ser problemet her:

Med andre ord er hs.Transmit praktisk. Den gjør slik den skal:

hs.Transmit("D30", "dim", 0) blir Off

hs.Transmit("D30", "dim", 50) blir Dim 50%

hs.Transmit("D30", "dim", 100) blir On

 

:)

Lenke til kommentar

Scriptede knapper er enklere. De kjører bare et script med parametre du har bestemt. Ferdig med det. Men det er ikke verre enn å lage en "Sub RemoveButtons(byval device as String)" i scriptet ditt, og så legge til knappene igjen etterpå. :)

 

Må jeg via et skript som her:

 

 

    Sub Lag_Dimmeknapper_pa_Zwave_dimmer(ByVal pParam As String)
        'Parameter: Device address for Z-wave Dimmer
        Dim pDevice As String = pParam
 
        sMyScript = "Dimming.vb(""Dim5"",""" & pDevice & """)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Dim5")
        sMyScript = "Dimming.vb(""Bright5"",""" & pDevice & """)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Bright5")
    End Sub
    ' ------- Buttons
    Sub Dim5(ByVal pDevice As String)
        hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) - 5)
    End Sub
    Sub Bright5(ByVal pDevice As String)
        hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) + 5)
    End Sub

 

Eller er det mulig å legge denne hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) + 5) rett i knappen?

Mener jeg har lest noe om ett "&" prefix???

Lenke til kommentar

 

Må jeg via et skript som her:

    Sub Lag_Dimmeknapper_pa_Zwave_dimmer(ByVal pParam As String)
        'Parameter: Device address for Z-wave Dimmer
        Dim pDevice As String = pParam
 
        sMyScript = "Dimming.vb(""Dim5"",""" & pDevice & """)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Dim5")
        sMyScript = "Dimming.vb(""Bright5"",""" & pDevice & """)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Bright5")
    End Sub
    ' ------- Buttons
    Sub Dim5(ByVal pDevice As String)
        hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) - 5)
    End Sub
    Sub Bright5(ByVal pDevice As String)
        hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) + 5)
    End Sub

Eller er det mulig å legge denne hs.Transmit(pDevice, "dim", hs.DeviceValue(pDevice) + 5) rett i knappen?

Mener jeg har lest noe om ett "&" prefix???

 

 

Du må gjøre et par endringer (du sikkert er klar over). pDevice må erstattes direkte med "A31" f.eks, og ja, det må være et "&" foran. Dessuten blir det en herlig mix av vbscript og .net, så korrekt syntaks blir som dette:

&hs.Transmit "D30", "dim", hs.DeviceValue("D30") + 5

Testet og verifisert! :)

 

EDIT: Vent litt. Hva mener du "rett i knappen"? Knappen kjører et script og en funksjon du selv bestemmer, så det blir ikke så mye mer annerledes. Tenker du på å definere det direkte i AddDeviceButton? Det har jeg ikke svar på, prøv. Men du kommer likevel ikke unna at du må spesifisere en device-kode.

 

Det over kan brukes direkte i et "direct run script" uten at du behøver å opprette en fil.

Endret av Moskus
Lenke til kommentar

EDIT: Vent litt. Hva mener du "rett i knappen"? Knappen kjører et script og en funksjon du selv bestemmer, så det blir ikke så mye mer annerledes. Tenker du på å definere det direkte i AddDeviceButton? Det har jeg ikke svar på, prøv. Men du kommer likevel ikke unna at du må spesifisere en device-kode.

 

Jepp. Det er akkurat det jeg tenker:

 

 

Sub Lag_Dimmeknapper_pa_Zwave_dimmer(ByVal pDevice As String)
 Dim sMyScript  as String
 
        hs.DeviceButtonRemove(pDevice, "Dim5")
        sMyScript = "&hs.Transmit(""" & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) - 5)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Dim5")
        hs.DeviceButtonRemove(pDevice, "Bright5")
        sMyScript = "&hs.Transmit(""" & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) + 5)"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Bright5")
End Sub

 

Testet og verifisert :D

 

Men denne teller desverre Dimvalue videre under null :( :

post-275475-0-85593400-1383745908_thumb.png

Lenke til kommentar

... derfor kontrollen for det i scriptet til Morgens.

 

Arrgh Øya er det første en blir blind på (særlig når en er litt ivrig ;) )

 

Blir sånn da:

 

Sub Lag_Dimmeknapper_pa_Zwave_dimmer(ByVal pDevice As String)
 Dim sMyScript  as String
 
        hs.DeviceButtonRemove(pDevice, "Dim5")
        sMyScript = "&if hs.DeviceValue(""" & pDevice & """) - 5 < 0 then "
        sMyScript = sMyScript & "hs.Transmit """ & pDevice & """, ""dim"", 0 "
        sMyScript = sMyScript & " else "
        sMyScript = sMyScript & "hs.Transmit """ & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) - 5"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Dim5")

        hs.DeviceButtonRemove(pDevice, "Bright5")
        sMyScript = "&if hs.DeviceValue(""" & pDevice & """) + 5 > 100 then "
        sMyScript = sMyScript & "hs.Transmit """ & pDevice & """, ""dim"", 100 "
        sMyScript = sMyScript & " else "
        sMyScript = sMyScript & "hs.Transmit """ & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) + 5"
        hs.DeviceButtonAdd(pDevice, sMyScript, "Bright5")
End Sub

 

Som du sa: En herlig (eller jævlig) blanding av Net og script

(Brukte 10 min på å skjønne at jeg måtte ta bort parantesene på noen av kallene)

 

men det funker ihvertfall :D

Lenke til kommentar

Da skal også dette fungere (i teorien)

Sub Lag_Dimmeknapper_pa_Zwave_dimmer(ByVal pDevice As String)
        hs.DeviceButtonRemove(pDevice, "Dim5")
        hs.DeviceButtonAdd(pDevice, "&if hs.DeviceValue(""" & pDevice & """) - 5 < 0 then hs.Transmit """ & pDevice & """, ""dim"", 0 else hs.Transmit """ & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) - 5", "Dim5")

        hs.DeviceButtonRemove(pDevice, "Bright5")
        hs.DeviceButtonAdd(pDevice, "&if hs.DeviceValue(""" & pDevice & """) + 5 > 100 then hs.Transmit """ & pDevice & """, ""dim"", 100 else hs.Transmit """ & pDevice & """, ""dim"", hs.DeviceValue(""" & pDevice & """) + 5", "Bright5")
End Sub

... og det er den jævligste koden jeg har sett på lenge. :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...