LoxBerry XL - EXtended Logic

LoxBerry XL ist eine Funktionsbibliothek speziell für Anwender von LoxBerry - also nicht für die Plugin-Entwickler, sondern für die mehr als 4000 Benutzer von LoxBerry.

Zielgruppe sind Benutzer, denen das Zusammenbasteln von Logiken in der Loxone Config zu mühevoll, und das Programmieren mit PicoC zu gefährlich ist, sich aber trotzdem - für die eigene Installation - ein paar Funktionen zusammenstellen wollen. Initiale Intention war das Zusammenstoppeln von Daten für die Sprachausgabe, was direkt in Loxone ein Spagat ist.

LoxBerry XL ist Scripting in PHP. Der notwendige Skill für LoxBerry XL ist ein wenig PHP-Erfahrung (um zum Beispiel eine Schleife oder if-Bedingungen programmieren zu können) - oder das Ergoogeln dieser Skills 

LoxBerry XL stellt ein Interface bereit, mit dem ganz einfach lesend und schreibend auf den Miniserver, und MQTT zugegriffen werden kann. Außerdem stellt es Konstanten zur Verfügung, die man im SmartHome-Umfeld und bei der Sprachausgabe immer braucht.

Der Frage- und Informations-Thread im LoxForum: https://www.loxforum.com/forum/projektforen/loxberry/allgemeines-aa/269036-loxberry-xl-extended-logic

Aber am besten zeigen wir hier mal ein Beispiel:

<?php
require_once "loxberry_XL.php";
 
// XL stellt Variablen für Uhrzeit und Datum bereit
if( $xl->hour < 11 ) {
    $text = "Guten Morgen!";
} elseif ( $xl->hour < 17 ) {
    $text = "Schönen Nachmittag!";
} else {
    $text = "Guten Abend!";
}
 
// XL kann direkt von deinen Miniserver-Inputs lesen
$text .= "Draußen hat es " . $ms1->Außentemperatursensor . " Grad. ";
 
// XL unterstützt alle Miniserver, die du in LoxBerry konfiguriert hast (z.B. im Gateway-Konzentrator-Betrieb, mehrere Wohnungen, oder auch via Loxone CloudDNS)
// Hier ein Datenabruf vom Miniserver 2
if ( $ms2->Alarmanlage_status == "1" ) {
    $text .= "Die Alarmanlage ist SCHARF!";
} else {
    $text .= "Die Alarmanlage ist deaktiviert.";
}
 
// LoxBerry XL kann dann auch den Text zum Beispiel in einen virtuellen Texteingang schreiben
$ms1->Haustür_TTS = $text;
 
// ... oder das Licht einschalten :-)
$ms1->Licht_Wohnzimmer("pulse");
 
// LoxBerry XL unterstützt standardmäßig MQTT über das MQTT Gateway plugin
if( $mqtt->get("shellies/shellyplug-s-267E3C/relay/0" == "on") ) {
    // Licht brennt! Ausschalten!
    $mqtt->set("shellies/shellyplug-s-267E3C/relay/0/turn", "off");
}   

Scripte am LoxBerry speichern

Die Scripte können direkt mit dem Windows Explorer auf einem eigenen Ordner abgelegt werden:

Verbinde dich mit dem Windows Explorer zur Freigabe \\loxberry\XL

Speichere deine Scripte im Ordner user

(Achtung: Scripte, die nicht in user liegen, werden von LoxBerry Update überschrieben bzw. gelöscht.)

Aufruf der Scripte

Gedacht ist es so, dass man die Scripte per Virtuellem HTTP Ausgang aus Loxone aufruft. 

Virtueller Ausgang: http://<loxberryuser>:<loxberrypasswort>@loxberry

Virtueller Ausgangsbefehl: /XL/user/<meinscript>.php

Obwohl wir dafür noch keine spezielle XL-Implementierung haben, kann man die Scripte natürlich mit den herkömmlichen Linux Cronjobs auch periodisch starten, oder gar einfach laufen lassen.

Rückgabe an den Miniserver

Da XL direkt in virtuelle Eingänge bzw. Texteingänge schreiben kann, beschreibe mit XL einfach den gewünschten Funktionsbaustein oder virtuellen (Text-)Eingang, und sende deine Nachricht per MQTT. Der HTTP-Response selbst ist dann eigentlich nebensächlich. Aber das kann jeder machen wie er möchte 

Kompatibilität 

Alle LoxBerry XL Funktionen bleiben - wie auch die LoxBerry Libraries für Plugin-Entwickler - immer kompatibel, auch wenn du deinen LoxBerry aktualisierst. Es können natürlich neue Features dazukommen - deine Aufrufe funktionieren dennoch weiterhin.

Da LoxBerry XL auf die LoxBerry-Bibliotheken für die LoxBerry Plugin-Entwickler basiert, ist LoxBerry XL immer auf dem neuesten Stand. Beispielsweise unterstützt LoxBerry XL automatisch den Miniserver V2 mit https, IPv6 und Loxone Cloud DNS.

Übersicht, wie du auf die Scripte zugreifen kannst

Von wo Wohin
Windows Freigabe (Windows Explorer, Notepad++) \\loxberry\XL\examples

\\loxberry\XL\user
SSH (Putty), oder

LoxBerry Dateimanager
/opt/loxberry/webfrontend/html/XL/examples

/opt/loxberry/webfrontend/html/XL/user
Webbrowser bzw. Loxone Virtueller Ausgang
(zum Aufrufen der Scripts)
http://loxberry/XL/examples/<name>.php

http://loxberry/XL/user/<name>.php