system:range... wie aus einer 0/1 ein ON/OFF machen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
PSch
Beiträge: 20
Registriert: 3. Okt 2018 09:53
Answers: 0

system:range... wie aus einer 0/1 ein ON/OFF machen

Beitrag von PSch »

Moin,

ich übe gerade daran, einen Trigger für einen bestimmten Azimuth Bereich zu bauen. Probiert habe ich:

Code: Alles auswählen

  Number TestTrigger {channel="astro:sun:home:position#azimuth" [profile="system:range",  lower="257 °", upper="260 ° ",  inverted="true "] }  
Das funktioniert auch ganz gut (der TestTrigger wird zwischen 257 und 260 Grad 1, sonst 0), ich hätte aber, für die weitere Verarbeitung gerne ein ON und OFF geliefert bekommen. Ich kann das zwar auch als Switch statt als Number starten, bekomme dann aber "unschöne" Fehlermeldungen, wenn das z.B. in einer Sitemap auftaucht:

Code: Alles auswählen

 Exception while formatting value 'OFF' of item TestTrigger with format '%.2f %unit%': Conversion = 'u' 
Der Grund ist wohl, dass der Azimuth Wert eben kein Switch ist sondern ein nummerischer Wert.

Gibt es eine Möglichkeit, die bei der Number-Definition zurückgegebene 0 bzw 1 auf ein OFF bzw. ON zu casten? Nicht hauen, wenn das in der Kategorie "Blöde Frage" ganz vorne ist... DSL ist nicht so wirklich meine Kernkompetenz.

Das einzige, was mir dazu einfällt, ist eine Rule, die das Ganze löst; ich hatte mich nur gerade gefreut, dass ich die bisher genutzte Rule durch den oben gezeigten Einzeiler erschlagen kann.

Vielleicht gibt's ja einen Trick dafür.

LG Peter

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

Re: system:range... wie aus einer 0/1 ein ON/OFF machen

Beitrag von udo1toni »

Das ist ein interessanter Ansatz. Grundsätzlich sollte system:range aber tatsächlich ON und OFF liefern, keine Zahl. Siehe https://www.openhab.org/docs/configurat ... l#profiles
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

PSch
Beiträge: 20
Registriert: 3. Okt 2018 09:53
Answers: 0

Re: system:range... wie aus einer 0/1 ein ON/OFF machen

Beitrag von PSch »

Moin,
ok, Doku nochmal gelesen und wieder was mehr verstanden. Ich bin über das Googlen der Fehlermeldung auf die (irrige) Idee gekommen, dass da ein Switch und nicht Value davorstehen mußte...obwohl beides funktioniert, nur die Fehlermeldung in der Sitemap erzeugt (wird dort auch mit "err" angezeigt). Ist dir etwas bekannt, was das korrigieren könnte?

Aber ja, Switch ist dann die richtige Version, also werde ich das weiterverfolgen. Danke für die (wie immer) superschnelle Antwort.

Peter

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

Re: system:range... wie aus einer 0/1 ein ON/OFF machen

Beitrag von udo1toni »

Na, die Fehlermeldung rührt von einer fehlerhaften Formatierung in der Sitemap.
Item:

Code: Alles auswählen

Switch azimuthRange "Außerhalb 257-260" {channel="astro:sun:home:position#azimuth"[profile="system:range",  lower="257 °", upper="260 °",  inverted="true"], stateDescription=""[pattern="%s"]}
Eventuell kannst Du auf das State Description Pattern auch komplett verzichten, bin jetzt zu faul das auszuprobieren.
Sitemap:

Code: Alles auswählen

Text item=azimuthRange
Falls ON/OFF ohne State Description Pattern nicht angezeigt wird, sollte das Pattern den Wert sichtbar machen. Hilft das nicht, kannst Du auch die Anzeige über das Label erzwingen:

Code: Alles auswählen

"Außerhalb 257-260[%s]"
Es ist dabei egal, ob Du das Label in der Itemdefinition anlegst oder über die Sitemap.
Der bessere Weg ist aber das Pattern, weil das auch in der Main UI funktioniert.
Die Definition über das Label wirkt hingegen ausschließlich in der Basic UI, wenn man das Label in der Sitemap definiert, wirkt es nur an der entsprechenden Stelle.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten