Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenHAB mit KNX Binding Temperaturmanagement

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

    OpenHAB mit KNX Binding Temperaturmanagement

    Hallo liebe Freunde,

    Zur Zeit beschäftige ich mich mit der HKL Steuerung im OpenHAB.

    Momentan stehe ich vor dem Problem, dass die HKL Steuerung jedes mal beim öffnen der Fenster in den Frostschutz geht. Soweit auch gut, nur soll der letzte Zustand beim Schließen der Fenster automatisch eingeschaltet werden.

    Dazu ist es nötig, die letzten Zustände vor der Fensteröffnung abzuspeichern.
    Wie kann ich so etwas realisieren?
    Durch eine persistence kann ich ja nur Zeitliche Abfragen machen. Ich weiß jedoch nicht, wie lange das Fenster geöffnet ist.


    Die Umschlatung der Betriebszustände realisiere ich über eine 4x 1 Bit Wert, da ich bis heute noch nicht herrausgefunden habe, wie man die Daten für die "Byte" Umschaltung richtig interpretieren kann.

    Auf dem Gruppenmonitor kommen bei der Betriebsumschaltung
    0.4 %
    0.8 %
    1.2 %
    1.6 %

    Wie kann ich die Prozentwerte mit Nachkommenstellen vom Bus ins Openhab einpflegen?


    Grüße

    #2
    Hallo,

    das sind aber viele Fragen

    Den PreviousState gibt es als Persistence Variable nicht - da musst du wohl mit einem HilfsItem arbeiten in das du den vorherigen Wert in einer Regel einträgst und ihn nach dem schließen des Fensters wieder mit postUpdate auf das eigentliche Item schreibst.

    Wie kann ich die Prozentwerte mit Nachkommenstellen vom Bus ins Openhab einpflegen?
    Das geht über die Item Definition:
    Number Temperature_EG_Living "Temperatur EG Living [%.1f °C]"
    bedeutet Nummernformat Float mit einer Nachkommastelle

    Die Byte Umschaltung solltest du mit dem entsprechenden DPT hinbekommen. (For an openHAB PercentType (which is the rollershutter position), the KNX binding uses by default the DPT 5.004, i.e. a 1-byte datatype. )

    Hoffe das hilft
    Grüsse
    Karsten

    Kommentar


      #3
      Danke für den Tip.

      Die Übergabe der Zustände innerhalb des Bytewertes habe ich nun mit der DPT von 5.005.


      Vom Logging berichte ich, wenns funktioniert

      Einen kleinen Tip zur Darstelllung der Werte im db4o Loggfenster würde mir bereites helfen.

      Kommentar


        #4
        Meine nächste Frage.

        Durch u.a dem Befehl sendCommand(Item,Value) kann ich einen Wert in das Item schreiben.

        Besteht die Möglichkeit auch den Wert einer Variable im in das Item zurück zu senden ?

        also sowas in der art

        sendCommand(Sollwert,Sollwert_Ablage.state)

        Kommentar


          #5
          Zitat von MKnepper Beitrag anzeigen
          Meine nächste Frage.

          Durch u.a dem Befehl sendCommand(Item,Value) kann ich einen Wert in das Item schreiben.

          Besteht die Möglichkeit auch den Wert einer Variable im in das Item zurück zu senden ?

          also sowas in der art

          sendCommand(Sollwert,Sollwert_Ablage.state)
          Na klar geht das:

          deinItem.sendCommand(Variable)
          oder so
          sendCommand(deinItem, Variable)

          Gruss

          Kommentar


            #6
            RULE:


            // Sollwert einstellen

            rule"Sollwert per Visu einstellen"

            when
            Item Sollwert changed
            then
            if (Fensterposition.state == OFF)
            {
            if (Sollwert.state as DecimalType == 21.0) /* 21 °C */
            {
            Betriebsmodus.sendCommand(1)
            Sollwert_Ablage.postUpdate(21)
            }
            else if (Sollwert.state as DecimalType == 19.0 ) /* 19 °C */
            {
            Betriebsmodus.sendCommand(2)
            Sollwert_Ablage.postUpdate(19)
            }
            else if (Sollwert.state as DecimalType == 17.0 ) /* 17 °C */
            {
            Betriebsmodus.sendCommand(3)
            Sollwert_Ablage.postUpdate(17)
            }
            else if ((Sollwert.state as DecimalType == 7) /* 7 °C */
            {
            Betriebsmodus.sendCommand(4)
            Sollwert_Ablage.postUpdate(7)
            }
            else if (Betriebsmodus.state != 0)
            {
            Betriebsmodus.sendCommand(0) /* XX °C */
            }
            }
            else if (Fensterposition.state == ON)
            {
            sendCommand(Betriebsmodus,4)
            sendCommand(Sollwert,7)
            }
            end

            rule"Fensterposition öffnen"
            when
            Item Fensterposition changed from OFF to ON
            then
            Betriebsmodus.sendCommand(4)
            sendCommand(Sollwert,7)
            end

            rule"Fensterposition schließen"
            when
            Item Fensterposition changed from ON to OFF
            then
            sendCommand(Sollwert,Sollwert_Ablage)
            end


            ITEM:

            Number Sollwert_Ablage
            Number Sollwert "Vorgabe Temperatur [%.1f °C]" <temperature> (Raumregler) {knx="0/1/1"}
            Angehängte Dateien

            Kommentar


              #7
              Hast du die Variable Sollwert_Ablage deklariert?

              Gruß

              Kommentar


                #8
                Sonst könnte dieser doch wohl keine werte speichern, oder?



                Zitat von thoern Beitrag anzeigen
                Hast du die Variable Sollwert_Ablage deklariert?

                Gruß
                Number Sollwert_Ablage (Temperaturwerte)

                wenn ich im openhab den Status der Sollwert_Ablage abfrage, kommmt
                Angehängte Dateien

                Kommentar


                  #9
                  Ach so, sorry! Du hast weiter oben von Variablen gesprochen. Sollwert_Ablage und Sollwert sind bei dir aber keine Variablen, sondern Items:

                  Zitat von MKnepper Beitrag anzeigen

                  ITEM:

                  Number Sollwert_Ablage
                  Number Sollwert "Vorgabe Temperatur [%.1f °C]" <temperature> (Raumregler) {knx="0/1/1"}
                  Sorry für die Verwirrung.

                  Gruß

                  Kommentar


                    #10
                    rule"Fensterposition schliessen"
                    when
                    Item Fensterposition changed from ON to OFF
                    then
                    sendCommand(Sollwert,Sollwert_Ablage.state)
                    end

                    Leider kommt dann auf dem Eventbus:




                    Zitat von thoern Beitrag anzeigen
                    Ach so, sorry! Du hast weiter oben von Variablen gesprochen. Sollwert_Ablage und Sollwert sind bei dir aber keine Variablen, sondern Items:



                    Sorry für die Verwirrung.

                    Gruß
                    Angehängte Dateien

                    Kommentar


                      #11
                      Würde es eher so probieren:

                      rule"Fensterposition schliessen"
                      when
                      Item Fensterposition received update
                      then
                      if (Fensterposition.state==ON){
                      sendCommand(Sollwert,Sollwert_Ablage.state)
                      }
                      end

                      Kommentar


                        #12
                        leider auch hier die selbe Fehlermeldung

                        Could not invoke method org.openhab.model.script.action.BusEvent.sendComma nd<Java.lang.String.jave.lang.String> on instance : null


                        welcher Argument liefert hierbei null??

                        rule:

                        when
                        Item Fensterposition received update
                        then
                        if (Fensterposition.state == OFF)
                        {
                        sendCommand(Sollwert,Sollwert_Ablage.state)
                        }
                        else if (Fensterposition.state == ON)
                        {
                        Betriebsmodus.sendCommand(4)
                        sendCommand(Sollwert,7)
                        }
                        end

                        EDIT!!


                        Ich habe keine Ahnung was ich geändert habe, aber nun funktioniert es ......


                        when
                        Item Fensterposition received update
                        then
                        if (Fensterposition.state == OFF)
                        {
                        sendCommand(Sollwert,Sollwert_Ablage.state)
                        }
                        else if (Fensterposition.state == ON)
                        {
                        Betriebsmodus.sendCommand(4)
                        sendCommand(Sollwert,7)
                        }
                        end

                        Kommentar


                          #13
                          Nur zu Info

                          Ich habe den Fehler nun beseitigt.

                          rule"Fensterposition schliessen"

                          when
                          Item Fensterposition received update
                          then
                          if (Fensterposition.state == OFF)
                          {
                          sendCommand(Sollwert, Sollwert_Ablage.state as DecimalType)
                          }
                          else if (Fensterposition.state == ON)
                          {
                          Betriebsmodus.sendCommand(4)

                          }
                          end

                          Kommentar


                            #14
                            sorry - ja den DecimalType ... hatte ich vergessen. Kommt davon wenn man das aus dem Kopf macht. Freut mich das es nun tut.

                            Kommentar

                            Lädt...
                            X