İçindekiler:

Raspberry Pi Kontrollü Gnuplot Görüntü Çıkışı ve Email Uyarısı ile Oda Sıcaklığı Takibi: 7 Adımda
Raspberry Pi Kontrollü Gnuplot Görüntü Çıkışı ve Email Uyarısı ile Oda Sıcaklığı Takibi: 7 Adımda

Video: Raspberry Pi Kontrollü Gnuplot Görüntü Çıkışı ve Email Uyarısı ile Oda Sıcaklığı Takibi: 7 Adımda

Video: Raspberry Pi Kontrollü Gnuplot Görüntü Çıkışı ve Email Uyarısı ile Oda Sıcaklığı Takibi: 7 Adımda
Video: Raspberry Pi Üzerinde Steam Oyunlarını Nasıl Oynarsınız? 2024, Haziran
Anonim
Gnuplot Görüntü Çıkışı ve Email Uyarı Özelliği ile Raspberry Pi Kontrollü Oda Sıcaklığı İzleme
Gnuplot Görüntü Çıkışı ve Email Uyarı Özelliği ile Raspberry Pi Kontrollü Oda Sıcaklığı İzleme

Çalıştığım yerde çok sayıda bilgisayarın bulunduğu çok önemli bir oda var. Bu sistemlerin performansını optimize etmek için bu odanın ortam sıcaklığı çok soğuk olmalıdır. Benden birkaç kişiye o odadaki klimada bir sorun olduğunu bildirecek bir tür uyarı gönderme yeteneğine sahip bir izleme sistemi bulmam istendi. Bu yapı için donanım olarak Raspberry pi kullandım. ve bir USB sıcaklık ve nem sensörü. İzleme için Gnuplot'u üç sıcaklık grafiği çizmek ve bu grafiklerin görüntüsünü oluşturmak için kullandım. Daha sonra Raspberry pi'de barındırılacak özel bir HTML sayfası oluşturdum, böylece mevcut koşullar, bu gnuplot çıktı görüntüleri ağımızdaki bir web sayfasından izlenebilir. Uyarı için Gmail ile gitmeyi seçtim. Bir Linux Kullanıcı dergisinde bazı örnek kodlar bulmuştum. (Tabii ki gerekli port atamalarını öğrendikten sonra herhangi bir posta sunucusunu kullanabilirsiniz.) Bunun için bu uyarılar için özel bir Gmail e-posta hesabı oluşturdum. Ayrıca ek bir özellik olarak, bir uyarı tetiklendiğinde, e-postaya bir grafik ekliyorum, böylece e-postayı alan kişi, uyarıya neden olanın ne kadar şiddetli bir artış olduğu hakkında bir fikir edinebilir.

Adım 1: Donanım Kurulumu

Donanım Kurulumu
Donanım Kurulumu

Donanımı kurmak için fazla bir şey yok. Raspberry pi, Raspian'ı çalıştırıyor ve USB sıcaklık sensörü doğrudan USB bağlantı noktalarından birine takılıyor. Bu sensörün güç tüketimi minimum düzeyde ve sonuç olarak onu doğrudan Raspberry pi'den besledim. Ancak, biraz daha fazla güç tüketimi olan USB ile çalışan cihazlar için, onları doğrudan Raspberry pi'nin USB bağlantı noktasından değil, elektrikli bir USB hub aracılığıyla çalıştırmanızı tavsiye ederim. Sıcaklık sensörüne güç verildiğinde, sıcaklık ve mevcut koşulların nem okumaları. sıcaklık=20.9°C nem=%62.7 çiğlenme noktası=13.0°CA python betiği bu diziyi ayrıştırır ve sıcaklık ve nem değerlerini her beş dakikada bir üç metin dosyasında saklar; günlük, 24 saatlik ve 48 saatlik metin dosyaları (Farklar daha sonra HTML bölümünde tartışılacaktır). Bu dosyalardan Gnuplot, grafikleri ve ardından her dosyadaki veri kümesinin görüntülerini oluşturacaktır. Python betiğini tartışmadan önce Raspberry pi'nin hazırlanmasından bahsedeceğim. İzleme online olarak yapılacağı için bir web server kurulması gerekmektedir. Raspberry pi'de zamanımda birkaçını denedim ama biraz büyük olmasına rağmen Apache'yi tercih ederim. Ahududu pi'nize Apache kurmak için şunu yazmanız yeterlidir: sudo apt-get install apache2 Kurulumdan önce size bir komut verecek, evet için "y" tuşuna basın ve Ahududu pi'nize bağlı olarak Apache birkaç dakika yüklenecektir. bittiğinde, iki python eklentisi kurmanız gerekir: python-serial ve python-gnuplot fişi. (Her ne kadar son Raspian derlemelerinin python-seri eklenti standardına sahip olduğunu ancak güvenli olması için fark ettim.) Yazdıklarını yüklemek için: sudo apt-get install python-serial python-gnuplotİstemleri onayladıktan sonra bir kez daha, bu eklentiler -ins yüklenecek. Ve bununla donanım kurulumu tamamlandı.

