Seite 1 von 1

Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 17. Mär 2023 15:01
von SirTobiIV
Hallo,
mein Grundproblem ist, dass ich den aktuellen Stromverbauch des Hauses, den ich über das Openhab SENEC-Binding erhalte (vielen Dank an den Ersteller des Bindings, war super easy einzurichten!), an meinen MDT Glastastern anzeigen möchte. Ich habe hierfür in der ETS eine Gruppenadresse 7/0/1 vom Typ "Leistung/W" DPT 14.056 angelegt und das entsprechende Thing in der things-Datei in Openhab ergänzt.

Code: Alles auswählen

Thing device SENEC "KNX Senec PV" [
		address=""
	] {
		Type number : SenecHouseConsumption "aktueller Verbrauch Haus" [ga="14.056:7/0/1"]
	}
Das Thing wird in Openhab als "online" angezeigt.

In der Items-Datei habe ich das entsprechende Item zu beiden Channels verknüpft in der Hoffnung, dass so einfach immer, wenn ein Wert über das SENEC-Binding kommt, dieser an KNX weitergeleitet wird.
Leider kommt auf dem KNX-Bus nichts an.

Item-Definition:

Code: Alles auswählen

Number SenecHouseConsumption     "Aktueller Energieverbrauch [%d W]"          <energy> { channel="senechome:senechome:pvbattery:houseConsumption , knx:device:bridge:SENEC:SenecHouseConsumption" }
Das Item wird in Openhab angezeigt und auch beide Channelverknüpfungen zu den entsprechenden Things.
Im Log finde ich keine besonderen Einträge, die darauf hindeuten würden, dass irgendetwas falsch kofiguriert sei.
Nun meine Frage: warum kommt auf dem KNX-Bus der Wert nicht an? Ist mein Grundverständnis falsch? Muss ich etwa eine rule anlegen, die bei Update den Wert auf KNX sendet? Das wäre ja reichlich umständlich?

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 17. Mär 2023 15:12
von SirTobiIV
Hier seht ihr das Item und die zwei Channels und auch, dass Werte über das SENEC-Binding in Openhab ankommen.

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 17. Mär 2023 22:42
von udo1toni
Welche Version von openHAB nutzt Du? Die aktuelle Version von openHAB nutzt für knx UoM, das bedeutet, das Item müsste die Einheit W tragen, damit der DPT 14.056 korrekt verwendet werden kann.
Gibt es keine Einheit (wie im Screenshot zu sehen - Number, statt Number:Power), so müsstest Du vermutlich 14.005 verwenden (da gibt es keine Einheit - aber vielleicht funktioniert das auch nicht).

Wichtig wäre auch, das Profile für knx auf follow zu setzen:

Code: Alles auswählen

Number SenecHouseConsumption "Aktueller Energieverbrauch [%d W]" <energy> { channel="senechome:senechome:pvbattery:houseConsumption", channel="knx:device:bridge:SENEC:SenecHouseConsumption"[profile="system:follow"] }
Und beachte, dass die Schreibweise für das Verlinken zweiter Channel auf ein Item völlig anders funktioniert als Du es vorgenommen hast.

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 19. Mär 2023 10:32
von SirTobiIV
Hallo Udo1toni,

vielen Dank für deine Antwort. Die Channeldefintion habe ich angepasst und ebenfalls das [profile=""follow"] ergänzt. Leider ohne Erfolg. Interessanterweise waren vorher auch schon beide Channels als online in Openhab zu sehen - trotz falscher Schreibweise.
Habe auch in der Doku gesucht aber kein Beispiel mit mehreren Channels gefunden und auch nichts über das follow-profile - weißt du, wo ich da nochmals nachlesen könnte?

Ich nutze Openhab 3.4.1
Habe Testweise wegen UoM nun noch eine zweite Leistung, eine Temperatur und den Batteriefüllstand mit aufgenommen. Temperaturen und Füllstände (KNX-Typ: 5.001 in %) habe ich bisher nämlich schon am Laufen für Temperatur und Luftfeuchtesensoren.
Leider wirft das Log. wenn ich Number:Power ergänze einen Fehler. Daran scheint es also nicht zuliegen.

Code: Alles auswählen

2023-03-19 10:29:41.344 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'things_defs.things' has errors, therefore ignoring it: [159,21]: mismatched input ':' expecting '}'
[159,23]: no viable alternative at input 'SenecHouseConsumption'
[159,73]: no viable alternative at input 'ga'
[169,1]: missing EOF at '}'
So sieht nun meine Things Defintion aus.

Code: Alles auswählen

Bridge knx:ip:bridge [ 
    ipAddress="192.168.0.28", 
    portNumber=3671, 
    localIp="192.168.0.100", 
    type="TUNNEL", 
    readingPause=50, 
    responseTimeout=10, 
    readRetriesLimit=3, 
    autoReconnectPeriod=35,
    localSourceAddr="1.1.254"
] {
	Thing device SENEC "KNX Senec PV" [
		address=""
	] {
		
		Type number : SenecPowerLimitation  "Photovoltaik Drosselung"  [ga="5.001:7/0/0"]
		Type number:power : SenecHouseConsumption "aktueller Verbrauch Haus" [ga="14.056:7/0/1"]
		Type number : SenecEnergyProduction "Photvoltaik Energieerzeugung" [ga="14.056:7/0/2"]
		Type number : SenecBatteryPower     "Ladeleistung Batterie"   [ga="14.056:7/0/3"]
		Type number : SenecBatteryFuelCharge "Batteriefuellstand"     [ga="5.001:7/0/4"]
		Type number : SenecGridPower        "Netz Leistungsbezug"     [ga="14.056:7/0/5"]
		Type number : SenecGridPowerDraw        "Netz Bezug"          [ga="14.056:7/0/7"]
		Type number : SenecGridPowerSupply      "Netz Einspeisung"    [ga="14.056:7/0/8"]
		Type number : SenecBatteryTemperature   "Batterietemperatur"  [ga="7/0/6"]
	}
}

/*Senec Home Speicher und Wechselrichter*/
Thing senechome:senechome:pvbattery [ hostname="192.168.0.105", refreshInterval=30, limitationTresholdValue=95, limitationDuration=120 ]
und so sehen die Items aus:

Code: Alles auswählen

/*SENEC PVbattery + Wechselrichter*/
Number SenecPowerLimitation      "Photovoltaik Drosselung [%d %%]"           <heating> { channel="senechome:senechome:pvbattery:powerLimitation" }
Switch SenecPowerLimitationState "Photovoltaik Drosselung aktiv"              <switch> { channel="senechome:senechome:pvbattery:powerLimitationState" }
Number SenecHouseConsumption     "Aktueller Energieverbrauch [%d W]"          <energy> { channel="senechome:senechome:pvbattery:houseConsumption", channel="knx:device:bridge:SENEC:SenecHouseConsumption"[profile="follow"] }
Number SenecEnergyProduction     "Photvoltaik Energieerzeugung [%d W]"        <energy> { channel="senechome:senechome:pvbattery:energyProduction" }
Number SenecBatteryPower         "Ladeleistung Batterie [%d W]"               <energy> { channel="senechome:senechome:pvbattery:batteryPower" }
Number SenecBatteryFuelCharge    "Batteriefüllstand [%d %%]"            <batterylevel> { channel="senechome:senechome:pvbattery:batteryFuelCharge", channel="knx:device:bridge:SENEC:SenecBatteryFuelCharge"[profile="follow"] }
String SenecSystemState          "Current system state [%s]"                    <text> { channel="senechome:senechome:pvbattery:systemState" }
Number SenecSystemStateValue     "Current system state [%d]"                    <text> { channel="senechome:senechome:pvbattery:systemStateValue" }
Number SenecGridPower            "Netz Leistungsbezug [%d W]"                 <energy> { channel="senechome:senechome:pvbattery:gridPower, knx:device:bridge:SENEC:SenecGridPower" }
Number SenecGridPowerDraw        "Netz Bezug [%d W]"                          <energy> { channel="senechome:senechome:pvbattery:gridPowerDraw, knx:device:bridge:SENEC:SenecGridPowerDraw" }
Number SenecGridPowerSupply      "Netz Einspeisung [%d W]"                    <energy> { channel="senechome:senechome:pvbattery:gridPowerSupply, knx:device:bridge:SENEC:SenecGridPowerSupply" }
Number SenecBatteryTemperature   "Batterietemperatur [%.1f °C]"			 <temperature> { channel="senechome:senechome:pvbattery:batteryTemperature", channel="knx:device:bridge:SENEC:SenecBatteryTemperature"[profile="follow"] }

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 19. Mär 2023 14:03
von udo1toni
SirTobiIV hat geschrieben: 19. Mär 2023 10:32 Habe auch in der Doku gesucht aber kein Beispiel mit mehreren Channels gefunden und auch nichts über das follow-profile - weißt du, wo ich da nochmals nachlesen könnte?

Code: Alles auswählen

https://www.openhab.org/docs/developer/transformations/#followprofile
Zugegebenermaßen könnte man sich davon abschrecken lassen, dass das Dokument mit "Developing a Profile" betitelt ist. Nichtsdestotrotz kann man es direkt über die Suche finden :)

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 20. Mär 2023 21:39
von SirTobiIV
Hallo udo1toni

