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:
Ü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:
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
// 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;
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
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.