Inhaltsverzeichnis

Zugriff auf den Miniserver

LoxBerry XL stellt beim Starten des Scripts automatisch die Verbindung zu deinem bzw. deinen Miniservern her. Es werden dafür die Angaben und Einstellungen im Miniserver-Widget von LoxBerry genutzt.

In deinem Script hast du damit automatisch Zugriff mit der Variable $ms1, bei mehreren Miniservern z.B. $ms1, $ms2, $ms3 und so weiter. Beim Starten des Scripts wird angezeigt, welche Miniserver verfügbar sind:

Mit dieser Variable hast du dann direkten Zugriff auf die Logik-Bausteine und Eingänge/Ausgänge deines Miniservers:

Beispiel

Bezeichnung der Ein-/Ausgänge des Miniservers

Übergeben wird im Beispiel bei $ms3->LED_Spot exakt die Bezeichnung des Bausteins, oder Virtuellen Eingangs, Virtuellen Texteingangs oder Virtuellen Ausgangs.  Bezeichnung und Beschreibung!? → "Bezeichnung" und "Beschreibung" von Objekten

Zu beachten gilt dabei Folgendes:

Folgende Syntax funktioniert:

Folgende Syntax funktioniert nicht:

Abrufen und Senden von Daten vom/zum Miniserver

Die Syntaxen zum Abrufen und Senden von Daten sind im Beispiel gezeigt.

Beim Senden von Daten können sowohl dezimale Werte (auch mit Nachkommastellen), Texte, als auch Digitalwerte gesendet werden.

Für digitale Bausteine stehen die Befehle der Loxone Webservices zur Verfügung:  Ein, On, Aus, Off, Impuls, Pulse, sowie für Bausteine mit zwei Ausgängen: ImpulsPlus, ImpulsMinus, PulseUp, PulseDown, ImpulsAuf, ImpulsAb, PulseOpen, PulseClose, PlusEin, PlusAus, UpOn, UpOff, AufEin, AufAus, OpenOn, OpenOff, MinusEin, MinusAus, DownOn, DownOff, AbEin, AbAus, CloseOn, CloseOff

Syntax- und Code-Beispiele

// Daten abrufen
$licht_ist_an = $ms1->LED_Spot;
$licht_ist_an = $ms1->LED_Spot();
$licht_ist_an = $ms1->{'LED-Spot'};
$licht_ist_an = $ms1->get('LED-Spot');
 
// Daten senden
$ms1->LED_Spot("On");
$ms1->LED_Spot = "On";
$ms1->{'LED-Spot'} = "On";
$ms1->set('LED-Spot', "On");
 
$ms1->Alarmtext = "Der Alarm wurde ausgelöst!";
$ms1->Soll_Temperatur = 23.5;

Einheit filtern

Das Abrufen von Daten liefert eine gegebenenfalls in den Eigenschaften des Bausteins hinterlegte Einheit mit.

In diesem Beispiel würde der Abruf $ms1->Außentemperatur zurückliefern: 7.5°C

Um die Einheit zu filtern, liefert LoxBerry XL die Funktion clean() mit:

echo $ms1->Außentemperatur;
// Ausgabe: 7.5°C
 
echo clean( $ms1->Außentemperatur );
// Ausgabe: 7.5

Vorsicht bei Schleifen und if-Abfragen

Schlechtes Beispiel  :

if ( $ms1->Außentemperatur < -20 ) {
    echo "Heute ist es sehr, sehr kalt!";
} elseif( $ms1->Außentemperatur < 0 ) {
    echo "Es gefriert draußen."; 
} elseif( $ms1->Außentemperatur < 20 ) {
    echo "Temperatur ist ganz ok";
} else {
    echo "Heiß heute!";
}

Dieser Code führt drei Abfragen gegen den Miniserver aus. (Randnotiz: Eventuell implementieren wir noch einen Kurzzeit-Cache, um das zu verbessern.)

Gleiche Funktion, aber Gutes Beispiel (1)  :

$temp = $ms1->Außentemperatur;
if ( $temp < -20 ) {
    echo "Heute ist es sehr, sehr kalt!";
} elseif( $temp < 0 ) {
    echo "Es gefriert draußen."; 
} elseif( $temp < 20 ) {
    echo "Temperatur ist ganz ok";
} else {
    echo "Heiß heute!";
}

Das braucht nur noch eine Abfrage.