Metainformationen zur Seite
LoxBerry::System::get_miniservers
%miniservers = LoxBerry::System::get_miniservers();
Die Funktion get_miniservers liefert einen mehrdimensionalen Hash mit der gesamten Konfiguration aller Miniserver zurück.
Die Parameter jedes Miniservers können mit vordefinierten Variablen abgefragt werden.
Hash-Variable | Inhalt |
---|---|
Name | Name (not hostname!) of the Miniserver |
FullURI | These two fields return the full http/https root url to connect to the Miniserver, including encoded credentials, considering CloudDNS and the PreferHttps setting.FullURI contains the credentials URI-encoded, FullURI_RAW holds the credentials in UTF8 (not encoded, including umlauts/special chars). Depending on your lib, use this or that.http://<Admin>:<Pass>@<IPAddress>:<Port> or https://<Admin>:<Pass>@<IPAddress>:<PortHttps> Without trailing slash.(from LB 2.2+) |
FullURI_RAW | |
IPAddress | IP address (or hostname) of the Miniserver |
IPv6Format | 0 or 1: This is an indicator flag, if the above IPAddress is an IPv6 address (1) or an IPv4 format or hostname (0). This does not indicate if the receiver is IPv6 (a hostname also may be an IPv6 host), but only flags the format of the field. With IPv6, in some libraries it is required to put an IPv6 address in [ square brackets ] to be possible to add a port, e.g. for http requests. This flag can be used to know if square brackets should be added or not. (from LB 2.2+) |
Port | http Web-Port of the Miniserver |
PreferHttps | 0 or 1 - LoxBerry and plugins should use https instead of http (from LB 2.2+) |
PortHttps | https Web-Port (from LB 2.2+) |
Transport | Depending on PreferHttps , the result is a string "http" or "https" (from LB 2.2+) |
Admin | Miniserver user to login (URL encoded) |
Pass | Passwort of the login user (URL encoded) |
Credentials | Admin:Pass combination (URL encoded) |
Admin_RAW | Miniserver user to login (not URL encoded) |
Pass_RAW | Passwort of the login user (not URL encoded) |
Credentials_RAW | Admin:Pass combination (not URL encoded) |
Note | User specified note or link |
UseCloudDNS | Returns 1 if a Loxone CloudDNS connection is needed |
CloudURL | The MAC address of the Miniserver used for CloudDNS |
CloudURLFTPPort | Use get_ftpport instead, to fetch the correct FTP port. |
SecureGateway | 1 if this Miniserver should use encrypted REST calls (currently not used) |
EncryptResponse | 1 if the response from encrypted Miniserver REST requests should be encrypted (currently not used) |
For http/https requests, the FullURI
/ FullURI_RAW
method is the most efficient way.
If the credentials directly are required, requesting them can be done in different ways: Admin
, Pass
or the combined Credentials
, or the non-URL-encoded variants in RAW
. Web requests should always use the URL encoded style as they can directly been passed to the Miniserver.
For FTP connection, you need to use the RAW variants as FTP needs plain strings.
Loxone CloudDNS
get_miniservers liefert bei IPAddress
und Port
/PortHttps
immer die richtigen Daten zurück, egal ob der Miniserver lokal, oder mit CloudDNS eingerichtet ist. IPAddress
und Port/PortHttps
entspricht bei einem CloudDNS-Miniserver dann der externen IP und Port. Das Plugin muss sich daher nicht speziell um CloudDNS-Miniserver kümmern.
Verwendung
use LoxBerry::System; my %miniservers; %miniservers = LoxBerry::System::get_miniservers(); if (! %miniservers) { exit(1); # Keine Miniserver vorhanden } print "Anzahl deiner Miniserver: " . keys(%miniservers); print "Miniserver Nr. 1 heißt $miniservers{1}{Name} und hat die IP $miniservers{1}{IPAddress}."; foreach my $ms (sort keys %miniservers) { print "Der Miniserver Nr. $ms heißt $miniservers{$ms}{Name} und hat die IP $miniservers{$ms}{IPAddress}."; }
Prüfen, ob Einträge vorhanden sind
Um Fehlfunktionen deines Plugins zu vermeiden, solltest du prüfen, ob get_miniservers Werte zurückgeliefert hat, oder ein bestimmter Miniserver verfügbar ist.
Prüfen, ob überhaupt Miniserver konfiguriert sind
Das kann beispielsweise bei einem Auswahldialog oder in einem Script hilfreich sein.
Wenn dein Plugin auf die Konfiguration von mindestens einem Miniserver angewiesen ist, kann diese Prüfung auch hilfreich sein, um im GUI gleich eine auffällige Meldung zu bringen, dass zuerst ein Miniserver konfiguriert werden soll.
%miniservers = LoxBerry::System::get_miniservers(); if (! %miniservers) { print "Keine Miniserver konfiguriert."; exit(1); # Keine Miniserver vorhanden }
Prüfen. ob eine bestimmter Miniserver vorhanden ist
Die Prüfung auf einen bestimmten Miniserver ist insbesondere interessant, wenn der Benutzer im GUI einen Miniserver ausgewählt hat. Im Script solltest du dann prüfen, ob der gewählte Miniserver überhaupt (noch) vorhanden ist.
%miniservers = LoxBerry::System::get_miniservers(); if (! %miniservers{1}) { print "Miniserver 1 nicht vorhanden"; exit(1); }