Rzecz wykonana chyba z rok temu, ale działa idealnie – serwer wydruku który potrafi włączyć drukarkę, wydrukować i ją wyłączyć. Posiadam dość leciwą drukarkę laserową HP LaserJet 1300, ale toner do niej starcza na wieki, a wydruki są bardzo dobre więc szkoda wymieniać na nową. Dwa minusy to zużywanie kilkanaście watt w bezczynności i brak modułu sieciowego przez ciężko drukować z różnych komputerów, o smartfonach nie wspomnę. Pierwotnie korzystałem z printservera firmy Edimax, ale działał tylko z Windowsami. RaspberryPi okazuje się świetnym rozwiązaniem bo nie dość, że nie ma problemu by drukować z Linuxów czy innych Androidów, to jeszcze może drukarkę włączyć na czas samego drukowania.
Do tego celu wykorzystałem popularny, tani moduł nadawczy na 433MHz (przykładowy nadajnik i odbiornik na AliExpress) i jedno z zestawu gniazdek z Biedronki sterowanych pilotem, oczywiście też na 433MHz. Do podsłuchania jaki kod jest potrzebny do włączenia i wyłączenia tego gniazdka wykorzystałem RF_Sniffer z github.com/ninjablocks/433Utils. Z tego samego repo wykorzystałem codesend który skompilowałem do dwóch binarek, jedna uruchamia drukarkę, druga ją wyłącza.
Żeby RPi wiedziało kiedy drukarkę włączyć i wyłączyć, przydatny jest dodatek do CUPSa o nazwie Tea4Cups. Pozwala on na wykonanie skryptów przed i po wykonaniu zadania drukowania. W tym celu w tea4cups.conf wykorzystuję zmienne prehook_0: i posthook_0: które jako argument przyjmują lokalizację skryptu wykonywanego odpowiednio przed i po. W samym CUPSie trzeba tylko dla wybranej drukarki w DeviceURI dodać prefix tea4cups:
W samych skryptach oprócz wywoływania codesend mam ustawiony sleep żeby dasz szansę drukarce na uruchomienie się, żeby system zobaczył urządzenie, a po wydruku chwila żeby drukarka odetchnęła i przestała wydawać wszelkie odgłosy.
Nie robię instrukcji krok po kroku bo generalnie wszystko już w Internecie jest, a i pewne rzeczy się szybko zmieniają, dlatego ogólnie opisuję co i jak, czasem gdzie na coś trzeba zwrócić uwagę.
Oczywiście trzeba mieć świadomość, że samo RPi i te gniazdka prąd też pobierają więc w przypadku nowych urządzeń może się ten zabieg nie opłacać.