Sitemap Text formatieren

GUI Relevanten, PaperUI, BasicUI, HabPanel ...

Moderatoren: seppy, udo1toni

Antworten
TiToMoskito
Beiträge: 3
Registriert: 13. Mär 2021 11:50

Sitemap Text formatieren

Beitrag von TiToMoskito »

Hallo zusammen,

ich möchte gerne zwei Sensoren auslesen und in einem string ausgeben.
Ich schreibe mal auf, wie ich das meine.

Item 1: 40%
Item 2: 300°C

Die Text Ausgabe soll dann so aussehen: 40% von 300°C

Wie realisiere ich sowas? Oder muss ich dafür ein custom Item mit einem String Channel erstellen und dann mittels Rule den String auf meine Bedürfnisse anpassen?
von udo1toni » 15. Okt 2021 15:46
Du brauchst dazu tatsächlich ein String Item. Weiterhin brauchst Du eine Rule. Sonst nichts. :)

Nehmen wir an die Items heißen InProzent, InTemperatur und OutText, dann reicht folgende Rule (DSL):

Code: Alles auswählen

rule "OutText Status setzen"
when
    Item InProzent changed or
    Item InTemperatur changed
then
    val Number nProzent = if(InProzent.state instanceof Number) (InProzent.state as Number).intValue else 0
    val Number nTemp = if(InTemperatur.state instanceof Number) (InTemperatur.state as Number).intValue else 0
    OutText.postUpdate(nProzent.toString + "% von " + nTemp.toString + " °C")
end
Jedes Mal, wenn sich eines der Eingangs-Items ändert, wird die Rule getriggert. Die Items werden eingelesen, wobei im Falle, dass kein gültiger Wert empfangen wurde, der Wert 0 gesetzt wird. Anschließend wird der Wert des Items OutText auf den gewünschten String gesetzt.

Das Item benötigt keinen Link auf irgendeinen Channel (es sei denn, Du willst den String an ein anderes externes Gerät liefern, dann müsste das postUpdate() gegen sendCommand() ersetzt werden, damit das Update als Befehl an angebundene Channel geschickt wird.
Gehe zur vollständigen Antwort

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

Re: Sitemap Text formatieren

Beitrag von udo1toni »

Du brauchst dazu tatsächlich ein String Item. Weiterhin brauchst Du eine Rule. Sonst nichts. :)

Nehmen wir an die Items heißen InProzent, InTemperatur und OutText, dann reicht folgende Rule (DSL):

Code: Alles auswählen

rule "OutText Status setzen"
when
    Item InProzent changed or
    Item InTemperatur changed
then
    val Number nProzent = if(InProzent.state instanceof Number) (InProzent.state as Number).intValue else 0
    val Number nTemp = if(InTemperatur.state instanceof Number) (InTemperatur.state as Number).intValue else 0
    OutText.postUpdate(nProzent.toString + "% von " + nTemp.toString + " °C")
end
Jedes Mal, wenn sich eines der Eingangs-Items ändert, wird die Rule getriggert. Die Items werden eingelesen, wobei im Falle, dass kein gültiger Wert empfangen wurde, der Wert 0 gesetzt wird. Anschließend wird der Wert des Items OutText auf den gewünschten String gesetzt.

Das Item benötigt keinen Link auf irgendeinen Channel (es sei denn, Du willst den String an ein anderes externes Gerät liefern, dann müsste das postUpdate() gegen sendCommand() ersetzt werden, damit das Update als Befehl an angebundene Channel geschickt wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

TiToMoskito
Beiträge: 3
Registriert: 13. Mär 2021 11:50

Re: Sitemap Text formatieren

Beitrag von TiToMoskito »

Okay super, vielen Dank für die ausführliche und nette Hilfe. Dann weiß ich was ich zu tun habe :D

Antworten