Mehrere Werte in einer Zeile anzeigen
-
- Beiträge: 35
- Registriert: 11. Aug 2019 21:28
Mehrere Werte in einer Zeile anzeigen
Hallo, ich habe schon mehrere Visualiesierungem gesehen wo man in einer Zeile 2 oder 3 Werte anzeigen lassen kann.
Leider komme ich nicht darauf das anzuzeigen. Ich habe schon irgendwas gelesen dass man rules erstellen muss, aber ich weiß nicht wie es aussehen soll.
Beispiel 1:
Wohnzimmer 22° / 2Lampen an
Beispiel 2:
Aussen Temp. 22° / 60% Feuchtigkeit
Danke
Leider komme ich nicht darauf das anzuzeigen. Ich habe schon irgendwas gelesen dass man rules erstellen muss, aber ich weiß nicht wie es aussehen soll.
Beispiel 1:
Wohnzimmer 22° / 2Lampen an
Beispiel 2:
Aussen Temp. 22° / 60% Feuchtigkeit
Danke
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Mehrere Werte in einer Zeile anzeigen
Hi,
ja das ist garnicht so schwer.
Du brauchst eine Rule die dir via "postUpdate" ein neues String Item zusammenfasst.
Das "Kombiitem" muss vom Type String sein.
ja das ist garnicht so schwer.
Du brauchst eine Rule die dir via "postUpdate" ein neues String Item zusammenfasst.
Das "Kombiitem" muss vom Type String sein.
Code: Alles auswählen
rule "SensorsInfoKombiKGTechnikraum"
when
Item InnenKellerTechnikTemp changed or
Item InnenKellerTechnikFeuchte changed or
System started
then
LaCrosse_Innen_KG_Technik_Kombi.postUpdate(InnenKellerTechnikTemp_Tendenz.state.toString + " " + InnenKellerTechnikTemp.state + " / " + InnenKellerTechnikFeuchte_Tendenz.state.toString + " " + InnenKellerTechnikFeuchte.state.toString + " ")
end
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 13947
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Mehrere Werte in einer Zeile anzeigen
Du musst dazu ein String Item erstellen. Innerhalb einer Rule, die auf alle beteiligten Items triggert, wird dann jeweils der passende String errechnet.
z.B.
MyStringItem kannst Du dann in der Sitemap oder in HABpanel verwenden, mit einem Label wie z.B. "Wohnzimmer [%s]", was dann als Anzeige etwa
ergibt.
z.B.
Code: Alles auswählen
rule "Anzeige"
when
Item Temperatur changed or
Item Luftfeuchte changed
then
val String strTemp = if(Temperatur.state instanceof Number) String::format("%.1f °C",(Temperatur.state as Number).floatValue) else "--.- °C"
val String strHum = if(Luftfeuchte.state instanceof Number) String::format("%.0f %",(Luftfeuchte.state as Number).floatValue) else "-- %"
MyStringItem.postUpdate(strTemp + " / "+strHum)
end
Code: Alles auswählen
Wohnzimmer 21.0 °C / 45 %
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 35
- Registriert: 11. Aug 2019 21:28
Re: Mehrere Werte in einer Zeile anzeigen
schon mal danke!
Was muss ich denn in der Sitemap eingeben damit es angezeigt wird?
Und wie soll der Item Ordner aussehen?
Achso, und ihr beide habt mir einen Beispiel für Temp. und Feuchte vorgeschlagen, wie ist das denn wenn ich anzeigen will wie viele Lampen an sind in einem Bereich?
Was muss ich denn in der Sitemap eingeben damit es angezeigt wird?
Und wie soll der Item Ordner aussehen?
Achso, und ihr beide habt mir einen Beispiel für Temp. und Feuchte vorgeschlagen, wie ist das denn wenn ich anzeigen will wie viele Lampen an sind in einem Bereich?
- peter-pan
- Beiträge: 2568
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Mehrere Werte in einer Zeile anzeigen
...das sollte genauso gehen, wie das Udo beschrieben hat. Evtl. mit dem Gruppen-Item oder mit der "members-Methode"
Wie sehen denn deine items und Gruppen-Items für den Bereich aus ?
Wie sehen denn deine items und Gruppen-Items für den Bereich aus ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian
- peter-pan
- Beiträge: 2568
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Mehrere Werte in einer Zeile anzeigen
Hier noch eine Regel zur Ermittlung der Mitglieder der Gruppe:
Die Ermittlung von "count" sollte den Wert für die entsprechende Gruppe ermitteln. Die anderen zwei Methoden sind "Abarten". Die Zeile kannst du in deine Regel einbauen
Code: Alles auswählen
rule "zimmercount_test"
when
Item Dummy_6 changed to ON
then
logInfo("Dummy-Test", "Zimmer Y triggert")
val count = gSonoff.members.filter[ i | i.state == ON ].size
logInfo("Dummy-Test", "Zimmerlichter an: {}", count)
val names = gSonoff.members.filter[ i | i.state == ON ].map[ name ].reduce[ s, name | s + ", " + name ]
logInfo("Dummy-Test", "Licht/Schaltername: {}", names)
// Nur Notlösung - https://community.openhab.org/t/solved-group-members-count-if-on/60451/3
val count1 = gSonoff.members.filter[ i | i.state == ON ].map[ (1).doubleValue].reduce[ sum, v | sum + v ]
logInfo("Dummy-Test", "Zimmerlichter an-double/float: {}", count1)
end
Code: Alles auswählen
val count = gSonoff.members.filter[ i | i.state == ON ].size
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian
-
- Beiträge: 35
- Registriert: 11. Aug 2019 21:28
Re: Mehrere Werte in einer Zeile anzeigen
Also, sorry dass ich erst so spät antworte, ich hatte keine Lust mich drum zu kümmern.
Jetzt würde ich das doch machen wollen.
Meine Rules
rule "Anzeige"
when
Item localCurrentTemperature changed or
Item localCurrentHumidity changed
then
val String strTemp = if(localCurrentTemperature.state instanceof Number) String::format("%.1f °C",(localCurrentTemperature.state as Number).floatValue) else "--.- °C"
val String strHum = if(localCurrentHumidity.state instanceof Number) String::format("%.0f %",(localCurrentHumidity.state as Number).floatValue) else "-- %"
MyStringItem.postUpdate(strTemp + " / "+strHum)
end
Sitemap:
Text item=MyStringItem label="Wetter" icon="temperature"
Item:
Number:Temperature localCurrentTemperature "Current temperature [%.1f %unit%]" <temperature> { channel="openweathermap:weather-and-forecast:api:local:current#temperature" }
Number:Dimensionless localCurrentHumidity "Current atmospheric humidity [%d %unit%]" <humidity> { channel="openweathermap:weather-and-forecast:api:local:current#humidity" }
String MyStringItem "Anzeige Test"
Leider wird gar nichts angezeigt.. was mache ich falsch?
Jetzt würde ich das doch machen wollen.
Meine Rules
rule "Anzeige"
when
Item localCurrentTemperature changed or
Item localCurrentHumidity changed
then
val String strTemp = if(localCurrentTemperature.state instanceof Number) String::format("%.1f °C",(localCurrentTemperature.state as Number).floatValue) else "--.- °C"
val String strHum = if(localCurrentHumidity.state instanceof Number) String::format("%.0f %",(localCurrentHumidity.state as Number).floatValue) else "-- %"
MyStringItem.postUpdate(strTemp + " / "+strHum)
end
Sitemap:
Text item=MyStringItem label="Wetter" icon="temperature"
Item:
Number:Temperature localCurrentTemperature "Current temperature [%.1f %unit%]" <temperature> { channel="openweathermap:weather-and-forecast:api:local:current#temperature" }
Number:Dimensionless localCurrentHumidity "Current atmospheric humidity [%d %unit%]" <humidity> { channel="openweathermap:weather-and-forecast:api:local:current#humidity" }
String MyStringItem "Anzeige Test"
Leider wird gar nichts angezeigt.. was mache ich falsch?
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Mehrere Werte in einer Zeile anzeigen
Bitte benutze zum Posten von Code die "Codefences"
Dann sieht dein Code besser lesbar aus:
Und nun zum Code für die Sitemap:
Wie Udo das schon weiter oben geschrieben hat, muss das Label deines Items in der Sitemap besser so lauten:
Das im Label sorgt dafür das der zusammengesetzte String im Label in der Sitemap verwendet wird.
Dann sieht dein Code besser lesbar aus:
Code: Alles auswählen
rule "Anzeige"
when
Item localCurrentTemperature changed or
Item localCurrentHumidity changed
then
val String strTemp = if(localCurrentTemperature.state instanceof Number) String::format("%.1f °C",(localCurrentTemperature.state as Number).floatValue) else "--.- °C"
val String strHum = if(localCurrentHumidity.state instanceof Number) String::format("%.0f %",(localCurrentHumidity.state as Number).floatValue) else "-- %"
MyStringItem.postUpdate(strTemp + " / "+strHum)
end
Code: Alles auswählen
Text item=MyStringItem label="Wetter" icon="temperature"
Code: Alles auswählen
Number:Temperature localCurrentTemperature "Current temperature [%.1f %unit%]" <temperature> { channel="openweathermap:weather-and-forecast:api:local:current#temperature" }
Number:Dimensionless localCurrentHumidity "Current atmospheric humidity [%d %unit%]" <humidity> { channel="openweathermap:weather-and-forecast:api:local:current#humidity" }
String MyStringItem "Anzeige Test"
Und nun zum Code für die Sitemap:
Wie Udo das schon weiter oben geschrieben hat, muss das Label deines Items in der Sitemap besser so lauten:
Code: Alles auswählen
Text item=MyStringItem label="Wetter[%s]" icon="temperature"
Code: Alles auswählen
[%s]
- OpenHab 2.4
#PWRUP
#PWRUP
-
- Beiträge: 35
- Registriert: 11. Aug 2019 21:28
Re: Mehrere Werte in einer Zeile anzeigen
So... ich habe es geändert dann wurde mir alles angezeigt
Danach wollte ich die String Namen usw ändern und jetzt geht gar nichts mehr...
ich bekomme einen Error
habe auch schon system neu gestartet
Danach wollte ich die String Namen usw ändern und jetzt geht gar nichts mehr...
ich bekomme einen Error
Code: Alles auswählen
[ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Anzeige Test': Conversion = '%'
habe auch schon system neu gestartet
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Mehrere Werte in einer Zeile anzeigen
Das System (ich nehme an OpenHab) ständig neu zu Starten ist normalerweise nicht notwendig.
Könntest Du bitte Deine Änderungen auch posten ?
Eines hatte ich noch übersehen:
Das String Item sollte auch so definiert werden:
Könntest Du bitte Deine Änderungen auch posten ?
Eines hatte ich noch übersehen:
Das String Item sollte auch so definiert werden:
Code: Alles auswählen
String MyStringItem "Anzeige Test[%s]"
- OpenHab 2.4
#PWRUP
#PWRUP