2. Adım: Yazılım Kurulumu - E-posta Kurulumu ve Alıcılar

e-posta adresi oluşturYazılımda fazla ilerlemeden önce, e-posta uyarılarınızı göndermek için bir Gmail hesabı oluşturmanın şimdi tam zamanı. (Bu örnekte GMail kullanılmaktadır, ancak smtp bağlantı noktası ayarlarını öğrendikten sonra herhangi bir posta sunucusu kullanılabilir) Python kodu oldukça basittir ancak gereken içe aktarmalar kritiktir. Onlar olmadan hiçbir şey işe yaramazdı.zamandan içe aktarma *içe aktarma süresi içe aktarma seri içe aktarma smtplib içe aktarma Gnuplot içe aktarma os içe aktarma sysSon olarak, posta listesi. Elbette e-postanın alıcılarını eklememiz gerekiyor. Her e-posta adresi bir değişkene kaydedilir.from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' password = 'custom_email_password'

Adım 3: Yazılım Kurulumu - Seri Kurulum ve Ayrıştırma

Daha sonra seri kuruluma bakacağız. Bu sadece sensörden gelen seri çıkışla eşleşen parametreleri ayarlamak meselesidir. Sensör, standart bir format olan 9600 8 N 1'de bir seri dizi çıktısı verir. Dize alındıktan sonra, bu dizgiyi python'da ve muhtemelen daha güvenilir bir şekilde ayrıştırmanın birkaç yolu vardır. Bunu yapma şeklim, seri dizideki "temp" karakterlerini aramaktır. Bir kez bulunduğunda, bu sadece sonraki 46 seri karakteri bir dizgeye okumak meselesidir. Toplanan dize artık bir dizideki öğeler gibi adreslenebilir. İstenen veriler dizeden ayrıştırılır ve karşılık gelen zaman damgası ile birlikte üç dosyaya kaydedilir.timestamp = strftime("%d%b%Y %H:%M:%S ", localtime())

Adım 4: Yazılım Kurulumu - Gnuplot

Yazılım Kurulumu - Gnuplot
Yazılım Kurulumu - Gnuplot
Yazılım Kurulumu - Gnuplot
Yazılım Kurulumu - Gnuplot
Yazılım Kurulumu - Gnuplot
Yazılım Kurulumu - Gnuplot

Gnuplot bir komut satırı grafik aracıdır. Temelleri bir kez anladığınızda, veri kümelerinin grafiksel gösterimi için oldukça güçlü bir araç olabilir. Gnuplot, doğrudan biçimlendirilmiş bir metin dosyasından çizim yapabilir ve biz de daha önceki ayrıştırma adımından bir tanesine sahibiz. Verilerin dosyada nerede olduğunu gnuplot'a belirttiğimizde, istenen değerleri çizebiliriz. X ekseninde zamanı ve Y ekseninde sıcaklığımızı kullanacağım. Deneyimlerime dayanarak zamanı çizmek en zoru, çünkü gnuplot'ta metin dosyasının formatına uyması için zaman formatını almanız gerekiyor. Tüm grafik seçenekleri tamamlandıktan sonra ve tercihinize göre, Gnuplot bu grafiğin bir görüntüsünü oluşturabilir. Bu, daha sonra Web sayfamızda kullanacağımız resim olacaktır. Bir-p.webp

Adım 5: Yazılım Kurulumu - Eşik Ayarı ve E-posta Gönderme

