FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: marvin78 am 08 Oktober 2015, 14:59:18

Titel: Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 08 Oktober 2015, 14:59:18
Das hier ist ein weiteres Modul, bei dessen Entwicklung ich ein wenig über ein paar Aspekte der Modulentwicklung in FHEM lernen konnte. Das ganze kann man auch mit einer einfachen und sehr kurzen sub in der myUtils und einem at lösen, ich habe es jedoch in ein Modul unter Verwendung von Blocking.pm verpackt. Vielleicht hat jemand Interesse daran.

Das Modul definiert ein Device, welches einen CUPS* Drucksystem benötigt. CUPS muss auf dem FHEM Server installiert sein. Optimalerweise muss auch ein Drucker in CUPS eingerichtet sein. Das CUPS_Switch Device pollt die CUPS Auftragsliste nach Druckaufträgen für einen bestimmten Drucker und schaltet bei Vorhandensein eines Auftrags einen Schalter, eine Steckdose oder was auch immer benötigt wird, um den Drucker mit Strom zu versorgen. Nach einer einstellbaren Zeit wird das Device wieder ausgeschaltet. Das Modul erkennt dabei, ob das Device schon vor dem Auftrag eingeschaltet war, sodass das Device nicht ausgeschaltet wird, falls es vorher manuell eingeschaltet wurde.

Ein CUPS_Switch Device wird folgendermaßen definiert:

define <NAME> CUPS_Switch <CUPS-Printer-Name> <Switch-Device>[:<onCmd>:<offCmd> <host> <port>]

Doku befindet sich im Modul.

Support für CUPS gibt es im Netz zu Hauf. Hier leider nicht.

Installation:

update all https://raw.githubusercontent.com/marvin78/FHEM-CUPS_Switch/master/controls_CUPS_Switch.txt

Download: https://github.com/marvin78/FHEM-CUPS_Switch


*CUPS ist das auf Standards basierte, Opensource-Drucksystem, welches von Apple für Mac OS® X und andere UNIX®-ähnliche Betriebssysteme entwickelt wird.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: hawkeyexp am 10 Oktober 2015, 22:12:32
Hi,

ich bin durch Zufall über dein Modul gestolpert da ich noch paar Kleinigkeiten für meine "gebastelte" Lösung in myutils gesucht habe.
Das geniale: du hast als Modul geschreiben was ich in myutils auch veranstaltet habe - coole sache !
Allerdings hab ich noch die ein oder andere Anregung:
Du solltest noch eine Option einbauen damit auch ein Remote-Cups-Host angesprochen werden kann - wie wäre es du gibst immer bei der abfrage -h 127.0.0.1 mit falls kein Host im Modul definiert wird - und wenn doch übernimmst du die IP des gesetzten Hosts (-h 192.168.x.x)?
Ich hatte auch meine liebe Not mit den HP-Traibern unter Linux - in meinem Fall habe ich festgestellt, dass das Backend es garnicht mag wenn der USB-Drucker kommt und geht ("/usr/lib/cups/backend/hp failed " z.B. durch die Funksteckdose). Hier habe ich mir beholfen in dem ich ein kleines C-Programm nutze welches einen Reset des USB-Ports macht - und schon geht die Sache. Hier wäre es also Praktisch wenn man dem Modul noch einen Scriptaufruf etc. mitgeben könnten?

PS: Eine Statusausgabe in Fhemweb wäre noch praktisch - also die Info "Druckt" "Wartet" etc.

Bin mal gespannt was du davon hällst :-)
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 11 Oktober 2015, 09:10:40
Danke für die Rückmeldung.

Wie ich oben schon schrieb, ist sowas sicher einfacher und "billiger" mit ein paar subs (um es Non-Blocking zu haben, sonst reicht eine) zu lösen.

Das mit dem Remote-Host habe ich oben mal eingefügt (neue Version angehängt, Doku verändert).

Wenn man es genau nimmt, haben die Statusabfragen in einen .*_Switch Modul nicht zwingend etwas zu suchen. Außerdem "lügt" man bei pollenden Modulen hier auch sehr häufig. Ich denke drüber nach.

Das mit dem Skript musst du mir genauer erklären. Was genau machst du da?
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 12 Oktober 2015, 13:21:21
Neue Version im ersten Post. Poll Intervall und die Zeit bis zum Aussschalten werden nun über Attribute eingestellt, nicht mehr über das Define.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: knopf_piano am 12 Oktober 2015, 13:56:05
Hi,
ich klimper das über snmp-status-requests ab, kann mal bei Bedarf einen Beispielcode anhängen
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 21 Oktober 2015, 21:32:07
Hi,

könnt bitte jemand ein Beispiel angeben, meine CUPS-Warteschlange ist immer "0" obwohl eine Testseite drin hängt...
mein Drucker hätte folgende Adresse:
http://192.168.1.103:631/printers/HP_LaserJet_8150_Series
ich habe es mit und ohne "/printers/" versucht, ohne Erfolg, der Port wird ja automatisch angehängt.

danke :-)
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: knopf_piano am 21 Oktober 2015, 22:00:44
Mein Netzwerkdrucker hängt an einer homematic-steckdose (device: Printer_Vcc)
Alle x sec abfragen, ob in cups-queue was drin ist

###################################################
# Check cups-printer-queue -> switch on
###################################################
define Tmr_ActivatePrinterOnCupsQueue at +*00:00:30 {myCupsAbf("HP_Officejet_5740_series", "Printer_Vcc");;}

wenn nix drin ist (idle) dann abschalten

###################################################
# Check cups-printer-queue -> switch on
###################################################
define Tmr_CheckCupsStatus at +*00:00:30 {\
  if(ReadingsVal('Printer_Vcc', 'state', '') eq "on"){\
  {myCupsStatusIs("192.168.50.51", "Printer_Vcc");;}\
  }\
}


99_myUtils:
Drucker einschalten (http://forum.fhem.de/index.php/topic,10070.msg201697.html#msg201697)
...und über snmp-Abfrage, ob der drucker idle ist, wieder abschalten.

#Cups Drucker ein
sub myCupsAbf($$)
{
    my ($printer,$dummy) = @_;
    my $cupsws.=`lpstat -o $printer` ;
    if($cupsws =~ /$printer/) {fhem ("set $dummy on")};

    #if($cupsws =~ /$printer/) {fhem ("set $dummy on-for-timer $ontime")};
}

#Cups Druckerabfrage auf status idle/busy/timeout
sub myCupsStatusIs($$)
{
  my ($printer_ip,$dummy) = @_;
  my %hrPrinterStatus = (
1 => "other(1)",
2 => "unknown(2)",
3 => "idle(3)",
4 => "printing(4)",
5 => "warmup(5)"
);
  my $cupsws.=`snmpwalk -cC -v 1 -c public $printer_ip 1.3.6.1.2.1.25.3.5.1.1.1` ;
  if($cupsws =~ m/INTEGER/)
  {
    my (my $tmp, my $val) = split(/INTEGER:/, $cupsws);
    chomp($val);
    $val =~ s/ //g;
    #print "$val\n";
    #print "$hrPrinterStatus{$val}\n";
    if($val =~ m/3/) {fhem "set $dummy off";}
  }
  else
  {
    # this is for to get a definite active printer and not hit the 10s timer window to switch off
    sleep 40;
    #print "no printer found\n";
  }
}
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 21 Oktober 2015, 22:23:45
Zitat von: aplatac am 21 Oktober 2015, 21:32:07
Hi,

könnt bitte jemand ein Beispiel angeben, meine CUPS-Warteschlange ist immer "0" obwohl eine Testseite drin hängt...
mein Drucker hätte folgende Adresse:
http://192.168.1.103:631/printers/HP_LaserJet_8150_Series (http://192.168.1.103:631/printers/HP_LaserJet_8150_Series)
ich habe es mit und ohne "/printers/" versucht, ohne Erfolg, der Port wird ja automatisch angehängt.

danke :-)

Dein Druckername in CUPS sollte keine Leerzeichen beinhalten. Das wird vom Modul nicht berücksichtigt. Trenner für das Define ist das Leerzeichen.

Eine Definition ohne Leerzeichen würde für dich so aussehen

define NAME CUPS_Switch HP_LaserJet_8150_Series Steckdose 192.168.1.103

@knopf_piano: Deine Lösung ist sicher prima, das hat hier jedoch wenig zu suchen. Hier geht es um das CUPS_Switch Modul. Danke.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: knopf_piano am 21 Oktober 2015, 22:26:18
Werd in kürze mal das neue Modul probieren und dann mal schauen, ob ich umsteig.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 21 Oktober 2015, 22:50:05
hm, so hab ich es gemacht:

define autocups CUPS_Switch HP_LaserJet_8150_Series HM_StDrucker 192.168.1.103

klappt aber nicht, der Job hängt in Cups fest (Drucker z.Z. nicht erreichbar) aber das
Modul meint es wäre nichts in der Warteschlange. Ich habe unter Cups alles was mit
Remonte zu tun hat erlaubt, aber irgendwie kann FHEM nichts sehen auf dem Cups.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 22 Oktober 2015, 10:38:49
Ich habe die remote Variante nie getestet. Es ist möglich, dass die nicht überall funktioniert. Es ist schwer für mich, zu ermitteln, wo es hier hakt. ich nehme an, dass es ein Rechteproblem sein könnte.

Mach mal ein

lpstat -o

auf dem System, auf dem CUPS installiert ist und schaue ob dort wirklich ein Auftrag zum Druckernamen

ZitatHP_LaserJet_8150_Series

auftaucht.

BTW: Hast du mal ins Log geschaut? Kann CUPS_Switch überhaupt auf den Host zugreifen? Dreh verbose mal kurz auf 5 und schaue nach.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 22 Oktober 2015, 18:43:59
Hi,
also zunächst musste ich feststellen, dass man den cups-client auf dem FHEM braucht, das hatte ich nicht auf dem Schirm, mein FHEM-Server ist eine VM mit minimal debian. Also client nachgeschoben aber das wars noch nicht,das log sagt:
lpstat: invalid destination name in list "HP_LaserJet_8150_Series"

auf der Cups-Server sehe ich mit lpstat -o das an die Aufträge je eine laufende Nummer gehängt wird:
"HP_LaserJet_8150_Series-4" könnte es das sein?"
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 22 Oktober 2015, 19:06:21
Die laufende Nummer ist ok. Es wird der Bestandteil geprüft. Eigentlich sollte es auch remote gehen. Aber wie ich schon schrieb, das ist ungetestet.

Es könnte auch an den Unterstrichen liegen. Ich habe das gerade nicht im Blick, weil ich nicht zu Hause bin. Probiere doch mal einen Druckernamen wie:

HPLaserJet8150Series
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 22 Oktober 2015, 20:54:53
also erreichen kann er jetzt den Cupsserver wie es aussieht aber den Job sieht er scheinbar nicht

2015.10.22 20:51:49 4: name: /fhem?detail=autocups / RL:2293 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2015.10.22 20:51:49 4: FHEMWEB:192.168.1.21:63312 GET /fhem?cmd={AttrVal(%22autocups%22,%22room%22,%22%22)}&XHR=1; BUFLEN:0
2015.10.22 20:51:49 5: Cmd: >{AttrVal("autocups","room","")}<
2015.10.22 20:51:49 4: name: /fhem?cmd={AttrVal(%22autocups%22,%22room%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.10.22 20:51:49 4: FHEMWEB:192.168.1.21:63312 GET /fhem?XHR=1&inform=type=status;filter=autocups;since=1445539908;fmt=JSON×tamp=1445539882530; BUFLEN:0
2015.10.22 20:51:50 4: BlockingCall created child (30616), uses telnetForBlockingFn to connect back
2015.10.22 20:51:50 4: CUPS_Switch (autocups) - DoGetSpool with LaserJet and host 192.168.1.103:631
2015.10.22 20:51:50 4: Connection accepted from telnet:127.0.0.1:54680
2015.10.22 20:51:50 5: Cmd: >{CUPS_Switch_ProcessGetSpool('autocups|LaserJet|absent')}<
2015.10.22 20:51:50 4: CUPS_Switch (autocups) - ProcessGetSpool
2015.10.22 20:51:53 4: Connection closed for FHEMWEB:192.168.1.21:63312: EOF
2015.10.22 20:51:53 4: Connection accepted from FHEMWEB:192.168.1.21:63313
2015.10.22 20:51:53 4: FHEMWEB:192.168.1.21:63313 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2015-10.log; BUFLEN:0
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 23 Oktober 2015, 00:37:28
wenn ich vom FHEM-Server aus:

patrick@debian:~$ lpstat -h 192.168.1.103:631 -o 8150ND
8150ND-14               admin             1024   Fr 23 Okt 2015 00:00:07 CEST

ausführe, so werden anstehende Jobs angezeigt. Nicht wundern, habe noch mal den Drucknamen
geändert. Ich hatte den fhem-benutzer in Verdacht aber auch als fhem bekomme ich die Warteschleife angezeigt.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 23 Oktober 2015, 08:07:30
Probiere mal die anliegende Version aus.

Edit: Download entfernt. Neue Version im ersten Post.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 23 Oktober 2015, 20:26:00
Guten Abend :-)

So, habe deine geänderte Datei kopiert und FHEM "shutdown restart" ausgeführt,
aber leider sehe ich keine Veränderung. Gibt es eine Möglichkeit sich anzeigen zu lassen,
was dein Modul an Cups sendet und was Cups antwortet?
Ich habe es auch mit dem fhem-user versucht, auch dieser bekommt bei lpstat von der
Konsole die richtige Antwort.

Hast du eine Idee?

bye,
Patrick
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 23 Oktober 2015, 21:34:30
Nein. Mir fehlt die Idee. Ich muss mir das mit der remote-Geschichte mal irgendwann näher ansehen. Das ist mehr oder weniger mit der heißen Nadel gestrickt. Lokal sollte alles funktionieren. Ich schaue morgen evtl. mal, dass ich mehr Debug-Meldungen im Log ausgebe. Vielleicht hilft uns das weiter. Leider fehlt mir die Zeit, um hier schneller zu sein.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 23 Oktober 2015, 22:24:36
das wäre super vielen Dank, ich denke die Anfrage im Klartext würde schon helfen :)
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 24 Oktober 2015, 09:42:52
Im ersten Post gibt es eine neue Version. Diese greift etwas anders zu, wenn der host nicht localhost ist und es gibt etwas mehr Ausgabe im Log bei verbose=5.

Nach dem Austauch ist ein shutdown restart nötig oder ein reload und ein modify.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 24 Oktober 2015, 11:11:47
Guten Morgen,

evtl. hab ich den Fehler gefunden, der Port wird doppelt angehängt und der Printername fehlt:

2015.10.24 11:10:56 5: CUPS_Switch (autocups) - send lpstat -o -h 192.168.1.103:631:631
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 24 Oktober 2015, 11:39:55
Dass der Printername fehlt ist egal. Wenn der fehlt, wird die ganze Liste durchsucht. Ich hatte ihn in einer vorherigen Version mit drin und erst raus genommen, weil es bei dir nicht funktioniert hat. Demnach kann das der Fehler nicht sein.

Der Port wird vermutlich doppelt angehangen, weil den autocups falsch definiert ist. Der Port muss nur angegeben werden, wenn er von 631 abweicht und dann auch mit Leerzeichen getrennt.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 24 Oktober 2015, 12:15:42
Ich hatte mit Port definiert und das jetzt entfernt. Es wird aber weiter kein Druckjob erkannt.


