OH4 Fragen zu Semantic Model und Visual Studio Code

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von Maverick-811 »

Hallo,
ich möchte das Sematic Model komplett über VSC (Visual Studio Code) erstellen.

Beispiel:
Location Home "Home" ["Location"]
Location Erdgeschoss "Erdgeschoss" (Home) ["Location"]
Location ZweiterStock "Zweiter Stock" (Home) ["Location"]
Location Schlafzimmer "Schlafzimmer" (ZweiterStock) ["Location"]
Location Esszimmer "Esszimmer" (Erdgeschoss) ["Location"]

Group Versorgung "Versorgung" (Home) ["Valve"]
Number Watermeter "Water meter" (Versorgung) ["Sensor"] {channel="mqtt:topic:xxxx:Watermeter"}
Number GasNumber "Gas number" (Versorgung) ["Sensor"] {channel="mqtt:topic:xxx:GasNumber"}
Number EnergyMeter "Energy meter" (Versorgung) ["Sensor"] {channel="mqtt:topic:xxx:EnergyMeter"}

Group TempHumiEsszimmer "Temp Humi Esszimmer" (Esszimmer) ["Valve"]
Number ESP8266160Temp "Esp8266 160 Temp [%.1f °C]" (TempHumiEsszimmer) ["Temperature"] {channel="mqtt:topic:xxx:ESP8266160Temp"}
Number ESP8266160Humi "Esp8266 160 Humi [%.1f %]" (TempHumiEsszimmer) ["Humidity"] {channel="mqtt:topic:xxx:ESP8266160Humi"}

Unter OH (Openhab 4) wird das Model mit den Location und den darunter angelegten z.B. Thermostaten angezeigt. OK
Im VSC (unter Items) wird unter Home die Gruppe „Versorgung“ mit einem Symbol Karteikarte angezeigt.
Die Location werden ohne Symbol angezeigt, aber keine items darunter.
Ich hoffe, ich konnte das einigermaßen erklären

Was mache ich falsch?
2. Frage: was bedeutet der Tag „Valve“? Wo kann man das Nachlesen?
Vielen Dank im Voraus
Horst

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von Maverick-811 »

Sorry, hier der Code

Code: Alles auswählen

Location    Home                                "Home"                                                              ["Location"]
Location    Erdgeschoss                         "Erdgeschoss"                              (Home)                  ["Location"]
Location    ZweiterStock                        "Zweiter Stock"                             (Home)                  ["Location"]
Location    Schlafzimmer                        "Schlafzimmer"                              (ZweiterStock)          ["Location"]
Location    Esszimmer                           "Esszimmer"                                 (Erdgeschoss)           ["Location"]

Group       Versorgung                          "Versorgung"                                (Home)                  ["Valve"]
Number      Watermeter                          "Water meter"                               (Versorgung)            ["Sensor"]          {channel="mqtt:topic:xxxx:Watermeter"}
Number      GasNumber                           "Gas number"                                (Versorgung)            ["Sensor"]          {channel="mqtt:topic:xxx:GasNumber"}
Number      EnergyMeter                         "Energy meter"                              (Versorgung)            ["Sensor"]          {channel="mqtt:topic:xxx:EnergyMeter"}

Group       TempHumiEsszimmer                   "Temp Humi Esszimmer"                       (Esszimmer)             ["Valve"]
Number      ESP8266160Temp                      "Esp8266 160 Temp [%.1f °C]"                (TempHumiEsszimmer)     ["Temperature"]     {channel="mqtt:topic:xxx:ESP8266160Temp"}
Number      ESP8266160Humi                      "Esp8266 160 Humi [%.1f %]"                 (TempHumiEsszimmer)     ["Humidity"]        {channel="mqtt:topic:xxx:ESP8266160Humi"}


Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von peter-pan »

Also hier ist ein Beispiel meiner castle.items Datei

Code: Alles auswählen

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//                                                 Locations                                                                                  +
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//                                                 Gebäudeplan - Building plan       
Group                             gEstate         "Anwesen Flurstück"                      <garden>                                 ["Location"]
//                                                 Aussenbereich Outdoor area                                            
Group                             gAussen         "Aussenbereich"                          <garden>              (gEstate)          ["Outdoor"]                     { widgetOrder="1" }
Group                             gFront          "Vorgarten"                              <garage_1>            (gAussen)          ["Garden"]                      { widgetOrder="1" }
Group                             gHof            "Garageneinfahrt"                        <garage_1>            (gAussen)          ["Driveway"]                    { widgetOrder="2" }
Group                             gGarage         "Garage"                                 <garage_1>            (gAussen)          ["Garage", "garage_detached"]   { widgetOrder="3" }
Group                             gBack           "Garten Südseite"                        <garage_1>            (gAussen)          ["Garden"]
Group                             gGhaus          "Gartenhütte"                            <garage_1>            (gAussen)          ["Outdoor"]
//                                                 Innenbereich - Indoor                                            
Group                             gInnen          "Innenbereich"                           <house>               (gEstate)          ["Indoor"]                      { widgetOrder="2" }
                                                                                           
Group                             gHome           "Casa Claudia"                           <house>               (gInnen)           ["Building"]
//                                                 Stockwerke - Floors                                               
Group                             gEG             "Erdgeschoss"                            <groundfloor>         (gHome)            ["GroundFloor"]                 { widgetOrder="2" }
Group                             gDG             "Dachgeschoss"                           <firstfloor>          (gHome)            ["Attic"]                       { widgetOrder="3"}
Group                             gUGElw          "ELW UG"                                 <cellar>              (gHome)            ["Basement"]                    { widgetOrder="1"}
Group                             gUGKel          "Keller"                                 <cellar>              (gHome)            ["Basement"]                    { widgetOrder="0"}
//                                                 Zimmer - Rooms                                                  
Group                             gEG_Bad         "Badezimmer"                             <bubble_bath>         (gEG)              ["Bathroom" ]                   { synonyms="Badezimmer" }
Group                             gEG_Essen       "Esszimmer"                              <dining>              (gEG)              ["DiningRoom" ]
Group                             gEG_Kind1       "Zimmer Claudia"                         <girl_3>              (gEG)              ["GuestRoom" ]                  { synonyms="Speisekammer" }
Group                             gEG_WC          "Toilette"                               <toilet>              (gEG)              ["Bathroom" ]                  
Group                             gEG_Wohnen      "Wohnzimmer"                             <living>              (gEG)              ["LivingRoom" ]
Group                             gEG_Schlafen    "Schlafzimmer"                           <bed>                 (gEG)              ["Bedroom" ]
Group                             gEG_Kueche      "Küche"                                  <catfridge>           (gEG)              ["Kitchen" ]
Group                             gEG_Windfang    "Windfang-Garderobe"                     <wardrobe>            (gEG)              ["Entry" ]
Group                             gEG_Vorgarten   "Vorgarten"                              <lawnmower>           (gEG)              ["Garden" ]
Group                             gEG_Terrasse    "Terrasse"                               <terrace>             (gEG)              ["Terrace" ]
Group                             gEG_Kind2       "Zimmer York"                            <boy_3>               (gEG)              ["Room" ]                        { synonyms="Kinderzimmer" }
Group                             gEG_Diele       "Diele"                                  <corridor>            (gEG)              ["Corridor" ]
Group                             gEG_Flur        "Flur"                                   <corridor>            (gEG)              ["Corridor" ]
Group                             gEG_Buero       "Arbeitszimmer"                          <office>              (gEG)              ["Office" ]                      { synonyms="Bureau,Bureaux" }
Group                             gDG_Speicher    "Dachboden"                              <attic>               (gDG)              ["Room" ]
Group                             gUG_Wohnen      "Wohn-Esszimmer"                         <sofa>                (gUGElw)           ["LivingRoom" ]
Group                             gUG_Schlafen    "Schlafzimmer"                           <bed>                 (gUGElw)           ["Bedroom" ]
Group                             gUG_Bad         "Badezimmer"                             <bath>                (gUGElw)           ["Bathroom" ]
Group                             gUG_Diele       "Flur"                                   <corridor>            (gUGElw)           ["Corridor" ]
Group                             gUG_Waschkueche "Waschküche"                             <washingmachine>      (gUGKel)           ["LaundryRoom" ]
Group                             gUG_Heizraum    "Heizungsraum"                           <heating>             (gUGKel)           ["BoilerRoom" ]
Group                             gUG_Keller      "Keller"                                 <cellar>              (gUGKel)           ["Cellar" ]
Group                             gUG_Holzkeller  "Holz-Keller"                            <cellar>              (gUGKel)           ["Cellar" ]
                                                  
Group                             gSpecial        "Special"                                                      (gInnen)           ["Indoor"]
Group                             gMonitor        "Monitoring"                                                   (gInnen)           ["Indoor"]

// aktive Gruppen             
Group:Switch:OR(ON,OFF)           gLight          "Monitoring Licht [MAP(de.map):%s]"      <light>               (gMonitor)         ["Indoor"]
Group:Contact:OR(OPEN,CLOSED)     gDoor           "Monitoring Türen [MAP(de.map):%s]"      <door>                (gMonitor)         ["Indoor"]
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//                                                Locations - End                                                                             +
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hier habe ich den grundsätzlichen Gebäudeplan abgespeichert. Das Equipment habe ich jeweils separat gruppiert. Z.B. avm.items(Heizkörper-Ventile,Steckdosen), astro.items(Astro-Binding), homematic.items(Fenstersensoren, Temperatur-Sensoren, Alarm-Sensoren...), etc...

Eine Erklärung für die Tags findest du hier und hier und hier. Und wenn ich kann, dann helfe auch ich sehr gerne und natürlich alle anderen hier im Forum. ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von udo1toni »

Warum denn ein archiviertes Projekt? Lieber auf das Original verweisen... https://github.com/openhab/openhab-core ... icTags.csv :)

Valve bedeutet "Ventil"...

VS Code hat ansonsten nichts mit den Semantic Tags am Hut, entsprechend gibt es da auch keine extra Symbole im Itembaum.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von Maverick-811 »

Hallo Peter-Pan,

vielen Dank für deine Antwort.
Du hast das sehr gut aufgebaut. Wenn ich es mit meinem vergleiche, dann ist der einzige Unterschied, dass Du alles in Groups machst (ich hatte Locations).
Frage: Warum gibt es Location wenn man Group hat? Gibt es da einen Sinn den ich nicht verstehe?

Deine Links für die Erklärung der Tags kenne ich und habe sie auch gelesen. Leider sind die Erläuterungen sehr wage gehalten.

Kannst Du noch die Spalten 4-7 in deinem Code erklären bzw. was die machen?

Vielen Dank
Horst

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von Maverick-811 »

Hallo udo1toni
udo1toni hat geschrieben: 17. Jan 2024 19:15
Valve bedeutet "Ventil"...
Das habe ich schon in Google Übersetzung gelesen :D

Ich hätte gerne gewusst, was es hier im VSC und Semantic Model bedeutet.
Du hast mir in meinem vorherigen Beitrag dieses "Valve" genannt um die items aus VSC in OH sichtbar zu machen.

Gruß
Horst

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von peter-pan »

Maverick-811 hat geschrieben: 18. Jan 2024 11:35 Ich hätte gerne gewusst, was es hier im VSC und Semantic Model bedeutet.
Ich weiss jetzt nicht genau, was du mit VSC meinst, aber im semantischen Modell (Tags) bedeutet es in diesem Fall ein Equipment zu qualifizieren, z.B. ein Thermostat oder auch eine Heizungsregelungsarmatur, etc.. Das gilt im Übrigen auch für eine Location. Diese wird über einen entsprechenden Tag als solche qualifiziert oder eine Eigenschaft (property).

In ophenHAB gibt es eigentlich nur Items in verschiedenen Typen und diese können wiederum zu Gruppen gehören. Das kannst du am besten hier nachlesen.

Spalte 4 = Icons
Spalte 5 = Gruppenzugehörigkeit
Spalte 6 = Tag
Spalte 7 = alles Mögliche ;)

Z.B.:

Code: Alles auswählen

Switch Dummy_5         "Testschalter Dummy5 [%s]"   (gPower1)   ["WallSwitch", "Point_Control_Switch"]      { stateDescription="pattern" [pattern="MAP(de.map):%s"], synonyms="Schalter" }
Group  gRFritz_07   "Thermostat Fritz RF07 ELW Schlafen"    <dect301>         (gUG_Schlafen)      ["RadiatorControl"]     
Number:Temperature radiator_valve_08_Set    "Solltemperatur York[%.1f %unit%]" <heating1>    (gRFritz_08,gRtSoll)   ["Setpoint"]  { channel="avmfritz:FRITZ_DECT_302:7590:123456789:set_temp", widget="oh-stepper-card" [step=0.5, min=6, max=24], listWidget="oh-stepper-item" [step=0.5, min=6, max=24] }
Das kann man also nicht so einfach in einem Satz sagen. Da ist das Lesen der Lektüre (items) unumgänglich. Aber das kommt schon mit der Zeit. (Rom ist auch nicht an einem Tag erbaut worden ;) ;) )
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von udo1toni »

VSC -> VisualStudio Code (mutmaßlich)

Immer noch der Hinweis: VS Code hat mit dem Semantic Model nichts am Hut. Man kann es dort konfigurieren, mehr nicht.

Das Semantic Model beschreibt die Items als hierarchisches Modell der Anlage.
Man hat z.B. ein Haus -> Group Item gHaus mit Location House.
Im Haus gibt es mehrere Stockwerke, z.B. das Erdgeschoss -> Group Item gEG_Haus mit Location GroundFloor
Im Erdgeschoss gibt es mehrere Räume, z.B. das Wohnzimmer -> Group Item gEG_Haus_Wozi mit Location LivingRoom.
Im Wohnzimmer gibt es verschiedene Geräte, z.B. einen AV Receiver -> Group Item gAVReceiver mit Equipment Receiver.
Der AV Receiver hat verschiedene Funktionen, z.B. die Lautstärke -> Dimmer(!) Item AVReceiverVolume mit Point Setpoint und Property SoundVolume.

Code: Alles auswählen

Group  gHaus            "Mein Haus"   <house>                       ["House"]
Group  gEG_Haus         "Erdgeschoss" <groundfloor> (gHaus)         ["GroundFloor"]
Group  gEG_Haus_Wozi    "Wohnzimmer"  <sofa>        (gEG_Haus)      ["LivingRoom"]
Group  gAVReceiver      "AV Receiver" <receiver>    (gEG_Haus_Wozi) ["Receiver"]
Dimmer AVReceiverVolume "Lautstärke"  <soundvolume> (gAVReceiver)   ["Setpoint","SoundVolume"] {channel="irgendwas"}
Es gilt die Regel, dass ein Item immer maximal ein Semantic Tag tragen darf (bis auf Point/Property, da darf es jeweils eines sein).
Weiterhin gilt, dass ein Item nur maximal einer Gruppe angehören darf, die im Semantic Model vorkommt. Eine Eigenschaft kann nur zu einem Gerät gehören, ein Gerät kann nur zu einem Standort gehören usw. Man kann jedes Item beliebig vielen Group Items zuordnen, nur dürfen die dann halt keine Semantic Tags haben, bis auf eines. :)

Die Idee hinter dem Semantic Model ist, dass man auf diese Weise ein strukturiertes Modell des Hauses bekommt, mit welchem openHAB dann verschiedene Ansichten vollautomatisch generieren kann (die Karteireiter "Standorte", "Geräte" und "Eigenschaften" am unteren Fensterrand der Main UI)

Das Semantic Model nutzt Standard Funktionen in openHAB (Tags, Groups), welche man auch für andere Dinge nutzen kann. Da ein Thing per Definition die Entsprechung eines einzelnen Geräts ist, kann openHAB auch automatisch Things im Semantic Model abbilden. Dabei werden dann die Items erzeugt, zu Groupen zugeordnet und passend getaggt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von Maverick-811 »

