Temperatur aus openweathermap binding auf knx GA

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Doctommy
Beiträge: 4
Registriert: 3. Feb 2019 22:52

Temperatur aus openweathermap binding auf knx GA

Beitrag von Doctommy »

Hallo zusammen,
versuche schon das ganze Wochenende die aktuelle Temperatur aus dem openweathermap binding auf meinen KNX bus zu senden.
Leider kommt auf dem Bus kein Wert an. Andere KNX GAs (z.B. Switch oder Dimmer) funktionieren ohne Probleme.


Meine home.things sieht wie folgt aus:

Code: Alles auswählen

Bridge knx:ip:bridge [ 
    ipAddress="192.168.177.28", 
    portNumber=3671, 
    localIp="192.168.177.53",
    type="TUNNEL", 
    readingPause=50, 
    responseTimeout=10, 
    readRetriesLimit=3, 
    autoReconnectPeriod=1,
    localSourceAddr="0.0.0"
    ] 
    {
    Thing device generic [
        address="",
        fetch=true,
        pingInterval=300,
        readInterval=3600
        ] 
        {
          Type number   : Aussen  "Aussen Temp" [ ga="9.001:0/5/2" ]
          }
         }
 
 Bridge openweathermap:weather-api:api "OpenWeatherMap Account" 
 [apikey="b47aba6526464e211d5377fab727a95e", refreshInterval=10, language="de"] 
 {
 Thing weather-and-forecast local "Local Weather And Forecast" 
 [location="53.48872,10.31638", forecastHours=0, forecastDays=7]
 }
         
Meine home.items Datei:

Code: Alles auswählen

Number localCurrentTemperature "Aktuelle Temperatur [%.1f °C]" <temperature> {channel="openweathermap:weather-and-forecast:api:local:current#temperature", knx="9.001:0/5/2"}
Eigentlich sollte der Temperaturwert auf den Bus gesendet werden, wenn die Außentemperatur sich ändert, es kommt aber nichts auf dem KNX Bus an.

Ich habe auch versucht, den KNX Wert regelmäßig zu senden, aber auch ohne Erfolg.

Code: Alles auswählen

Number localCurrentTemperature "Aktuelle Temperatur [%.1f °C]" <temperature> {channel="openweathermap:weather-and-forecast:api:local:current#temperature", knx="(60)9.001:0/5/2"}
Muss ich etwas an der knx Bridge ändern oder habe ich einen anderen Denkfehler?

Danke für Eure Hilfe
Thomas

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

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von udo1toni »

Code: Alles auswählen

knx="(60)9.001:0/5/2"
Wie kommst Du darauf, dass diese Schreibweise einen Wert regelmäßig sendet? Das Gegenteil wäre der Fall, diese Schreibweise bedeutet nämlich, dass openHAB alle 60 Sekunden versucht, einen Status vom Bus zu empfangen. (Nicht. Es ist keine GA angegeben, von der openHAB lesen darf)
Allerdings müsstest Du dazu erstmal bemerken, dass hier grundsätzlich etwas schief läuft.

Du schreibst, andere knx Geräte funktionieren ohne Probleme. Mit Verlaub, da habe ich so meine Zweifel...

Welches knx Binding nutzt Du denn?
Die erste Konfiguration (Bridge, Thing, Channel) legt nahe, dass Du knx2 einsetzt.
Die zweite Konfiguration (Items) ist aber, was den knx-Teil betrifft, knx1. Ja was nun?

Falls Du knx2 einsetzt, ist die Konfiguration des Things teilweise sinnlos.

Code: Alles auswählen

   Thing device generic [
        address="", // keine Adresse gesetzt -> kein spezifisches Device
        fetch=true, // funktioniert nur bei spezifischem Device
        pingInterval=300, // funktioniert nur bei spezifischem Device
        readInterval=3600 // ist nur bei Lesen vom Bus relevant, erzwingt alle x Sekunden das Lesen vom Bus
        ] 
        {
          Type number   : Aussen  "Aussen Temp" [ ga="9.001:0/5/2" ] // number: Zahl kommt ursprünglich vom Bus 
          }
Korrekt für Deinen Anwendungsfall sähe es so aus:

Code: Alles auswählen

   Thing device generic [] 
        {
          Type number-control   : Aussen  "Aussen Temp" [ ga="9.001:0/5/2" ] // number-control: Zahl kommt ursprünglich von openHAB 
          }
Dein Link im items-File sähe dann so aus:

Code: Alles auswählen

Number localCurrentTemperature "Aktuelle Temperatur [%.1f °C]" <temperature> {channel="openweathermap:weather-and-forecast:api:local:current#temperature", channel="knx:device:bridge:generic:Aussen"}
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Doctommy
Beiträge: 4
Registriert: 3. Feb 2019 22:52

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von Doctommy »

Super, vielen Dank!
Mit number-control hat es funktioniert - ich hatte das auch schon versucht, hatte aber beim item nicht den channel angegeben sondern nur knx="

Dennoch wundert mich Deine Anmerkung mit dem KNX Binding 1 bzw. 2.
Du hast recht, ganz konsistent ist das nicht, aber es funktioniert... light, dimmer, rollershutter, color, und jetzt auch number :-)
Viele Grüße
Thomas

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

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von udo1toni »

Doctommy hat geschrieben: 4. Feb 2019 18:35 Dennoch wundert mich Deine Anmerkung mit dem KNX Binding 1 bzw. 2.
Wenn Du knx2 verwendest, musst Du eine Bridge, mindestens ein Thing und des weiteren Channel definieren.
Wenn Du knx1 verwendest, musst Du eine knx.cfg anlegen, in der Du mehr oder weniger die Bridge definierst (bitte nur im übertragenen Sinn verstehen), während die Channel Definition direkt im Item steht (in der Form knx="GA+GA,GA,GA+GA")
knx1 und knx2 können nicht gleichzeitig auf einem OH-System laufen. Es kann nur entweder die eine oder die andere Variante aktiv sein.

Du musst selbst wissen, welche der beiden Versionen Du einsetzt, die Konfiguration muss aber konsistent sein, also entweder ausschließlich Items mit

Code: Alles auswählen

{ knx="..." }
oder ausschließlich Items mit

Code: Alles auswählen

{ channel="knx:..." }
Das bezieht sich auf nahezu alle Bindings. Im Fall von MQTT kann man tatsächlich beide Bindings parallel betreiben, das ist aber die Ausnahme.
Und bitte nicht falsch verstehen, natürlich kann ein Item durchaus gleichzeitig mit OH2 und OH1 Bindings gekoppelt sein, also in der Form

Code: Alles auswählen

{ channel="...", knx="..." }
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Doctommy
Beiträge: 4
Registriert: 3. Feb 2019 22:52

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von Doctommy »

Ah, ich glaube ich hatte Dich falsch verstanden.
Natürlich benutze ich in den items channel
hier ein Auszug:

Code: Alles auswählen

// Gruppen
Group gTempChart_WZ

// Wohnzimmer/Esszimmer 

    // Rollershutter
    Rollershutter eg_WEZ_rollershutter "Wohn/Esszimmer Jalousien" <rollershutter> {channel="knx:device:bridge:generic:EG_WZ_Blind_WEZ"}
    Rollershutter eg_EZl_rollershutter "Esszimmer Jalousien links" <rollershutter> {channel="knx:device:bridge:generic:EG_WZ_Blind_EZl"}
    Rollershutter eg_EZr_rollershutter "Esszimmer Jalousien Erker" <rollershutter> {channel="knx:device:bridge:generic:EG_WZ_Blind_EZr"}
    Rollershutter eg_WZl_rollershutter "Wohnzimmer Jalousien Erker" <rollershutter> {channel="knx:device:bridge:generic:EG_WZ_Blind_WZl"}
    Rollershutter eg_WZr_rollershutter "Wohzimmer Jalousien rechts" <rollershutter> {channel="knx:device:bridge:generic:EG_WZ_Blind_WZr"}

    // Licht       
    Switch eg_wz_Vitrine "Licht Vitrine" <light> ["Lighting"] {channel="knx:device:bridge:generic:EG_WZ_Vitrine"}
    Switch eg_Ess_Esstisch "Licht Esstisch" <light> ["Lighting"] {channel="knx:device:bridge:generic:EG_WZ_Esstisch"}
    Dimmer eg_wz_Stehlampe "Stehlampe" <light> ["Lighting"] {channel="knx:device:bridge:generic:EG_WZ_Stehlampe"}
    Dimmer eg_wz_Sofa "Licht Sofa" <light> ["Lighting"] {channel="knx:device:bridge:generic:EG_WZ_Sofa"}
    Dimmer eg_wz_Esszimmer "Licht Esszimmer" <light> ["Lighting"] {channel="knx:device:bridge:generic:EG_WZ_Esszimmer"}
   
    // Temperatur
    Number eg_wz_Temperatur_Wohnzimmer "Temperatur Wohnzimmer [%.1f °C]" <temperature> (gTempChart_WZ) {channel="knx:device:bridge:generic:EG_WZ_Temperatur"}
    Dimmer eg_Stellwert_Wohnzimmer "Stellwert Heizung [%d %%]" <heating> (gTempChart_WZ) {channel="knx:device:bridge:generic:EG_WZ_Stell_Heizung"}
Für die Temp hatte ich auch den channel programmiert, aber keine number-control als Thing definiert. Hatte dann ein bisschen im Netz recherchiert und knx="" gefunden- hatte natürlich auch nicht funktioniert... und der Rest ist Geschichte :-)

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

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von udo1toni »

:)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

ole
Beiträge: 2
Registriert: 23. Jun 2019 20:33

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von ole »

Hallo zusammen,

der Beitrag ist zwar schon etwas älter, aber ich habe genau dasselbe Problem bzw. dasselbe Ziel.
Ich habe die Lösungen in meine Konfiguration übernommen, aber bekomme es einfach nicht hin, dass Openhab die Werte auf den KNX Bus sendet. Ich habe aber auch keinerlei Logausgaben weder in Openhab noch im KNX Busmonitor dass es irgendwelche Fehler gibt.

Meine weather.things

Code: Alles auswählen

Bridge openweathermap:weather-api:api "OpenWeatherMap Account" [apikey="123456", refreshInterval=10, language="de"] {
   Thing weather-and-forecast local "Local Weather And Forecast" [location="12,13", forecastHours=0, forecastDays=7]
}
Meine weather.items

Code: Alles auswählen

Number:Temperature localCurrentTemperature "Außen Temp [%.1f %unit%]" <temperature> { channel="openweathermap:weather-and-forecast:api:local:current#temperature", channel="knx:device:bridge:generic:Aussen"}
Und in der KNX things habe ich nur ein generic thing hinzugefügt

Code: Alles auswählen

   Thing device generic [] 
    {
        Type number-control  : Aussen  "Aussen Temp" [ ga="9.001:5/0/11" ]
    }
Grundsätzlich funktioniert die Kommunikation openHAB - KNX.

Im Log sehe ich auch, dass die Konfiguration angenommen wird und sich die Werte ändern:

Code: Alles auswählen

2019-06-23 20:29:06.493 [.ItemChannelLinkAddedEvent] - Link 'localCurrentTemperature-knx:device:bridge:generic:Aussen' has been added.
2019-06-23 20:34:24.792 [vent.ItemStateChangedEvent] - localCurrentTemperature changed from 21.57 °C to 21.35 °C
Irgendwas mache ich offensichtlich noch falsch? Irgendwelche Ideen?

VG
ole

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

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von udo1toni »

Das Problem ist hier UoM, Units of Measurement. knx kann damit nicht umgehen, dass der Wert als 21.57 °C angeliefert wird.
Du musst also eine Rule verwenden.
Du brauchst zwei Items:

Code: Alles auswählen

Number:Temperature localCurrentTemperature "Außen Temp [%.1f %unit%]" <temperature> { channel="openweathermap:weather-and-forecast:api:local:current#temperature", channel="knx:device:bridge:generic:Aussen"}
Number localCurrentTemperature_knx "Außen Temp [%.1f °C]" <temperature> { channel="knx:device:bridge:generic:Aussen"}
und außerdem eine Rule:

Code: Alles auswählen

rule "set temp at knx bus"
when
    Item localCurrentTemperature changed
then
    if(localCurrentTemperature.state instanceof Number)
        localCurrentTemperature_knx.sendCommand((localCurrentTemperature.state as Number).floatValue)
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

ole
Beiträge: 2
Registriert: 23. Jun 2019 20:33

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von ole »

Super! Vielen Dank!

Mit dem 2. Item und der Regel klappt es nun wie erwartet.

sst-net
Beiträge: 1
Registriert: 3. Mai 2021 18:14

Re: Temperatur aus openweathermap binding auf knx GA

Beitrag von sst-net »

Vielen Dank auch von mir, der Thread hat mir sehr geholfen.

Zum letzten Code-Beispiel hätte ich eine Frage: Der KNX-Channel im Item "localCurrentTemperature" hat mich verwundert, wenn doch sowieso eine Rule definiert werden soll. Kann es sein, dass das ein (unnötiges) Überbleibsel aus vorherigen Versuchen ist? Oder gibt es konkrete Gründe, das zusätzlich zur Rule drin stehen zu lassen?

Und noch eine generelle Frage: hier wurde recht schnell auf die Units of Measurements abgehoben. Wie konnte das - außer über Erfahrung - so schnell und sicher eingegrenzt werden? Oder anders formuliert: wie müsste ich in einem solchen Problemfall am besten Vorgehen, um selbst auf diese Problemanalyse zu kommen?

Antworten