Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche Push Button für 0,5 sek und 3 sek

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PairOfOldShoes
    antwortet
    Zitat von milymat Beitrag anzeigen
    Also bei mir sieht es so aus :


    Code:
    rule "Lampe 10 min"
        when
    Item Taste04 received update ON
        then 
           lampe.sendCommand(ON)
        Thread::sleep(600000)
           lampe.sendCommand(OFF)
    end
    oder ist das eleganter/robuster mit createTimer ?
    Code:
    createTimer(now.plusSeconds(1)) [|
    Tueroeffner_Einfahrt.sendCommand(OFF)     ]
    Letztere Variante würde ich bevorzugen, da man da noch eingreifen kann (z.B. wenn die Taste04 während der Timer läuft nochmal gedrückt wird). Dafür müsstest du aber den erzeugten Timer einer Variable zuweisen. Ein deterministisches Verhalten ist jedoch auch hier nicht zu erreichen, da es die dafür erforderlichen Synchronisations-Mechanismen (skriptseitig) nicht gibt. (Lasse mich hier gerne eines Besseren belehren.)

    Einen Kommentar schreiben:


  • SevenAndrew
    antwortet
    Und wie bekommt man das jetzt von der Hauptebene weg?

    Zitat von teichsta Beitrag anzeigen
    Hi,



    der "eigentlich intendierte" Weg die Sitemap aufzubauen ist, die Items darin einzeln aufzuführen. Eigentlich nur zu Demo-Zwecken hat Kai diesen Automatismus eingebaut, der Groups auflöst.

    Da Du ein Mapping verwenden möchtest, wirst Du gewissermaßen gezwungen, die Items in der Gruppe "Living" einzeln anzugeben. Der Vorteil dieser Methode ist darüber hinaus auch, dass Du die Item-Reihenfolge bei der Darstellung beeinflussen kannst :-). Die Sitemap würde dann so in etwa aussehen:

    Code:
    sitemap default label="Home Sweet Home"
    {
      Frame {
        Text label="Wohnen" {
            Frame label="Licht" {
               Switch item=Door_Terrasse_p label="Living" mappings=[ON="Go!"]
               ...
            }
            Frame label="Rolläden" {
               ...
            }
        }
        Group item=Kitchen
        Group item=Office
        Group item=Bedroom
        Group item=Childroom
        Group item=Flor
        Group item=Bath
      }
     
      Frame {
        Group item=Lichter label="Leuchten" icon="light-on"
        Group item=Jalousie label="Rollläden" icon="rollershutter"
      }
     
    }

    Ich habe das jetzt aber noch nicht verstanden! Wie bekomme ich die "Gruppenschaltung" weg von der Hauptebene - sprich: von der Sitemap zu den items.

    Habe bei mir die Aussenbeleuchtung geschaltet mit einzelnen switches und kann mit einem Eintrag auf der Hauptebene ALLE schalten. Für mich wäre es aber übersichtlicher im Bereich "Outdoor" alle auf einmal zu schalten...

    Einen Kommentar schreiben:


  • teichsta
    antwortet
    Hi,

    Zitat von Jockel Beitrag anzeigen
    Ich kenne das Thread-Modell von openHAB nicht und bin mir daher nicht sicher, ob jede Regel in einem eigenen Thread ausgeführt wird. Wenn dies nicht der Fall ist würdest Du mit dem Sleep auch andere Regeln blockieren.
    Jede Regel wird zwar in einem eigenen Thread ausgeführt (siehe ScriptExecutionThread), diesen Thread schlafen zu legen ist dennoch nicht so elegant (sagt milymat ja selbst).

    Wir empfehlen eindeutig die Timer-Variante.

    Gruß,

    Thomas E.-E.

    Einen Kommentar schreiben:


  • Jockel
    antwortet
    Ich kenne das Thread-Modell von openHAB nicht und bin mir daher nicht sicher, ob jede Regel in einem eigenen Thread ausgeführt wird. Wenn dies nicht der Fall ist würdest Du mit dem Sleep auch andere Regeln blockieren.

    Darüber hinaus hat der Timer, wenn er nicht anonym angelegt wird, auch die Möglichkeit nach dem Starten noch mal einzugreifen.

    Dazu gibt es in den Demo.rules auch ein Beispiel (ganz am Ende)

    Einen Kommentar schreiben:


  • milymat
    antwortet
    Also bei mir sieht es so aus :


    Code:
    rule "Lampe 10 min"
        when
    Item Taste04 received update ON
        then 
           lampe.sendCommand(ON)
        Thread::sleep(600000)
           lampe.sendCommand(OFF)
    end
    oder ist das eleganter/robuster mit createTimer ?
    Code:
    createTimer(now.plusSeconds(1)) [|
    Tueroeffner_Einfahrt.sendCommand(OFF)     ]

    Einen Kommentar schreiben:


  • Jockel
    antwortet
    Hier noch das versprochene Beispiel:

    Code:
    rule "Automatically switch off pedastrian gate switch"
    when
    	Item Tueroeffner_Einfahrt received command ON
    then
    	createTimer(now.plusSeconds(1)) [|
    		Tueroeffner_Einfahrt.sendCommand(OFF)
    	]
    end

    Einen Kommentar schreiben:


  • teichsta
    antwortet
    Hi,

    Zitat von rolli20up Beitrag anzeigen
    aber wie schreib ichs denn, das er nur in der Gruppe Wohnen auftaucht
    der "eigentlich intendierte" Weg die Sitemap aufzubauen ist, die Items darin einzeln aufzuführen. Eigentlich nur zu Demo-Zwecken hat Kai diesen Automatismus eingebaut, der Groups auflöst.

    Da Du ein Mapping verwenden möchtest, wirst Du gewissermaßen gezwungen, die Items in der Gruppe "Living" einzeln anzugeben. Der Vorteil dieser Methode ist darüber hinaus auch, dass Du die Item-Reihenfolge bei der Darstellung beeinflussen kannst :-). Die Sitemap würde dann so in etwa aussehen:

    Code:
    sitemap default label="Home Sweet Home"
    {
      Frame {
        Text label="Wohnen" {
            Frame label="Licht" {
               Switch item=Door_Terrasse_p label="Living" mappings=[ON="Go!"]
               ...
            }
            Frame label="Rolläden" {
               ...
            }
        }
        Group item=Kitchen
        Group item=Office
        Group item=Bedroom
        Group item=Childroom
        Group item=Flor
        Group item=Bath
      }
    
      Frame {
        Group item=Lichter label="Leuchten" icon="light-on"
        Group item=Jalousie label="Rollläden" icon="rollershutter"
      }
         
    }

    Einen Kommentar schreiben:


  • rolli20up
    antwortet
    die Timer-Geschichte klingt gut.
    Hab bei der SuFu nicht das gefunden wo ich denke, dass du dich drauf beziehst.
    Wäre dankbar, wenn du mir was schicken könntest.

    Danke.

    Wahrscheinlich versteh ich den Aufbau Sitemap, Items noch nicht komplett.
    Das der Schalter so auf der "Hauptebene" erscheint, ist mir eigentlich klar, aber wie schreib ichs denn, das er nur in der Gruppe Wohnen auftaucht.

    Danke

    Einen Kommentar schreiben:


  • Jockel
    antwortet
    Bei meinem Button-Versuch, landet der in der "Hauptebene". Will ihn aber in Gruppe Wohnen haben, was mach ich falsch...
    Na, Du hast ihn in die Hauptebene gesetzt, der steht ja hinter der geschlossenen Klammer der Frames.

    Bezüglich des Zeitverhaltens kannst Du beim Drücken des Buttons einen Timer starten, der bei Ablauf dann das OFF schickt. Ich glaube, dazu gibt es hier im Forum auch ein Beispiel, ansonsten poste ich heute abend mal was.

    Die Funktionen des Aktors zu nutzen ist aber die noch bessere Idee, minimiert die möglichen Fehler zur Laufzeit.

    Einen Kommentar schreiben:


  • thoern
    antwortet
    Hallo,

    ich habe so etwas Ähnliches realisiert. Ich nutze dazu die Treppenhausfunktion des Schaltaktors sowie das zugehörige Statusobjekt (listeningGA), um nach der Ablaufzeit den OpenHAB-Button wieder zurückzusetzen.

    Ob diese Lösung was für dich ist, weiss nicht nicht, da du ja zwei unterschiedliche Laufzeiten benötigst.

    Gruß,
    thoern

    Einen Kommentar schreiben:


  • rolli20up
    hat ein Thema erstellt Suche Push Button für 0,5 sek und 3 sek.

    Suche Push Button für 0,5 sek und 3 sek

    Hallo,

    dank Saschas (verspätetem) Weihnachtsgeschenk, läuft nun openhab auf meinem Pi erfolgreich. Für mich sogar wie Weihnachten und Ostern zusammen...

    Nun such ich ne Möglichkeit meine elektrische Terrassentür zu öffnen.
    Mit nem normalen Switch klappt es zwar aber muss immer auf off schalten.

    Hab die Lösung https://code.google.com/p/openhab-sa..._a_pushbutton: mit dem Button versucht, nur bleibt auch der blau nach push und ist nicht mehr ansteuerbar. Oder mach ich was falsch?

    Brauch die 2 og. Varianten.
    1. Nur kurzer (0.5sek) Klick Button.
    2. Ca 3sek Klick Button. Damit stell ich den Motor der Tür auf Daueroffen.

    Bei meinem Button-Versuch, landet der in der "Hauptebene". Will ihn aber in Gruppe Wohnen haben, was mach ich falsch...
    Hab mich an https://code.google.com/p/openhab-sa..._a_pushbutton: gehalten.

    Danke für eure Hilfe.

    Sitemap:
    Code:
    sitemap default label="Home Sweet Home"
    {
      Frame {
        Group item=Living
        Group item=Kitchen
        Group item=Office
        Group item=Bedroom
        Group item=Childroom
        Group item=Flor
        Group item=Bath
      }
    
      Frame {
        Group item=Lichter label="Leuchten" icon="light-on"
        Group item=Jalousie label="Rollläden" icon="rollershutter"
      }
      Switch item=Door_Terrasse_p label="Living" mappings=[ON="Go!"]  
         
      }
    Item:
    Code:
    ...
    Group   Living            "Wohnen"      <sofa1>        (All)
    Switch  Light_Living      "Licht Wohnen"               (Living, Lichter)    { knx="0/0/3" }
    Switch  Light_Aussen      "Aussen-Steckdosen"          (Living)             { knx="0/0/1" }
    Switch  Door_Terrasse     "Terrassentür"               (Living)             { knx="0/0/4" }
    Switch  Door_Terrasse_p   "Terrassentür p"             (Living)             { knx="0/0/4", autoupdate="false"}
    Switch  Light_Terrasse    "Licht Terrasse"             (Living, Lichter)    { knx="0/0/5" }
    Rollershutter Jal_Hausall "Rollo Haus"                 (Living, Jalousie)   { knx="0/2/18, 0/2/19" }
    Rollershutter Jal_Liveall "Rollo Wohnen"               (Living, Jalousie)   { knx="0/2/6, 0/2/7" }
    Rollershutter Jal_Live_T  "Rollo Terrasse"             (Living, Jalousie)   { knx="0/2/4, 0/2/5" }
    Rollershutter Jal_Live_G  "Rollo gr. Fenster"          (Living, Jalousie)   { knx="0/2/2, 0/2/3" }
    Rollershutter Jal_Live_K  "Rollo kl. Fenster"          (Living, Jalousie)   { knx="0/2/0, 0/2/1" }
    ...
    Gruß Gregor
Lädt...
X