Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Beitrag von curius »

Hallo Leute!

Leider habe ich noch ein kleines (kosmetisches) Problem mit meiner openHAB Konfiguration.
Ich habe Fensterkontakte (Alarmanlage - Satel Binding), welche via Switch item in das System eingebunden wurden.
Es wird je nach Zustand, passend zum Switch item ein ON oder OFF als Ergebnis geliefert.

Da ich in meiner Sitemap nun die Icons für Fenster und Türen verwende, passen diese sich (je nach Zustand) leider nicht dynamisch an.
Ein geöffnetes Fenster erwartet ein OPEN und ein geschlossenes Fenster erwartet ein CLOSED.

Wie kann ich das Ergebnis eines Switch items (ON/OFF) in ein Ergebnis von einem Contact item transformieren (OPEN/CLOSED), sodass in der Sitemap die Standardsysmbole (Bsp.: door, window) sich auch bei Zustandsänderungen dynamisch verändern.

Derzeit zeige ich in der Sitemap meine Switch items nur als Text an und transformiere dabei die Anzeige - ON=geschlossen / OFF=offen
Wie schaffe ich es, dass die dynamischen Symbole auch mit den eigentlichen Switch items funktionieren...

Meine Konfiguration sieht wie folgt aus:
satel.things:

Code: Alles auswählen

Bridge satel:ethm-1:home [ host="192.168.1.80", refresh=5000 ]
Thing partition Haus [ id=1 ]
Thing zone zone4 [ id=4 ]
satel.items:

Code: Alles auswählen

Switch ET_Vio "Eingangstür [MAP(satel.map):%s]" (Satel, gverletzung) { channel="satel:zone:home:zone4:violation" }
house.sitemap:

Code: Alles auswählen

Text item=ET_Vio icon="frontdoor"
satel.map:

Code: Alles auswählen

ON=offen
OFF=geschlossen
NULL=kein Wert
UNDEF=undefiniert
-=-
Ich kenne zwar die Funktion einer JS Transformation - das mache ich im .things - File für meine MQTT Sensoren, weiß aber nicht, wie ich diese Transformation in diesem Fall hinzufügen könnte ;-(

Vielleicht geht es ja aber auch viel einfacher?
Dieses Script hätte ich soweit mal vorbereitet...

satel_get.js:

Code: Alles auswählen

(function(x) {
    var result = "";
    if (x == 'ON') {
        result="OPEN";
    }

    else {
        result="CLOSED";
    }
    return result;
})(input)
Vielleicht kann mir ja jemand von euch weiterhelfen...
Besten Dank!

Schöne Grüße
Christian
von udo1toni » 7. Jan 2024 22:01
Nein. Es geht ja darum, den Status als OPEN/CLOSED zu erhalten.
Switch Items hben keinen Status OPEN/CLOSED, Du musst also statt der Switch Items zwingend Contact Items verwenden (alternativ ginge auch String, bringt Dir aber nur dann einen Vorteil, wenn der Channel OPEN/CLOSED/AJAR liefert (ajar=halboffen, angelehnt -> gekippt).
Du musst das Mapping statt im Label im Link platzieren:

Code: Alles auswählen

Contact ET_Vio "Eingangstür" (Satel, gverletzung) { channel="satel:zone:home:zone4:violation"[profile="transform:MAP", function="satel.map" ] }
und in satel.map

Code: Alles auswählen

ON=OPEN
OFF=CLOSED
Anschließend kannst Du im Label (oder besser im state Description Pattern) noch das Mapping nach deutsch einrichten, damit aus OPEN offen und auch CLOSED geschlossen wird.
Gehe zur vollständigen Antwort

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Beitrag von PeterA »

Also JS Transform sieht im Item bei mir dann so aus:

Code: Alles auswählen

Number burnworkmin "Brenner Laufzeit [JS(duration.js):%s]"  
In Deinem fall so:

Code: Alles auswählen

Switch ET_Vio "Eingangstür [JS(satel_get.js):%s]" (Satel, gverletzung) { channel="satel:zone:home:zone4:violation" }
- OpenHab 2.4
#PWRUP

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

Re: Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Beitrag von udo1toni »

Nein. Es geht ja darum, den Status als OPEN/CLOSED zu erhalten.
Switch Items hben keinen Status OPEN/CLOSED, Du musst also statt der Switch Items zwingend Contact Items verwenden (alternativ ginge auch String, bringt Dir aber nur dann einen Vorteil, wenn der Channel OPEN/CLOSED/AJAR liefert (ajar=halboffen, angelehnt -> gekippt).
Du musst das Mapping statt im Label im Link platzieren:

Code: Alles auswählen

Contact ET_Vio "Eingangstür" (Satel, gverletzung) { channel="satel:zone:home:zone4:violation"[profile="transform:MAP", function="satel.map" ] }
und in satel.map

Code: Alles auswählen

ON=OPEN
OFF=CLOSED
Anschließend kannst Du im Label (oder besser im state Description Pattern) noch das Mapping nach deutsch einrichten, damit aus OPEN offen und auch CLOSED geschlossen wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Beitrag von curius »

Hallo udo1toni!

Danke, das war sofort die Lösung...
Ich wusste leider nicht, dass ich mir den Item Typ wirklich "auswählen" kann :o
In der Binding Doku sind diese Channels als Switch angegeben, bzw. in den Beispielen als Switch Item implementiert.
Dachte bis heute, dass dies seitens Binding so vorgegeben ist - Sorry...

Aber dein Lösungsvorschlag hat sofort funktioniert - Danke, jetzt bin ich wieder schlauer :D

Grüße
Christian

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

Re: Switch Status ON/OFF für dynamische Icons in OPEN/CLOSED umwandeln...

Beitrag von udo1toni »

Grundsätzlich musst Du schon immer den passenden Itemtyp wählen, aber es gibt immer ein, zwei Tricks, um doch ans Ziel zu kommen, das Profile ist eine Möglichkeit (ohne eine Rule schreiben zu müssen)...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten