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"{
Code-Sprache: JavaScript (javascript)
Ich habe es z.B. so benannt:
sitemap Zuhause label="Hauptmenue" {
Code-Sprache: JavaScript (javascript)
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.
Block | Beschreibung | Code |
---|---|---|
Frame | Absatz, bzw. übergeordnetes Element | Frame label=“Gruppen“ { -weitere Blöcke- } |
Group | Gruppe für Ordnung der Items | Group item=gEG label=“Erdgeschoss“ icon=“groundfloor“ |
Switch | Schalter für z.B. Lampen | Switch item=LampeEg |
Text | einfache Textanzeige | Text item=Date |
Setpoint | Einstellung von z.B. Temperaturen für Heizkörper | Setpoint item=HeizungWZ minValue=15 maxValue=25 step=1 |
Colorpicker | Farbauswahl für farbige Lampen | Colorpicker item=bunteLampe |
Slider | Leiste zum Dimmen von z.B. Lampen | Slider item=LampeWZ label=Lampe im Wohnzimmer |
Video | Video von z.B. einer Überwachungskamera | Video url=“https://…“ |
Webview | Anzeige von einer Website | Webview 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
}
}
Code-Sprache: PHP (php)
Hier ist ein Block eingebaut. In ihm steht die Gruppe vom Erdgeschoss, in dem in der Items-Datei alle passenden Items untergeordnet wurden.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Hallo Jan,
danke für deine tollen Tutorials.
Sie sind einfach aufgebaut und so geschrieben das man es als Anfänger auch gut versteht.
Besten Dank dafür.
eine kleine Frage hätte ich aber.
in der .item Liste habe ich die Items schon Gruppen zugeordnet.
Diese Gruppen tauchen dann in der .sitemap auf.
Dann muss ich aber trotzdem das Item selbst auch nochmal in die Sitemap schreiben?
Die Sitemap schaut nicht nach welche Items alle zu der Gruppe gehören?
Gruß Thomas
Hallo Thomas,
Vielen Dank für das positive Feedback. Ich versuche dir gerne zu helfen. Normalerweise musst du nur Group item=gEG (oder mit deinem Namen für die Gruppe) in deine Sitemap schreiben, damit alle Items verschachtelt unter dieser Gruppe angezeigt werden. Du kannst aber auch einzelne Items in der Sitemap dazu erstellen, unabhängig von der Gruppe. Schicke am besten Mal die Auszüge aus deinen Dateien, dann kann ich Mal schauen, ob ich einen Fehler sehe ?.
Viele Grüße
Jan
Es kann auch sein, dass es mit der neuen Version 2.5 zusammenhängt, ich habe im Moment auch ein paar Probleme damit. Welche Version von openHAB nutzt du denn?