Uyarı eşiği, kurulumunuz için deneme yanılma yoluyla yapılmalıdır. sistemlerin bulunduğu odanın penceresi yoktur, bu nedenle klima durduğunda çok hızlı bir şekilde ısınabilir. İlk önce birkaç gün boyunca veri setine baktım ve 30 derece C uyarı değerine karar vermeden önce sıcaklıktaki değişimleri izledim. Bu, python sciptinde bir değişken olarak ayarlandı. Bu çok yüksek görünmeyebilir, ancak uyarı tetiklendikten sonra, sorunu kritik hale gelmeden önce düzeltmek için kendinize zaman tanımak istersiniz.

Basit olması için, posta listesine bireysel e-postalar gönderiyorum. Posta listesi kısa olduğu için birden fazla alıcıya bir e-posta göndermekle hiç uğraşmadım. Burada dikkat edilmesi gereken bir nokta, bu betiği her 5 dakikada bir cron işi olarak çalıştırdığım için, eşik tetiklendikten sonra her 5 dakikada bir e-posta göndermek istemezsiniz. Bunu aşmak için, uyarının tarihini ve saatini bir dosyaya yazarım ve sistemin zaten bir uyarı durumunda olup olmadığını görmek için herhangi bir e-posta göndermeden önce bu dosyayı kontrol ederim. Uyarı durumundayken, sistem ve uyarı durumunda olduğu sürece, ilk tetiklemeden sonra her saat başı bir e-postayı yeniden gönderir. Bu şekilde Gmail, e-postanızın kısa sürede çok fazla e-posta göndermesini engellemez.

Adım 6: Yazılım Kurulumu - HTML

Tüm sistemin izlenmesi bir web sayfası üzerinden yapılır ve bunun için çok basit bir html scriptine ihtiyaç vardır. Gnuplot'un yarattığı görüntüler, sadece görüntünün aynı boyutlarını geri kullanıyorum. Ekranıma en iyi uyan bu görüntüler için yaklaşık 3 boyuttan geçtiğime inanıyorum. Html betiğini oluşturmadan önce onun için bir klasör oluşturalım. Varsayılan olarak web barındırma klasörü /var/www/ konumunda bulunur. Bu Raspberry pi'nin tek amacı bu odayı izlemek ve e-posta uyarıları vermek olsa da, iyi bir ev bakımı için /var/www/ klasöründe ayrı bir klasör oluşturdum. Bu klasör kök kullanıcıya ait olduğundan, bu konum olan bir klasör oluşturmak için sudo kullanmanız gerekir. sudo mkdir /var/www/temperatureBu örnekte, klasörün adı olarak sıcaklık kullandım ama burada herhangi bir ad kullanabilirsiniz, ancak bu sayfayı görüntülemek için bunun adres çubuğuna girilmesi gerektiğini unutmayın. Bu yol, python betiği içindeki bir değişkende saklanır. Barındırma konumunun değiştirilmesi veya başka bir sistem için betiğin değiştirilmesi gerekse bile, sadece bu konumdan değiştirilebilir. burada yürütmek istiyorum. Bu sayfayı bulmaya çalışırken bunu kolaylaştıracağı için html betiğine "index.html" adını vermenizi tavsiye ederim. Kritik olan şey, resim boyutunun Gnuplot'taki resim boyutuyla aynı olduğundan emin olmaktır. Bu sayfayı görüntülemek için, Raspberry Pi'nin IP adresini ve ardından /temperature (veya klasörünüze ne ad verdiyseniz) yazmanız yeterlidir. İşyerinde farklı şeyleri izleyen birkaç sistemim var ve hepsi sonuçlarının bir miktar grafik çıktısını üretiyor. Bu yüzden, tüm bu sayfalara bağlantıları olan bir sayfa oluşturdum, böylece bu sayfalara her erişmek istediğimde adres girme konusunda endişelenmeme gerek kalmıyor.

Adım 7: Yaşıyorum…

Bunu bir bilgisayar odasındaki sıcaklığı izlemek için kullandım ama bu herhangi bir kaynaktan gelen çok fazla veri olabilirdi. Bir kez bir metin dosyasında saklanabilir ve formatı olduğunu bilirsiniz, gerisini Gnuplot halledebilir. Bu projeye son zamanlarda eklediğim bir şey, bir tür "kalp atışı" e-postası göndermek. Bu, ayın ilk günü sabah 9'da, sistemin olması gerektiği gibi çalıştığını ve her şeyin yolunda olduğunu bildirmek için posta listesine e-posta gönderen bir komut dosyasına sahibim.

Cronjob listesini şu şekilde kullanmak:

Önerilen: