Druckauftrag von Windows erkennen

Meinen Drucker schalte ich mit einem Aktor ein/aus. Der Drucker auch snmp. Gibt es eine Möglichkeit, das IPS erkennt wenn ein Druckauftrag von einem Windowsrechner geschickt wird und der Aktor am Drucker dadurch geschalten wird?

$drucker = (Sys_GetSpooler());

print_r ($drucker[‚HP Color LaserJet MFP M477fdn (AF42AA)‘]);

Ja gibt es. Es gibt einerseits die Symcon Methode Sys_GetSpooler
oder die Möglichkeit den Spool-Ordner über readdir zu überwachen. Jeweils die Scripte alle x-Sekunden ausführen und entsprechend agieren.

wenn ich das als Script ausführe, sehe ich nur ein leeres Array. Ob ein Druckauftrag unterwegs ist oder nicht.

Meinen Drucker schalte ich mit einem Aktor ein/aus. Der Drucker auch snmp. Gibt es eine Möglichkeit, das IPS erkennt wenn ein Druckauftrag von einem Windowsrechner geschickt wird und der Aktor am Drucker dadurch geschalten wird?

Meinen Drucker schalte ich mit einem Aktor ein/aus. Der Drucker auch snmp. Gibt es eine Möglichkeit, das IPS erkennt wenn ein Druckauftrag von einem Windowsrechner geschickt wird und der Aktor am Drucker dadurch geschalten wird?

Meinen Drucker schalte ich mit einem Aktor ein/aus. Der Drucker auch snmp. Gibt es eine Möglichkeit, das IPS erkennt wenn ein Druckauftrag von einem Windowsrechner geschickt wird und der Aktor am Drucker dadurch geschalten wird?

$drucker = (Sys_GetSpooler());
print_r ($drucker[‚HP Color LaserJet MFP M477fdn (AF42AA)‘]);

Du musst schon über den Spooler des IP-Symcon PCs drucken. Sprich auf diesem Rechner den Drucker über die Windows Netzwerk-Funktion freigeben. Jenachdem wie flott der Drucker ist, ist der Spooler innerhalb weniger Sekunden leer, wenn du nicht genau in dem Moment ausführst, ist die Meldung weg.

Daher den Drucker auslassen, während du das testest.

PS: irgendwie hast du oben einen Kopierfehler und deinen Text mehrfach geschrieben.

logisch. Sorry, hab nicht soweit gedacht.

Es gibt natürlich auch die Option z.B. den Spool Ordner auf jedem einzelnen Windows Rechner freigeben und deren Inhalte nach Aufträgen für deinen Drucker absuchen.
Oder die Windows API Verwenden, um eine Liste der Druckaufträge zu erhalten.

Ich reagiere am Windows-Printserver (Druckerfreigabe) auf das Druck-Event und starte dabei ein einfaches Batchscript mit CURL, das über die Symcon-API die Variable der Steckdose einschaltet.

Inhalt der Batch „DruckerEin.CMD“

Set CMD=RequestAction
Set VAR=33016
Set VAL=true
Set URL=http://test:test@symcon.domain.net:3777/api/

\\fs1\jobs\smarthome\curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\": \"2.0\", \"id\": \"0\", \"method\": \"%CMD%\", \"params\": [%VAR%, %VAL%]}" %URL%

Inhalt des Windows Aufgabenplaners (der die DruckerEin.CMD startet).
(Einfach Inhalt als DruckerEin.XML speichern und in Aufgabenplaner importieren)

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2020-11-28T13:28:23.1830879</Date>
    <Author>Administrator</Author>
    <Description>Drucker einschalten</Description>
    <URI>\Aufgaben der Ereignisanzeige\Drucker einschalten</URI>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Microsoft-Windows-PrintService/Operational"&gt;&lt;Select Path="Microsoft-Windows-PrintService/Operational"&gt;*[System[Provider[@Name='Microsoft-Windows-PrintService'] and EventID=800]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-725345543-1078145449-1343024091-500</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>D:\Group\EDV\Jobs\Smarthome\DruckerEin.cmd</Command>
    </Exec>
  </Actions>
</Task>

Curl für Windows Download: curl for Windows