openHAB 4 und VS Code
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
openHAB 4 und VS Code
Hallo,
unter OH4 werden ja alle Things, Items, usw. in der Datenbank abgelegt. Unter VS Code kann man diese auch wunderbar sehen.
Die Things sind ja ganz okay so, die Items würde ich aber gerne als *.items Files anlegen und auxh die rules und sripts. Ich mag es einfach, wenn man die Items in einer schön sauberen Struktur hat. Allerdings kann ich machen was ich will, unter OH4 sehe ich alles, was ich als Files angelegt habe, nicht. Fehlt hier noch eine Einstellung in OH4 oder geht das mittlerweile gar nicht mehr, war es nur noch bis OH3 möglich?
VG Torsten
unter OH4 werden ja alle Things, Items, usw. in der Datenbank abgelegt. Unter VS Code kann man diese auch wunderbar sehen.
Die Things sind ja ganz okay so, die Items würde ich aber gerne als *.items Files anlegen und auxh die rules und sripts. Ich mag es einfach, wenn man die Items in einer schön sauberen Struktur hat. Allerdings kann ich machen was ich will, unter OH4 sehe ich alles, was ich als Files angelegt habe, nicht. Fehlt hier noch eine Einstellung in OH4 oder geht das mittlerweile gar nicht mehr, war es nur noch bis OH3 möglich?
VG Torsten
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHAB 4 und VS Code
Nein, da machst Du vermutlich irgendwo einen Fehler, die dateibasierte Konfiguration funktioniert ohne Einschränkungen (auch in der kommenden Version 5). Die Dateien liegen gewöhnlich Im Zweig /etc/openhab/, dort in den verschiedenen Unterverzeichnissen (die Items also in items), die Dateien müssen die korrekte Endung aufweisen (*.items) und am besten sollten die Dateien dem User openhab gehören (das spielt aber nur eine untergeordnete Rolle). Also alles wie schon in openHAB1 
Wenn Die Inhalte einer bestehenden Datei nicht als angelegte Items auftauchen, wäre mein erster Verdacht, dass Du in der Datei einen Tippfehler hast.
Um das zu falsifizieren wäre mein Vorschlag, in openhab.log nachzuschauen, ob eine Zeile, gefolgt von einer Zeile vorkommen (wobei abc natürlich der Name einer Items-datei wäre. Es könnte auch eine Meldung (sinngemäß) ausgegeben werden.
Fehlen diese Meldungen gänzlich, dann liegen die Dateien im falschen Verzeichnis. Werden die Dateien geladen, aber es gibt die empty-Meldung, könnten Dateizugriffsrechte verkehrt sein. Gibt es einen Hinweis auf Fehler, musst Du die Datei Zeile für Zeile überprüfen, am einfachsten (Du hast ja VS Code) kommentierst Du alle Zeilen aus (Cursor in oberste Zeile, <ctrl>-<alt>-<shift>+Cursor-down bis zur letzten Zeile, // eingeben, <esc>-<esc> drücken) aktivierst anschließend die erste Zeile, indem Du die Kommentarzeichen entfernst und speicherst die Datei ab. Das erste Item muss dann sofort in openHAB auftauchen. Tut es das nicht, ist die Zeile fehlerhaft. Klappt es, wiederholst Du das Spiel für jedes weitere Item, bis plötzlich alle Items wieder weg sind, dann weißt Du, dass in der letzten nicht auskommentierten Zeile ein Fehler ist.

Wenn Die Inhalte einer bestehenden Datei nicht als angelegte Items auftauchen, wäre mein erster Verdacht, dass Du in der Datei einen Tippfehler hast.
Um das zu falsifizieren wäre mein Vorschlag, in openhab.log nachzuschauen, ob eine Zeile
Code: Alles auswählen
Loading model 'abc.items'
Code: Alles auswählen
Configuration model 'abc.items' is either empty or cannot be parsed correctly!
Code: Alles auswählen
Configuration model 'abc.items' has errors, therefor ignoring it
Fehlen diese Meldungen gänzlich, dann liegen die Dateien im falschen Verzeichnis. Werden die Dateien geladen, aber es gibt die empty-Meldung, könnten Dateizugriffsrechte verkehrt sein. Gibt es einen Hinweis auf Fehler, musst Du die Datei Zeile für Zeile überprüfen, am einfachsten (Du hast ja VS Code) kommentierst Du alle Zeilen aus (Cursor in oberste Zeile, <ctrl>-<alt>-<shift>+Cursor-down bis zur letzten Zeile, // eingeben, <esc>-<esc> drücken) aktivierst anschließend die erste Zeile, indem Du die Kommentarzeichen entfernst und speicherst die Datei ab. Das erste Item muss dann sofort in openHAB auftauchen. Tut es das nicht, ist die Zeile fehlerhaft. Klappt es, wiederholst Du das Spiel für jedes weitere Item, bis plötzlich alle Items wieder weg sind, dann weißt Du, dass in der letzten nicht auskommentierten Zeile ein Fehler ist.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
Re: openHAB 4 und VS Code
Okay, ich schau mal nach, bin aber erstmal sehr beruhigt, dass es eigentlich funktionieren sollte. Dann geh ich mal in Ruhe alles durch.
Vielen Dank, Udo, ich melde mich dann wenn es funktioniert - oder auch wenn nicht...
VG Torsten
Vielen Dank, Udo, ich melde mich dann wenn es funktioniert - oder auch wenn nicht...

VG Torsten
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
Re: openHAB 4 und VS Code
Hallo Udo,
die Dateiendungen und Verzeichnisse passen, in der openhab.log habe ich u.a. diese Einträge gefunden:
Also stört ihn irgendwas in den Dateien. Hier eine items als Beispiel:
VG Torsten
die Dateiendungen und Verzeichnisse passen, in der openhab.log habe ich u.a. diese Einträge gefunden:
Code: Alles auswählen
2025-03-11 20:00:13.456 [WARN ] [.core.internal.folder.FolderObserver] - Error while opening file during update: /etc/openhab/items/txt_GP_Licht.items
2025-03-11 20:00:13.458 [WARN ] [.core.internal.folder.FolderObserver] - Error while opening file during update: /etc/openhab/items/txt_GP_HZ.items
2025-03-11 20:00:13.458 [WARN ] [.core.internal.folder.FolderObserver] - Error while opening file during update: /etc/openhab/items/txt_GP_Temp.items
2025-03-11 20:00:16.253 [WARN ] [.core.internal.folder.FolderObserver] - Error while opening file during update: /etc/openhab/rules/Licht_Test.rules
Code: Alles auswählen
Switch Licht_SZ_Decke "SZ-Decke" <lightbulb> (Licht) RelayOutput "ON/OFF" {channel="shelly:shellyplusplug:d48afc470f3c:relay#output"} // Licht_SZ_Decke
Switch Licht_SZ_Balken "SZ-Balken" <lightbulb> (Licht) RelayOutput "ON/OFF" {channel="shelly:shellyplusplug:e465b85da6dc:relay#output"} // Licht_SZ_Balken
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHAB 4 und VS Code
Ja, das da: RelayOutput "ON/OFF" gibt es nicht. (und gab es auch noch nie)
Die allgemeine Form eines Eintrags in einer *-items Datei sieht so aus:
Wobei bis auf Itemtype und Itemname alles optional ist, die Reihenfolge ist aber zwingend.
D.h.
erst Itemtype,
dann Itemname,
danach (optional) der Labeltext in Anführungszeichen,
am Ende des Labeltexts optional die Formatierungsanweisung für den Status in eckigen Klammern, als Teil des Labeltexts,
dann optional der Iconname in spitzen Klammern,
dann optional die Zugehörigkeit zu beliebig vielen Gruppen,
dann optional die Tags in eckigen Klammern, als kommaseparierte String Liste (je String in Anführungszeichen),
abschließend optional die Bindingkonfiguration in geschweiften Klammern.
Wobei die Bindingkonfiguration auch die Metadaten des Items bereitstellt, z.B.
Hier ist für das UoM Item vom Typ Number:Energy die Unit Wh gesetzt worden, angezeigt wird der Wert in MWh mit einer Auflösung von 0.1, weil das über das State Description Pattern definiert wurde (nicht über das Status Format - das hat den Vorteil, auch auf die Main UI zu wirken, nicht nur auf die Basic UI)
Die allgemeine Form eines Eintrags in einer *-items Datei sieht so aus:
Code: Alles auswählen
itemtype itemname "labeltext [stateformat]" <iconname> (group1, group2, ...) ["tag1", "tag2", ...] {bindingconfig}
D.h.
erst Itemtype,
dann Itemname,
danach (optional) der Labeltext in Anführungszeichen,
am Ende des Labeltexts optional die Formatierungsanweisung für den Status in eckigen Klammern, als Teil des Labeltexts,
dann optional der Iconname in spitzen Klammern,
dann optional die Zugehörigkeit zu beliebig vielen Gruppen,
dann optional die Tags in eckigen Klammern, als kommaseparierte String Liste (je String in Anführungszeichen),
abschließend optional die Bindingkonfiguration in geschweiften Klammern.
Wobei die Bindingkonfiguration auch die Metadaten des Items bereitstellt, z.B.
Code: Alles auswählen
Number:Energy PVInverterdatachanneltotal "Total energy" (gPV) ["Measurement","Energy"] {channel="fronius:powerinverter:bridge:inverter:inverterdatachanneltotal", unit="Wh", stateDescription=""[pattern="%.1f MWh"]}Number:Energy
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
Re: openHAB 4 und VS Code
Ah, okay, da werde ich in den nächsten Tagen mal bissl probieren.
Danke schon mal!
VG Torsten
Danke schon mal!

VG Torsten
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
Re: openHAB 4 und VS Code
Also irgendwie klappt es nicht, egal wie ich den Inhalt der .items verändere.
Wenn ich eine frische .items anlege, nun aus dem openhab-Plugin von einem Thing einen Channel einfüge, dann wird es automatisch ein RelayOutput. Allerdings wird dieses neue Item nicht im openhab-Plugin angezeigt und auch bei einem Versuch den Namen des neuen, in der .items angelegten Items, in einer Rule zu nutzen funktioniert das nicht. Irgendwie drehe ich mich hier im Kreise...
Wenn ich eine frische .items anlege, nun aus dem openhab-Plugin von einem Thing einen Channel einfüge, dann wird es automatisch ein RelayOutput. Allerdings wird dieses neue Item nicht im openhab-Plugin angezeigt und auch bei einem Versuch den Namen des neuen, in der .items angelegten Items, in einer Rule zu nutzen funktioniert das nicht. Irgendwie drehe ich mich hier im Kreise...

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHAB 4 und VS Code
Erstmal: Es ist nicht "ein RelayOutput", sondern RelayOutput ist der von openHAB automatisch vergebene Itemname. Dieser ergibt sich aus dem letzten Teil der UID des Channels. Wenn Du statt den Channel auszuwählen Items zum Thing erzeugen lässt, wird auch noch der vorletzte Teil der UID verwendet (der das Thing definiert).
Das funktioniert natürlich nur gut, wenn die UIDs alle unterschiedlich sind.
Allerdings: das Plugin erzeugt nur eine Minimalversion des Items mit dem generisch erzeugten Itemnamen, dem vom Channel übernommenen Label und der vollständigen Channel UID. Von dort aus kannst und sollst Du die Itemdefinition ja ändern, incl. Itemname.
Hast Du im openHAB Plugin die Itemliste neu eingelesen? (In der "Überschrift" der Itemliste rechts neben dem Wort ITEMS der Refresh-Button)
Das funktioniert natürlich nur gut, wenn die UIDs alle unterschiedlich sind.
Allerdings: das Plugin erzeugt nur eine Minimalversion des Items mit dem generisch erzeugten Itemnamen, dem vom Channel übernommenen Label und der vollständigen Channel UID. Von dort aus kannst und sollst Du die Itemdefinition ja ändern, incl. Itemname.
Hast Du im openHAB Plugin die Itemliste neu eingelesen? (In der "Überschrift" der Itemliste rechts neben dem Wort ITEMS der Refresh-Button)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 10. Mai 2024 23:28
Re: openHAB 4 und VS Code
Hallo Udo,
den Namen des Items ändere ich natürlich, das ist klar, habe ich hier nur so gelassen. In der UID ist er natürlich fest, innerhalb der Klammern darf ich nichts ändern, das definiert ja genau den ausgewählten Channel des Things. Soweit ist alles klar für mich. Warum ich aber (auch nach der Aktualisierung der Items rechts neben der Überschrift) meine angelegten Items nicht sehe, verstehe ich nicht. Genau hier liegt mein Problem, alles was ich in den Textdateieien .items .rules usw. definiere wird sowohl im Plugin, als auch im openhab Frontend ignoriert. Schreibberechtigung auf das Verzeichnis ist vorhanden, gespeichert werden die Files ja auch.
Man sieht ja auch die im openhab Frontend erzeugten Items, z.B. "TestSwitch", die kommen nicht aus den .items Files.
Irgendwie will openhab nichts von meinen per Datei angelegten Files wissen, ich versteh es einfach nicht...
den Namen des Items ändere ich natürlich, das ist klar, habe ich hier nur so gelassen. In der UID ist er natürlich fest, innerhalb der Klammern darf ich nichts ändern, das definiert ja genau den ausgewählten Channel des Things. Soweit ist alles klar für mich. Warum ich aber (auch nach der Aktualisierung der Items rechts neben der Überschrift) meine angelegten Items nicht sehe, verstehe ich nicht. Genau hier liegt mein Problem, alles was ich in den Textdateieien .items .rules usw. definiere wird sowohl im Plugin, als auch im openhab Frontend ignoriert. Schreibberechtigung auf das Verzeichnis ist vorhanden, gespeichert werden die Files ja auch.
Man sieht ja auch die im openhab Frontend erzeugten Items, z.B. "TestSwitch", die kommen nicht aus den .items Files.
Irgendwie will openhab nichts von meinen per Datei angelegten Files wissen, ich versteh es einfach nicht...
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHAB 4 und VS Code
Dann greifst Du vermutlich auf den falschen Ordner zu.
Schau mal in das Log von openHAB, dort muss eine Zeile mit dem Wortlaut Loading model 'test.items' auftauchen (gegeben, dass die Datei test.items heißt). Falls stattdessen ein 'test.items' has errors, therfor ignoring it auftaucht, weißt Du, dass Du die Datei an der richtigen Stelle liegen hast, aber ein (schwerer) Fehler in der Datei vorhanden ist. Taucht der Dateiname überhaupt nicht auf, dann liegt die Datei im falschen Verzeichnis
Schau mal in das Log von openHAB, dort muss eine Zeile mit dem Wortlaut Loading model 'test.items' auftauchen (gegeben, dass die Datei test.items heißt). Falls stattdessen ein 'test.items' has errors, therfor ignoring it auftaucht, weißt Du, dass Du die Datei an der richtigen Stelle liegen hast, aber ein (schwerer) Fehler in der Datei vorhanden ist. Taucht der Dateiname überhaupt nicht auf, dann liegt die Datei im falschen Verzeichnis
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet