http://www.iobroker.net/?page_id=5385&lang=de
http://forum.iobroker.net/viewtopic.php?f=21&t=3943&p=36995#p36995
Grundlegendes
In ioBroker gibt es verschiedene Möglichkeiten eine Art von Programmierung vorzunehmen. Exemplarisch sollen hier der Scenen-Adapter, Blockly und Javascript genannt werden. Die starrste Möglichkeit ist der Szenen-Adapter. Mit ihm sind die Möglichkeiten auf die Einstellungen (welche nicht zu verachten sind) beschränkt. Das andere Extrem ist Javascript. Hier kann der Anwender seine Ideen „frei“ formulieren. Dadurch sind die ersten Schritte vermeintlich recht schwer. Die Flexibilität des Systems zeigt sich jedoch gerade darin, dass man nicht nur Skripte, sondern sogar eigene Adapter schreiben kann. Man hat ein mächtiges Werkzeug zur Hand. Immer wieder gibt es Versuche, den Neueinsteiger die Programmierung etwa leichter zu machen. In ioBroker ist das Blockly. Auch in anderen System z.B. Homematic wurden diese Schritte gemacht. Letztendlich handelt es sich dabei um Generatoren, mit dessen Hilfe versteckt ein Skript erzeugt wird. Mich persönlich stört an diesen Click-Systemen, dass diese nicht so flexibel sind wie die echte Programmiersprache. Daher möchte ich hier zeigen, dass es gar nicht so schwer ist, selber ein Programm oder sagen wir fairerweise ein Progrämmchen zu schreiben. Welches System man wählt ist letztendlich Geschmacksache, die hier nicht weiter diskutiert werden soll.
Das erste Programm - Hallo Welt!
Sehr häufig wird für die erste Berührung mit einer Programmiersprache ein „Hallo Welt!“-Programm geschrieben. Auch wir wollen das Ausprobieren, da man damit ganz wichtige Schritte der Programmierung kennen lernen kann. Das "Hallo Welt!“ Programm gibt dabei auf dem Bildschirm die Meldung "Hello Welt!" aus.
Zunächst muss, sofern noch nicht geschehen, der Javascript-Adapter wie üblich installiert und gegebenenfalls gestartet werden. Besondere Einstellungen sind zunächst nicht notwendig.
Nunmehr muss noch der Reiter „Skripte“ aktiviert werden. Rechts oben auf der Admin-Seite befindet sich ein Button mit einem Bleistift. Diesen muss man anklicken und kann dann unter „Zeige“ den „Skripte“-Reiter auswählen. Nunmehr kann man durch nochmaliges des „Bleistifts“ den Verwaltungsmodus verlassen. Klicken wir nunmehr auf Skripte. Es er schein ein Fenster, bei dem rechts die vorhandenen Skripte (bei Neuinstallation gibt es nur zwei Rubriken common und global) und links der Inhalt des ausgewählten Skripten unten der Konsole angezeigt wird. Jetzt können wir unser erstes Skript schreiben.
Dazu klicken wir auf der linken Seite oben auf das Blatt Papier mit dem Eselsohr. Auf der rechten Seite ändert sich die Ansicht. Bei Name wählen wir „Keine Gruppe“ aus. „Skript1“ ersetzen wir durch „Test“. Bei Enginetyp wählen wir Javascript aus. Jetzt können wir unser erstes Progrämmchen schreiben. Dazu geben wir folgende Zeile ein:
console.log("Hallo Welt!");
Nun können wir das Skript speichern. Bis auf die kleine Änderung, dass rechts unter den Skripten „Test“ aufgeführt ist, ändert sich nichts. Das Skripts damit gespeichert und einsatzfähig. Jetzt wollen wir ein Erfolgserlebnis haben und das Programm ausführen. Dazu klicken wir im linken Fenster rechts neben dem Namen des Programms auf das „Play“-Symbol (rot). Die Farbe ändert sich auf grün. Wenn man genauer schaut hat sich auch etwas getan. Rechts unten im Log-Fenster gibt es drei Zeilen:
` > 11:43:43.924[info]javascript.0 Start javascript script.js.Test
11:43:43.924[info]javascript.0 script.js.Test: Hallo Welt!
11:43:43.924[info]javascript.0 script.js.Test: registered 0 subscriptions and 0 schedules `
Die zweite Zeile ist die für uns zur Zeit interessantes: Hier wurde auf dem Bildschirm der Text „Hallo Welt!“ ausgegeben. Wenn man möchte, kann man den Text im Skript ändern und neu speichern. Das Programm wird dann neu gestartet und der geänderte Text wird ausgegeben. Das Log kann man sich natürlich auch im Reiter Log anschauen. Uns reicht zurZeit aber diese Ausgabe, da nur die relevanten Logs zu unserem Skript angezeigt werden.
Hier noch ein paar Hinweise zu den Log: Beim Starten des Programms wird immer angezeigt, dass das Skript gestartet wurde. Eine Zeile im Log beginnt immer mit der Uhrzeit. Der Letzte Zahl bei der Uhrzeit ist eine Angabe in Millisekunden. Dahinter wird angezeigt, um was für einen Typ von Nachricht es sich handelt. Hier handelt es sich im eine bloße Information. Fehler und Warnungen werden anders dargestellt. Danach wird angezeigt, welche Adapter-Instanz die Nachricht verschickt. Hier ist es javascript.0. Man kann auch mehrere Instanzen des Javascript Adapters erzeugen und starten (hierzu später mehr). Danach wird im Beispiel in der ersten Zeile angezeigt, dass das Programm gestartet wurde.
Ind er Zeiten Zeile wurde unsere Nachricht ausgegeben. Die dritte Zeile können wir zum gegenwärtigen Zeitpunkt ignorieren.
Falls sie das Programm geändert und gespeichert haben, wird die Ausgabe wiederholt. Interessant ist noch das wischen der ersten und der Zeiten Ausgabe sich noch eine (oder mehrere Zeilen) dazwischengeschoben haben:
` > 11:52:31.061 [info] javascript.1 Stop script script.js.Test
11:52:31.068 [info] javascript.0 Stop script script.js.Test `
In allen Instanzen der Javascript Adapters wurde das Programm gestoppt. Eigentlich hätte es gereicht, wenn das Programm in der Instanz 0 des Adapters gestoppt worden wäre. Da man aber die Zuordnung der Instanz ändern kann, werden in allen Instanzen das Programm vorsichtshalber gestoppt. In Welcher Instanz das Programm läuft kann man im linken Fenster in der ersten Spalte rechts vom Skript-Namen lesen und ändern. Das heißt aber auch, dass egal in welcher Instanz ein Programm läuft, der Name des Programms nur einmal vergeben werden kann.
Jetzt zu dem eigentlichen Programm:
Das Skript besteht aus nur einer Zeile. Konsole ist ein sogenanntes Objekt. Was das ist soll zunächst offen bleiben. Man Stelle sich ein Objekt einfach als Schweizer Armee Taschenmesser vor. Ein solches Messer hat mehrere Werkzeuge, z.B. Messer und Schraubendreher. Genauso ist es bei einem Objekt. Es hat mehrere Funktionen. der Name der Funktion steht rechts von dem Punkt hinter „console“. Die Funktion heißt log. Das es sich um eine Funktion handelt erkennt man an den geschwiegen Klammern. Also heißt die Funktion richtig log(). Die Funktion hat die Aufgabe eine Info in das log zu schreiben. Der Inhalt der ausgegeben wird ist eine Zeichenkette. Eine Zeichenkette setzt man in sogenann Hochkommata, also z.B.: "Hallo Welt!“.
Damit ist das Programm erklärt. Noch zwei wichtige Anmerkungen: DasProgramm wird bei Start sofort ausgeführt. Des Weiteren läuft das Programm bis es beendet wird. Das bedeutet, dass auch wenn alle Zeilen des Programms abgearbeitet sind, das Programm in einer quasi Endlosschleife weiterläuft. Wozu das notwendig ist, werden wir bald sehen.
Soweit der erste Teil. Der nächste Teil wird sich mit der Ereignisbehandlung beschäftigen. Beispiele: Ein Lichttaster wird gedrückt und es soll das Licht angehen; es ist 8 Uhr und der Rollladen soll aufgehen.
Bis dahin,
Gerhard