in der Doku für Entwickler habe ich natürlich nicht gesucht. Die ist ehrlich gesagt ziemlich abschreckend, gerade die ersten Sätze und Codeschnipsel auf der Seite.
Jedenfalls scheint definitiv das "profile=follow" das Problem bzw. die Lösung zu sein. Habe ein Item testweise über die Weboberfläche angelegt und dann funktioniert es. Die Daten kommen auf dem KNX-Bus korrekt an.

Die Channels aus meinen config-Files werden zwar angezeigt aber in der Oberfläche sehe ich, dass die Channels beide mit Profil "Standard" angelegt wurden. D.h. irgendwo in meinem Config-File muss ein Syntaxfehler sein? Das Follow-profile wird leider nicht korrekt übernommen.
Siehst du vielleicht den Fehler? Laut Doku ist es so richtig, wie du auch oben geschrieben hast und so habe ich es auch eingefügt.

Code: Alles auswählen

Number SenecHouseConsumption     "Aktueller Energieverbrauch [%d W]"          <energy> { channel="senechome:senechome:pvbattery:houseConsumption", channel="knx:device:bridge:SENEC:SenecHouseConsumption"[profile="follow"] }
Das blöde daran, wenn ich das Profile online eingebe ist, dass die "Eigenschaft" jedes Mal wieder verlroen geht, wenn ich ein Update des Item-Config-Files mache. Oder ich müsste die ITems, Thing und den Channel über die Oberfläche anlegen. Das habe ich aber aus zwei Gründen bisher gescheut:
1. wie mache ich ein Back-up meiner angelegten Items, Things, rules, etc? Ist mit den Config-Files sehr einfach
2. Habe doch einige KNX-Geräte, d.h. entsprechend viele Things, Items und Channels und bin mit Copy-Paste in den Config-Files schneller zum Ziel gekommen als das alles über die Oberfläche anzulegen. Oder gibt es einen Kniff, den ich noch nicht kenne?

Danke

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 23. Mär 2023 22:10
von SirTobiIV
Hi,
hat niemand eine Idee, wie ich das follow-profile korrekt über die Item-Files konfiguriere? Oder gibt es hier ein bekanntes Problem?
Leider werden die Things, Items und Channels über die Weboberfläche korrekt angezeigt aber die Channels sind immer als "default" Profile angelegt. Habe nochmals in der Doku geschaut und [profile="system:follow"] ergänzt. Leider geht dasd auch nicht und im Log file steht kein Hinweis drin, dass irgendetwas nicht korrekt wäre - nicht einmal ein Warning ist da.

Code: Alles auswählen

Number SenecHouseConsumption     "Aktueller Energieverbrauch [%d W]"          <energy> { channel="senechome:senechome:pvbattery:houseConsumption", channel="knx:device:bridge:SENEC:SenecHouseConsumption"[profile="system:follow"] }
Gruß
Tobias

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 23. Mär 2023 23:31
von udo1toni
Also, ich habe es hier durchgespielt und kann Dir versichern, dass es funktioniert.

Hast Du daran gedacht, openHAB mal neu zu starten? Eventuell wird die Änderung des Profiles nicht zuverlässig weitergeleitet. Profiles kamen erst im Laufe des 2er Entwicklungszweigs hinzu, da waren die Textdateien schon bäh. Es ist also gut möglich, dass openHAB da etwas rum zickt.

Pro-Tipp: Es sollte auch reichen, eine Änderung vorzunehmen, die das Neu Erzeugen des Items erzwingt (das heißt, den Namen des Items ändern). Das gleiche gilt sinngemäß für Things, die auch nicht zuverlässig neu eingelesen werden. Wenn man aber die ChannelID (oder auch die ThingID) ändert, funktioniert es, weil dann da "alte" Thing gelöscht und stattdessen ein neues angelegt wird.

Re: Openhab Item mit mehreren Channels verknüpfen und Werte weiterleiten

Verfasst: 27. Mär 2023 11:23
von SirTobiIV
Danke Dir. Das Profile wird tatsächlich erst nach einem Neustart übernommen.