Ziel:
Die smarte Steckdose soll einschalten wenn der Windows Print- bzw. Druckserver einen Druckjob erhält.
Voraussetzungen
- Schaltbare Steckdose
- API Zugang zur Steckdose (oder Smarthome)
- Trigger am Windows Druckserver
Trigger für Printserver
- Am Windows Druckserver ist der Drucker für die Clients die drucken möchten “freigegeben”
- Wir müssen dafür sorgen das ein Ereignis beim eintreffen eines Druckjobs ausgelöst wird
Schritt 1:
- Detaillierte Logs zu Druckereignissen müssen zuerst aktiviert werden
- Computerverwaltung > System > Ereignisanzeige > Anwendungs und Dienstprotokolle > Microsoft > Windows > PrintService > Betriebsbereit —> Rechtsklick und “Protokoll aktivieren” wählen
Schritt 2:
- Computerverwaltung > System > Aufgabenplanung > Aufgabenplanungsbibliothek > Einfache Aufgabe erstellen
- Name: Drucker einschalten
- Beschreibung: *
- Trigger: Bei Protokollierung eines bestimmten Ereignisses
- Bei Ereignisprotollierung:
- Protokoll: Microsoft-Windows-PrintService/Betriebsbereit
- Quelle: PrintService
- Ereignis-ID: 800
- Aktion: Programm starten
- Programm starten: Hier den Pfad zum Batchscript eintragen zB.: D:\Scripts\Smarthome\DruckerEinschalten.cmd
Unter den “Allgemein” Einstellungen stelle ich noch den Benutzer/Administrator als Benutzerkonto ein,
außerdem aktiviere ich “Unabhängig von der Benutzeranmeldung ausführen”, “Mit höchsten Privilegien” und Konfigurieren für “Windows XXX (die richtige Version)”.
Steckdose schalten
Ein Batch/CMD Skript ruft nun die API per curl.exe auf und schaltet die passende Variable in der Smarthome Zentrale (in meinem Fall: Symcon)
Mein Windows Batchjob um die Steckdose (per Symcon Variable) zu schalten
Set CMD=RequestAction
Set VAR=12345
Set VAL=true
Set URL=http://user:pass@smarthome:3777/api/
\\server\jobs\smarthome\curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\": \"2.0\", \"id\": \"0\", \"method\": \"%CMD%\", \"params\": [%VAR%, %VAL%]}" %URL%
Genau so gut könnte die Windows Batch auch genutzt werden um direkt einen Shelly zu schalten
http://<SHELLY-IP>/relay/0?turn=on