HomeSweetHome Openhab goes KNX

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

HomeSweetHome Openhab goes KNX

Beitrag von TuxTux »

Moin Moin alle zusammen,

da dies mein erster Post ist möchte ich mich kurz vorstellen und dann mit meinem Projekt fortfahren.

Mein Name ist Sebastian und ich bin 37 Jahre alt und wohne im schönen Achim bei Bremen. Beruflich tobe ich mich in der industriellen Schnittstellen Programmierung und der Programmierung von Netzteilen, Schutzschaltern und USV'en aus. Ich bin außerdem Teamleiter unserer vierköpfigen Software Entwicklung.

Jetzt aber zum Projekt:

Seit Februar diesen Jahres saniere wir ein Holzständerwerk Baujahr 1977 in Eigenleistung. Also alles raus was drinnen war und einmal alles neu. Wasser, Gas und Elektro alles neu. Ich habe mich dann beim Elektro Teil für KNX entschieden und alles mit MDT Komponenten umgesetzt.

Im Einsatz befinden sich zur Zeit der Heizungsaktor, Rolladenaktor, Präsenzmelder, Dimmaktor und Schaltaktor. Der Zugriff erfolgt über das MDT IP Interface. Die Steuerung erfolgt mit Hilfe der MDT Glastaster Smart 2 sowie den MDT Doppeltaster. Geplant ist die Wetterstation in einer Außenlinie in Verbindung mit einer Gartenbewässerung.

Nun bin ich Openhab Neuling und versuche zur Zeit die einzelnen KNX Aktoren in Openhab zu integrieren und das ganze auf der Basic UI darzustellen.

Ich habe es bis jetzt geschafft die Temperatur der Glastaster auszulesen und darzustelle sowie den Stellwert der Stellventile für die FB. Leider wird hier der Stellwert nicht richtig angezeigt. 0.45 statt 45%. Ich habe gelesen das es einen Workaround dafür gibt aber wollte mich damit erstmal nicht beschäftigen.

Die schaltbaren Deckenleuchten im EG werden alle korrekt angezeigt und lassen sich auch schalten.

Nun stoße ich aber auf ein oder mehrere Probleme die vermutlich durch meine Unwissenheit kommen. Ich habe große Probleme meine Rolläden zu integrieren und zu steuern. Da ich da einfach nicht weiter komme benötige ich hierbei Hilfe.

Hier meine KNX things

Code: Alles auswählen

