Ankündigung

Einklappen
Keine Ankündigung bisher.

Eigenes Item erstellen, dass von einem vorhandenen erbt?

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

    Eigenes Item erstellen, dass von einem vorhandenen erbt?

    Ist es möglich sich eigene Items zu erstellen?

    Ich bräuchte nämlich ein Item, dass so zusagen von Rollershutter erbt, und weiters den Command TIMER kennt.

    Jemand Erfahrung damit?

    mfg
    tiknx

    #2
    Items definierst Du über die .items-Datei, ich vermute aber, Du meinst etwas anderes, nämlich einen eigenen Item Typ. Das ist so nicht vorgesehen, wobei aber im Laufe der letzten Jahre immer mal wieder Typen neu dazu gekommen sind. Eine andere Frage ist, was Du eigentlich erreichen willst, meine Läden fahren beispielsweise Zeit (und Licht) gesteuert über openHAB. Also, was meinst Du mit einem Command TIMER (welches es btw nicht gibt)?

    Kommentar


      #3
      Ne das mit der *.items ist mir schon klar. Aber du hast glaub ich richtig verstanden, was ich will.

      ​​​​Ich steuere mit Rolllädenaktoren meine Velux Fenster. Diese will ich zum einen natürlich über KNX Taster betätigen zum anderen über openhab. Soweit funktioniert das natürlich auch ohne Probleme.

      Zusätzlich will ich sie manuell öffnen können und nach einer bestimmten Zeit wieder schließen können. Zb zum Lüften im Bad.

      Auch das funktioniert in einer Version problemlos. Wenn ich nämlich zwei von einander unabhängige items mit unterschiedlichen GA erstelle. Die eine GA für Taster. Die andere für openhab.

      Was ich aber will ist, ein Rollershutter item, das neben UP/DOWN etc. auch noch den Command TIMER kennt.
      Ansich würde auch MOVE funktionieren zumindest aus openhab heraus. Leider Triggern meine Triton nicht bei STOP nicht nur STOP, sondern auch MOVE. Das hat dann den Effekt, dass das Fenster nach 15min geschlossen wird. Weil openhab eben die Rule gestartet hat, die eben besagt das Fenster nach 15min wieder zu schließen

      ​​​​​​​ich hoffe du verstehts was ich meine

      Kommentar


        #4
        Bei Rollläden gibt es keinen Stop-Befehl jedenfalls nicht in der knx-Welt. Es gibt nur Langzeit und Kurzzeit, eben Move und Step. Nach einem Step stoppt der Motor automatisch.

        Ich hab bei mir hier auch ein motorisiertes Fenster, welches ich über openHAB regelmäßig zum Lüften öffne und nach einer Stunde fährt es wieder zu. Wenn ich es von Hand öffne, fährt es nach 15 Minuten wieder zu. Wenn die Temperatur draußen in einem sehr ähnlichen Bereich wie die Solltemperatur liegt, fährt das Fenster nicht automatisch zu. Dabei sind Aktor und Taster über dieselben GA an openHAB angebunden, nämlich Langzeit, Kurzzeit und Status letzte Fahrtrichtung (meine Aktoren haben leider keinen Positionsstatus).
        Wie und wann das Fenster automatisch geschlossen wird, entscheidet openHAB anhand einer Rule, die zu Beginn (also bei Öffnen des Fensters) getriggert wird und dann verschiedene andere Dinge auswertet. Bevor ich das Fenster automatisch öffne, setze ich z.B. einen Merker - also eine globale Variable - auf true.

        Insofern ist die Frage, wo der Timer läuft, und wie Du ihn triggern willst. Wenn Du eine freie Taste hast, ist es sicherlich das Beste, dafür eine eigene GA herzunehmen. Ich hab mir z.B. einen Rollladen auf eine Taste gelegt, kurzer Druck fährt hoch oder runter, langer Druck stoppt, so hab ich eine Taste für was anderes frei bekommen.

        Kommentar


          #5
          openhab kennt den STOP Befehl aber. Siehe

          https://github.com/openhab/openhab/w...ation-of-items

          aber genau das ist wohl auch mein Problem, für KNX ist STOP/MOVE wohl das selbe wie für STEP.

          Aber ich erkläre mal was ich genau will.

          1) Fenster mit KNX-Taster manuell auf und zu machen. Ohne, dass es irgendwie geschlossen wird
          2) Fenster mit openHAB manuell auf und zu machen. Ohne, dass es irgendwie geschlossen wird
          3) Fenster mit openHAB manuell auf und zu machen und es nach einer gewissen Zeit wieder schließen (später vielleicht eine komplexere Rule)

          Punkt 2 und 3 sollen aber in einer Definition in der Sitemap vereint werden.

          Auszug aus *.items
          Code:
          Rollershutter j_DG_VeluxKueche {knx="6/3/0, 6/3/1, <5.001:6/3/2"}
          Rollershutter j_DG_VeluxKuecheTimer {knx="7/3/0, 7/3/1, <5.001:6/3/2"}
          Auszug aus *.sitemap
          Code:
          Switch item=j_DG_VeluxKuecheTimer label="Velux [%.0f %%]" icon="velux" mappings=[UP="↑", DOWN="↓", STOP="■", MOVE="◴"] visibility=[s_StatusRegen==OFF]
          Switch item=j_DG_VeluxKueche label="Velux [%.0f %%]" icon="velux" mappings=[UP="↑", DOWN="↓", STOP="■"] visibility=[s_StatusRegen==ON]
          Taster sind GA 6/x/x verbunden
          openhab mit GA 7/x/x außer es regnet

          In dieser Weise funktioniert es genau so wie ich will. Mir wäre es aber lieber wenn ich auf die 7/x/x GA irgendwie verzichten könnte

          Kommentar


            #6
            Da Du ohnehin weitere Bedienelemente brauchst, kannst Du doch einfach ein Item ohne Binding definieren (für den Timer). wenn Du dieses bedienst, lässt Du eine rule triggern, die sich um den Timer kümmert und den befehl an das echte Item weiterreicht:

            .items:
            Code:
            Rollershutter j_DG_VeluxKueche {knx="6/3/0, 6/3/1, <5.001:6/3/2"}
            Rollershutter j_DG_VeluxKuecheTimer
            .rules:

            Code:
            Timer tWindow = null
            
            rule "Fenstertimer"
            when
                Item Rollershutter j_DG_VeluxKuecheTimer received update
            then
                if (Rollershutter j_DG_VeluxKuecheTimer.state == UP) {
                    if (tWindow != null)
                        tWindow.cancel
                    tWindow = createTimer(now.plusMinutes(30), [|
                        Rollershutter j_DG_VeluxKueche.sendCommand(DOWN)
                        tWindow = null
                    )
                    Rollershutter j_DG_VeluxKueche.sendCommand(UP)
                }
                else if (Rollershutter j_DG_VeluxKuecheTimer.state == DOWN) {
                    tWindow.cancel
                    tWindow = null
                    Rollershutter j_DG_VeluxKueche.sendCommand(DOWN)
                }
                else if (Rollershutter j_DG_VeluxKuecheTimer.state == STOP) {
                    Rollershutter j_DG_VeluxKueche.sendCommand(STOP)
                }
            end
            Der Code sollte weitgehend selbsterklärend sein. Ich gehe im Beispiel davon aus, dass UP öffnet und DOWN schließt.
            Zuletzt geändert von udo1toni; 21.09.2016, 14:09.

            Kommentar


              #7
              Danke dir, habs jetzt so ähnlich wie du geschrieben hast realisiert, und schein so zu funktionieren

              Kommentar

              Lädt...
              X