Forum: PC-Programmierung CUPS auf Raspberry mit GPIOs


von Wolfram F. (mega-hz)


Lesenswert?

Hallo,

ich habe seit längeren einen Raspberry PI als Printserver für 3 Drucker 
am laufen. Nun ist das Problem, daß z.B. der Laserdrucker auch im 
Standby zuviel Strom verbraucht.
Bislang habe ich per Funksteckdose diesen immer ein/ausgeschaltet.

Hat nicht jemand eine Idee, wie man dem CUPS etwas "ablocken" kann um 
per GPIO bei neuen Druckauftrag ein Relays zu schalten?

Gruß,
Wolfram.

: Verschoben durch Moderator
von Jörg E. (jackfritt)


Lesenswert?

Du könntest das syslog nach Einträgen von cups scannen und dann GPIO 
schalten.

von randy (Gast)


Lesenswert?

hallo,

hier gibt es dazu infos:

http://forum.lemaker.org/thread-9962-1-1.html

The following is an approach to switch the sockets of USB-connected 
cheap EnerGenie EG-PM2, EG-PMS, EG-PMS2 socket outlets via CUPS and 
sispmctl:

alternativ:

mittels tea4cups gehen prehook und posthook scripte...

einfach vor dem druck via gpio die relais/whatever schalten und
nach dem druck nach zeit x wieder ausschalten.

http://www.pykota.com/software/tea4cups

HTH,
-- randy

von randy (Gast)


Lesenswert?

achja, was natuerlich auch geht ist ueber den raspi die funksteckdosen 
zu schalten.

https://tutorials-raspberrypi.de/raspberry-pi-funksteckdosen-433-mhz-steuern/

-- randy

von Wolfram F. (mega-hz)


Lesenswert?

danke randy, DAS scheint das richtige zu sein, aber ich bekomme das noch 
nicht zum laufen...

hier ist die cups  printers.conf:


# Printer configuration file for CUPS v1.7.5
# Written by cupsd
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<Printer Canon_iP7200_series>
UUID urn:uuid:821b37ce-6a4f-3c31-6099-a3aec50e5cd7
Info Canon iP7200 series
Location print-server
DeviceURI tea4cups:usb://Canon/iP7200%20series?serial=088A3E
State Idle
StateTime 1501951645
Type 36892
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
<Printer FS-1020D>
UUID urn:uuid:3a66e55b-0c8d-3ac9-7a46-da5672b9dac8
Info Kyocera FS-1020D
Location print-server
DeviceURI tea4cups:usb://Kyocera/FS-1020D?serial=XAX5777229
State Stopped
StateMessage Unplugged or turned off
StateTime 1502138997
Reason paused
Type 4116
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>



und hier die tea4cups.conf:


[FS-1020D]
prehook : /home/pi/relays_on.py
posthook : /home/pi/relays_off.py

was ist hier falsch?
denn die beiden scripts zum ein/ausschalten des Relays funktionieren!


----------------------------------
# Relays on
#
#!/usr/bin/env python
#coding: utf8

# die LED bzw. das SolidStateRelays sind an Pin22 und Pin24
# angeschlossen(Anode 22, Kathode 24)

import time
import RPi.GPIO as GPIO

# Zählweise der Pins festlegen
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) # Ignore warnings
# Pin 22 (GPIO 25) als Ausgang festlegen
GPIO.setup(22, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.output(24, GPIO.LOW)
# Ausgang einschalten
GPIO.output(22, GPIO.HIGH)

-------------------------------

#Relays off
#
#!/usr/bin/env python
#coding: utf8
# die LED bzw. das SolidStateRelays sind an Pin22 und Pin24
# angeschlossen(Anode 22, Kathode 24)

import time
import RPi.GPIO as GPIO

# Zählweise der Pins festlegen
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) # Ignore warnings
# Pin 22 (GPIO 25) als Ausgang festlegen
GPIO.setup(22, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.output(24, GPIO.LOW)
time.sleep (60) # 60sek. warten, dann ausschalten
GPIO.output(22, GPIO.LOW)
-------------------------------------------

beide scripts sind ausführbar und werden beim hochfahren per rc.local 
einmal ausgeführt. Nur beim drucken passiert nix mit dem GPIOs...

Kann jemand helfen?

von Wolfram F. (mega-hz)


Lesenswert?

ich habe es (teilweise) hinbekommen:

Da der Kyocera Laserdrucker der einzige ist, der geschaltet werden soll,
habe ich unter [global] die pre- und posthooks eingebaut und den 
tea4cups-pfad bei den anderen Druckern entfernt.
Nun schaltet das SSR auch beim epfang eines Druckauftrages den Laser ein 
und nach 2min wieder aus.
Es sieht für mich so aus, daß wohl der Druckername in Rechteck-Klammern 
nicht passt, obwohl eigentlich so angegeben ist [1020-D]
Erstmal scheint es so zu reichen...
Da später aber noch ein Scanner dazukommt, kann es sein, daß ein 2. SSR 
dazukommt und dann darf das nicht mehr unter [global] geschaltet werden.

Gruß,
Wolfram.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.