setpoint vs. switch

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

setpoint vs. switch

Beitrag von Caddy »

Hallo,

ich mal wieder :-)

Meine HK kann ich so steuern
Setpoint item=WallmountedThermostatWZThermostat_SetTemperature minValue=4.5 maxValue=32 step=0.5 icon="temperature"
funktioniert super …

jetzt würde ich gerne in meiner Sitemap einen Schalter mit Mapping haben in der Art

Switch item=wasauchimmer mappings=[7=7°, 19=19°,22=22°]

einbauen.

Beim Klick auf den wasauchimmer-Schalter sollen mehrere
Setpoint item=WallmountedThermostatWZThermostat_SetTemperature
auf die ausgewählte Temperatur gesetzt werden.

Ich vermute da muss eine Regel her ...

rule "GesamtTemperaturEinstellen"
when
irgendwas mit wasauchimmer-Schalter
then
logInfo("rules.meldung", "Temperatur eingestellt auf " <hier den Ausgewählten Wert>)
Setpoint item=WallmountedThermostatWZThermostat_SetTemperature1 <hier den Ausgewählten Wert>
Setpoint item=WallmountedThermostatWZThermostat_SetTemperature2 <hier den Ausgewählten Wert>
Setpoint item=WallmountedThermostatWZThermostat_SetTemperature3 <hier den Ausgewählten Wert>
end

Kann mir jemand mit der Syntax weiter helfen ?

Oder liege ich vollkommen falsch ?

Vielen Dank

Caddy

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

Re: setpoint vs. switch

Beitrag von udo1toni »

Du denkst zu kompliziert :) Dafür gibt es die Group items. Du legst eine Gruppe an, ordnest alle Items dieser Gruppe zu, die die Änderung mit machen sollen, und sendest den Befehl an die Gruppe.
Items:

Code: Alles auswählen

Group:Number gSetTemp "Temperatur gesamt setzen" <temperature>
Number WallmountedThermostatWZThermostat_SetTemperature "Wohnzimmer Thermostat [%.1f°C]" <temperature> (gSetTemp) {...}
Number WallmountedThermostatKThermostat_SetTemperature "Küche Thermostat [%.1f°C]" <temperature> (gSetTemp) {...}
Sitemap:

Code: Alles auswählen

Switch item=gSetTemp mappings=[7="7°C", 19="19°C",22="22°C"]
Keine Rule. Es spielt auch keine Rolle, wie viele Items der Gruppe zugeordnet sind, openHAB sendet an jeden Member der Gruppe den Befehl, der an die Gruppe gesendet wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

Hallo Udo1toni,

ich habe es leider noch nicht verstanden und muss dich noch mal belästigen ...
Du schreibst

Number WallmountedThermostatWZThermostat_SetTemperature "Wohnzimmer Thermostat [%.1f°C]" <temperature> (gSetTemp) {...}

was kommt in die Klammern ?
Der Channel ? Der wäre bei mir
max:thermostat:NEQ1444904:MKF0075156:set_temp

das funktioniert aber nicht ...
Ich denke vermutlich wirklich zu kompliziert ...

Kannst du noch mal bitte :-)

Danke Caddy

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

Nachtrag:
Hier meine Sitemap

Code: Alles auswählen

Switch item=gSetTemp mappings=[7="7°C", 19="19°C",22="22°C"]
Hier mein Item

Code: Alles auswählen

Group:Number gSetTemp "Temperatur gesamt setzen" <temperature>
Number WallmountedThermostatWZThermostat_SetTemperature "Wohnzimmer Thermostat [%.1f°C]" <temperature> (gSetTemp) {channel="max:thermostat:NEQ1444904:MKF0075156:set_temp"}

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

Re: setpoint vs. switch

Beitrag von udo1toni »

Genau so sollte es aussehen.
Jetzt müsste ein Klick auf einen der drei Buttons ausreichen, um die Temperatur für alle Items zu setzen, die der Gruppe gSetTemp zugeordnet sind.

Falls der Befehl wider Erwarten nicht an die Member durchgereicht wird, müssen wir doch noch zu einer Rule greifen, die das Senden der Befehle erzwingt:

Code: Alles auswählen

rule "Gruppentemperatur setzen"
when
    Item gSetTemp received command
then
    logInfo("gsettemp","Gruppentemperatur gesetzt!") 
    gSetTemp.members.forEach[m|
        m.sendCommand(receivedCommand)
    ]
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

Geil ... läuft ...

2018-12-15 19:46:55.918 [INFO ] [ipse.smarthome.model.script.gsettemp] - Gruppentemperatur gesetzt!

Danke ....

Caddy

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

Nochmal eine Optimierungsfrage

gibt e sin den Regeln vielleicht auch so was wie switch ?
Ich meine das ich im when sagen kann wenn item1 or item2 or item3
dann

nur das item welches ausgelöst hat frei nach dem Motto

itemX.members.forEach[m ....

Dann bräuchte ich nicht 10 Regeln, sondern könnte es in einer abhandeln ...

Danke Caddy

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

Re: setpoint vs. switch

Beitrag von udo1toni »

Es gibt verschiedene Variablen, die automatisch gesetzt sind, wenn eine Rule ausgeführt wird.
  • receivedCommand enthält das empfangene Kommando, falls die Rule über received command getriggert wurde.
  • previousState enthält den alten Wert, falls die Rule über changed getriggert wurde. Bitte nicht mit item.previousState verwechseln, das steht nur zur Verfügung, wenn das Item persistiert wird.
  • triggeringItem enthält den Namen des Items, welches die Rule getriggert hat. NULL, falls die Rule von Time Cron, System started oder einem Channel Trigger ausgelöst wurde.
Zusammen mit

Code: Alles auswählen

Member of <GroupItem> changed | received command | received update
hat man so ziemlich alles, um Rules so zu gestalten, dass man nur eine Rule für beliebig viele gleichartige Items braucht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

super danke habe ich abgespeichert und werde mich einarbeiten.

caddy

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: setpoint vs. switch

Beitrag von Caddy »

Wenn ich dich richtig verstanden habe sollte es mit

Code: Alles auswählen

rule "Gruppentemperatur setzen"
when
    Item gSetTempWZ received command or
	Item gSetTempBad received command or
	Item gSetTempToilette received command
then
	if (triggeringItem !== null){
		logInfo(triggeringItem ,"Gruppentemperatur gesetzt!") 
		triggeringItem.members.forEach[m|
			m.sendCommand(receivedCommand)
		]
	}
end
gehen


es kommt aber zum Fehler

Code: Alles auswählen

Rule 'Gruppentemperatur setzen': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.model.script.actions.LogAction.logInfo(java.lang.String,java.lang.String,java.lang.Object[]) on instance: null
Danke für Deine Gedult ...

Antworten