//TUNNEL
Bridge knx:ip:MDT_IPG [  
    ipAddress="10.0.0.10", 
    type="TUNNEL", 
    portNumber=3671, 
    readingPause=50, 
    responseTimeout=10, 
    readRetriesLimit=3, 
    autoReconnectPeriod=1,
    localSourceAddr="0.0.0"
]
{
    Thing device MDT_Schaltaktor_20Fach_1 "Schaltaktor 1"@"KNX" [
        address="1.1.3",
        fetch=false,
        pingInterval=300,
        readInterval=0
    ]
    {
        Type switch : S_Ch_A     "Kanal A"       [ ga="1/1/0+<1/1/1" ]
        Type switch : S_Ch_B     "Kanal B"       [ ga="1/1/5+<1/1/6" ]
        Type switch : S_Ch_C     "Kanal C"       [ ga="1/1/10+<1/1/11" ]
        Type switch : S_Ch_D     "Kanal D"       [ ga="1/1/15+<1/1/16" ]
        //Type switch : S_Ch_E     "Kanal E"       [ ga="1/1/20+<1/1/21" ]
        //Type switch : S_Ch_F     "Kanal F"       [ ga="1/1/25+<1/1/26" ]
        //Type switch : S_Ch_G     "Kanal G"       [ ga="1/1/30+<1/1/31" ]
        //Type switch : S_Ch_H     "Kanal H"       [ ga="1/1/35+<1/1/36" ]
        //Type switch : S_Ch_I     "Kanal I"       [ ga="1/1/40+<1/1/41" ]
        //Type switch : S_Ch_J     "Kanal J"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_K     "Kanal K"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_L     "Kanal L"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_M     "Kanal M"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_N     "Kanal N"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_O     "Kanal O"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_P     "Kanal P"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_Q     "Kanal Q"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_R     "Kanal R"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_S     "Kanal A"       [ ga="1/1/xx+<1/1/xx" ]
        //Type switch : S_Ch_T     "Kanal A"       [ ga="1/1/xx+<1/1/xx" ]

        //Type contact       : demoContact       "Door"        [ ga="1.019:<5/1/2" ]
        //Type number        : demoTemperature   "Temperature" [ ga="9.001:<5/0/0" ]
        //Type string        : demoString        "Message"     [ ga="5/3/1" ]
        //Type datetime      : demoDatetime      "Alarm"       [ ga="5/5/42" ]
    }

 /*    Thing device MDT_Schaltaktor_20Fach_1 "Schaltaktor 2"@"KNX" [
        address="1.1.4",
        fetch=false,
        pingInterval=300,
        readInterval=0
    ]
    {
    } */

    Thing device MDT_Dimmaktor_4Fach "Dimmaktor"@"KNX"[
        address="1.1.5",
        fetch=false,
        pingInterval=300,
        readInterval=0
    ]
    {
        Type dimmer        : D_CH_A        "Dimmen Kanal A"      [ switch="1/1/45+<1/1/48", position="1/1/47+<1/1/49", increaseDecrease="1/1/46" ]
        //Type dimmer        : D_CH_B        "Dimmen Kanal B"      [ switch="1/1/55+<1/1/58", position="1/1/57+<1/1/59", increaseDecrease="1/1/56" ]

    }

    Thing device MDT_Jalousieaktor_8Fach_1 "Rolladenaktor 1"@"KNX" [
        address="1.1.6",
        fetch=false,
        pingInterval=300,
        readInterval=0
    ] 
    {
        Type rollershutter : R_CH_A "Rollo Kanal A" [ upDown="3/1/0", stopMove="3/1/1", position="5.001:3/1/6+<3/1/3", autoupdate="false" ]
        Type rollershutter : R_CH_B "Rollo Kanal B" [ upDown="3/1/10", stopMove="3/1/11", position="5.001:3/1/16+<3/1/13", autoupdate="false" ]
        Type rollershutter : R_CH_C "Rollo Kanal C" [ upDown="3/1/20", stopMove="3/1/21", position="5.001:3/1/26+<3/1/23", autoupdate="false" ]
        Type rollershutter : R_CH_DCA "Rollo Kanal D" [ upDown="3/1/30", stopMove="3/1/31", position="5.001:3/1/36<+3/1/33", autoupdate="false" ]
        //Type rollershutter : R_CH_E "Rollo Kanal E" [ upDown="3/1/40", stopMove="3/1/41", position="5.001:3/1/46<+3/1/43", autoupdate="false" ]
        //Type rollershutter : R_CH_I "Rollo Kanal I" [ upDown="3/1/80", stopMove="3/1/81", position="3/1/86<+3/1/83" ]
    }

    /* Thing device MDT_Jalousieaktor_8Fach_2 "Rolladenaktor 2"@"KNX"[
        address="1.1.7",
        fetch=false,
        pingInterval=300,
        readInterval=0
    ] 
    {
        //Type rollershutter : R_CH_H "Rollo Kanal H" [ upDown="3/1/70", stopMove="3/1/71", position="3/1/76<+3/1/73" ]
        //Type rollershutter : R_CH_J "Rollo Kanal J"       [ upDown="3/1/90", stopMove="3/1/91", position="3/1/96<+3/1/93" ]
        //Type rollershutter : R_CH_B_2 "Rollo Kanal B"       [ upDown="3/1/0", stopMove="3/1/1", position="3/1/3" ]
    } */

    Thing device KNXNightWrapper "Nacht Objekt "@"KNX" 
    {
        Type switch-control : night [ga="0/1/4"]
    }

    Thing device KNXSommerWrapper "Sommer Objekt "@"KNX" 
    {
        Type switch : sommer [ga="1.001:0/2/0"]
    }

    Thing device MDT_Heizungsaktor_8Fach "Heizungsaktor EG" @ "KNX" [ 
        address="1.1.8",
        fetch=false,
        pingInterval=600,
        readInterval=0
     ] {
         Type number    :   Temperatur_HWR_EG    "Temperatur HWR EG"  [ ga="<4/1/0" ]
         Type number    :   Temperatur_Flur_EG    "Temperatur Flur EG"  [ ga="<4/1/10" ]
         Type number    :   Temperatur_Kueche_EG    "Temperatur Küche EG"  [ ga="<4/1/20" ]
         Type number    :   Temperatur_Esszimmer_EG    "Temperatur Esstimmer EG"  [ ga="<4/1/30" ]
         Type number    :   Temperatur_Wohnzimmer_EG    "Temperatur Wohnzimmer EG"  [ ga="<4/1/40" ]
         Type number    :   Temperatur_Gaestezimmer_EG    "Temperatur Gästezimmer EG"  [ ga="<4/1/50" ]
         Type number    :   Temperatur_Badezimmer_EG    "Temperatur Badezimmer EG"  [ ga="<4/1/60" ]
         
         Type number    :   Stellwert_HWR_EG    "Stellwert HWR EG"  [ ga="5.001:4/1/1" ]
         Type number    :   Stellwert_Flur_EG    "Stellwert Flur EG"  [ ga="5.001:4/1/11" ]
         Type number    :   Stellwert_Kueche_EG    "Stellwert Küche EG"  [ ga="5.001:4/1/21" ]
         Type number    :   Stellwert_Esszimmer_EG    "Stellwert Esstimmer EG"  [ ga="5.001:4/1/31" ]
         Type number    :   Stellwert_Wohnzimmer_EG    "Stellwert Wohnzimmer EG"  [ ga="5.001:4/1/41" ]
         Type number    :   Stellwert_Gaestezimmer_EG    "Stellwert Gästezimmer EG"  [ ga="5.001:4/1/51" ]
         Type number    :   Stellwert_Badezimmer_EG    "Stellwert Badezimmer EG"  [ ga="5.001:4/1/61" ]
         
    }
    
}



meine KNX items:

Code: Alles auswählen


/* Gruppen */
Group gSystem

Group gHeizung
Group gLicht
Group gRollos

Group gEG
Group gOG

Group gHWR
Group gFlur
Group gKueche
Group gEsszimmer
Group gWohnzimmerc
Group gGaestezimmer
Group gBadezimmer


/* Zentrale Komponenten */
Switch ItIsNight { channel="knx:device:MDT_IPG:KNXNightWrapper:night" }
Switch ItIsSommer { channel="knx:device:MDT_IPG:KNXSommerWrapper:sommer" }

/* Temperaturen */
Number  Temperatur_HWR_EG           "Temperatur HWR [%.1f]"         <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_HWR_EG" }
Number  Temperatur_Flur_EG          "Temperatur Flur [%.1f]"        <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Flur_EG" }
Number  Temperatur_Kueche_EG        "Temperatur Küche [%.1f]"       <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Kueche_EG" }
Number  Temperatur_Esszimmer_EG     "Temperatur Esszimmer [%.1f]"   <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Esszimmer_EG" }
Number  Temperatur_Wohnzimmer_EG    "Temperatur Wohnzimmer [%.1f]"  <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Wohnzimmer_EG" }
Number  Temperatur_Gaestezimmer_EG  "Temperatur Gästezimmer [%.1f]" <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Gaestezimmer_EG" }
Number  Temperatur_Badezimmer_EG    "Temperatur Badezimmer [%.1f]"  <temperature> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_Badezimmer_EG" }

/* Stellwerte */  
Number  Stellwert_HWR_EG            "Stellwert HWR[%d %%]"          <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_HWR_EG" }
Number  Stellwert_Flur_EG           "Stellwert Flur [%d %%]"        <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Flur_EG" }
Number  Stellwert_Kueche_EG         "Stellwert Küche [%d %%]"       <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Kueche_EG" }
Number  Stellwert_Esszimmer_EG      "Stellwert Esszimmer [%d %%]"   <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Esszimmer_EG" }
Number  Stellwert_Wohnzimmer_EG     "Stellwert Wohnzimmer [%d %%]"  <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Wohnzimmer_EG" }
Number  Stellwert_Gaestezimmer_EG   "Stellwert Gästezimmer [%d %%]" <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Gaestezimmer_EG" }
Number  Stellwert_Badezimmer_EG     "Stellwert Badezimmer [%d %%]"  <radiator> (gHeizung) { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Stellwert_Badezimmer_EG" }

Switch  HWR_Licht                   "HWR Decke Licht [%s]"              <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_A" }
Switch  Flur_Licht                  "Flur Decke Licht [%s]"             <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_B" } 
Switch  Kueche_Licht_1              "Küche Decke Licht [%s]"            <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_C" }
Switch  Kueche_Licht_2              "Küche Arbeitsplatte Licht [%s]"    <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_D" }
Switch  Wohnzimmer_Licht_links      "Wohnzimmer Licht Links [%s]"       <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_E" }
Switch  Wohnzimmer_Lichts_rechts    "Wohnzimmer Licht Rechts [%s]"      <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_F" }
Switch  Gaestezimmer_Licht          "Gästezimmer Decke Licht [%s]"      <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_G" }
Switch  Bad_Licht_1                 "Bad Decke Licht [%s]"              <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_H" }
Switch  Bad_Licht_2                 "Bad Spiegel Licht [%s]"            <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Schaltaktor_20Fach_1:S_Ch_I" }

Dimmer Esszimmer_Licht              "Esszimmer Tisch [%d]"              <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Dimmaktor_4Fach:D_CH_A" }
//Dimmer Wohnzimmer_Licht             "Wohnzimmer Decke [%d]"             <light> (gLicht)    ["Lighting"] { channel="knx:device:MDT_IPG:MDT_Dimmaktor_4Fach:D_CH_B" }

Rollershutter Rollo_HWR_1_EG       "Rollo HWR Links [%d %%]"           <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_A" }
Rollershutter Rollo_HWR_2_EG       "Rollo HWR Rechts [%d %%]"          <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_B" }
Rollershutter Rollo_Kueche_EG      "Rollo Küche [%d %%]"               <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_C" }
Rollershutter Rollo_Esszimmer_123_EG "Rollo 123 [%d %%]"     <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_DCA" }
//Rollershutter Rollo_Esszimmer_2_EG "Rollo Essen Rechts [%d %%]"    <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_E" }
//Rollershutter Rollo_Wohnzimmer_1_EG "Rollo Esszimmer Rechts " <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_F" }
//Rollershutter Rollo_Wohnzimmer_2_EG "Rollo Esszimmer Rechts " <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_G" }
//Rollershutter Rollo_Gaeste_1_EG    "Rollo Gästezimmer links [%d %%]"   <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_H" }
//Rollershutter Rollo_Gaeste_2_EG    "Rollo Gästezimmer rechts [%d %%]"  <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_I" }
//Rollershutter Rollo_Badezimmer_EG  "Rollo Badezimmer [%d %%]"          <shutter> (gRollos) ["WindowCovering"] { channel="knx:device:MDT_IPG:MDT_Jalousieaktor_8Fach_1:R_CH_J" }

und meine Sitemap

Code: Alles auswählen


sitemap default label="My home automation"
{
    Frame label="Datum und Uhrzeit"
    {
        Text item=DateAndTime        
    }
    Frame label="Astro" 
        {
            Group item=Astro label="Astro"
        }
    Frame label="Wetter" 
        {
            //Group item=Weather label="Wetter"
            Text label="Wetter"
        }
    Frame label="Haus" 
    {
        /* Group item=Outside       label="Draußen"
        {
            Group item=Garten_Vorne   label="Vorgarten" icon="garden"
            Group item=Garten_Hinten  label="Garten"    icon="lawnmower"
            Group item=Terasse        label="Terasse"   icon="terrace"
            Group item=Garage         label="Garage"    icon="garden"    
    
        } */
        Text label="Erdgeschoss"
        {
            Text label="H.W.R."   // Fertig
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_HWR_EG
                    Text item=Stellwert_HWR_EG
                }
                Frame label="Schotten"
                {
                    Selection item=Rollo_HWR_1_EG    label="Rolladen Links [%d %%]" icon="blinds" mappings=[0="Offen", 25="25%", 40="40%", 50="50%", 75="75%", 90="90%", 100="100%"]
                    Selection item=Rollo_HWR_2_EG    label="Rolladen Rechts [%d %%]" icon="blinds" mappings=[0="Offen", 25="25%", 40="40%", 50="50%", 75="75%", 90="90%", 100="100%"]
                }
                Frame label="Licht"
                {
                    Switch item=HWR_Licht
                }  
            }
            Text label="Flur"    // Fertig
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Flur_EG
                    Text item=Stellwert_Flur_EG
                }
                 Frame label="Licht"
                {
                    Switch item=Flur_Licht
                }
            }
            Text label="Küche" 
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Kueche_EG
                    Text item=Stellwert_Kueche_EG
                }
                Frame label="Schotten"
                {
                    Selection item=Rollo_Kueche_EG  label="Rolladen [%d %%]" icon="blinds" mappings=[0="Offen", 25="25%", 40="40%", 50="50%", 75="75%", 90="90%", 100="100%"]
                }
                Frame label="Licht"
                {
                    Switch item=Kueche_Licht_1
                    Switch item=Kueche_Licht_2
                }
            }
            Text label="Esszimmer"
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Esszimmer_EG
                    Text item=Stellwert_Esszimmer_EG
                }
                Frame label="Schotten"
                {
                    Selection item=Rollo_Esszimmer_123_EG   label="Rolladen Links [%d %%]" icon="blinds" mappings=[0="Offen", 25="25%", 40="40%", 50="50%", 75="75%", 90="90%", 100="100%"]
                    //Selection item=Rollo_Esszimmer_2_EG   label="Rolladen Rechts [%d %%]" icon="blinds" mappings=[0="Offen", 25="25%", 40="40%", 50="50%", 75="75%", 90="90%", 100="100%"]
                }
                Frame label="Licht"
                {
                    Slider item=Esszimmer_Licht
                }
            }
           /* Group item=Wohnzimmer label="Wohnzimmer"
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Wohnzimmer_EG
                    Text item=Stellwert_Wohnzimmer_EG
                }
                Frame label="Schotten"
                {
                    Text item=dummy
                    //Text item=Rollo_Wohnzimmer_1_EG
                    //Text item=Rollo_Wohnzimmer_2_EG
                }
                Frame label="Licht"
                {
                    Slider item=Wohnzimmer_Licht
                }
            }
            Group item=Gaestezimmer label="Gästezimmer"
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Gaestezimmer_EG
                    Text item=Stellwert_Gaestezimmer_EG
                }
                Frame label="Schotten"
                {
                    Text item=dummy
                    //Text item=Rollo_Gaeste_1_EG
                    //Text item=Rollo_Gaeste_2_EG
                }
                Frame label="Licht"
                {
                    Switch item=Gaestezimmer_Licht
                }
            }
            Group item=GaesteBad label="Gäste WC"
            {
                Frame label="Heizung"
                {
                    Text item=Temperatur_Badezimmer_EG
                    Text item=Stellwert_Badezimmer_EG
                }
                Frame label="Schotten"
                {
                    Text item=dummy
                    //Text item=Rollo_Badezimmer_EG
                }
                Frame label="Licht"
                {
                    Switch item=Bad_Licht_1
                    Switch item=Bad_Licht_2
                }
            } */
        }
        /* Group item=OG            label="Obergeschoss"
        {
            Group item=Badezimmer     label="Badezimmer"
            Group item=Schlafzimmer   label="Flur"
            Group item=Kinderzimmer_1 label="Lukas"
            Group item=Kinderzimmer_2 label="Leonhard" 
        }
        Group item=DG            label="Dachgeschoss"
        {
            Group item=Dachboden      label="Dachboden"
        } */
        
    }
   
    
}
Die Rollos im HWR und der das in der Küche funktionieren. Anzeige und Steuerung über die Sitemap und der PaperUI funktionieren.
Im Esszimmer hört es dann aber auf. Anzeige und Steuerung funktionieren in der Sitemap gar nicht und in der Paper UI funktioniert nur der auf und ab Befehl. Gibt einen eine Position direkt an geht es nicht.

