[gelöst] Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

[gelöst] Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Hallo liebes Forum,
zuerst möchte ich kurz mal Hallo und Danke für die vielen hilfreichen Beiträge sagen, die mir schon sehr weitergeholfen haben.

Ich bastle jetzt schon seit Wochen an meiner Konfiguration herum und konnte bisher alles was ich wollte selbst lösen - mehr oder weniger schnell ;)
Jetzt stehe ich leider an und im Forum wurde ich nicht wirklich fündig.
Möglicherweise sehe ich jetzt aber den Wald vor lauter Bäumen nicht mehr, oder ich denke einfach nur komplett falsch. Vielleicht ist mein Vorhaben auch gar nicht möglich.
Nun zu meiner Beschreibung was ich umsetzten möchte:
Ich habe zwei Temperatursensoren am laufen (später werden es mehr), welche mir die Temperatur, die Luftfeuchtigkeit und den Status liefern.
Auf meiner Übersichtsseite möchte ich eine "Label Card" mit dem Titel "Temperatur" erstellen, bei der sich der "Background Style" farblich ändern soll.
Es sollen keine Werte auf der Card angezeigt werden.
Grün, wenn die Temperatur aller Sensoren zwischen z.B. 15 und 25 Grad liegt, und Rot, wenn die Temperatur bereits bei einem der beiden Sensoren außerhalb dieses Bereichs liegt.
Mit dem Online / Offline Status habe ich das mittels einer Gruppe geschafft, deren Status in Folge einen Schalter schaltet, der dann für den "Background Style" benutzt wird: =(items.gruppe_tempsensor_status.state === 'ON') ? '#428E42' : '#E06666'
Hier komme ich aber mit der Verknüpfung der Sensoren und dem einbinden des Temperaturbereichs nicht mehr weiter.
Vielleicht hat ja jemand etwas ähnliches bereits umgesetzt, oder es funktioniert so nicht, oder es gibt einen komplett anderen Lösungsansatz.
Vielen Dank im Voraus.
LG Manfred
Zuletzt geändert von mskopek am 18. Jan 2023 07:06, insgesamt 1-mal geändert.
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Ich habe es jetzt einmal versucht, mit Blockly zu lösen:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Temperatursensor_02_Temperatur
    type: core.ItemStateUpdateTrigger
  - id: "2"
    configuration:
      itemName: Temperatursensor_01_Temperatur
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/javascript
      script: >
        if (itemRegistry.getItem('Temperatursensor_01_Temperatur').getState() <=
        '20') {
          events.sendCommand('status_tempsensor_temp', 'ON');
        } else if (itemRegistry.getItem('Temperatursensor_01_Temperatur').getState() >= '30') {
          events.sendCommand('status_tempsensor_temp', 'ON');
        } else if (itemRegistry.getItem('Temperatursensor_02_Temperatur').getState() <= '20') {
          events.sendCommand('status_tempsensor_temp', 'ON');
        } else if (itemRegistry.getItem('Temperatursensor_02_Temperatur').getState() >= '30') {
          events.sendCommand('status_tempsensor_temp', 'ON');
        } else {
          events.sendCommand('status_tempsensor_temp', 'OFF');
        }
    type: script.ScriptAction
Es macht im Moment das was ich mir vorgestellt habe, ob es die beste Lösung weiß ich nicht.
Über Verbesserungsvorschläge bin ich ich nach wie vor Dankbar.

LG Manfred
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

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

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von udo1toni »