Hallo,
sorry das ich erst heute antworte. Mich hat es erwischt (Grippe).

Das mit VSC hatte ich in meinem ersten Betrag beschrieben, weil ich auch ständig meine Probleme mit den Abkürzungen habe.

Danke an Peter-Pan für die Erklärung der Spalten.
Ich gehe davon aus, dass das kleine "g" am Anfang des Gruppennames als Kennzeichnung für Group dient, aber kein muss ist?

Danke an udo1toni für deine Erklärung.

Generelle Frage:
Ich habe meine Home-Struktur mit VSC erstellt.
Ich möchte meine Shelly Produkte über Things in OH einbinden.
Meine eigenen Teile (ESP8266) die über MQTT laufen, mit VSC einbinden.
Stinkt getrennt.

Gibt es da ein Problem?
Udo1Toni hat da mal was geschrieben, wenn ich mich richtig erinnere.

Gruß
Horst

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH4 Fragen zu Semantic Model und Visual Studio Code

Beitrag von peter-pan »

Maverick-811 hat geschrieben: 20. Jan 2024 14:41 Ich gehe davon aus, dass das kleine "g" am Anfang des Gruppennames als Kennzeichnung für Group dient, aber kein muss ist?
...Namen sind Schall und Rauch :P . Da hat jeder so seine Gewohnheiten. Aber es ist richtig das "g" steht bei mir für Gruppennamen. Da gibt es auch noch andere Erkennungsmerkmale. Z.B.: bei Variablen und Konstanten in Rules wird gerne auch "str..." für String- und "n" für numerische Variablen/Konstanten genommen.

Was VSC betrifft, so kann auch jeder beliebige andere Texteditor (Nano, Notepad++, etc.) zum erstellen von Textdateien benutzt werden.

Der eigentliche Unterschied ist aber, mit einem Texteditor beschreibt man seine Items, Things, Transformation in einer anderen Form als mit den MainUI-Tools, nämlich in einer Textform als Textdatei. Hier muss man halt die einzelenen Parameter genau definieren. In der MainUI wählt man halt in den Einstellungen an was man machen möchte und füllt dann bestimmte Felder aus. VSC hat halt den Vorteil, das es hier eine Erweiterung für openHAB gibt. Näheres hierzu findest du hier.

Das ist für den einen einfacher, für mich ist halt die textbasierende Version übersichtlicher.

Grundsätzlich werden alle Geräte(Equipments) über Things in openHAB eingebunden. Die Things sind sozusagen die Schnittstelle zwischen openHAB und deinen Geräten(natürlich ausgehend von dem entsprechenden Binding). Über diese Schnittstelle(Thing) kannst du dann die Eigenschaften(properties) deiner Geräte definieren. Eine Besonderheit bei den Things ist eine" Bridge". Das ist aber auch ein Thing.

Schau mal hier, da findest du eine Übersicht über das Wesentliche und hier werden die Unterschiede zwischen Textonfiguration und der UI basierenden Version beschrieben.

Du kannst mit beiden Versionen arbeiten. Ich versuche nach Möglichkeit alles über Textkonfigurationen abzubilden, aber bei Homematic habe ich sozusagen eine Zwitterkonfiguration.

Bridge und Things habe ich hier über Discovery und UI erstellt. Aber alle Items sind textbasierend in ein einer .files Datei abgelegt.

MQTT ist bei mir auch etwas ausführlicher. Ich habe die Bridge(das Bridge-Thing) in einer Extra-Datei. Meine mqtt-basierenden Things und Items sind dann wieder in getrennten Dateien nach Art/Typ.
z.B.
ESP-Microchips-Things und Items
Sonoff-Steckdosen
Sonoff sonstige (basic, th16, pow2, etc)
Gosund-Steckdosen
sonstige MQTT

Aber wie gesagt, das ist alles Geschmackssache.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten