Raspberry Pi'de NUT ile UPS İzleme

Bu yazı, PiMyLifeUp - Monitoring a UPS with NUT on the Raspberry Pi kaynağından Türkçe'ye çevrilerek hazırlanmıştır.

Bu eğitimde, Raspberry Pi'nizde bir NUT sunucusu kurarak bir kesintisiz güç kaynağını (UPS) uzaktan nasıl yönetebileceğinizi göstereceğiz.

Raspberry Pi UPS NUT Sunucusu

NUT, Network UPS Tool (Ağ UPS Aracı) anlamına gelir ve Raspberry Pi'niz gibi bir cihazın bir UPS ile iletişim kurmasını ve onu izlemesini sağlar.

Hepsinden iyisi, NUT UPS bilgisini diğer NUT istemcilerine yayınlamanızı sağlar. Bu sunucu işlevselliği, diğer sistemlerin UPS bilgilerinize erişmesine ve buna göre tepki vermesine olanak tanır.

Örneğin, ağımızda NUT çalıştıran bir Raspberry Pi kullanıyoruz, bu da UPS'e bağlı diğer bilgisayarların kalan gücü okumasını ve buna göre kapanmasını sağlıyor.

Raspberry Pi'de NUT kurmak, özellikle UPS'iniz bir USB bağlantısı sunuyorsa nispeten basittir.

Devam etmeden önce, NUT'un UPS'inizi destekleyip desteklemediğini görmek için resmi donanım uyumluluk listesine bakmalısınız. UPS'iniz destekleniyorsa, onu Raspberry Pi'nize takın.

Raspberry Pi'ye NUT Sunucusu Kurulumu

Aşağıdaki adımlarda, Raspberry Pi'ye NUT sunucusunu kuracağız. Neyse ki, yazılım resmi paket deposu üzerinden mevcuttu, bu da bu süreci nispeten basit hale getiriyor.

1. Yapmamız gereken ilk şey, Raspberry Pi'mizin paket listesini güncellemek ve güncel olmayan tüm paketleri yükseltmektir.

Aşağıdaki komutu kullanarak her iki görevi de tamamlayabilirsiniz.

sudo apt update
sudo apt upgrade

2. Güncelleme tamamlandıktan sonra, aşağıdaki komutu çalıştırarak Raspberry Pi'ye NUT'u kurabiliriz.

sudo apt install nut

NUT'un temel sürümünün yanı sıra, bu komutu çalıştırarak istemci ve sunucu da kurulacaktır. Ayrıca, apcupsd gibi çakışan bir yazılım kullanıyorsanız, bunu otomatik olarak kaldırabilir.

NUT'u UPS'inizi Okuyacak Şekilde Yapılandırma

NUT sunucusu artık Raspberry Pi'nize kurulu olduğuna göre, yazılımı UPS'ten okuma yapacak şekilde yapılandırmaya geçebiliriz.

UPS Satıcı ve Ürün Kimliğinizi Alma

1. NUT'un Raspberry Pi'nize bağladığınız UPS'i bulmasını kolaylaştırmak için ek bilgilere ihtiyacımız olacak.

Bilgi almanın en kolay yolu, NUT sunucusuyla birlikte kurulan "nut-scanner" aracını kullanmaktır.

sudo nut-scanner -U

2. Bu komutu çalıştırdıktan sonra, aşağıda gösterilene benzer bir sonuç görmelisiniz. Örneğimizde, Raspberry Pi'mize bağlı aslında iki UPS var.

Raspberry Pi'niz tarafından izlenmesini istediğiniz her UPS için, not etmeniz gereken beş bilgi parçası vardır:

  • Driver: Bu değer, NUT'un UPS'inizle nasıl iletişim kuracağını anlamasına yardımcı olur.

  • Port: Çoğu durumda, bu "auto" olacaktır. Bununla, NUT üç ek bilgi parçasını kullanarak doğru cihazı otomatik olarak algılayacaktır.

  • VendorID: UPS'inizi üreten satıcıyı tanımlar. Örneğimizde, bu Cyber Power System'e karşılık gelir.

  • ProductID: Bağlı UPS'in hangi belirli ürün olduğunu tanımlamak için kullanılır.

  • Serial: UPS'iniz için benzersiz bir tanımlayıcı olarak kullanılır. Bazı UPS'lerin bunun için benzersiz bir değer belirlemediğini unutmayın, bu da işleri biraz karmaşıklaştırabilir. Birden fazla UPS bağlamaya çalışıyorsanız ama tam olarak aynı bilgilere sahiplerse, "auto"ya güvenmek yerine portu belirtmeniz gerekecektir.

    Scanning USB bus.
    [nutdev1]
    driver = "usbhid-ups"
    port = "auto"
    vendorid = "0764"
    productid = "0501"
    product = "CP1500EPFCLCD"
    serial = "CTLMN2000102"
    vendor = "CPS"
    bus = "001"
    [nutdev2]
    driver = "usbhid-ups"
    port = "auto"
    vendorid = "0764"
    productid = "0501"
    product = "CP1500EPFCLCD"
    serial = "CTLMN2000105"
    vendor = "CPS"
    bus = "001"

Raspberry Pi'de NUT UPS Yapılandırmasını Değiştirme

3. NUT'un Raspberry Pi'nize bağlı UPS'in farkında olması için, yapılandırma dosyalarından birini değiştirmeniz gerekir. NUT, tüm UPS tanımlarını "/etc/nut/ups.conf" dosyasında saklar.

NUT'a hangi UPS ile iletişim kuracağını söyleyen yapılandırma dosyasını düzenlemek için aşağıdaki komutu çalıştırın.

Bu yapılandırma dosyasını Nano metin editörünü kullanarak düzenlemek için açabiliriz.

sudo nano /etc/nut/ups.conf

4. Bu dosyanın en altına kaydırın ve Raspberry Pi'nizde NUT kullanarak izlemek istediğiniz her UPS için yeni bir bölüm ekleyin. Nano kullandığımızdan, CTRL + W, ardından CTRL + V tuşuna basarak en alta atlayabilirsiniz.

Her bölümü doldururken, bir önceki bölümde aldığınız bilgileri yazmalısınız.

  • <NAME>: Bunu UPS'iniz için kullanmayı düşündüğünüz isimle değiştirin. Bu isim herhangi bir sembol veya boşluk içermemelidir. Bir UPS adını nasıl yazabileceğinize dair birkaç örnek "myups1", "nasups", "networkingups"tır.

  • <PORT>: Bununla, UPS'inize bağlanmak için kullanılacak portu belirtmelisiniz. Çoğu durumda, "auto" kullanarak sorunsuz ilerleyebilirsiniz. Bu mod, NUT'un UPS'inizle bağlanmak için doğru portu otomatik olarak seçmesini sağlar.

  • <VENDORID>: UPS'inizin Satıcı Kimliği. Geçerli bir satıcı kimliği örneği "0764"tür.

  • <PRODUCTID>: UPS Ürün Kimliği. Örneğin, "0501".

  • <SERIAL>: UPS için benzersiz Seri Numarası. Daha önceki örneğimizi kullanarak, geçerli bir seri numarası "CTLMN2000102" olurdu.

  • <DESCRIPTION>: UPS'iniz için kısa bir açıklayıcı. Örneğin, "NAS UPS connected via USB" değerini kullanabilirsiniz.

  • <SHUTDOWNORDER>: Bu seçenekle, Raspberry Pi NUT sunucunuzun bağlı UPS'leri hangi sırayla kapatacağını yapılandırabilirsiniz. Raspberry Pi'nizi yeniden başlatmanın aslında UPS'in kapatılmasını tetikleyebileceğini lütfen unutmayın. Bu davranışı aşmak için, bu değeri eksi 1'e (-1) ayarlayabilirsiniz. Eksi bire ayarlandığında, NUT UPS'inizi kapatmayacaktır.

    []
    driver = ""
    port =
    vendorid = ""
    productid = ""
    serial = ""
    desc = ""
    sdorder =

Bunun nasıl çalıştığını göstermek için, aşağıda her iki UPS'imizi de yapılandırma dosyasına ekledikten sonra dosyamızın bir örneği bulunmaktadır.

[nasups]
	driver = "usbhid-ups"
	port = "auto"
	vendorid = "0764"
	productid = "0501"
	serial = "CTLMN2000102"
        desc = "NAS UPS connected via USB"
        sdorder = -1
[networknas]
	driver = "usbhid-ups"
	port = "auto"
	vendorid = "0764"
	productid = "0501"
	serial = "CTLMN2000105"
        desc = "Networking UPS Connected via UPS"
        sdorder = -1

5. Yeni UPS bloğunuzu NUT yapılandırma dosyasına ekledikten sonra, kaydedip çıkabilirsiniz.

CTRL + X, Y ve ardından ENTER tuşuna basarak kaydedip çıkın.

NUT'un Raspberry Pi'nizin Dışından Erişilebilir Olmasını Sağlama

6. Varsayılan olarak, Raspberry Pi'nizdeki NUT sunucusu yalnızca yerel IP adresini dinleyecek şekilde tasarlanmıştır. Bu, ağdaki istemcilerin sunucuyla iletişim kuramayacağı anlamına gelir.

Neyse ki, NUT sunucunun tüm adresleri dinlemesi için varsayılan davranışı değiştirmemize ve ayarlamamıza olanak tanır.

Aşağıdaki komutu kullanarak "upsd.conf" yapılandırma dosyasını düzenlemeye başlayın.

sudo nano /etc/nut/upsd.conf

7. Şimdi bu dosyanın altına aşağıdaki satırı ekleyin. Bu satır, cihazlarınızın NUT sunucusuna bağlanmasına ve onunla konuşmasına izin verecektir.

NUT'un yalnızca belirli bir IP adresini dinlemesini istiyorsanız, "0.0.0.0" kısmını o IP ile değiştirin. Çoğu temel ev kullanımı için, muhtemelen NUT'u tüm ağ arayüzlerinde açığa çıkarmakla sorunsuz ilerleyebilirsiniz.

LISTEN 0.0.0.0 3493

8. Bu satırı ekledikten sonra, CTRL + X, ardından Y, sonra ENTER tuşuna basarak kaydedip çıkın.

Bir NUT Kullanıcısı Ayarlama

9. Kullanıcıları ayarlamak için, "upsd.users" dosyasını değiştirmeniz gerekir. Bu dosya, Raspberry Pi'nizde çalışan NUT sunucusuna erişebilecek kullanıcıları tanımlamanızı sağlar.

Bu dosyayı aşağıdaki komutu çalıştırarak Nano metin editörünü kullanarak düzenleyebilirsiniz.

sudo nano /etc/nut/upsd.users

10. Bu dosyanın içine, dosyanın altına ek bir blok ekleyerek yeni kullanıcılar tanımlamak isteyeceksiniz. Yeni bir kullanıcı tanımlamak için, aşağıdaki şablonu kullanın.

  • <USERNAME>: Kullanıcınız için kullanmak istediğiniz kullanıcı adını belirleyin. Bu kullanıcı adı yalnızca harf ve rakam içermelidir. Örneğin, "pimon" geçerli bir kullanıcı olurdu.

  • <PASSWORD>: Kullanıcınız için uzun ve güvenli bir şifre tanımlayın. UPS durumunuzu almak için Raspberry Pi NUT sunucunuza bağlanırken kullanacağınızdan, bu şifreyi bir yere not etmeniz gerekecek.

  • upsmon primary: Bu satırı ayarlamıyoruz, ama bu, NUT sunucusuna bu kullanıcının mevcut NUT kurulumuna erişmek için kullanılacağını söyler. Bu kullanıcıyı uzak bir NUT sunucusunu izlemek için kullanmak isterseniz, "primary" kısmını "secondary" olarak değiştirirsiniz.

    []
    password =
    upsmon primary

Örneğin, "pimylifeup" şifresine sahip "upsmon" adlı bir kullanıcı oluşturmak isteseydik, aşağıdaki satırları kullanırdık.

[upsmon]
    password = pimylifeup
    upsmon primary

11. Kullanıcılarınızı eklemeyi bitirdikten sonra, CTRL + X, ardından Y, sonra ENTER tuşuna basarak kaydedip çıkabilirsiniz.

Raspberry Pi'de NUT'u Bir Ağ Sunucusu Olarak Ayarlama

12. Artık kullanıcılarımızı oluşturduğumuza ve NUT'a hangi UPS'leri izlemesi gerektiğini söylediğimize göre, NUT'u Raspberry Pi'mizde bir sunucu olarak çalışacak şekilde yeniden yapılandırabiliriz.

Ağ sunucu modunu etkinleştirmek için, terminalde aşağıdaki komutu kullanarak "/etc/nut/nut.conf" yapılandırma dosyasını düzenlememiz gerekiyor.

sudo nano /etc/nut/nut.conf

13. NUT sunucusunu koyabileceğimiz aslında dört farklı mod vardır:

  • none: Bu seçenekle, NUT "yapılandırılmamış" modunda olacaktır. Bu, NUT sunucusunun Raspberry Pi'nizde bileşenlerinden herhangi birini başlatmayacağı anlamına gelir.
  • standalone: Bu modla, hiçbir dış cihaz NUT sunucunuza erişemeyecektir.
  • netserver: NUT sunucunuza dış erişimi etkinleştirmek için, kullanmak isteyeceğiniz mod budur. Mevcut makine dışındaki cihazların izlenen bir UPS'in durumunu alabilmesini sağlar.
  • netclient: NUT'un saf bir istemci olarak çalışmasını sağlar. Bu modla, NUT bir NUT sunucusundan UPS bilgisi alır.

14. Raspberry Pi'mizi bir NUT sunucusu olarak çalışacak şekilde ayarladığımızdan, "netserver" seçeneğini kullanmak isteyeceğiz.

Bu yapılandırma dosyasında, MODE seçeneğini bulana kadar aşağı kaydırın. Nano'nun arama işlevini kullanarak CTRL + W tuşuna basıp "MODE" yazarak ve ardından ENTER tuşuna basarak bunu daha kolay bulabilirsiniz.

MODE=none

Bu satırı bulduktan sonra, "none" kısmını "netserver" ile değiştirin.

MODE=netserver

15. Bu değişikliği yaptıktan sonra, CTRL + X, ardından Y tuşu, sonra ENTER tuşuna basarak kaydedip çıkın.

UPS'iniz İçin Raspberry Pi'nin NUT Sunucusunu Yeniden Başlatma ve Test Etme

16. Tüm bu değişiklikleri yaptıktan sonra, Raspberry Pi'nizde NUT sunucusunu yeniden başlatmanız gerekir.

Terminalde aşağıdaki komutu kullanarak sunucuyu yeniden başlatabilirsiniz.

sudo systemctl restart nut-server

17. Servis yeniden başladıktan sonra, NUT sunucumuzun çalışıp çalışmadığını ve UPS'inizden bilgi almayı başarıp başaramadığını test edebiliriz.

Bunu yapmak için, yapmanız gereken tek şey aşağıdaki komutu kullanmaktır. "upsc" komutu NUT istemcisine bir çağrıdır, hemen sonrasındaki değer ise bilgi aldığımız UPS'in adıdır.

"<UPSNAME>" kısmını bağlı bir UPS'e atadığınız bir isimle değiştirin. Bu, daha önce "/etc/nut/ups.conf" dosyasında tanımladığınız değerdir.

upsc <UPSNAME>

Kullanıcı adınızı ve şifrenizi komuta sağlayarak kullanıcınızın doğru çalıştığını da test edebilirsiniz.

upsc <UPSNAME> -u <USERNAME> -p <PASSWORD>

18. Aşağıda, Raspberry Pi NUT sunucunuzun UPS'inizden alabileceği bilgilere bir örnek bulunmaktadır.

Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 20
battery.mfr.date: CPS
battery.runtime: 9000
battery.runtime.low: 300
battery.type: PbAcid
battery.voltage: 24.0
battery.voltage.nominal: 24
device.mfr: CPS
device.model: CP900EPFCLCD
device.serial: 000000000000
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.transfer.high: 260
input.transfer.low: 170
input.voltage: 236.0
input.voltage.nominal: 230
output.voltage: 268.0
ups.beeper.status: disabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.load: 0
ups.mfr: CPS
ups.model: CP900EPFCLCD
ups.productid: 0501
ups.realpower.nominal: 540
ups.serial: 000000000000
ups.status: OL
ups.test.result: No test initiated
ups.timer.shutdown: -60
ups.timer.start: -60
ups.vendorid: 0764

Raspberry Pi NUT Sunucunuzu Görüntülemek İçin Bir GUI Etkinleştirme

Artık Raspberry Pi'niz NUT ile kurulu ve bağlı UPS'i izliyor olduğuna göre, topladığı bilgileri görüntülemenin kolay bir yolunu isteyebilirsiniz.

Burada takip edebileceğiniz iki seçenek var. Sonraki bölümde yaptığımız gibi NUT-CGI kurabilir veya alternatif olarak Pi'nize PeaNUT kurabilirsiniz.

Neyse ki, bu nispeten basittir çünkü NUT'un kendi web arayüzü vardır. Bu web arayüzü, bir NUT istemcisi kurmadan UPS'inizi uzaktan izlemenin kolay bir yolunu sağlar.

Bu web sunucusu CGI betikleri kullanarak çalıştığından, aşağıdaki adımlar için Raspberry Pi'mizde Apache kullanacağız.

Nut-GUI Sunucusunu Kurma

1. Bazı ek paketler kurmamız gerektiğinden, aşağıdaki komutu kullanarak paket listesinin güncel olduğundan emin olun.

sudo apt update

2. Ardından, Apache web sunucusunu ve NUT-CGI yazılımını kurun. "NUT-CGI", Raspberry Pi'nize bağlı UPS'i web üzerinden izlemenizi sağlar.

Terminalde aşağıdaki komutu kullanarak bu ek paketleri kurabilirsiniz.

sudo apt install apache2 nut-cgi

3. NUT-GUI'nin Raspberry Pi'mizde çalışması için, "hosts" yapılandırma dosyasını değiştirmemiz gerekiyor.

Bu dosyayı aşağıdaki komutu kullanarak düzenlemeye başlayabilirsiniz.

sudo nano /etc/nut/hosts.conf

4. Bu dosyanın altına, aşağıdaki satırı girmek isteyeceksiniz. Bu satır yeni bir monitör tanımlar, izlenecek UPS'i belirtir ve ona bir görüntüleme adı atar.

Bu satırı doldururken değiştirmeniz gereken iki yer tutucu vardır.

  • <UPSNAME>: "<UPSNAME>" kısmını bu rehberde daha önce bu belirli işletim sistemine atadığınız isimle değiştirin. Örneğimizde yapılandırdığımız UPS'e bağlanmak için, bunu "ups" ile değiştirirdik.

  • <DISPALYTEXT>: Bu yer tutucuyu UPS'inizi kısaca açıklayan bir metinle değiştirin. Bu metin NUT web arayüzü içinde kullanılır. Bu örnek için, metnimiz olarak sadece "Local UPS" kullanacağız.

    MONITOR @localhost ""

5. Bu değişikliği yaptıktan sonra, CTRL + X, ardından Y, sonra ENTER tuşuna basarak kaydedip çıkın.

6. Bir sonraki adımımız, "CGI" Apache 2 modülünü etkinleştirmektir.

Terminalde aşağıdaki komutu çalıştırarak bu modülü etkinleştirebilirsiniz.

sudo a2enmod cgi

7. Her şeyin çalışması için, Apache web sunucusunu yeniden başlatmanız gerekir.

Raspberry Pi'nizde aşağıdaki komutu çalıştırarak sunucuyu yeniden başlatın.

sudo systemctl restart apache2

NUT-CGI Web Arayüzüne Erişim

8. Artık Raspberry Pi'nizde NUT web sunucusu olduğuna göre, oluşturduğu arayüzü görüntüleyebilirsiniz.

Bu web arayüzüne erişmek için, Pi'nizin IP Adresini bilmeniz gerekecek. Bu adresi hostname komutunu kullanarak kolayca bulabilirsiniz.

hostname -I

9. Raspberry Pi'nizin IP adresini aldıktan sonra, favori web tarayıcınızda aşağıdaki URL'ye giderek NUT'un web arayüzüne erişebilirsiniz.

"<IPADDRESS>" kısmını Raspberry Pi'nizin IP'siyle değiştirdiğinizden emin olun.

http://<IPADRESI>/cgi-bin/nut/upsstats.cgi

10. URL'ye giderek aşağıdaki web arayüzünü görmelisiniz. Bu sayfa, Raspberry Pi'nizin bağlı olduğu tüm UPS'leri hızlıca izlemenizi sağlar.

UPS'inizin daha ayrıntılı bir görünümünü istiyorsanız, "System" sütununun altındaki bağlantıya tıklayın.

Raspberry Pi NUT Sunucusu UPS Listesi

11. Daha ayrıntılı görünüme erişirseniz, UPS'inizin önemli bilgilerini basit bir çubuk grafikle sunulmuş olarak göreceksiniz.

NUT UPS Genel Görünümü

Sonuç

Umarız bu eğitimin bu noktasında, artık Raspberry Pi'niz NUT ile kurulu ve bir UPS'i başarıyla izliyor olacaktır.

Kapsamlı uyumluluk listesi sayesinde, NUT bir UPS'i izlemek için başvurulacak araçlardan biridir.

Raspberry Pi'nizde bir NUT sunucusunu çalışır hale getirirken herhangi bir sorunla karşılaştıysanız, aşağıya yorum bırakın.