Ich meine alles richtig gemacht zu haben aber wie gesagt finde ich den Fehler nicht.

Als Basis dient ein Raspberry Pi 3 mit einem Openhab 2.4 Stable Setup. Installierte Bindings sind das Astro und KNX. Konfiguration der Things nur über die Files.

Hat vielleicht einer einer Idee ?


Gruß

Sebastian
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HomeSweetHome Openhab goes KNX

Beitrag von udo1toni »

Die Channel sehen eigentlich super aus, allerdings habe ich keine Ahnung, welche GA Du für welche Funktion verwendest :)
Wenn die Positionssteuerung nicht funktioniert, könnte es z.B. sein, dass Du position und postitionStatus vertauscht hast. Es ist auch möglich, dass Du in diesem Fall den DPT mit angeben musst (5.001)

Was den um zwei Zehnerpotenzen falschen Wert betrifft, so stellt openHAB 100% innerhalb eines Number Items als 1 dar (also korrekt als Faktor).
Wenn Du den Prozentwert als Zahl korrekt angezeigt bekommen willst, musst Du als Workaround ein Dimmer Item verwenden (allerdings sollte ein Rollershutter Item genauso funktionieren).
Danach kannst Du natürlich in der Sitemap nicht mehr das Default Widget verwenden, sondern musst zum Text Widget greifen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: HomeSweetHome Openhab goes KNX

Beitrag von TuxTux »

Hallo Udo,

ich habe das Problem gefunden...

Code: Alles auswählen

 Type rollershutter : R_CH_C "Rollo Kanal C" [ upDown="3/1/20", stopMove="3/1/21", position="5.001:3/1/26+<3/1/23", autoupdate="false" ]
 Type rollershutter : R_CH_DCA "Rollo Kanal D" [ upDown="3/1/30", stopMove="3/1/31", position="5.001:3/1/36<+3/1/33", autoupdate="false" ]
+< und <+ ist nicht das selbe :-) ^^

Nach der Korrektur kann ich nun erfolgreich die Rollos und die Beleuchtung steuern.

Ich habe jetzt mal versucht den Heizungsaktor zu integrieren, hat auch soweit geklappt, nur ich kann keine Werte verändern hast du da vielleicht noch einen Tipp? Will nur Heizen. IST Wert und SOLL Wert werden richtig angezeigt nur ich kann den SOLL Wert nicht ändern.

In der KNX.items so angelegt

Code: Alles auswählen

String Temp_HWR_Automode      "Automatik"    <switch> (EG_HWR_RST)  [ "homekit:TargetHeatingCoolingMode" ]

Group  EG_HWR_RST    "HWR Heizung"  <radiator> (gHWR) [ "Thermostat" ]

Number  Temperatur_HWR_EG_IST           "Temperatur HWR Ist [%.1f]"         <temperature> (gHeizung, EG_HWR_RST) ["CurrentTemperature"] { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_HWR_EG_IST" }
Number  Temperatur_HWR_EG_SOLL          "Temperatur HWR Soll [%.1f]"        <temperature> (gHeizung, EG_HWR_RST) ["TargetTemperature" ] { channel="knx:device:MDT_IPG:MDT_Heizungsaktor_8Fach:Temperatur_HWR_EG_SOLL" }
Leider kann ich den Sollwert über die HomeApp nicht verändern. Ist es richtig das ich in der Sitemap das ganze über Setpoint realisieren muss?


Vielen Dank im Voraus!



In der KNX.things so angelegt, hier sind schon mal alle definiert, habe aber erstmal den HWR zum testen integriert.

Code: Alles auswählen

Thing device MDT_Heizungsaktor_8Fach "Heizungsaktor EG" @ "KNX" [ 
        address="1.1.8",
        fetch=false,
        pingInterval=600,
        readInterval=0
     ] {
         Type number    :   Temperatur_HWR_EG_IST    "Temperatur HWR EG IST"  [ ga="<4/1/0" ]
         Type number    :   Temperatur_Flur_EG_IST    "Temperatur Flur EG IST"  [ ga="<4/1/10" ]
         Type number    :   Temperatur_Kueche_EG_IST    "Temperatur Küche EG IST"  [ ga="<4/1/20" ]
         Type number    :   Temperatur_Esszimmer_EG_IST    "Temperatur Esstimmer EG IST"  [ ga="<4/1/30" ]
         Type number    :   Temperatur_Wohnzimmer_EG_IST    "Temperatur Wohnzimmer EG IST"  [ ga="<4/1/40" ]
         Type number    :   Temperatur_Gaestezimmer_EG_IST    "Temperatur Gästezimmer EG IST"  [ ga="<4/1/50" ]
         Type number    :   Temperatur_Badezimmer_EG_IST    "Temperatur Badezimmer EG IST"  [ ga="<4/1/60" ]

         Type number    :   Temperatur_HWR_EG_SOLL    "Temperatur HWR EG SOLL"  [ ga="9.001:4/1/7+<4/1/3" ]
         Type number    :   Temperatur_Flur_EG_SOLL    "Temperatur Flur EG SOLL"  [ ga="9.001:4/1/17+<4/1/13" ]
         Type number    :   Temperatur_Kueche_EG_SOLL    "Temperatur Küche EG SOLL"  [ ga="9.001:4/1/27+<4/1/23" ]
         Type number    :   Temperatur_Esszimmer_EG_SOLL    "Temperatur Esstimmer EG SOLL"  [ ga="9.001:4/1/37+<4/1/33" ]
         Type number    :   Temperatur_Wohnzimmer_EG_SOLL    "Temperatur Wohnzimmer EG SOLL"  [ ga="9.001:4/1/47+<4/1/43" ]
         Type number    :   Temperatur_Gaestezimmer_EG_SOLL    "Temperatur Gästezimmer EG SOLL"  [ ga="9.001:4/1/57+<4/1/53" ]
         Type number    :   Temperatur_Badezimmer_EG_SOLL    "Temperatur Badezimmer EG SOLL"  [ ga="9.001:4/1/67+<4/1/63" ]
         
         Type number    :   Stellwert_HWR_EG    "Stellwert HWR EG"  [ ga="5.001:4/1/1" ]
         Type number    :   Stellwert_Flur_EG    "Stellwert Flur EG"  [ ga="5.001:4/1/11" ]
         Type number    :   Stellwert_Kueche_EG    "Stellwert Küche EG"  [ ga="5.001:4/1/21" ]
         Type number    :   Stellwert_Esszimmer_EG    "Stellwert Esstimmer EG"  [ ga="5.001:4/1/31" ]
         Type number    :   Stellwert_Wohnzimmer_EG    "Stellwert Wohnzimmer EG"  [ ga="5.001:4/1/41" ]
         Type number    :   Stellwert_Gaestezimmer_EG    "Stellwert Gästezimmer EG"  [ ga="5.001:4/1/51" ]
         Type number    :   Stellwert_Badezimmer_EG    "Stellwert Badezimmer EG"  [ ga="5.001:4/1/61" ]

         Type string    :   Status_HWR_EG       "Status HWR EG" [ ga="16.000:4/1/6" ]
         Type string    :   Status_Flur_EG       "Status Flur EG" [ ga="16.000:4/1/16" ]
         Type string    :   Status_Kueche_EG       "Status Küche EG" [ ga="16.000:4/1/26" ]
         Type string    :   Status_Esszimmer_EG       "Status Esszimmer EG" [ ga="16.000:4/1/36" ]
         Type string    :   Status_Wohnzimmer_EG       "Status Wohnzimmer EG" [ ga="16.000:4/1/46" ]
         Type string    :   Status_Gaestezimmer_EG       "Status Gästezimmer EG" [ ga="16.000:4/1/56" ]
         Type string    :   Status_Badezimmer_EG       "Status Badezimmer EG" [ ga="16.000:4/1/66" ]
        
    }
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HomeSweetHome Openhab goes KNX

Beitrag von udo1toni »

Ja, so kleine Dreher sind oft schwer zu finden...

Das < hat mit dem + nichts zu tun (nur so für den Hinterkopf ;) )

das < steht für "lies bei Programstart von dieser GA den aktuellen Status"
das + steht für "und diese GA zusätzlich auswerten"

Ich nutze andere Wandtaster als die Glastaster von MDT, aber ich weiß, dass andere das auch schon zum Laufen gebracht haben ;) Wichtig ist halt, die korrekten KO zu nutzen, aber ich gehhe davon aus, das passt schon.
In der Sitemap nutzt Du Setpoint, wenn Du die Werte frei verändern willst. Du kannst aber auch Selection oder Switch nutzen, um mittels mapping gezielt aus einer Auswahl eine bestimmte Temperatur zu senden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: HomeSweetHome Openhab goes KNX

Beitrag von TuxTux »

Hallo Udo,
udo1toni hat geschrieben: 22. Nov 2019 08:13
Das < hat mit dem + nichts zu tun (nur so für den Hinterkopf ;) )

das < steht für "lies bei Programstart von dieser GA den aktuellen Status"
das + steht für "und diese GA zusätzlich auswerten"
das ist gut zu wissen, vielen Dank!

Ich bin auch mittlerweile auch ein ganzes Stück weiter gekommen. Habe da aber nochmal eine generelle Frage...

Dieses geskripte ist was neues für mich da ich normalerweise meine Software rein in C für einen µC schreibe mit richtigen Funktionen etc.

Ich habe mit eine Zeitschaltuhr MON-FRI und SAT,SUN gebaut. Aber dieses ständige wiederholen und anlegen der rules ist meiner Meinung nach völlig übertrieben. Gibt es hier nicht einen besseren weg? Kann man da nicht irgendwie Übergabeparameter nutzen? Oder ist das so der Normale weg?

Code: Alles auswählen


rule "Rollo HWR öffnen Wochentags" 
when 
    Time cron "0 30 07 ? * MON-FRI"
then
    if (Rollo_HWR_1_EG.state != 0)
    {
        Rollo_HWR_1_EG.sendCommand(0)
        logInfo("Rollo_HWR_1_EG", "wird geöffnet")
    }
    else
    {
        logInfo("Rollo_HWR_1_EG", "ist geöffnet")
    }

    if (Rollo_HWR_2_EG.state != 0)
    {
        Rollo_HWR_2_EG.sendCommand(0)
        logInfo("Rollo_HWR_2_EG", "wird geöffnet")
    }
    else
    {
        logInfo("Rollo_HWR_2_EG", "ist geöffnet")
    }
end
 
rule "Rollo Küche öffnen Wochentags" 
when 
    Time cron "1 30 07 ? * MON-FRI"
then
    if (Rollo_Kueche_EG.state != 0)
    {
        Rollo_Kueche_EG.sendCommand(0)
        logInfo("Rollo_Kueche_EG", "wird geöffnet")
    }
    else
    {
         logInfo("Rollo_Kueche_EG", "ist geöffnet")
    }
end


Ich danke dir schon mal für deine Antwort!
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HomeSweetHome Openhab goes KNX

Beitrag von udo1toni »

Es kommt ein wenig darauf an, was Du erreichen willst.

Es gibt in der openHAB DSL nur auf Umwegen Funktionen, z.B. kann man ein Lambda definieren und dann auch bis zu 10 Parameter übergeben.
Man kann auch Items setzen und anschließend ein Script aufrufen, welches die Items auswertet, aber letztlich ist das Mumpitz ;)

Eine echte Vereinfachung kann man aber mit Gruppen erreichen. Man packt gleichartige Items, die identisch verarbeitet werden, in eine gemeinsame Gruppe und baut eine Rule, die die Items der Gruppe verwendet. Beispiel: Ein Switch Item soll ein anderes Switch Item toggeln, der Switch soll dann wieder auf OFF gesetzt werden. Dies soll in fünf verschiedenen Räumen jeweils identisch passieren. Items:

Code: Alles auswählen

Group:Switch gSwToggle
Group:Switch gSwSwitch
Switch swSwitch_1 "Switch 1" (gSwSwitch)
Switch swToggle_1 "Toggle 1" (gSwToggle)
Switch swSwitch_2 "Switch 2" (gSwSwitch)
Switch swToggle_2 "Toggle 2" (gSwToggle)
Switch swSwitch_3 "Switch 3" (gSwSwitch)
Switch swToggle_3 "Toggle 3" (gSwToggle)
Switch swSwitch_4 "Switch 4" (gSwSwitch)
Switch swToggle_4 "Toggle 4" (gSwToggle)
Switch swSwitch_5 "Switch 5" (gSwSwitch)
Switch swToggle_5 "Toggle 5" (gSwToggle)
Eine Rule:

Code: Alles auswählen

rule "toggle Toggle and reset Switch"
when
    Member of gSwSwitch received command ON
then
    val myItem = gSwToggle.members.filter[i|
        i.name.endsWith(triggeringItem.name.split("_").get(1))
    ].head
    myItem.sendCommand(if(myItem.state != ON) ON else OFF)
    triggeringItem.postUpdate(OFF)
end
Die Rule triggert, sobald eines der Items der ersten Gruppe einen Befehl empfängt (z.B. über die UI geschaltet wird)
Zunächst wird aus der zweiten Gruppe das passende Item herausgesucht.
Daraufhin wird dieses Item abhängig von seinem aktuellen Status umgeschaltet.
Zuletzt wird der Status des auslösenden Items wieder zurückgesetzt (dies löst nicht die Rule selbst aus!).

Man könnte auch weitere Pärchen hinzufügen, z.B.

Code: Alles auswählen

Switch swSwitch_nochEiner "Switch X" (gSwSwitch)
Switch swToggle_nochEiner "Toggle X" (gSwToggle)
Solange der Teil nach dem Unterstrich identisch ist, wird die Rule die beiden Items korrekt miteinander verknüpfen. Natürlich müssen die Items im entscheidenden letzten Teil des Namens innerhalb der beiden Gruppen eindeutig sein, damit eine eindeutige Zuordnung möglich ist.

Diese Art der Programmierung sieht erst mal ziemlich umständlich aus, ist aber überaus mächtig. Voraussetzung ist natürlich, dass man seine Items entsprechend organisiert. Da man Items beliebig vielen Gruppen zuordnen kann, ergeben sich aus diesem Modell keine weiteren Einschränkungen.

