Für die Externe Ansteuerung der Loxone über einen beliebigen Windows Server, habe ich mir eine PowerShell Klasse geschrieben. Hierrüber ist nun möglich, schnell und einfach Eingänge / Ausgänge abzufragen oder einen beliebigen Status zu setzen, sowie diverse System Kommandos an die Loxone zu schicken. Die PowerShell Klasse basiert auf einfachen REST Invokes.
...
Konfiguration anpassen, Server Adresse oder FQDN in der LxHomeAutomation.ps1 anpassen
Codeblock [string]$server = "192.168."
PowerShell Datei einlesen
Codeblock . ./LxHomeAutomation.ps1
PowerShell Objekt bilden
Codeblock $LxHomeautomation = [LxHomeAutomation]::new("user","PW as plaintext")
...
Wurde das Objekt erstellt stehen nun folgende Proberties zur Verfügung (sollten die enumout und enumin nicht vorhanden sein, muss das Objekt nochmals erstellt werden. Hier liegt noch ein mögliches Zeit Problem vor)
Proberty | Werte |
---|---|
enumout | beinhaltet alle Ausgänge |
enumin | beinhaltet alle Eingänge |
ConStatus | Virbindungstatus |
cred | Das erstelle LX Credentinal |
server | Server Adresse |
Object | letztes übergebendes Object an eine Methode |
lastResult | Letzer REST Response als RAW |
Wurde das Objekt erstellt stehen nun folgende Methoden zur Verfügung
Methode | Aufruf | gütige Werte | Beschreibung |
---|---|---|---|
RESTRequestLANStatus | $LxHomeautomation.RESTRequestLANStatus("txp") | txp | Retrieve number of LAN packets sent |
RESTRequestSysStatus | $LxHomeautomation.RESTRequestSysStatus("cpu") | cpu | Retrieve CPU load |
RESTRequestSps | $LxHomeautomation.RESTRequestSps("status") | status | aktuelle SPS Frequenz abfragen |
RESTControllIO | $LxHomeautomation.RESTControllIO() | "on"/"off"/"impuls"/"state","IO" | Hier müssen zwei Parameter angegeben werden,
|
Beispiel Skript
Hier Teste ich einen PC ob dieser läuft, wenn ja wird einmalig ein Virtueller Eingang gesetzt. Ändert sich der Zustand des Computers wird dieser zurück gesetzt.
Warum ich das nicht mit dem Ping Module mache? Tja zu einem möchte ich Möchte schnell merken, dass der PC Offline ist und hierdurch nicht unnötig die Loxone belästigen und zum Anderen ist Ping für mich kein gültiges Messinstrument.mit zusätzlichen Pings belästigen
Codeblock |
---|
. PATH\LxHomeAutomation.ps1 $LxHomeautomation = [LxHomeAutomation]::new("USER","PW") $TestPC = "PCNAME" $OnlineStateBefore = $false while($true){ $OnlineState = (Test-NetConnection -ComputerName $TestPC).PingSucceeded if(($OnlineState -eq $true) -and ($OnlineState -ne $OnlineStateBefore)){ $LxHomeautomation.RESTControllIO("on","VI12") $OnlineStateBefore = $True } if(($OnlineState -eq $false) -and ($OnlineState -ne $OnlineStateBefore)){ $LxHomeautomation.RESTControllIO("off","VI12") $OnlineStateBefore = $false } sleep -Seconds 10 } |
...
Seiteneigenschaften | ||
---|---|---|
| ||
|