W tym artykule opisuję, jak wysyłać informacje o dostępnym miejscu na dysku oraz liczbie oczekujących aktualizacji do Home Assistant za pomocą MQTT.
Wymagania
- Działający broker MQTT (np. Mosquitto).
- Zainstalowany klient MQTT (np.
mosquitto-clients
). - System Linux z zainstalowanym menedżerem pakietów
apt
. - Home Assistant skonfigurowany do obsługi MQTT.
Konfiguracja skryptu
Skrypt bashowy wykonuje dwie kluczowe operacje:
- Sprawdza liczbę oczekujących aktualizacji.
- Oblicza ilość wolnego miejsca na dysku.
Przykładowy skrypt
#!/bin/bash
set -e
# Aktualizacja listy pakietów i liczba oczekujących aktualizacji
apt-get update | logger -t 'auto_apt'
updates_count=$(apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst | wc -l)
/usr/bin/mosquitto_pub -r -t 'system/updates' -m $updates_count
# Obliczanie wolnego miejsca na dysku w MB
free_space=$(df --total | grep /media | awk '{printf "%.0f", $4/1024}')
/usr/bin/mosquitto_pub -r -t 'home-srv/system/free_space' -m $free_space
Wyjaśnienie:
apt-get update
: Aktualizuje listę dostępnych pakietów.apt-get -s -o Debug::NoLocking=true upgrade
: Symuluje proces aktualizacji i zwraca listę pakietów do zaktualizowania.grep ^Inst | wc -l
: Zlicza pakiety wymagające aktualizacji.df --total
: Wyświetla informacje o dostępnej przestrzeni dyskowej.grep /media
: Wyszukuje konkretny wpis dla dysku (w tym przypadku/media
) zwracany przezdf
w celu przekazania przez mqttawk '{printf "%.0f", $4/1024}'
: Przelicza bajty na megabajty (MB).mosquitto_pub -r
: Wysyła wiadomość MQTT na temat z “retained flag”.
Konfiguracja zadania cron
Aby regularnie uruchamiać skrypt (root jest wymagany do sprawdzenia aktualizacji), można skorzystać z planera zadań cron.
- Edytuj listę zadań dla roota:
sudo crontab -e
- Dodaj wpis uruchamiający skrypt co godzinę:
0 */6 * * * /path/to/your/script.sh
- Zapisz zmiany.
Częste używanie apt-get update może generować znaczące obciążenie systemu i sieci. Zaleca się ograniczenie częstotliwości tej operacji, aby uniknąć niepotrzebnych obciążeń, szczególnie na urządzeniach o ograniczonych zasobach.
Konfiguracja Home Assistant
- W pliku
configuration.yaml
dodaj sensory MQTT:
mqtt:
- sensor:
name: "System updates"
state_topic: "system/updates"
state_class: measurement
unique_id: "system.updates.hassio"
value_template: "{{ value | int }}"
- sensor:
name: "System media space"
unique_id: 'mqtt.host.media.free.space.hdd'
device_class: "data_size"
state_topic: "home-srv/system/free_space"
suggested_display_precision: 1
value_template: "{{ value | int }}"
state_class: measurement
unit_of_measurement: MB
- Zrestartuj Home Assistant, aby załadować nowe ustawienia.
Podsumowanie
Dzięki powyższemu skryptowi i konfiguracji możesz łatwo monitorować stan swojego systemu operacyjnego w Home Assistant. MQTT pozwala na bezproblemową integrację, a cron zapewnia regularne aktualizacje danych. Taka automatyzacja pomaga szybko reagować na potencjalne problemy, takie jak brak miejsca na dysku czy konieczność instalacji aktualizacji.