Loxone via PowerShell steuern

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:

  • PowerShell 5.x (Ist ab Windows 10 / Server 2016 inkludiert)



Kompatibilität:

  • PowerShell 6.x wird noch nicht unterstützt wird aber folgen und somit einen Support für Linux Systeme oder als Docker Container zu gewährleisten



Schritt-für-Schritt-Anleitung

  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)

Proberty

Werte

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

Methode

Aufruf

gütige Werte

Beschreibung

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





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