Die einfachste Verbesserung wäre, einen Logic Block zu nutzen, drei Mal :) Die Logikfunktion heißt or (wobei sie in der Ablage mit and angezeigt wird). Du baust also zwei or Verknüpfungen mit einer or Funktion zu einem großen vierfach or zusammen.
Und dann packst Du die vier Temperaturvergleiche in die vier freien Verknüpfungen.
Das Ganze kommt in ein if(), welches entweder ON oder OFF setzt. Vermutlich reicht es, ein postUpdate() auszuführen, statt des sendCommand()
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Vielen Dank für deinen Vorschlag.
Hört sich soweit logisch an, ob und wie einfach das für einen Laien wie mich :D umzusetzen ist wird sich herausstellen.
In dieses Thema muss ich mich noch wesentlich mehr einlesen, werde es aber versuchen und entsprechend berichten.
Ein wenig bin ich ja mit Rules vertraut, Blockly ist aber komplettes Neuland und es war mein erster Versuch ;)
LG Manfred
Zuletzt geändert von mskopek am 18. Jan 2023 17:29, insgesamt 1-mal geändert.
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

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

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von udo1toni »

In DSL Rules wäre es geradeaus :)

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Temperatursensor_02_Temperatur
    type: core.ItemStateUpdateTrigger
  - id: "2"
    configuration:
      itemName: Temperatursensor_01_Temperatur
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >
        if(Temperatursensor_01_Temperatur.state >= 30 || Temperatursensor_01_Temperatur.state <= 20 ||
           Temperatursensor_02_Temperatur.state >= 30 || Temperatursensor_02_Temperatur.state <= 20) 
            status_tempsensor_temp.postUpdate(ON)
        else
            status_tempsensor_temp.postUpdate(OFF)
    type: script.ScriptAction
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Hallo,
vielen Dank für die Regel und vor allem die rasche Hilfe. ;)
Am Ende sieht es dann doch einfacher aus, als man gerne mal denkt. Oder doch ein paar Bäume zu viel.....
LG Manfred
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

Re: Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Hallo,
ich möchte dir noch kurz Feedback zu der Rule geben.
Ich musste dann doch von "postUpdate" auf "sendCommand" umstellen, erst dann wurde der Staus des Schalters geändert.

LG Manfred
udo1toni hat geschrieben: 17. Jan 2023 23:06 In DSL Rules wäre es geradeaus :)

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Temperatursensor_02_Temperatur
    type: core.ItemStateUpdateTrigger
  - id: "2"
    configuration:
      itemName: Temperatursensor_01_Temperatur
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >
        if(Temperatursensor_01_Temperatur.state >= 30 || Temperatursensor_01_Temperatur.state <= 20 ||
           Temperatursensor_02_Temperatur.state >= 30 || Temperatursensor_02_Temperatur.state <= 20) 
            status_tempsensor_temp.send.Command(ON)
        else
            status_tempsensor_temp.send.Command(OFF)
    type: script.ScriptAction
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

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

Re: [gelöst] Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von udo1toni »

Dann handelt es sich aber um einen externen Schalter. Ich hatte Dich so verstanden, dass Du den Zustand des Switch Items in der UI auswertest, um die Farbe zu steuern, das sollte mit postUpdate genauso (eigentlich sogar besser) funktionieren.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mskopek
Beiträge: 12
Registriert: 17. Jan 2023 15:39
Answers: 0

Re: [gelöst] Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von mskopek »

Hallo, das mache ich auch. Allerdings habe ich dafür ein eigenes Item / switch ohne weitere Zuordnung erstellt.
Ich schalte damit die Background Farbe einer Label Card: Background style =(items.status_tempsensor_temp.state === 'ON') ? '#E06666' : '#428E42'
LG Manfred
openHAB 3.4.1 unter Ubuntu 22.04.1 LTS als VM auf einer Synology DS918+

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

Re: [gelöst] Erstellen einer Regel für zwei Sensoren und einem Wertbereich

Beitrag von udo1toni »

Dann reicht definitiv das postUpdate() aus. Ein sendCommand() schickt einen Befehl. In der Folge löst openHAB ein postUpdate aus (als default Verhalten) und dieses postUpdate() führt dann zur Statusänderung. sendCommand() ist nur für externe (also verlinkte Channel) Dinge interessant, bzw. für Rules, die auf received command triggern.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten