#Domoticz – Integracja z drukarką

Stworzyłem skrypty, dzięki którym można wygodnie zarządzać drukarką zainstalowaną w systemie. Pierwszy skrypt automatycznie pobiera dane o statusie drukarki zainstalowanej w systemie i przesyła je do Domoticza. Drugi umożliwia wyczyszczenie systemowej kolejki drukowania.

Wymagania

  • Urządzenie oparte na systemie Linux (takie jak Raspberry Pi) z zainstalowanym Pythonem 3
  • Podłączona i skonfigurowana drukarka
  • Następujące pakiety Pythona zainstalowane na urządzeniu: requests
  • Skrypt zapisuje ostatnio odczytany stan drukarki w pliku, aby uniknąć wysyłania zbędnych żądań do Domoticza, więc upewnij się, że będzie miał uprawnienia do zapisu w tej lokalizacji

Instalacja i użycie

Przygotuj skrypty

Zainstaluj wymagane pakiety Pythona.

pip3 install requests

Sklonuj repozytorium do dowolnego katalogu na swoim urządzeniu, np. do katalogu domowego.

cd
git clone https://github.com/paulomac1000/Domoticz-System-Printer

Przejdź do katalogu skryptu.

cd Domoticz-System-Printer

Funkcja wyświetlania stanu drukarki

Otwórz panel Domoticza w swojej przeglądarce, następnie wybierz zakładkę „Konfiguracja” i „Sprzęt”.

Dodaj urządzenie o nazwie „Drukarka” i typie „Dummy (Does nothing, use for virtual switches only)”. Pozostaw pozostałe opcje niezmienione. Zatwierdź operację przyciskiem „Dodaj”.

Nowo dodane urządzenie powinno pojawić się na liście powyżej. Wciśnij teraz przycisk „Utwórz wirtualne czujniki”, który znajduje się w kolumnie „Typ”.

Otworzy się modal, w którym musisz dodać nowy sensor o nazwie „Status drukarki” i typie „Tekst”.

Przejdź teraz do zakładki „Użytkowe”.

I znajdź nowy sensor. Wciśnij przycisk „Edycja”.

W nowootwartym modalu pojawia się wiersz „Idx”. Zapisz sobie gdzieś jego wartość.

Wróć do konsoli. Najpierw sprawdź nazwę swojej drukarki – użyj poniższego polecenia.

lpstat -p -d

Zobaczysz coś podobnego do poniższego zrzutu. W moim przypadku jest jedna nadmiarowa drukarka, którą stworzył VNC Viewer, aczkolwiek jest ona wyłączona, więc się nią nie przejmuję. Mnie interesuje HP_Deskjet_2640_series.

Następnie skonfiguruj skrypt.

nano systemPrinterStatus.py

Przejdź do wiersza 6 i zamień nazwę drukarki na tę, którą właśnie odczytałeś.

printer_name = 'your printer name'

Następnie przejdź do linii 8 (do poniższego kodu) i zamień adres url na adres swojego Domoticza lub pozostaw niezmienione, jeżeli skrypt będzie wykonywany na tym samym urządzeniu.

DOMOTICZ_SERVER = "127.0.0.1:8080"

Potem przejdź do wiersza 12 (do poniższego kodu) i wprowadź identyfikator Idx dodanego urządzenia.

printer_device_id = 99

Zamknij plik używając ctrl+x i zapisz zmiany. Aby wykonać skrypt, uruchom go z wiersza poleceń.

python3 systemPrinterStatus.py

Jeśli wszystko działało poprawnie, możesz dodać skrypt do tabeli crontab.

crontab -e

crontab nie obsługuje wywołań częstszych niż 1 minuta i chcielibyśmy wywoływać go co 15 sekund, aby nie przeoczyć zmiany statusu. Aby to zrobić, zastosujemy obejście – dodamy skrypt 4-krotnie jako wykonywany co minutę, ale opóźnimy każdy wpis o 15 sekund. Dodaj więc następujący wpis do pliku crontab:

* * * * * sleep 00; timeout 15s python3 /home/pi/Domoticz-System-Printer/systemPrinterStatus.py
* * * * * sleep 15; timeout 15s python3 /home/pi/Domoticz-System-Printer/systemPrinterStatus.py
* * * * * sleep 30; timeout 15s python3 /home/pi/Domoticz-System-Printer/systemPrinterStatus.py
* * * * * sleep 45; timeout 15s python3 /home/pi/Domoticz-System-Printer/systemPrinterStatus.py

Zamknij plik używając ctrl+x i zapisz zmiany.

Funkcja czyszczenia kolejki drukowania

Przejdź do katalogu script w katalogu domowym Domoticza.

cd /home/pi/domoticz/scripts

Utwórz skrypt, który wykonuje czyszczenie kolejki drukowania, wywołując systemPrinterClearQueue.py z repozytorium znajdującego się w Twoim katalogu domowego. W tym celu stwórz skrypt poleceniem nano.

nano printer_clearQueue.sh

I wklej do niego następującą zawartość.

#!/bin/bash
python3 /home/pi/Domoticz-System-Printer/systemPrinterClearQueue.py

Zamknij plik używając ctrl+x i zapisz zmiany.

Otwórz panel Domoticza, rozwiń „Ustawienia”, wybierz „Sprzęt” i znajdź wcześniej dodany sprzęt z nazwą Twojej drukarki.

Wciśnij teraz przycisk „Utwórz wirtualne czujniki”, który znajduje się w kolumnie „Typ”. Otworzy się modal, w którym musisz dodać nowy sensor o nazwie „Wyczyść kolejkę drukowania” i typie „Przełącznik”.

Teraz przejdź do zakładki „Przełączniki”.

I znajdź nowy sensor. Wciśnij przycisk „Edycja”.

Wybierz typ przełącznik „Push On Button”, a następnie wpisz script://printer_clearQueue.sh w polu „Włącz akcję”. Zapisz zmiany i sprawdź, czy działa.