Përmbajtje:

Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protokolli: 8 hapa
Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protokolli: 8 hapa

Video: Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protokolli: 8 hapa

Video: Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protokolli: 8 hapa
Video: Как собрать ПЛК Raspberry Pi Pico || Редактор OpenPLC 2024, Nëntor
Anonim
Image
Image
Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protocol
Tabela e Njoftimeve Dixhitale duke përdorur Raspberry Pi dhe MQTT Protocol

Tabelat e Njoftimeve përdoren pothuajse kudo, si zyra, shkolla, spitale dhe hotele. Ato mund të përdoren pa pushim për të shfaqur njoftime të rëndësishme ose për të reklamuar ngjarje ose takime të ardhshme. Por njoftimi ose reklamat duhet të shtypen në një letër dhe të fiksohen në tabelat e njoftimeve.

Në këtë Instructable le të mësojmë të ndërtojmë Bordin tonë të Njoftimeve Dixhitale me Raspberry Pi për të kursyer shumë letra dhe toner!

Hapi 1: Si funksionon tabela e njoftimeve dixhitale?

Si funksionon tabela e njoftimeve dixhitale?
Si funksionon tabela e njoftimeve dixhitale?
  • Një Raspberry Pi i lidhur me një ekran HDMI i cili është tabela jonë e njoftimeve dixhitale.
  • Një kompjuter Windows përdoret për të publikuar njoftimin në Tabelën e Njoftimeve Dixhitale përmes internetit.
  • Njoftimi i publikuar nga Windows PC merret nga Tabela e Njoftimeve Dixhitale përmes një ndërmjetësi CloudMQTT.
  • Komunikimi midis Windows PC dhe Bordit të Njoftimeve Dixhitale arrihet me protokollin MQTT.

Hapi 2: Gjërat e kërkuara:

  1. Raspberry Pi me OS Rasbian
  2. Shfaq me port HDMI
  3. Windows PC
  4. Lidhje interneti
  5. Llogari CloudMQTT

Hapi 3: Dizajni i GUI për shfaqjen e njoftimeve:

Image
Image
Dizajni GUI për shfaqjen e njoftimeve
Dizajni GUI për shfaqjen e njoftimeve

Ne duhet të krijojmë 2 GUI, një për Raspberry Pi për të shfaqur njoftimin në HDMI Display dhe një tjetër për Windows PC për të publikuar njoftimin për Raspberry Pi përmes ndërmjetësit CloudMQTT.

Dizajni i GUI varet nga vendi ku do të vendosni Tabelën e Njoftimeve Dixhitale. Për shembull, më lejoni të krijoj një GUI për Instructables Office për të shfaqur ngjarjet dhe takimet e ardhshme në mënyrë që punonjësit të azhurnohen me informacionin më të fundit.

Easyshtë e lehtë të hartosh një GUI në një kompjuter Windows, kështu që le të krijojmë GUI të Panelit të Njoftimeve Dixhitale në kompjuterin Windows dhe të kopjojmë kodin në Raspberry Pi.

Softueri i kërkuar:

Anaconda (e cila përfshin python 2.7, paketën Qt Designer dhe Spyder IDE).

Qt Designer është mjeti i përdorur për të hartuar GUI. Dalja e Qt Designer do të jetë një skedar.ui, më vonë mund të konvertohet në.py për proces të mëtejshëm.

Çfarë po ndodh në video?:

  • Shkarkoni Anaconda Windows Installer për python 2.7 dhe instalojeni në një kompjuter Windows (proces normal i instalimit).
  • Pas instalimit, mund të gjeni mjetin Qt Designer në "installation_directory / Library / bin / designer.exe" (për mua është "C: / Anaconda2 / Library / bin / designer.exe")
  • Krijoni një shkurtore për "designer.exe" dhe vendoseni në desktop.
  • hapur "designer.exe".
  • Krijoni një dritare të re kryesore.
  • Zgjidhni dhe vendosni paraqitjet dhe pamjet e kërkuara (pamja e tekstit, pamja e etiketës, etj).
  • Ruaj si skedar Rpi_UI.ui.
  • Për ta shndërruar në skedar.py hapni cmd në dosjen aktuale ku ekziston skedari Rpi_UI.ui dhe shkruani komandën e mëposhtme

instalimi_direktoria / Biblioteka / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

per mua eshte, C: / Anaconda2 / Biblioteka / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

kjo komandë do ta shndërrojë skedarin Rpi_UI.ui në skedarRpi_UI.py dhe do ta vendosë në të njëjtin drejtori.

  • Hapni skedarin Rpi_UI.py me Spyder IDE i cili përfshihet në Anaconda.
  • Drejtimi i skenarit do të shfaqë GUI që kemi krijuar më herët.

Tjetra, le të krijojmë llogarinë CloudMQTT.

Hapi 4: Krijoni një llogari CloudMQTT:

Image
Image
  • Vizitoni këtë lidhje.
  • Krijoni një llogari me E-mail dhe regjistrohuni në llogarinë tuaj.
  • Krijo shembull të ri (e kam quajtur si TEST_1).
  • Hapni informacionin e Instancës.
  • Shënoni Serverin, Përdoruesin, Fjalëkalimin dhe Portin.
  • Referojuni CloudMQTT Python Documentation dhe ruani skriptin si CloudMQTT.py.
  • Kodi shembull në dokumentacion kërkon bibliotekë paho, Instaloni Paho Python Client duke përdorur mjetin pip, hapni cmd si administrator dhe futni komandën e mëposhtme.

pip instaloni paho-mqtt

Hapi 5: Kodi përfundimtar i Raspberry Pi Shpjegohet:

Këtu, më lejoni të shpjegoj mënyrën se si e kombinova skedarin RPi_UI.py me CloudMQTT.py dhe e ruajta si RPi_UI.py.

Importoni biblioteka, nëse nuk janë të instaluara, thjesht instalojini

import paho.mqtt.klient si mqtt

import urlparse nga PyQt5 import QtGui, QtWidgets, QtCore nga PyQt5. QtCore import QTimer, QTime nga filetimi i importit Thread import sys import nga google_drive_downloader import GoogleDriveDownloader si gdd import os

Për të instaluar googledrivedownloader, përdorni komandën

pip instaloni googledrivedownloader

Fillimi i variablave,

ikona = "[email protected]"

contestImg = "black" meeting1 = "Takimi1:" venue1 = "Koha dhe vendi1." takimi2 = "Takimi2:" vendi2 = "Koha dhe vendi2." meeting3 = "Takimi3:" venue3 = "Koha dhe vendi3."

E ndjekur nga klasa Ui_MainWindow

klasa Ui_MainWindow (objekti):

def setupUi (vetja, MainWindow):… def retranslateUi (vetja, MainWindow):… def _zhurnimi (vetja):…

Linjat e mëposhtme në funksionin setupUi përditësojnë GUI çdo 3 sekonda duke thirrur funksionin _update

self.retranslateUi (MainWindow)

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

Funksioni on_message pret mesazhin nga ndërmjetësi, sapo të merret mesazhi, ai shkarkon imazhin nga disku i Google duke përdorur ID -në e lidhjes të shkëmbyer me google drive dhe gjithashtu ndryshon vlerat e variablave globale

def on_message (klient, obj, msg):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', njoftimRreceptuar) konkurs globalImg takimi global1 vendi global1 takimi global2 vendi global2 takimi global3 vendi global3 fileId = "" +result.group (1)+"" path = "/home/pi/Desktop/Instructables/RPi UI/ContestImages/"+result.group (1)+". jpg" gdd.download_file_from_google_drive (file_id = fileId, dest_path = rruga) contestImg = rezultati.group (1) takimi1 = rezultati.group (2) vendi1 = rezultati.group (3) takimi2 = rezultati.group (4) vendi2 = rezultati.group (5) takimi3 = rezultati.group (6) vendi3 = rezultati. grupi (7)

Kodi përbëhet nga 2 sythe pafund,

rc = mqttc.loop ()

dhe

sys.exit (app.exec_ ())

Për të drejtuar këto sythe njëkohësisht, kam përdorur konceptin Threading

def sqImport (tId): nëse tId == 0: ndërsa 1: rc = 0 ndërsa rc == 0: rc = mqttc.loop () print ("rc:" + str (rc)) nëse tId == 1: ndërsa 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 ()

Faleminderit, ne kemi përfunduar konfigurimin e Raspberry Pi, më pas le të krijojmë GUI për Windows PC për të publikuar mesazhin në Raspberry Pi.

Hapi 6: Windows PC GUI:

GUI i Windows PC
GUI i Windows PC
  • Hartoni një GUI për Windows dhe ruajeni atë si Windows_UI.ui.
  • Shndërroni atë në një skedar python.
  • Kombinoje atë me skedarin CloudMQTT.py dhe ruajeni atë si Windows_UI.py.
  • Funksioni i skedarit Windows_UI.py është i ngjashëm me skedarin RPi_UI.py, ndryshimi i vetëm është se skedari Windows_UI.py publikon mesazhin ndërsa RPi_UI.py merr mesazhin.

Hapi 7: Kodi Final i Windows PC Shpjegohet:

  • Skedari Windows_UI.py ka të gjitha klasat dhe funksionet e RPi_UI.ui përveç disa.
  • Në vend të funksionit on_message, ai ka një funksion on_publish për të publikuar mesazhin.
  • Kodi i mëposhtëm brenda funksionit retranslateUi thërret funksionin e publikimit pasi të klikohet butoni PUBLISH.

self.pushButton.clicked.connect (self.publish)

  • Funksioni i publikimit bashkon ID -në e lidhjes së Google Drive dhe informacionin e takimit dhe e publikon atë nën temën "njoftim".
  • Ky mesazh do të merret nga Raspberry Pi.

Hapi 8: Vendosni Tabelën e Njoftimeve Dixhitale:

  • Lidhni Raspberry Pi me një ekran HDMI, unë kam përdorur televizorin tim Sony si Ekranin e Tabelave të Njoftimeve Dixhitale.
  • Drejtoni skedarin RPi_UI.py në Raspberry Pi.
  • Drejtoni skedarin Windows_UI.py në kompjuterin Windows.
  • Vendosni ID -në e lidhjes së Google Drive të një imazhi të konkursit dhe njoftimin e takimit.
  • Klikoni në butonin PUBLISH.
  • Tani mund të shihni Tabelën e Njoftimeve Dixhitale të azhurnuar brenda pak sekondash.

Sugjerime:

  • Ju mund të krijoni numrin e dëshiruar të tabelave të njoftimeve dixhitale dhe tabelat mund të regjistrohen në tema të ndryshme.
  • Për ta bërë skedarin Windows_UI.py të lëvizshëm, mund ta shndërroni skedarin në një skedar të ekzekutueshëm duke përdorur pyinstaller, në mënyrë që të ekzekutoni skedarin e ekzekutueshëm në çdo kompjuter Windows pa instaluar bibliotekat e kërkuara në PC.

Faleminderit

SABARI KANNAN M

Recommended: