Raspberry Pi ve MQTT Protokolünü Kullanan Dijital Duyuru Panosu: 8 Adım
Raspberry Pi ve MQTT Protokolünü Kullanan Dijital Duyuru Panosu: 8 Adım
Anonim
Image
Image
Raspberry Pi ve MQTT Protokolünü Kullanan Dijital Duyuru Panosu
Raspberry Pi ve MQTT Protokolünü Kullanan Dijital Duyuru Panosu

Duyuru Panoları ofis, okul, hastane, otel gibi hemen her yerde kullanılmaktadır. Önemli bildirimleri görüntülemek veya yaklaşan etkinliklerin veya toplantıların reklamını yapmak için tekrar tekrar kullanılabilirler. Ancak ilan veya ilanlar bir kağıda basılmalı ve ilan panolarına iğnelenmelidir.

Bu Eğitilebilir Kitapta, çok sayıda kağıt ve toner tasarrufu sağlamak için Raspberry Pi ile Dijital Bildirim Panomuzu oluşturmayı öğrenelim!

Adım 1: Dijital Duyuru Panosu Nasıl Çalışır?

Dijital Bildirim Panosu Nasıl Çalışır?
Dijital Bildirim Panosu Nasıl Çalışır?
  • Dijital Duyuru Panomuz olan bir HDMI Ekrana bağlı bir Raspberry Pi.
  • Duyuruyu İnternet üzerinden Dijital Duyuru Panosu'nda yayınlamak için bir Windows PC kullanılır.
  • Windows PC tarafından yayınlanan bildirim, Digital Notice Board tarafından bir CloudMQTT aracısı aracılığıyla alınır.
  • Windows PC ile Dijital Duyuru Panosu arasındaki iletişim MQTT protokolü ile sağlanır.

Adım 2: Gerekli Şeyler:

  1. Rasbian OS ile Raspberry Pi
  2. HDMI bağlantı noktasına sahip ekran
  3. Windows bilgisayar
  4. İnternet bağlantısı
  5. CloudMQTT hesabı

Adım 3: Bildirimleri Görüntülemek için GUI Tasarımı:

Image
Image
Bildirimleri Görüntülemek için GUI Tasarımı
Bildirimleri Görüntülemek için GUI Tasarımı

2 GUI tasarlamamız gerekiyor, biri Raspberry Pi'nin uyarıyı HDMI Ekranda göstermesi ve diğeri Windows PC'nin duyuruyu CloudMQTT aracısı aracılığıyla Raspberry Pi'ye yayınlaması için.

GUI tasarımı, Dijital Duyuru Panosunu yerleştireceğiniz yere bağlıdır. Örneğin, çalışanların en son bilgilerle güncellenebilmesi için Instructables Office için gelecek etkinlikleri ve toplantıları görüntülemek üzere bir GUI tasarlamama izin verin.

Windows PC'de GUI tasarlamak kolaydır, bu yüzden Windows PC'de Digital Notice Board GUI'sini tasarlayalım ve kodu Raspberry Pi'ye kopyalayalım.

Gerekli yazılım:

Anaconda (python 2.7, Qt Designer paketi ve Spyder IDE içerir).

Qt Designer, GUI'leri tasarlamak için kullanılan araçtır. Qt Designer'ın çıktısı bir.ui dosyası olacaktır, daha sonra daha sonraki işlemler için.py'ye dönüştürülebilir.

Videoda neler oluyor?:

  • Python 2.7 için Anaconda Windows Installer'ı indirin ve bir Windows PC'ye kurun (normal kurulum işlemi).
  • Kurulumdan sonra, Qt Designer aracını "installation_directory\Library\bin\designer.exe" içinde bulabilirsiniz (benim için "C:\Anaconda2\Library\bin\designer.exe")
  • "designer.exe" için bir kısayol oluşturun ve masaüstüne yerleştirin.
  • "designer.exe"yi açın.
  • Yeni bir Ana Pencere oluşturun.
  • Düzenleri ve gerekli görünümleri (metin görünümü, etiket görünümü, vb.) seçin ve yerleştirin.
  • Rpi_UI.ui dosyası olarak kaydedin.
  • .py dosyasına dönüştürmek için Rpi_UI.ui dosyasının bulunduğu mevcut klasörde cmd komut istemini açın ve aşağıdaki komutu yazın

kurulum_dizini\Kitaplık\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

bu benim için, C:\Anaconda2\Library\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

bu komut, Rpi_UI.ui dosyasını Rpi_UI.py dosyasına dönüştürecek ve aynı dizine yerleştirecektir.

  • Anaconda'da bulunan Spyder IDE ile Rpi_UI.py dosyasını açın.
  • Komut dosyasını çalıştırmak, daha önce tasarladığımız GUI'yi görüntüler.

Ardından, CloudMQTT hesabını oluşturalım.

Adım 4: Bir CloudMQTT Hesabı Kurun:

Image
Image
  • Bu bağlantıyı ziyaret edin.
  • E-posta ile bir hesap oluşturun ve hesabınıza giriş yapın.
  • Yeni örnek oluştur (TEST_1 olarak adlandırdım).
  • Örnek bilgilerini açın.
  • Sunucu, Kullanıcı, Parola ve Bağlantı Noktasını not edin.
  • CloudMQTT Python Belgelerine bakın ve komut dosyasını CloudMQTT.py olarak kaydedin.
  • Dokümantasyondaki örnek kod, paho kitaplığı gerektirir, Paho Python İstemcisini pip aracını kullanarak kurun, cmd komut istemini yönetici olarak açın ve aşağıdaki komutu girin.

pip kurulumu paho-mqtt

Adım 5: Raspberry Pi Son Kodu Açıklaması:

Burada, RPi_UI.py dosyasını CloudMQTT.py ile nasıl birleştirdiğimi ve RPi_UI.py olarak kaydettiğimi açıklayayım.

Kitaplıkları içe aktarın, kurulu değilse kurun

paho.mqtt.client'i mqtt olarak içe aktar

urlparse'ı PyQt5'ten içe aktar QtGui, QtWidgets, QtCore'u PyQt5. QtCore'dan içe aktar QTimer, QTime'ı iş parçacığından içe aktar İplik içe aktarma sys'yi google_drive_downloader'dan içe aktar GoogleDriveDownloader'ı gdd içe aktarma işletim sistemi olarak içe aktar

googledrivedownloader'ı yüklemek için şu komutu kullanın:

pip googledrivedownloader yükleyin

Değişkenleri başlatma,

icon = "[email protected]"

yarışmaImg = "siyah" toplantı1 = "Toplantı1:" mekan1 = "Zaman ve mekan1." Meeting2 = "Meeting2:" mekan2 = "Zaman ve mekan2." Meeting3 = "Meeting3:" mekan3 = "Zaman ve mekan3."

Ui_MainWindow sınıfı tarafından takip edilir

sınıf Ui_MainWindow(nesne):

def setupUi(self, MainWindow): … def retranslateUi(self, MainWindow): … def _update(self): …

SetupUi işlevindeki aşağıdaki satırlar, _update işlevini çağırarak GUI'yi her 3 saniyede bir günceller

self.retranslateUi(MainWindow)

QtCore. QMetaObject.connectSlotsByName(MainWindow) self.timer = QTimer() self.timer.timeout.connect(self._update) self.timer.start(3000)

on_message işlevi, aracıdan gelen mesajı bekler, mesaj alındığında google drive paylaşılabilir bağlantı kimliğini kullanarak görüntüyü google drive'dan indirir ve ayrıca global değişkenlerin değerlerini değiştirir

def on_message(istemci, nesne, mesaj):

print(str(msg.payload)) if(str(msg.payload)): noticeReceived = str(msg.payload) sonuç = re.search('%1(.*)%2(.*)%3(. *)%4(.*)%5(.*)%6(.*)%7(.*)%8', noticeReceived) global yarışmaImg global toplantı1 global mekan1 global toplantı2 global mekan2 global toplantı3 global mekan3 fileId = "" +result.group(1)+"" yol = "/home/pi/Desktop/Instructables/RPi UI/ContestImages/"+result.group(1)+".jpg" gdd.download_file_from_google_drive(file_id = fileId, dest_path= yol) yarışmaImg = sonuç.grup(1) toplantı1 = sonuç.grup(2) mekan1 = sonuç.grup(3) toplantı2 = sonuç.grup(4) mekan2 = sonuç.grup(5) toplantı3 = sonuç.grup(6) mekan3 = sonuç.grup(7)

Kod 2 sonsuz döngüden oluşur,

rc = mqttc.loop()

ve

sys.exit(app.exec_())

Bu döngüleri aynı anda çalıştırmak için Threading konseptini kullandım.

def sqImport(tId): if tId == 0: while 1: rc = 0 iken rc == 0: rc = mqttc.loop() print("rc: " + str(rc))if tId == 1: while 1: app = QtWidgets. QApplication(sys.argv) MainWindow = QtWidgets. QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) threadA = Thread(target) = sqImport, args=[0]) threadB = Thread(target = sqImport, args=[1]) threadA.start() threadB.start() threadA.join() threadB.join()

Harika, Raspberry Pi kurulumunu tamamladık, sonra mesajı Raspberry Pi'de yayınlamak için Windows PC için GUI tasarlayalım.

Adım 6: Windows PC GUI:

Windows PC GUI'si
Windows PC GUI'si
  • Windows için bir GUI tasarlayın ve bunu Windows_UI.ui olarak kaydedin.
  • Bir python dosyasına dönüştürün.
  • CloudMQTT.py dosyasıyla birleştirin ve Windows_UI.py olarak kaydedin.
  • Windows_UI.py dosyasının işlevi RPi_UI.py dosyasına benzer, tek fark Windows_UI.py dosyasının iletiyi yayınlaması, RPi_UI.py'nin ise iletiyi almasıdır.

Adım 7: Windows PC Son Kodu Açıklaması:

  • Windows_UI.py dosyası, birkaçı dışında RPi_UI.ui'nin tüm sınıflarına ve işlevlerine sahiptir.
  • on_message işlevi yerine, mesajı yayınlamak için bir on_publish işlevine sahiptir.
  • retranslateUi işlevi içindeki aşağıdaki kod, PUBLISH düğmesine tıklandığında yayınlama işlevini çağırır.

self.pushButton.clicked.connect(self.yayınla)

  • Yayınlama işlevi, google drive paylaşılabilir bağlantı kimliğini ve toplantı bilgilerini birleştirir ve "bildirim" başlığı altında yayınlar.
  • Bu mesaj Raspberry Pi tarafından alınacaktır.

Adım 8: Dijital Duyuru Panosunu Kurun:

  • Raspberry Pi'yi bir HDMI ekrana bağlayın, Sony TV'mi Dijital Duyuru Panosu Ekranı olarak kullandım.
  • Raspberry Pi'deki RPi_UI.py dosyasını çalıştırın.
  • Windows PC'de Windows_UI.py dosyasını çalıştırın.
  • Bir yarışma resminin ve toplantı duyurusunun Google sürücü bağlantı kimliğini girin.
  • YAYINLA düğmesine tıklayın.
  • Artık güncellenen Dijital Duyuru Panosunu birkaç saniye içinde görebilirsiniz.

İpuçları:

  • Dilediğiniz sayıda Dijital Duyuru Panosu oluşturabilir ve Panolara farklı Konulara abone olabilirsiniz.
  • Windows_UI.py dosyasını taşınabilir hale getirmek için dosyayı pyinstaller kullanarak yürütülebilir bir dosyaya dönüştürebilirsiniz, böylece yürütülebilir dosyayı PC'ye gerekli kitaplıkları yüklemeden herhangi bir Windows PC'de çalıştırabilirsiniz.

Teşekkürler

SABARİ KANNAN M