Seite 1 von 2

setpoint vs. switch

Verfasst: 13. Dez 2018 13:52
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

Re: setpoint vs. switch

Verfasst: 13. Dez 2018 19:25
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.

Re: setpoint vs. switch

Verfasst: 15. Dez 2018 19:11
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

Re: setpoint vs. switch

Verfasst: 15. Dez 2018 19:14
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"}

Re: setpoint vs. switch

Verfasst: 15. Dez 2018 19:28
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

Re: setpoint vs. switch

Verfasst: 15. Dez 2018 19:48
von Caddy
Geil ... läuft ...

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

Danke ....

Caddy

Re: setpoint vs. switch

Verfasst: 16. Dez 2018 11:19
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

Re: setpoint vs. switch

Verfasst: 16. Dez 2018 11:43
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.

Re: setpoint vs. switch

Verfasst: 16. Dez 2018 12:12
von Caddy
super danke habe ich abgespeichert und werde mich einarbeiten.

caddy

Re: setpoint vs. switch

Verfasst: 16. Dez 2018 12:59
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 ...