Man kann auch den Namen eines Items "errechnen" und die passende Action verwenden (die Action erwartet den Namen des Items als String), ich bevorzuge aber die Methode (die Action kann nur mit Strings als Value umgehen, während die Methode den Wert direkt in Abhängigkeit vom Wert verarbeitet. Z.B. mit Primitives funktioniert die Action z.B. nicht, da ein Primitive keine Methode .toString hat und openHAB deshalb den Wert nicht automatisch in einen String wandeln kann.


Im vorliegenden Fall sähe eine Gruppensteuerung so aus:

Code: Alles auswählen

Group:Rollershutter gRollos
Rollershutter Rollo_HWR_1_EG "HWR 1 [%d %%]" (gRollos)
Rollershutter Rollo_HWR_2_EG "HWR 2 [%d %%]" (gRollos)
Rollershutter Rollo_Kueche_EG "Küche [%d %%]" (gRollos)

Code: Alles auswählen

rule "Rollo HWR öffnen Wochentags" 
when 
    Time cron "0 30 07 ? * MON-FRI"
then
    gRollos.members.forEach[i|
        if(i.state != 0) {
            i.sendCommand(0)
            logInfo("rollos","{} wird geöffnet",i.name)
        } else
            logInfo("rollos","{} ist bereits geöffnet",i.name)
    ]
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: HomeSweetHome Openhab goes KNX

Beitrag von TuxTux »

Guten Abend Udo,

da hast du jetzt aber einen raus gehauen. Das muss ich mir aber morgen Früh bei einem Kaffee gönnen. Der letzte Part gefällt mir aber am besten. Werde mich diesbezüglich morgen melden.

Vielen vielen Dank erstmal!
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

Nordi
Beiträge: 5
Registriert: 10. Feb 2020 16:01

Re: HomeSweetHome Openhab goes KNX

Beitrag von Nordi »

Hallo TuxTux, vielen Dank für die Veröffentlichung deines Projektes, ich konnte so sehr viele Sachen übernehmen und sie funktionieren klasse.
Ich wollte dich mal fragen ob du die komplette Umsetzung deiner Heizungssteuerung Posten kannst damit ich mich da mal durchlesen kann.

Mit freundlichen Grüßen

Frank

Benutzeravatar
TuxTux
Beiträge: 65
Registriert: 6. Nov 2019 23:47
Wohnort: Achim

Re: HomeSweetHome Openhab goes KNX

Beitrag von TuxTux »

Hallo Frank,

freut mich das es dir gefällt. Ich schau mal was sich da machen lässt. Habe gerade die Heizung per BSB Adapter eingebunden und fummel da noch ein wenig rum. Parallel dazu musste ich die Server Hardware wechseln da mir ständig die SD Karten kaputt gegangen sind. Melde mich aber die Tage.

Gruß Sebastian
Proxmoxx 6.xx @ HP T610 8GB Ram 128GB SSD
HOST 1: LXC Ubuntu 18.04 --> Fhem 6.xx SIGNALDUINO / MQTT / ZIGBEE / HOMEBRIDGE
HOST 2: LXC Ubuntu 18.04 --> OH 2.xx BSB BUS /KNX / WEATHER / NTP / ASTRO / MQTT / TIMESCHEDULING BLINDS
HOST 3: LXC Ubuntu 20.4 --> TVHEADEND Server Running Zattoo
HOST 4: LXC Ubuntu 20.04 --> OH 3.xx actual playground

"No message, is a good message"

sirisaac
Beiträge: 1
Registriert: 25. Mai 2020 20:38

Re: HomeSweetHome Openhab goes KNX

Beitrag von sirisaac »

Hallo Sebastian,

ich bin gerade auch dabei meine KNX-Installation mit Openhab zu steuern, stehe aber aktuell vor einem kleinen Problem.

Ich kann zwar alles anlegen und auch schalten, aber eine Rückmeldung (z.B. ob das Licht an ist, oder auf wieviel % der Rollo ist) erhalte ich nur wenn das Objekt verändert wird. Dabei ist es egal ob ich per Openhab oder per Schalter es verändere.

Ich habe meine knx.things relativ kompakt gehalten, da ich in anderen Beiträgen gelesen habe, dass das Fehlerquellen ausschließt:

Code: Alles auswählen

Bridge knx:ip:bridge [  
    type="TUNNEL", 
    ipAddress="192.168.178.24", 
    autoReconnectPeriod=60
] {
    Thing device generic [    
    ] {
    Type switch        : knx_eg_buero_licht        "Licht Büro EG"       [ga="1/1/20+<1/1/21"]
    Type rollershutter : knx_eg_buero_rollo        "Rollo Büro EG"       [upDown="2/1/42",stopMove="2/1/43",position="2/1/44+<2/1/45"]
    }

und von meinem Elektriker habe ich folgende Tabelle mit den KNX Adressen bekommen:
buerolicht.PNG
buerorollo.PNG
Woran könnte es liegen dass ich die Werte nur bei einer Änderung bekomme?

Viele Grüße
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten