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

    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

    #2
    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

    Kommentar


      #3
      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.

      Kommentar


        #4
        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

        Kommentar


          #5
          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"
            }
               
          }
          Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

          Kommentar


            #6
            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

            Kommentar


              #7
              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)     ]

              Kommentar


                #8
                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)

                Kommentar


                  #9
                  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.
                  Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                  Kommentar


                    #10
                    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...

                    Kommentar


                      #11
                      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.)

                      Kommentar

                      Lädt...
                      X