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.

Bei mir ist der aktuelle Haupteinsatz dieser Klasse zur besseren Integration meiner Wasserkühlung, damit ich schnell und einfache wichtige Werte in der Loxone anzeigen und überwachen kann. Im Notfall werden Push Nachrichten versendet oder im Worst Case der PC in den Hypernate versetzt. Letzteres basiert noch auf dem POSH Server worüber es möglich ist, von der Loxone PowerShell Befehle abzusetzen, dies ist aber ein anderes Thema

Source

Die Source für die Klasse kann direkt aus meinem GitHub herunter geladen werden (bitte immer Master Branch verwenden):

https://github.com/ThomasWilla/LoxoneHomeAutomation


Requirement:


Kompatibilität:


Schritt-für-Schritt-Anleitung

Fügen Sie die erforderlichen Schritte hinzu:

  1. Konfiguration anpassen, Server Adresse oder FQDN in der LxHomeAutomation.ps1 anpassen

    [string]$server = "192.168."


  2. PowerShell Datei einlesen

    . ./LxHomeAutomation.ps1


  3. PowerShell Objekt bilden

    $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)

ProbertyWerte
enumoutbeinhaltet alle Ausgänge
enuminbeinhaltet alle Eingänge
ConStatusVirbindungstatus
credDas erstelle LX Credentinal
serverServer Adresse
Objectletztes übergebendes Object an eine Methode
lastResultLetzer REST Response als RAW


 Wurde das Objekt erstellt stehen nun folgende Methoden zur Verfügung


MethodeAufrufgütige WerteBeschreibung
RESTRequestLANStatus$LxHomeautomation.RESTRequestLANStatus("txp")

txp
txe
txc
exh
txu
rxp
eof
rxo
nob

Retrieve number of LAN packets sent
Retrieve number of LAN packets sent with errors
Retrieve number of LAN packets sent with collisions
Retrieve number of LAN buffer errors
Retrieve number of LAN under-run errors
Retrieve number of LAN packets recieved
Retrieve number of LAN EOF errors
Retrieve number of LAN receive overflow errors
Retrieve number of LAN 'No receive buffer' errors

RESTRequestSysStatus$LxHomeautomation.RESTRequestSysStatus("cpu")

cpu
contextswitches
contextswitchesi
heap
ints
comints
lanints
watchdog
date
time
setdatetime
spscycle
ntp
reboot
check
logoff
sdtest
lastcpu
search
searchdata
05000001
updateext

Retrieve CPU load
Retrieve number of switchings between tasks
Retrieve number of switchings between tasks that were triggered interrupts
Retrieve memory size
Retrieve number of system interrupts
Retrieve number of communication interrupts
Retrieve number of LAN interrupts
Retrieve watchdog bits
Returns the local date
Returns the local time
Set system date and time. Format: 2013-06-18 16:58:00 or 18/06/2013
Retrieve number of PLC cycles
Force NTP request
Boot Miniserver
Displays active connections in Loxone Config
Ends any existing connections in Loxone Config
Tests the SD card
Shows the last value of the CPU utilisation and the number of PLC cycles
Performs a search for connected extensions
Lists the search results
Retrieve the statistics of a 1-Wire Extension (replace 05000001 with the actual serial number)
Start an update of extensions

RESTRequestSps   $LxHomeautomation.RESTRequestSps("status")

status
restart
stop
run
log
enumdev
enumin
enumout
identify

aktuelle SPS Frequenz abfragen
SPS neu starten
SPS anhalten
SPS fortsetzen
SPS globales Logging erlauben
alle Geräte der SPS auflisten (Miniserver,Extensions,…)
alle Eingänge der SPS auflisten
alle Ausgänge der SPS auflisten
Miniserver identifizieren Für Erweiterungen muss die Seriennumer als Parameter mitgegeben werden.

RESTControllIO $LxHomeautomation.RESTControllIO()"on"/"off"/"impuls"/"state","IO"

Hier müssen zwei Parameter angegeben werden,

  1. was soll gemacht werden on | off | impuls | state
  2. Das gewünschte IO - kann unter enumout oder enumin gefunden 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? Möchte schnell merken, dass der PC Offline ist und hierdurch nicht unnötig die Loxone mit zusätzlichen Pings belästigen

. 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

}



Die Klasse ist ein Schnellwurf und daher würde ich sagen früher Beta Status, werde hier aber noch mehr Quallität reinbringen wenn es die Zeit zulässt

Verwandte Artikel

Verwandte Artikel erscheinen hier basierend auf den Stichwörtern, die Sie auswählen. Klicken Sie, um das Makro zu bearbeiten und Stichwörter hinzuzufügen oder zu ändern.



Verwandte Vorgänge