2015.10.24 12:05:42 4: BlockingCall created child (14656), uses telnetForBlockingFn to connect back
2015.10.24 12:05:42 4: CUPS_Switch (autocups) - DoGetSpool with LaserJet, host 192.168.1.103 and port 631
2015.10.24 12:05:42 5: CUPS_Switch (autocups) - send lpstat -o -h 192.168.1.103:631
2015.10.24 12:05:42 5: CUPS_Switch (autocups) - DoGetSpool: Printer not found or no answer
2015.10.24 12:05:42 4: Connection accepted from telnet:127.0.0.1:59514
2015.10.24 12:05:42 5: Cmd: >{CUPS_Switch_ProcessGetSpool('autocups|LaserJet|absent')}<
2015.10.24 12:05:42 4: CUPS_Switch (autocups) - ProcessGetSpool


aber immerhin schon mal einen Fehler (Port) gefunden :-)
ich hatte bei meinen Experimenten den Port immer nur in DEF rausgenommen, aber dann wird er von FHEM wieder
gesetzt also dachte ich, das sei schon o.k. so.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 24 Oktober 2015, 12:21:47
Ich möchte mal wissen, ob überhaupt etwas zurück gegeben wird. Anliegende Version gibt die komplette Rückgabe (oder eventuelle Fehler), falls es eine gibt, im Log aus:

Edit: Download entfernt. Neue Version im ersten Post.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 24 Oktober 2015, 12:30:35
Ich denke, ich habe den Fehler gefunden. Neue Version im ersten Post. Ein reload sollte reichen.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 24 Oktober 2015, 12:58:48
 ;D

Super, eben ist zum erstem mal der Drucker angesprungen! Der letzte "Test-Job" wurde auch schön gedruckt (gut dass ich die anderen schon gelöscht hatte). Top! Jetzt warte ich noch ab, ob er wieder ausgeht aber das war schon ein toller Erfolg, vielen Dank für deine Arbeit! Ich werde das mit verschiedenen Rechnern langzeittesten, ich hoffe die Macs spielen mit. Mit denen hatte ich schon merkwürdige Druckererlebinsse...

Ein sehr nützliches Modul :)

Patrick
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 24 Oktober 2015, 13:00:36
Naja. Es verbessert nicht das "Druckerlebnis", es schaltet nur eine Steckdose o.ä. an ;) Aber schön, dass es dir gefällt.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: aplatac am 24 Oktober 2015, 13:23:13
Doch es verbessert das "Druckerlebnis", meine Frau muss nicht mehr die Treppe runter laufen wenn sie druckt OHNE dass ich im Büro bin ;-)

Aber mit merkwürdigen "Druck-erlebnissen" meinte ich dass es immer mal wieder bestimmte pdfs gibt, aber nur vom Mac gesendet, die den ganzen Drucker so abschießen dass er einen Reset braucht. Und der 8150 is n "grobes" Teil, sowas stand früher als Abteilungsdrucker im Flur,
50kg und 300W Leerlaufstromaufnahme (!) und 50W Standby, also der Zwischenstecker wird sich bezahlt machen ;-) Aber ich mag das Teil, man kann Erstazteile billig bei ebay bekommen, auf und umrüsten nach Bedarf und für 30-50 Euro bekommt man Toner für 20.000 Seiten.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: Gruvol am 05 Oktober 2016, 18:36:58
Servus, ich habe versucht das Modul in meinem fhem einzubinden.
Allerdings kam bei mir die Fehlermeldung unter der Eingabeleiste: Unknown module CUPS_Switch.

Eingegeben habe ich folgendes: define CupsSwitch CUPS_Switch Samsung_CLX-6260_Series PrinterCLXCups 192.168.0.17

Was mache ich denn falsch?
Ich habe fhem upgedatet.

Ich hoffe, ihr könnt mir weiterhelfen.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: Spezialtrick am 05 Oktober 2016, 18:40:34
Du musst das CUPS_Switch Modul aus dem ersten Beitrag in deine FHEM Installation unter /opt/fhem/FHEM kopieren.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 05 Oktober 2016, 19:27:00
Zitat von: Spezialtrick am 05 Oktober 2016, 18:40:34
Du musst das CUPS_Switch Modul aus dem ersten Beitrag in deine FHEM Installation unter /opt/fhem/FHEM kopieren.

