Openhab und Prozedur? [gelöst]

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Openhab und Prozedur?

Beitrag von udo1toni »

Nein, das geht so nicht. Das Icon ist entweder dynamisch, dann ändert es sich mit dem Status, oder es ist fest. Ein Workaround existiert aber, und zwar über die visibility eines Widgets:
*.items

Code: Alles auswählen

String myItem "Mein Item" ... 
Number myItemIcon
myItemIcon ist ein Hilfsitem, um das Icon zu steuern.

*.sitemap

Code: Alles auswählen

Text item=myItem icon="icon1" visibility=[myItemIcon==1]
Text item=myItem icon="icon2" visibility=[myItemIcon==2]
Text item=myItem icon="icon3" visibility=[myItemIcon==3]
Text item=myItem icon="icon4" visibility=[myItemIcon==4]
Text item=myItem icon="icon5" visibility=[myItemIcon==5]
Es sind also 5 Widgets in der Sitemap angelegt, allerdings erscheint nur eines davon, abhängig davon, welchen Wert myItemIcon gerade hat. Man kann dann sogar zwischen statischen und dynamischen Icons umschalten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59

Re: Openhab und Prozedur?

Beitrag von fkempter »

Hallo Udo
schade.
Aber ich denke es gibt mit visible ein anderse Problem.
Die Gruppe "gIoT_Status" beinhaltet cq 40 Items.
Kann ich die auch in die Schleife mitnehmen?
Ähnlich "m + myItemicon". und dan posUpdate.

Code: Alles auswählen

       
        gIoT_Status.members.forEach[m| {
                 m.postUpdate("OFFLINE")
                 m + myItemIcon.postUpdate(0)
        }

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

Re: Openhab und Prozedur?

Beitrag von udo1toni »

So ähnlich :)
Der Trick besteht in diesem Fall darin, auch die myItemIcon Items in einer Gruppe zusammenzufassen (nennen wir sie mal gItemIcon). Dann kann man die Rule sehr einfach gestalten:

Code: Alles auswählen

gIoT_Status.members.forEach[m| 
    m.postUpdate("OFFLINE")
    gItemIcon.members.filter[i|i.name.contains(m.name)].head.postUpdate(0)
]
Voraussetzung ist natürlich, dass die Member aus gIoT_Status alle Namen tragen, die nicht als Teil eines anderen Items der Gruppe stehen.
Weil das jetzt etwas verschwurbelt klingt, ein Beispiel:
Ein Item heißt Heinz, ein weiteres Item heißt Heinz01, das ist nicht erlaubt, denn wenn das Item Heinz verarbeitet wird, wird der Filter zwei Items ausspucken (eben HeinzIcon und Heinz01Icon). Man könnte die Gruppe vor der Selektion noch sortieren, um sicher zu sein, dass das Item mit dem kürzesten Namen zuerst kommt :) aber die einfachere Variante wird sicher sein, alle Items eineindeutig zu benennen, also z.B. das Item Heinz in Heinz00 umzubenennen.

Die geschweiften Klammern sind hier unnötig, das Lambda markiert bereits den Codeblock als zusammenhängend.
.filter gibt übrigens immer eine Liste zurück, weshalb man ein Element dieser Liste (.head ist das erste Element der Liste) auswählen muss.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59

Re: Openhab und Prozedur?

Beitrag von fkempter »

Hallo Udo
das ist ja Genial was es alles für funktionen gibt.
Aber ich habe kein Change auf sowas selbst daraufzukommen.
Ich habe lauter Eindeutige Itemnamen, somit bekomme ich das Problem nicht dopplete zu filtern
Vielen lieben Dank aus der Bodenseeregion.

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

Re: Openhab und Prozedur? [gelöst]

Beitrag von udo1toni »

Na ja, Chancen, das selbst zu finden... zugegebenermaßen nicht trivial. Am ehesten kann man noch die Rules anschauen, die es (vermutlich inzwischen zu tausenden) in den deutschen und englischen Foren sowie in github (openhab1-addons) gibt.
Eine andere Variante wäre noch, VSCode als Editor zu nutzen, korrekt eingerichtet (mit openHAB Plugin und in dessen Konfiguration eingetragenem openHAB Server) bekommt man Vorschläge für die Ergänzung des Eingebenen, wenn man z.B. einen Itemnamen eingibt und einen Punkt dahinter, bekommt man alle möglichen Ergänzungen mit kurzer Info zu notwendigen Parametern. Die Namen sind sprechend, und man kann sich meist an der Java Dokumentation orientieren (man sollte aber nicht vergessen, dass es sich um eine DSL handelt, die nicht auf Java aufsetzt, sondern auf XText.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten