Scripting Tutorial

Hallo,

da nun alle meine Homematicgerät angebunden sind und ich diese auch über OpenHAB steuern kann, möchte ich nun den nächsten Schritt gehen: Automatisierung :smiley:

Jedoch fällt mir hier der Einstieg sehr schwer. Habe schon viel Beiträge zu dem Thema hier im Forum gelesen, doch häufig bezieht es sich auf die alte 0.5 Version oder es werden nur spezielle Probleme diskutiert. Mir fehlt aber noch der große Überblick. Da ich davon ausgehe, dass es anderen Einsteigern auch so geht, möchte ich eine einfaches “Hello World”-Tutorial während meiner Lernphase schreiben. Doch dazu muss ich noch einige Wissenslücken schließen und hoffe auf euren Unterstützung.

Als Einstiegsszenario stelle ich mir folgendes vor: Es gibt einen virtuellen Taster (Kinomodus), welcher auch durch OpenHAB erkannt wird. Wird dieser Schalter ausgelöst, soll ein Deckenfluter eingeschaltet werden und eine andere Lampe auf 50% gedimmt werden.

Und hier fange ich schon an zu straucheln. Brauche ich Remote Procedure Calls? Muss ich solch eine Funktionalität beim Neustart von homegear immer wieder neu laden? Müssen es immer ausführbare Skripte (’#!/usr/bin/env php’) sein, oder liest homegear den Inhalt auch so ein? Kann ich eine Methode, die bei einem Event aufgerufen wird, auch in der gleichen Datei definieren, oder muss ich immer über den Umweg runscript -> myscript.php gehen? Welche PHP-Methoden und -Variablen sind bereits vorhanden? Ich sehe viele Skripte in denen Methoden wie hg_invoke aufgerufen werden (https://forum.homegear.eu/viewtopic.php?f=17&t=205#p1383), ohne das diese vorher definiert worden sind, oder irgendetwas inkludiert wurde. Meines Wissens kennt der normale PHP-Interpreter diese Funktionen nicht.

Wahrscheinlich hilft mir beim Verständnis auch ein zusammenhängendes Beispiel:
[ol]
[li] Einlesen meiner Konfiguration/Scripts beim starten von Homegear[/li]
[li] Definition von virtuellem Device, hinzufügen eines Event(-Listener) und ausführen von mehrenen Aktionen in einer Datei.[/li][/ol]

Wie ihr seht, bin ich etwas ratlos.

1 Like

Du solltest dich mit den Rules in openHAB beschäftigen. Wenn du alle Homeatic devices in openHAB hast, geht dein Beispiel sehr einfach.

Gruß
Thomas

1 Like

Ich dachte, dass Regeln innerhalb Homegear deutlich schneller ausgeführt werden?

Ob die Regeln schneller ausgeführt werden kann ich dir nicht sagen. Wenn Du deinen Kinotaster in OpenHAB definiert hast, dann wäre eine rule recht einfach:

rule "Kinomodus an"
when
    Kinotaster changed to ON
then
    Deckenfluter.sendCommand(ON)
    Lampe.sendCommand(50%) // Muss man mal prüfen, da ich selber keine Dimmer habe
end

Das ganz lässt sich dann mit einer entsprechenden Rule für OFF auch wieder rückgängig machen.

Wo siehst du denn Geschwindigkeitsprobleme?

Thomas

Danke für das Beispiel. Werde ich mal ausprobieren.

Ich habe bisher noch keine Timingproblem. Ich kann mir aber vorstellen, dass unangenehm ist, wenn das Licht nach dem Tasterdruck mit mehreren hundert ms Verzögerung eingeschaltet wird. Ich meine mal gelesen zu haben, dass Homegear bei sowas deutlich schneller ist.
Mir fällt es noch schwer, den Funktionsschnitt zwischen Homegear und OpenHAB zu verstehen. Wenn ich Regeln in Openhab defininiern kann, warum hat Homegear dann auch eine eigene Scriptingengine? Wofür sollte Homegear zuständig sein, wofür OpenHab?

Die Verzögerung ist ein Argument, aber Du wirst sicherlich immer über openhab auslösen und ich bei geht z.B. ein Kellerlicht über openHab gesteuert an und das finde ich OK. Und wenn es nicht sofort angeht, weiss ich das was nicht stimmt.

Der Schnitt ist nicht eindeutig. openHab integriert sehr start und bietet eine Oberfläche. homegear hat aktuell ein paar Module, aber keine Oberfläche. Für mich ist der Schnitt so gezogen, dass openHAB Oberfläche, Integration und Logik macht und Homegear die Ansteuerung der Devices. Damit steige ich ncht zu tief in die Homegear Programmierung ein, habe aber alle Vorteile.

Gruß
Thomas

Hallo,

Homegear ist in der Tat deutlich schneller als OpenHAB, was das Skripting angeht. Auch denke ich, dass du über PHP als Skriptengine deutlich mehr machen kannst, als über die OpenHAB-Rules. Zum Teil ist es sicherlich auch Geschmackssache.

Ich würde mich sehr freuen, wenn du ein Tutorial zu dem Thema schreiben könntest. Am einfachsten telefonieren wir dazu einmal? Dann kann ich dir eine kleine Skripting-Einführung geben und dir zeigen, wie du ein virtuelles Gerät erzeugst.

Viele Grüße

Sathya

Gerne berichte ich dazu mal unabhängig aus eigener Erfahrung:

Zunächst war homegear für mich nur die Verbindung zu meinem Homematic LAN Interface und openHAB hatte die Regeln und erzeugte die Anzeige. Für den Anfang leicht und man hatte sehr schnell tolle Möglichkeiten.
Beispiel: Wenn der Pool unter 23 Grad hat, die Sonne scheint (meldet ja der Bewegungsmelder) und die Temperatur (Wetterstation) > 20 Grad ist, läuft die Poolpumpe nachmittags etwas länger, um die Solarheizung effektiver zu nutzen und angenehme Badetemperaturen zu erreichen.
Dabei macht es nichts, in welcher Zeit diese Prüfung ermittelt wird.

Dann kam der HM-Dis-EP-WM55 in mein Leben.
Es ist UNMÖGLICH in einer openHAB Rule auch nur kleine Dinge zu prüfen und eine individuelle Text-Meldung in ausreichender Zeit zurück zum Schalter zu bekommen (ein Hardware-Upgrade auf den NASA Großrechner habe ich nicht erwogen).

Nach und nach wanderten so die Regeln nach homegear und ich nutze openHAB heute nur noch als grafische Oberfläche.
PHP ist in dem Umfeld sowohl deutlich schneller als auch deutlich mächtiger als jede openHAB Rule.

Ich kann jedem Einsteiger nur raten sich am Anfang ggf. etwas länger in homegear und seine Möglichkeiten reinzufuchsen … es lohnt!

Hallo Kevin,

danke für Deinen Erfahrungsbericht. Insbesondere zum HM-Dis-EP-WM55 musst Du bei Zeiten mehr erzählen… Das Gerät steht auch noch auf meinem Wunschzettel :smiley:

Dank ein paar Hilfestellungen von Sathya habe ich nun auch den Start beim Skripten geschafft. Schreibe ich derzeit alles mit, damit auch andere einen leichteren Einstieg finden.

Grüße
Sven

Wohin hast du denn das alles mitgeschrieben? Ich wäre interessiert

Hallo Lemy,

schau mal hier im Thread, da habe ich ein umfassendes Script für die beiden Wanddisplays gepostet.

Es ist im Moment noch für das Display mit OLED-Variante geschrieben, aber die Tage kommt mein ePaper-Display und dann optimiere ich das Script für dieses noch. Aber grundsätzlich sind sich die beiden sehr ähnlich und ich habe das ePaper-Display auch schon vorgesehen.

Hallo Lemy,

hier der Entwurf:
tutorial.txt (9.7 KB)

Grüße
Sven

3 Likes

Oh wow dankeschön. Guck ich bei Gelegenheit mal rein.