Sollwert / Sollwertverschiebung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
MonkeyT
Beiträge: 18
Registriert: 23. Jun 2019 21:44

Sollwert / Sollwertverschiebung

Beitrag von MonkeyT »

Hallo zusammen,

ich habe einen MDT-Heizungsaktor und ein SmartTouch 7" von Busch-Jäger/ABB.
Das SmartTouch kann die Temperatur mittels Sollwertverschiebung verschicken (DPT 6.010). In openHAB möchte ich aber nur den Sollwert (DPT 9.001) sehen und verändern.

Hier der aktuelle Stand:

knx.things

Code: Alles auswählen

Type number        : KuecheSollwert   			"Küche Sollwert" [ ga="9.001:<1/2/3" ]
Type number        : KuecheSollwertverschiebung	"Küche Sollwertverschiebung" [ ga="6.010:<1/2/2" ]
knx.items

Code: Alles auswählen

Number KuecheSollwertverschiebung 	"Küche Sollwertverschiebung [%d]" 	{ channel="knx:device:bridge:generic:KuecheSollwertverschiebung" }
Number KuecheSollwert 				"Küche Sollwert [%.1f °C]" 		{ channel="knx:device:bridge:generic:KuecheSollwert" }
default.sitemap

Code: Alles auswählen

Setpoint item=KuecheSollwertverschiebung step=1 minValue=-6 maxValue=6
Setpoint item=KuecheSollwert step=0.5 minValue=18 maxValue=24
Der Setpoint KuecheSollwertverschiebung auf der Sitemap ist aktuell nur zu Testzwecken da. Der soll dort verschwinden.

1. Problem
Wenn ich über den Setpoint Kuechesollwert die Temperatur verändern will passiert folgendes:

events.log

Code: Alles auswählen

2019-10-12 10:09:01.536 [ome.event.ItemCommandEvent] - Item 'KuecheSollwert' received command 23
2019-10-12 10:09:01.544 [nt.ItemStatePredictedEvent] - KuecheSollwert predicted to become 23
2019-10-12 10:09:01.558 [vent.ItemStateChangedEvent] - KuecheSollwert changed from 23.5 to 23

2019-10-12 10:09:01.939 [ome.event.ItemCommandEvent] - Item 'KuecheSollwert' received command 22.5
2019-10-12 10:09:01.952 [nt.ItemStatePredictedEvent] - KuecheSollwert predicted to become 22.5
2019-10-12 10:09:01.969 [vent.ItemStateChangedEvent] - KuecheSollwert changed from 23 to 22.5
2019-10-12 10:09:01.977 [WARN ] [nx.internal.client.AbstractKNXClient] - Value '22.5' could not be sent to the KNX bus using datapoint 'command DP 1/2/2 'knx:ip:bridge', DPT id 6.010, low priority': 6.010 signed count: wrong value format: 22.5. Giving up now.
2019-10-12 10:09:01.982 [WARN ] [.internal.handler.DeviceThingHandler] - An error occurred on channel knx:device:bridge:generic:KuecheSollwertverschiebung: 6.010 signed count: wrong value format: 22.5
Jedesmal, wenn der Sollwert auf XX.5 geändert wird, versucht der irgendwas über Sollwertverschiebung zu senden... Wieso passiert das?

2. Problem
Ich möchte die Sollwerverschiebung mittels Rule aus dem Sollwert berechnen lassen. Ich scheitere aber an der Syntax:

knx.rules

Code: Alles auswählen

var Number basisSollwert = 21

// Berechne die Sollwertverschiebung anhand des Sollwertes
rule "Calc Setpoint-Shift"
when
    Item KuecheSollwert received command
then
	var number shift = 0
	shift = receivedCommand - basisSollwert
    KuecheSollwertverschiebung.sendCommand(shift)
end
Wo liegen hier meine Fehler?


Ich hoffe mir kann hier jemand helfen.. Danke!

grz
Monkey

MonkeyT
Beiträge: 18
Registriert: 23. Jun 2019 21:44

Re: Sollwert / Sollwertverschiebung

Beitrag von MonkeyT »

So, ich denke ich habe es gelöst. Falls jemand ähnliche Probleme hatte, hier meine aktuelle Lösung:

default.sitemap

Code: Alles auswählen

Setpoint item=KuecheVirtual step=0.5 minValue=18 maxValue=24
knx.items

Code: Alles auswählen

Number KuecheSollwertverschiebung 	"Küche Sollwertverschiebung [%d]" 	{ channel="knx:device:bridge:generic:KuecheSollwertverschiebung" }
Number KuecheVirtual 			"Küche Sollwert [%.1f °C]" 		{ channel="knx:device:bridge:generic:KuecheVirtual" }
knx.things

Code: Alles auswählen

Type number        	: KuecheSollwert   			"Küche Sollwert" [ ga="9.001:<1/2/3" ]
Type number		: KuecheVirtual				"Küche Sollwert virtuell" 
Type number        	: KuecheSollwertverschiebung		"Küche Sollwertverschiebung" [ ga="6.010:<1/2/2" ]
knx.rules

Code: Alles auswählen

var Number basisSollwert = 21

// Berechne die Sollwertverschiebung anhand des Sollwertes
rule "Calc Setpoint-Shift"
when
	Item KuecheVirtual received command
then
	var Number shift = 0
	shift = (receivedCommand as Number) *2 - basisSollwert *2
	KuecheSollwertverschiebung.sendCommand(shift)
end

// Aktualisiere den Sollwert anhand der Sollwertverschiebung
rule "Update Setpoint"
when
	Item KuecheSollwertverschiebung received update
then
	var Number setPoint = 0
	setPoint = basisSollwert + (KuecheSollwertverschiebung.state as Number) * 0.5
	KuecheVirtual.postUpdate(setPoint)
end

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

Re: Sollwert / Sollwertverschiebung

Beitrag von udo1toni »

Was mich etwas irritiert, ist, dass Du keine 2. GA für den Sollwert hast. Normalerweise sollte es eine GA für Sollwert setzen und eine GA für Sollwert Status geben.
Allerdings habe ich kein Smarttouch, aus dem technischen Handbuch geht das leider nicht hervor und ich wollte jetzt nicht das Gerät plus Zusatzsoftware bei mir einbinden, um in der ETS nachschauen zu können.

Ich komme bei meinen "einfachen" GIRA TS2plus RTR jedenfalls komplett ohne Rule aus.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MonkeyT
Beiträge: 18
Registriert: 23. Jun 2019 21:44

Re: Sollwert / Sollwertverschiebung

Beitrag von MonkeyT »

Das ist ja gerade das Problem, das Smart-Touch 7" von Busch-Jäger/ABB verändert den Sollwert einer RTR ausschließlich über die Sollwertverschiebung, nicht über den Sollwert. Warum einfach wenn auch kompliziert geht.
Zu allem Überfluß benutzt Busch-Jäger für die Sollwertverschiebung sogar 2 Objekte: Sollwert anfordern und Sollwert bestätigen.
Über Sollwert anfordern erfragt es vor jeder Änderung die aktuelle Sollwertverschiebung, addiert oder subtrahiert dann diesen Wert um 1 und sendet ihn über Sollwert bestätigen wieder raus. Erhält das Panel über Sollwert anfordern keine Antwort, sendet es nur -1 oder +1.
Bei meinem MDT-Aktor kann ich bei der Sollwertverschiebung auch das Lesen-Flag setzen und dann antwortet es auch auf diesen Read-Request vom Panel und alles funktioniert wie es soll.

Antworten