...  und dann FHEM neu starten m
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: Gruvol am 05 Oktober 2016, 20:01:40
Oh man, wie dumm von mir.
Habe die Datei darunter nicht gesehen -.-.

Sorry und danke für die schnelle Hilfe.

Danke und Gruß
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: knopf_piano am 24 Oktober 2018, 20:59:42
Zitat von: knopf_piano am 21 Oktober 2015, 22:26:18
Werd in kürze mal das neue Modul probieren und dann mal schauen, ob ich umsteig.
Läuft, perfekt, danke!

Gesendet von meinem SM-J510FN mit Tapatalk

Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: RaspiLED am 24 Dezember 2019, 22:37:05
Hi,


Danke für das Modul! Läuft super!
Wie wäre es, wenn nach dem erfolgreichen Druck der Drucker abgeschaltet wird (also Queue leer?) und dann noch ein anderes Device als Signal getoggelt werden kann (Lampe dreimal blinken)?


Gruß Arnd
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 25 Dezember 2019, 05:02:32
Der Drucker wird abgeschaltet, wenn sich eine Weile die Queue nicht mehr füllt (Attribut switchOffTime). Es wäre nicht sehr sinnvoll, sofort abzuschalten. Auf das Abschalten kann man sicher ein notify triggern.
Titel: Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: RaspiLED am 25 Dezember 2019, 14:01:23
Ah super! Das die Queue leer sein muss war mir nicht klar ;-) Dann kann ich auf eine Minute runter.

Und ja, ich werde mich an den Jobs: 0 Event hängen.

Danke und Frohe Weihnachten in die Runde!

Gruß Arnd
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: Christoph Morrison am 25 Dezember 2019, 19:05:15
Unter welcher Lizent hast du das Modul eigentlich veröffentlicht? Weder im Repo noch in der Moduldatei ist ein Hinweis.
Titel: Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: RaspiLED am 25 Dezember 2019, 22:40:31
Hier mal mein Beispiel:

Fhem (auf fhem.fritz.box) und Printer Server (auf printer.fritz.box) sind getrennt. Zusätzlich zur Steckdose des Laser Druckers (HP_LaserJet_1022) soll noch eine Lampe (WZ_Stehlampe_Ecke) blinken, sobald der Job fertig ist.


defmod CUPS_HP CUPS_Switch HP_LaserJet_1022 AZ_Printer:on:off printer.fritz.box
attr CUPS_HP event-on-change-reading job
attr CUPS_HP group Printer
attr CUPS_HP room Software,System
attr CUPS_HP switchOffTime 60

defmod CUPS_HP_notify_1 notify CUPS_HP:job:.0  \
{ \
if \
( Value("WZ_Stehlampe_Ecke") =~ /on$/)\
{ fhem("set WZ_Stehlampe_Ecke off-for-timer 1;;sleep 2;; set WZ_Stehlampe_Ecke off-for-timer 1;;sleep 2;; set WZ_Stehlampe_Ecke off-for-timer 1") }\
else\
{ fhem("set WZ_Stehlampe_Ecke on-for-timer 1;;sleep 2;; set WZ_Stehlampe_Ecke on-for-timer 1;;sleep 2;; set WZ_Stehlampe_Ecke on-for-timer 1") }\
}
attr CUPS_HP_notify_1 group Printer
attr CUPS_HP_notify_1 room Software,System

defmod WZ_Stehlampe_Ecke TPLinkHS110 HS110-EU-LED.fritz.box
attr WZ_Stehlampe_Ecke devStateIcon /on:on:off/off:off:on-for-timer 60/
attr WZ_Stehlampe_Ecke disable 0
attr WZ_Stehlampe_Ecke event-min-interval .*:3600
attr WZ_Stehlampe_Ecke event-on-change-reading .*
attr WZ_Stehlampe_Ecke genericDeviceType light
attr WZ_Stehlampe_Ecke icon off
attr WZ_Stehlampe_Ecke room Hardware,Homekit,IT,Wohnzimmer
attr WZ_Stehlampe_Ecke siriName Ecklampe

defmod AZ_Printer TPLinkHS110 HS100-Printer.fritz.box
attr AZ_Printer devStateIcon /on:on:off/off:off:on-for-timer 60/
attr AZ_Printer disable 0
attr AZ_Printer group Printer
attr AZ_Printer homebridgeMapping On=state,valueOn=/on|on-for-timer/,valueOff=/off/,cmdOn=on-for-timer+80,cmdOff=off
attr AZ_Printer icon it_printer
attr AZ_Printer room Arbeitszimmer,Hardware,Homekit,IT
attr AZ_Printer siriName Drucker



Gruß Arnd
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 26 Dezember 2019, 17:52:44
Zitat von: Christoph Morrison am 25 Dezember 2019, 19:05:15
Unter welcher Lizent hast du das Modul eigentlich veröffentlicht? Weder im Repo noch in der Moduldatei ist ein Hinweis.

Ehrlich gesagt, keine.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: Christoph Morrison am 26 Dezember 2019, 23:07:33
Zitat von: marvin78 am 26 Dezember 2019, 17:52:44
Ehrlich gesagt, keine.

MIT ist ne gute Wahl. Vielen Dank!
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 27 Dezember 2019, 06:39:24
Natürlich ist sie das. ;)
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: FHEM-Wohnung am 12 April 2020, 23:12:13
Hallo,

ich habe das Device so angelegt:

define Drucker CUPS_Switch HP_Color_LaserJet_2600n Esszimmer_Switch_Drucker:on:off 192.168.178.60


Leider bekomme ich im Log:

2020.04.12 22:54:23 4 : CUPS_Switch (Drucker) - ProcessGetSpool

Das Reading job bleibt weiterhin auf 0

Vom Fhem Server auf den Cup Server

root@fhem:~# lpstat -h 192.168.178.60:631 -o HP_Color_LaserJet_2600n
HP_Color_LaserJet_2600n-156 unknown              0   Sun 12 Apr 2020 11:19:24 PM CEST



Edit: Ich habe jetzt den Drucker umbenannt in "Drucker". Nun erscheint Job 1, die Steckdose wird geschaltet. Der Drucker fährt hoch. Aber es wird nichts gedruckt.

Wenn der Drucker an ist und ich einen Auftrag sende, druckt der Drucker... wenn er aus ist und über das Modul gestartet wird druckt er nicht
Der Druck wird in Cups angehalten und muss dann manuell freigegeben werden

Edit 2: Habe unter Standardeinstellung -> Fehlerbehandlung: retry-current-job eingestellt. Jetzt klappt es. Weis nicht ob es daran lag :)

Vielen Dank für das tolle Modul :)
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 13 April 2020, 06:51:00
Also ist nun alles in Ordnung? Ich hätte dir, bei der Fehlerberschreibung, ohne list etc, ohnehin vermutlich nur den Rat geben können, deine CUPS Konfiguration zu überprüfen. Wenn der Drucke einschaltet, ist die Aufgabe von diesem Modul erledigt (für's erste, es soll ja auch aussschalten).
Titel: Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: RaspiLED am 13 April 2020, 07:06:19
Zitat von: FHEM-Wohnung am 12 April 2020, 23:12:13
Der Druck wird in Cups angehalten und muss dann manuell freigegeben werden
Hi,
das ist bei mir auch so. Dann kann ich entweder ewig warten, oder ich rufe ein

"/usr/sbin/cupsenable Drucker"

auf.

Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: marvin78 am 13 April 2020, 10:08:57
Auch da musst du dir deine CUPS Konfiguration anschauen. Das hat mit dem Modul leider nichts zu tun.
Titel: Antw:Neues Modul CUPS_Switch: Schalte ein Device ein bei neuem Druckauftrag
Beitrag von: RaspiLED am 13 April 2020, 12:00:08
Hi,
Nee in FHEM ist alles okay ;-) Und ja ist hier OffTopic, aber da findet man wirklich wenig zu! Daher interessiert es hier vielleicht doch jemanden - Frohe Ostern!
Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...