#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”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-11.png)
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”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-27.png)
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”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-28.png)
Otworzy się modal, w którym musisz dodać nowy sensor o nazwie „Status drukarki” i typie „Tekst”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-30.png)
Przejdź teraz do zakładki „Użytkowe”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-32.png)
I znajdź nowy sensor. Wciśnij przycisk „Edycja”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-34.png)
W nowootwartym modalu pojawia się wiersz „Idx”. Zapisz sobie gdzieś jego wartość.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-36.png)
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
.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-38.png)
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.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-28.png)
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”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-40.png)
Teraz przejdź do zakładki „Przełączniki”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-41.png)
I znajdź nowy sensor. Wciśnij przycisk „Edycja”.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-43.png)
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.
![](https://cleverblog.pl/wp-content/uploads/2021/04/image-45-1024x602.png)