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?
Sitemap Text formatieren
-
- Beiträge: 3
- Registriert: 13. Mär 2021 11:50
Sitemap Text formatieren
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):
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 AntwortNehmen 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
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.
- udo1toni
- Beiträge: 13859
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Sitemap Text formatieren
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):
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.
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
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
-
- Beiträge: 3
- Registriert: 13. Mär 2021 11:50
Re: Sitemap Text formatieren
Okay super, vielen Dank für die ausführliche und nette Hilfe. Dann weiß ich was ich zu tun habe