Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab 2 und KNX Temperatur

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

    Openhab 2 und KNX Temperatur

    Hallo,

    hat jemand von euch schon Openhab2 im Einsatz und es auch schon geschafft die Sollwert-Temperatur mittels Openhab 2 & KNX-Binding auf den Bus zu bringen? Die Temperatur von meinen MDT Smart 2 Tasten kann ich mir im Openhab2 anzeigen lassen. Nun möchte ich gerne die Temperatur auch mit der Openhab2 Visu ändern können.

    Jemand eine Idee?

    Danke.


    #2
    Reicht es nicht, wenn du die Werte an die GA sendest, in der du den Taster und den Heizaktor verbunden hast?

    Du baust dir also ein Item, welches mit dem KNX-Binding und der GA verbunden ist. Und an dieses Item sendest du deine Werte mit ItemName.PostUpdate( val )...
    Zuletzt geändert von netzlaff; 28.02.2017, 20:36.

    Kommentar


      #3
      Die GA wird nicht ganz reichen - vermute ich. Wenn ich den Taster betätige und den Befehl "Verringern" oder "Erhöhen" auf den Bus schicke, wird die selbe GA verwendet. Nur die "Info" schaut unterschiedlich aus.

      Busmonitor_Heizung.png

      Kommentar


        #4
        Es gibt vermutlich verschiedene Möglichkeiten (zumindest ist das bei meinen Gira RTR so), zum einen könntest Du "Solltemperatur erhöhen/verringern" auf den Bus schicken, falls die entsprechenden Adressen des RTR beschreibbar sind, zum anderen könntest Du aber auch die Solltemperatur auf einen konkreten Wert setzen, wiederum, falls dieser Wert auch beschreibbar ist (das musst Du in der Dokumentation Deines RTR nachschauen). In ersterem Fall musst Du eventuell ein Dimmeritem verwenden, um den DPT 1.007 verwenden zu können, jedoch sicherlich nicht mit einem Setpoint Widget. In letzterem Fall kannst Du ein Setpoint Widget verwenden, um den Sollwert (nicht das mehr/weniger) an den Bus zu schicken. Entsprechend muss das Item dann ein Number Item sein.
        Bei meinem RTR gibt es unterschiedliche Adressen für Schreiben und lesen, evtl. ist das beim MDT Smart 2 auch so?

        Kommentar


          #5
          Habt ihr schon eine Lösung gefunden?
          Ich habe ebenfalls das Problem das die MDT Heizungsaktoren eine Sollwertverschiebung mit dem DPT 1.007 fordern.
          Laut GitHub (Link) ist dafür nur OnOff vorgesehen. Das heist ich kann um ein in den Parameter definierten Wert (Standard 0,5) hoch und dann wieder runterschalten also An Aus.

          Hat hier jemand eine Lösung Parat?

          Kommentar


            #6
            Falls alles nichts hilft (also kein direktes Setzen des Wertes geht), könntest Du ein Number Item verwenden, das mit einem Setpoint Item verbinden und bei Wertänderung eine Rule triggern lassen, die dann eben ON oder OFF an die passende GA sendet (Unternummern sollten egal sein, also ob 1.001 oder 1.007), zumindest wäre das einen Versuch wert.
            Code:
            rule "Sollpunkt setzen"
            when
                Item MyNumerItem changed  //per setpoint gesetzt
            then
                if((MyNumberItem.state as DecimalType ) < (MyNumberItem.historicState(now.minusMillis(500)).state as DecimalType)) {
                    MySetItem.sendCommand(OFF)  //sende 0
                }
                else if((MyNumberItem.state as DecimalType) > (MyNumberItem.historicState(now.minusMillis(500)).state as DecimalType)) {
                    MySetItem.sendCommand(ON)  //sende 1
                }
            end
            Voraussetzung ist natürlich noch, dass das Item persistiert ist, damit auf/ab unterschieden werden kann.
            Alternativ könnte man auch zwei Schaltflächen mit Ab/Auf beschriften, und das Item direkt senden lassen.

            Kommentar


              #7
              Puhh, du scheinst ja richtig Ahnung davon zu haben.

              Habe noch etwas in der openhab Community gefunden. Passt zu diesem Thread.

              https://community.openhab.org/t/oh2-...ia-knx/19978/3

              Kommentar


                #8
                Ok, habe das mal umgesetzt. Ich kann nun mit den Pfeiltasten mittels eines Setpoint Items die Temperatur "grafisch" verändern. In den Logs steht auch das sich da was tut, aber es wird nicht auf den Bus übertragen.

                Code:
                2017-03-15 15:25:10.962 [ItemCommandEvent          ] - Item 'HWR_temp_change' received command 19
                2017-03-15 15:25:10.997 [ItemStateChangedEvent     ] - HWR_temp_change changed from 19.5 to 19
                2017-03-15 15:25:12.543 [ItemCommandEvent          ] - Item 'HWR_temp_change' received command 18.5
                2017-03-15 15:25:12.556 [ItemStateChangedEvent     ] - HWR_temp_change changed from 19 to 18.5
                Wenn ich deine Rule aktiviere, greift die Rule auch, sobald ich auf die Pfeiltasten des Setpoint Items klicke, aber es kommt folgende Meldung:

                Code:
                2017-03-15 15:25:11.008 [WARN ] [nce.extensions.PersistenceExtensions] - There is no default persistence service configured!
                2017-03-15 15:25:11.011 [WARN ] [nce.extensions.PersistenceExtensions] - There is no queryable persistence service registered with the id 'null'
                2017-03-15 15:25:11.018 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Sollpunkt setzen': cannot invoke method public abstract org.eclipse.smarthome.core.types.State org.eclipse.smarthome.core.persistence.HistoricItem.getState()
                on null

                Was meinst du mit:

                Voraussetzung ist natürlich noch, dass das Item persistiert ist, damit auf/ab unterschieden werden kann.
                Alternativ könnte man auch zwei Schaltflächen mit Ab/Auf beschriften, und das Item direkt senden lassen.

                Kommentar


                  #9
                  Naja, Du siehst ja, dass ich in der Rule einen "historicState" anspreche. Dafür benötigt man eine Persistence. Du kannst z.B. rrd4j installieren (in der Paper UI unter Addons -> Persistence zu finden), anschließend musst Du eine Datei /etc/openhab2/persistence/rrd4j.persist anlegen und mit passendem Inhalt befüllen. Siehe https://github.com/openhab/openhab1-...#configuration (ganz am Ende des Abschnitts ist eine komplette Beispieldatei).
                  Im Items-Bereich trägst Du das Item HWR_temp_change ein, und zwar mit den Eigenschaften everyChange, restoreOnStartup, damit wird zum einen immer der letzte Wert gespeichert, zum anderen wird openHAB2 diesen Wert automatisch beim Start wieder einlesen, das Item ist also nicht mehr leer, wenn openHAB startet.

                  Die Rule wiederum kann dann den letzten Wert aus dieser Persistence lesen. Am besten trägst Du dazu rrd4j als Default Persistence ein (Paper UI Configuration->System->Persistence)

                  Die erwähnte alternative (komplett ohne Rule) sähe so aus:
                  .items
                  Code:
                  Switch HWR_temp_changeS "Temperatur" {knx="4/1/4",autoupdate="false"}
                  .sitemap
                  Code:
                  Switch item=HWR_temp_changeS mappings=[OFF="Ab",ON="Auf"]
                  Ergibt zwei Schaltflächen, die mit Ab und Auf beschriftet sind, beim Druck auf die Schaltfläche wird jeweils kurz ein OFF bzw. ON geschickt. Dabei wird die Schaltfläche nicht unten bleiben, sondern wieder zurück springen (wegen autoupdate="false").

                  Einen Makel möchte ich nicht verschweigen: Bei dieser Variante kann es passieren, dass, wenn Du die Sollwertverschiebung von anderer Stelle ausführst (also z.B. direkt am RTR), die entsprechenden GA an openHAB gesendet werden. Dann klebt der zuletzt gedrückte Knopf unten, und zwar so lange, bis Du openHAB neu startest oder zumindest eine .items-Datei neu einlesen lässt. Da man auch nicht per Rule ein Switch Item auf uninitialized oder null setzen kann, ist das also eher suboptimal.
                  Ausweg wäre auch hier, das Item zur Eingabe ungebunden (also nur mit {autoupdate="false"}) anzulegen und die Eingabe dann per Rule auf das eigentliche Steueritem umzuleiten.

                  Kommentar


                    #10
                    @udo1toni
                    Großen Dank an deine ausführlichen Anleitungen .
                    Ich habe deine erste Anleitung umgesetzt. Hat leider einige Stunden gedauert da ich dein Hinweis auf persistence nicht gelesen habe.
                    Letzendlich habe ich das dann doch hinbekommen.

                    Allerdings finde ich die Lösung nicht gerade "Einfach" aus folgenden Gründen:
                    • Es wird für jeden Bereich ein zusätzliche Change Item benötigt
                    • Es wird für jeden Bereich eine Rule benötigt
                    • Es muss eine Persistence angelegt werden

                    All das zusammen ist extrem viel aufwand zudem bin ich gezwungen die Werte zu speichern (Persistence).


                    Da finde ich die Lösung aus deinem letzten Kommentar besser. Bei Gelegenheit werde ich diese einrichten und testen.

                    Kommentar


                      #11
                      Ja, kommt halt immer darauf an, wie man es in der Oberfläche haben möchte. Ich habe hier Gira TS2+ im Einsatz, die kann ich so konfigurieren, dass ich die Solltemperatur als Zahlenwert auf den Bus schreiben kann, also nicht mit UP/DOWN Tasten. Ich habe also nur ein popeliges Item, welches beim Start automatisch gelesen wird. So kann ich die Temperatur bequem über Setpoint Widgets verstellen und bekomme die Solltemperatur direkt angezeigt.

                      Das persistieren ist eigentlich kein Nachteil, früher oder später wirst Du Dir eh wünschen, hübsche Bildchen über Temperaturverlauf und Energiebedarf zu sehen. Bei RTR ist es dann natürlich schick, wenn die Solltemperatur dierkt im Graphen drin ist

                      Temp.JPG

                      Die Nadel nach unten ist der Zeitpunkt, als das Fenster geöffnet, und deshalb der Heizkörper auf Frostschutz war...

                      Kommentar


                        #12
                        udo1toni

                        Vielen Dank für deine Vorschläge und Anleitungen. So ganz funktioniert das noch nicht bei mir.

                        Alex9

                        Nutzt du auch die Smart 2 Taster? Magst du evtl. deine Codes mal hier posten, sodass ich nachschauen kann, wo der Fehler bei mir liegt?


                        Danke.
                        Zuletzt geändert von freezy; 16.03.2017, 16:41.

                        Kommentar


                          #13
                          So Graphen haben schon was schönes. Alls nächstes möchte ich aber erst auf Openhab 2 wechseln.

                          freezy
                          Ich nutze die Smart 2 Taster in 2 Zimmer Küch/Essbereich und im Wohnzimmer. In den anderen Zimmer haben ich die Glastaster Plus.
                          Sobald ich mal daheim am Rechner bin werde ich den Code hier reinposten

                          Kommentar


                            #14
                            So hier ist nun der Code:

                            item:
                            Code:
                            Number [I]<item_sollwert>[/I]             "Temperatur Boden soll [%.1f °C]"             <temperature>         (FF_Bad, gHeizung)                 {knx="1/6/5"}
                            Switch [I]<item_sollwertverschiebung>[/I]    {knx="1.007:1/7/5"}
                            sitemap:
                            Code:
                            Setpoint    item=[I]<item_sollwert>[/I] step=0.5
                            rule:
                            Code:
                            import org.openhab.core.library.types.*
                            
                            rule "[I]<name>[/I]"
                            when
                                Item [I]<item_sollwert>[/I] changed  //per setpoint gesetzt
                            then
                                var Number formerValue = ([I]<item_sollwert>[/I].previousState(true).state as DecimalType)
                                var Number actual = ([I]<item_sollwert>[/I].state as DecimalType )
                                logInfo("openhab", "#### Actual Value: "+actual+" Former Value: " + formerValue)
                                if(actual < formerValue) {
                                    logInfo("openhab", "#### Sending OFF command")
                            [I]<item_sollwertverschiebung>[/I].sendCommand(OFF)  //sende 0
                                }
                                else if(actual > formerValue) {
                                    logInfo("openhab", "#### Sending on command")
                            [I]<item_sollwertverschiebung>[/I].sendCommand(ON)  //sende 1
                                }
                                logInfo("openhab", "#### Sollpunkt setzen ENDE")
                            end
                            db4o.persist:
                            Code:
                            /*
                             * Each line in this section defines for which item(s) which strategy(ies) should be applied.
                             * You can list single items, use "*" for all items or "groupitem*" for all members of a group
                             * item (excl. the group item itself).
                             */
                            Items {
                                // persist all items once a day and on every change and restore them from the db at startup
                                gHeizung* : strategy = everyChange, everyDay, restoreOnStartup
                            }
                            So ... ich hoffe das hielft dir weiter.

                            In der openhab.cfg musst du db4o als default hinterlegen, wenn es so funktionieren soll wie im Code. Anonsten kannst du auch irgend ein anderes persist nehmen.

                            Kommentar


                              #15
                              Alex9 Das klappt wunderbar. Vielen Dank :-) ist das bei dir auch so, dass die Sollwertänderung an einem Smart 2 Taster zwei mal, also 2x je 0.5 (step=0.5) auf den Bus geschickt wird?

                              Kommentar

                              Lädt...
                              X