Sitemaps in openHAB 2 erstellen

In diesem Artikel erfährst Du, wie Du die zuvor manuell erstellten Items in eine Sitemap einbinden kannst. Wenn Du noch keine manuellen Items erstellt hast, kannst Du das mit Hilfe von diesem Artikel tun.

Um eine Sitemap zu erstellen, ist es am einfachsten, wenn Du zuvor die Verwaltung der Konfigurationsdateien von openHAB im Visual Studio Code Editor eingerichtet hast. Du kannst sie aber auch in einem gewöhnlichen Texteditor erstellen und danach auf den openHAB Server laden.

Erstelle zuerst eine Sitemap Datei mit der Endung .sitemap im Verzeichnispart /ip-des-openhab-servers/openhab-conf/sitemaps/xxx.sitemap.

Schreibe jetzt in die erste Zeile:

sitemap name-der-sitemap label="titel-der-sitemap"{

Ich habe es z.B. so benannt:

sitemap Zuhause label="Hauptmenue" {

Du kannst in der Sitemap quasi verschiedene Blöcke oder Absätze einfügen und sie somit individuell gestalten. Ich werde Dir jetzt ein paar verschiedene Blöcke zeigen. Schreibe den Code einfach immer in eine neue Zeile und baue Dir damit quasi Deine Blöcke zusammen. In der Spalte mit den Codes sind Beispiele, die Du selbstverständlich noch an Deine Items etc. anpassen musst.

BlockBeschreibungCode
FrameAbsatz, bzw. übergeordnetes ElementFrame label="Gruppen" {
-weitere Blöcke-
}
GroupGruppe für Ordnung der ItemsGroup item=gEG label="Erdgeschoss" icon="groundfloor"
SwitchSchalter für z.B. LampenSwitch item=LampeEg
Texteinfache TextanzeigeText item=Date
SetpointEinstellung von z.B. Temeraturen für HeizkörperSetpoint item=HeizungWZ minValue=15 maxValue=25
step=1
ColorpickerFarbauswahl für farbige LampenColorpicker item=bunteLampe
SliderLeiste zum Dimmen von z.B. LampenSlider item=LampeWZ label=Lampe im Wohnzimmer
VideoVideoübertragung von z.B. einer ÜberwachungskameraVideo url="https://..."
WebviewAnzeige von einer WebsiteWebview item=BloggingweltSeite url="https://bloggingwelt.de" height=8

Das könnte dann z.B. so aussehen:

sitemap Zuhause label="Hauptmenue" {
Frame label="Gruppen" {
    Group item=gEG label="Erdgeschoss" icon="groundfloor"
    Switch item=eg_wz_st1
    Switch item=eg_ku_Strasse
    }	
Frame {
   Text item=CalDav_Muelltonne
   Text item=CalDav_Date
      }
}

Hier sind zwei Blöcke eingebaut. Im ersten Block steht die Gruppe vom Erdgeschoss, in dem in der Items-Datei alle passenden Items untergeordnet wurden. Im zweiten Block wird die nächste Mülltonnenart und dessen Abholtermin angezeigt. Das kann man mit einem Add-on einrichten, was ich Dir noch in einem anderen Beitrag erklären werde.

Die Sitemap wird jetzt in der openHAB App und in der Basic und Classic UI verwendet. Wenn Du mehrere Sitemaps erstellt hast, kannst Du in der App und im Browser eine Standard Sitemap auswählen, die normalerweise verwendet wird.

Wenn Du noch eine Frage zu diesem Artikel hast, kannst Du sie mir gerne in einem Kommentar stellen.

Jan

Jan

Ich bin Jan und ich freue mich, dass Du meinen Blog gefunden hast. Ich blogge in meiner Freizeit über Smart Home, 3D Druck und Technik und versuche, Dir mit meinen Beiträgen möglichst gut zu helfen.

Alle Beiträge ansehen von Jan →

14 Gedanken zu “Sitemaps in openHAB 2 erstellen

  1. Gute Tag

    Ich finde den Blog sehr gut. Ich denke, dass sehr viel Herzblut in die Website gesteckt wurde und aktiv an neuen Artikeln gearbeitet wird. Top!
    Hoffe es kommt vielleicht mal ein Artikel über Alexa oder Google Home.
    Bin sehr begeistert.

    Liebe Grüße an das Team
    Günthher

    1. Hallo Günthher;
      vielen Dank für Dein positives Feedback. Es freut mich, dass Dir mein Blog gefällt. Ich werde sehr wahrscheinlich bald einen Artikel veröffentlichen, in dem erklärt wird, wie Du Alexa oder Google Home mit openHAB verbinden kannst.
      Viele Grüße
      Jan

  2. Hallo Jan,

    danke für den interessanten Artikel! Ich bin noch blutiger Anfänger in Sachen openHAB und freue mich natürlich sehr über jede Art von Hilfestellung. Ich habe dein Tutorial befolgt, jedoch schaffe ich es nicht meinen Switch in der BasicUI zu schalten. Wärest du bitte so nett und siehst es dir mal an und gibst mir einen Tipp wo mein Fehler liegt?

    meine.items:

    /************************************************** Gruppen ********************************************/
    //–> Räume
    Group EG_Wohnzimmer

    //–> Funkionen

    /************************************************** Items ********************************************/
    //—> EG
    //–> Bad

    Switch eg_wz_licht “Licht Wohnzimmer” (EG_Wohnzimmer) {channel=”zwave:device:ffac095e:node4:switch_binary”}

    meinHeim.sitemap:

    sitemap Zuhause label=”Hauptmenue” {
    Frame label=”Gruppen” {
    Group item=EG_Wohnzimmer label=”Erdgeschoss” icon=”groundfloor”
    Switch item=eg_wz_licht
    }
    Frame {
    Text item=CalDav_Muelltonne
    Text item=CalDav_Date
    }
    }

    Vielen Dank für deine Hilfe!

    Viele Grüße, thepixel

    1. Hallo thepixel,

      schön, dass Dir meine Anleitung gefällt. Ich versuche Dir gerne zu helfen. Was wird denn angezeigt, wenn Du die BasicUI aufrufst? Kommt eine Fehlermeldung oder fehlt einfach nur der Schalter?
      Du kannst noch probieren, bei Deinem Item [“Switchable”] zu ergänzen. Das wäre dann also Switch eg_wz_licht “Licht Wohnzimmer” (EG_Wohnzimmer) [“Switchable”] {channel=”zwave:device:ffac095e:node4:switch_binary”}. Ansonsten sehe ich keinen großen Fehler in Deinen Dateien 🤔.

      Viele Grüße
      Jan

  3. Hallo Jan,

    vielen Dank für deine Hilfe! Das Problem lag anscheinend an den Anführungszeichen. 😧 Habe den Fehler zum Glück gefunden. Das items-Skript mag keine (“), diese müssen gerade sein und nicht leicht geschwungen.

    Hast du bitte noch einen Tipp für mich wo ich Anfänger-Tutorials für die Generierung von Szenen finde? Alles was ich finde übersteigt mein Verständnis – das ist derart kompliziert. Ich komme ja vom Fibaro Home Center Lite und da ging das ja sehr einfach.

    Danke nochmals & viele Grüße,
    Mario

    1. Hallo Mario,

      schön dass Dein Problem jetzt gelöst ist.
      Meinst Du mit Szenen die sogenannten “Rules” von openHAB? Dazu habe ich schon einen Beitrag geplant, wo erklärt wird, wie Du z.B. Rollläden automatisch steuern kannst. Ich werde aber noch einen Artikel zu Regeln im allgemeinen veröffentlichen.
      Welche Szenen möchtest Du denn z.B. erstellen?

      Viele Grüße
      Jan

  4. Hallo Jan,

    danke für deine Antwort! Ja, ich denke die heissen in openHAB Rules. Zum Beispiel möchte ich dass das Licht angeht wenn der Motion Sensor eine Bewegung erkennt und dieses sich nach 3 Minuten wieder ausschaltet – also ganz simple Dinge. Das ging mit Fibaro und dem GUI wirklich einfach, mit openHAB kapiere ich das nicht.

    Viele Grüße
    Mario

    1. Hallo Mario,

      wenn Du ein Item für den Bewegungssensor erstellt hast, kannst Du im Rules-Ordner Deiner Konfigurationsdateien eine Datei, wie z.B. Licht.rules erstellen. In dieser fügst Du dann z.B. so etwas ein:

      rule “Licht an bei Bewegunsmelder”
      when
      Item eg_wz_bewegungsmelder_1 changed to ON
      then
      sendCommand(eg_wz_licht, ON)
      timer = Timer.createTimer(now.plusSeconds(180) [|
      sendCommand(eg_wz_licht, OFF)
      timer = null
      ])
      end

      Bis jetzt habe ich leider auch noch kaum eine einfach zu verstehende Anleitung auf Deutsch gefunden, weswegen ich bald einen Artikel dazu veröffentlichen werde. Wenn Du noch eine andere Regel brauchst, kann ich sie Dir aber gerne jetzt schon zeigen 😉.

      Viele Grüße
      Jan

  5. Hallo Jan,

    danke dass du dir Zeit für meine “Probleme” nimmst! 👍

    Wie schon angedacht funktioniert es leider nicht, anscheinend habe ich wieder irgendwo einen Fehler drinnen. Ich habe in meine .items den Motion Sensor hinzugefügt

    Switch eg_ga_bewegung “Bewegung Garderobe” (EG_Garderobe) [“Switchable”] {channel=”zwave:device:ffac095e:node2:alarm_motion”}

    und eine .rules erstellt mit folgendem Inhalt:

    rule “Licht an bei Bewegunsmelder”
    when
    Item eg_ga_bewegung changed to ON
    then
    sendCommand(eg_ga_licht, ON)
    timer = Timer.createTimer(now.plusSeconds(180) [|
    sendCommand(eg_ga_licht, OFF)
    timer = null
    ])
    end

    Hast du vielleicht eine Idee was ich übersehe?

    Viele Grüße,
    Mario

    1. Das komische ist aber wenn ich die Szene über die BasicUI Ansicht starte, funktioniert es – siehe Log.

      2019-11-14 11:22:32.927 [ome.event.ItemCommandEvent] – Item ‘eg_ga_bewegung’ received command ON
      2019-11-14 11:22:32.932 [nt.ItemStatePredictedEvent] – eg_ga_bewegung predicted to become ON
      2019-11-14 11:22:32.939 [vent.ItemStateChangedEvent] – eg_ga_bewegung changed from OFF to ON
      2019-11-14 11:22:33.167 [ome.event.ItemCommandEvent] – Item ‘eg_ga_licht’ received command ON
      2019-11-14 11:22:33.179 [nt.ItemStatePredictedEvent] – eg_ga_licht predicted to become ON
      2019-11-14 11:22:33.191 [vent.ItemStateChangedEvent] – eg_ga_licht changed from OFF to ON
      2019-11-14 11:22:33.257 [vent.ItemStateChangedEvent] – zwave_device_ffac095e_node3_switch_binary1 changed from OFF to ON
      2019-11-14 11:22:36.156 [vent.ItemStateChangedEvent] – zwave_device_ffac095e_node3_meter_watts1 changed from 0 to 20.8

      1. Hallo Mario,

        vermutlich stimmt dann etwas bei dem Bewegungsmelder, oder dessen Konfiguration nicht, da ja der Schritt, dass der Bewegungsmelder quasi den Switch selbst betätigt, nicht funktioniert. Was für einen Bewegungsmelder benutzt Du denn?

        Viele Grüße
        Jan

        1. Hallo Jan,

          den Motion Sensor von Fibaro. Im openhab.log finde ich folgenden Error und kann diesen nicht zuordnen. Habe schon danach gegoogelt, aber nichts brauchbares gefunden.

          Error log:
          Rule ‘Licht an bei Bewegungsmelder’: ‘createTimer’ is not a member of ‘java.lang.Class’; line 8, column 9, length 87

          Vielen Dank und viele Grüße,
          Mario

          1. Hallo Jan,

            ich habs hinbekommen – hier die rule. Es fehlte am Anfang die Definition der Variable Timer. Ich bin mir nur nicht ganz sicher ob ich am Ende noch die “timer=null” benötige. Was glaubst du?

            var Timer timer = null
            rule “Beleuchtung Garderobe an, für 2 Minuten”
            when
            Item Motion_Garderobe changed
            then
            logInfo(“FILE”, “Setting to ON and creating timer”)
            Licht_Garderobe.sendCommand(ON)
            timer = createTimer(now.plusMinutes(2), [|
            logInfo(“FILE”, “Timer expired and setting to OFF”)
            Motion_Garderobe.postUpdate(OFF)
            Licht_Garderobe.sendCommand(OFF)
            //timer = null
            ])
            end

            Viele Grüße,
            Mario

          2. Hallo Mario,

            schön dass es mit den Rules noch geklappt hat. Also wenn kein Fehler angezeigt wird, kann das timer=null eigentlich drin bleiben, ich bin aber nicht sicher, ob man es wirklich braucht, da ja eigentlich kein Timer mehr sein sollte, also der timer=null ist, wenn diese Zeile ausgeführt wird.

            Viele Grüße
            Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.