Inhaltsverzeichnis:

Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll - Gunook
Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll - Gunook

Video: Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll - Gunook

Video: Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll - Gunook
Video: IR-Lesekopf (TTL) am Raspberry betreiben + ioBroker-Integration | haus-automatisierung.com [4K] 2024, November
Anonim
Image
Image
Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll
Digitales Schwarzes Brett mit Raspberry Pi und MQTT-Protokoll

Schwarze Bretter werden fast überall verwendet, z. B. in Büros, Schulen, Krankenhäusern und Hotels. Sie können immer wieder verwendet werden, um wichtige Hinweise anzuzeigen oder bevorstehende Veranstaltungen oder Meetings zu bewerben. Der Aushang oder die Anzeigen müssen jedoch auf Papier gedruckt und an den Anschlagtafeln angeheftet werden.

In diesem Instructable lernen wir, unser digitales Schwarzes Brett mit Raspberry Pi zu bauen, um viele Papiere und Toner zu sparen!

Schritt 1: Wie funktioniert das digitale Schwarze Brett?

Wie funktioniert das digitale Schwarze Brett?
Wie funktioniert das digitale Schwarze Brett?
  • Ein Raspberry Pi, der mit einem HDMI-Display verbunden ist, das unser digitales Schwarzes Brett ist.
  • Ein Windows-PC wird verwendet, um die Bekanntmachung auf dem digitalen Schwarzen Brett über das Internet zu veröffentlichen.
  • Die vom Windows-PC veröffentlichte Bekanntmachung geht über einen CloudMQTT-Broker beim Digitalen Anschlagbrett ein.
  • Die Kommunikation zwischen dem Windows-PC und dem Digitalen Brett erfolgt über das MQTT-Protokoll.

Schritt 2: Erforderliche Dinge:

  1. Raspberry Pi mit Rasbian OS
  2. Display mit HDMI-Anschluss
  3. Windows-PC
  4. Internetverbindung
  5. CloudMQTT-Konto

Schritt 3: GUI-Design zur Anzeige von Hinweisen:

Image
Image
GUI-Design zur Anzeige von Hinweisen
GUI-Design zur Anzeige von Hinweisen

Wir müssen 2 GUIs entwerfen, eine für Raspberry Pi, um den Hinweis auf dem HDMI-Display anzuzeigen, und einen anderen für Windows-PC, um den Hinweis über den CloudMQTT-Broker an Raspberry Pi zu veröffentlichen.

Das GUI-Design hängt von dem Ort ab, an dem Sie das digitale Schwarze Brett platzieren möchten. Lassen Sie mich zum Beispiel eine GUI für Instructables Office entwerfen, um bevorstehende Veranstaltungen und Besprechungen anzuzeigen, damit die Mitarbeiter mit den neuesten Informationen aktualisiert werden können.

Es ist einfach, eine GUI auf einem Windows-PC zu entwerfen, also lassen Sie uns die GUI des Digital Notice Board auf dem Windows-PC entwerfen und den Code auf den Raspberry Pi kopieren.

Erforderliche Software:

Anaconda (einschließlich Python 2.7, Qt Designer-Paket und Spyder-IDE).

Qt Designer ist das Tool zum Entwerfen von GUIs. Die Ausgabe des Qt Designers ist eine.ui-Datei, die später zur weiteren Verarbeitung in.py konvertiert werden kann.

Was passiert im Video?:

  • Laden Sie Anaconda Windows Installer für Python 2.7 herunter und installieren Sie es auf einem Windows-PC (normaler Installationsvorgang).
  • Nach der Installation finden Sie das Qt Designer-Tool in "installation_directory\Library\bin\designer.exe" (bei mir ist es "C:\Anaconda2\Library\bin\designer.exe")
  • Erstellen Sie eine Verknüpfung für "designer.exe" und legen Sie diese auf dem Desktop ab.
  • öffne "designer.exe".
  • Erstellen Sie ein neues Hauptfenster.
  • Wählen Sie die Layouts und die erforderlichen Ansichten (Textansicht, Etikettenansicht usw.) aus und platzieren Sie sie.
  • Als Rpi_UI.ui-Datei speichern.
  • Um es in eine.py-Datei zu konvertieren, öffnen Sie die cmd-Eingabeaufforderung im aktuellen Ordner, in dem sich die Datei Rpi_UI.ui befindet, und geben Sie den folgenden Befehl ein:

Installationsverzeichnis\Library\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

für mich ist es, C:\Anaconda2\Library\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

Dieser Befehl konvertiert die Datei Rpi_UI.ui in die Datei Rpi_UI.py und legt sie im selben Verzeichnis ab.

  • Öffnen Sie die Datei Rpi_UI.py mit der Spyder-IDE, die in Anaconda enthalten ist.
  • Wenn Sie das Skript ausführen, wird die zuvor entworfene GUI angezeigt.

Als Nächstes richten wir das CloudMQTT-Konto ein.

Schritt 4: Einrichten eines CloudMQTT-Kontos:

Image
Image
  • Besuchen Sie diesen Link.
  • Erstellen Sie ein Konto mit E-Mail und loggen Sie sich in Ihr Konto ein.
  • Neue Instanz erstellen (ich habe sie TEST_1 genannt).
  • Öffnen Sie die Instanzinfo.
  • Notieren Sie sich Server, Benutzer, Kennwort und Port.
  • Lesen Sie die CloudMQTT-Python-Dokumentation und speichern Sie das Skript als CloudMQTT.py.
  • Der Beispielcode in der Dokumentation erfordert die paho-Bibliothek, Installieren Sie den Paho Python-Client mit dem pip-Tool, öffnen Sie die cmd-Eingabeaufforderung als Administrator und geben Sie den folgenden Befehl ein.

pip install paho-mqtt

Schritt 5: Raspberry Pi Final Code erklärt:

Lassen Sie mich hier erklären, wie ich die Datei RPi_UI.py mit der CloudMQTT.py kombiniert und als RPi_UI.py gespeichert habe.

Bibliotheken importieren, wenn sie nicht installiert sind, installieren Sie sie einfach

paho.mqtt.client als mqtt importieren

urlparse von PyQt5 importieren QtGui, QtWidgets, QtCore von PyQt5 importieren. QtCore QTimer importieren, QTime von Threading importieren Thread importieren sys importieren re von google_drive_downloader importieren GoogleDriveDownloader als gdd importieren os

Um googledrivedownloader zu installieren, verwenden Sie den Befehl

pip installieren googledrivedownloader

Initialisieren von Variablen,

icon = "[email protected]"

ContestImg = "schwarz" meeting1 = "Meeting1:" Veranstaltungsort1 = "Zeit und Veranstaltungsort1." meeting2 = "Meeting2:" Venue2 = "Zeit und Ort2." meeting3 = "Meeting3:" Venue3 = "Zeit und Ort3."

Gefolgt von der Klasse Ui_MainWindow

Klasse Ui_MainWindow(Objekt):

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

Die folgenden Zeilen in der Funktion setupUi aktualisieren die GUI alle 3 Sekunden durch Aufrufen der _update-Funktion

self.retranslateUi(Hauptfenster)

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

Die Funktion on_message wartet auf die Nachricht vom Broker, lädt nach Erhalt der Nachricht das Bild vom Google-Laufwerk mit der gemeinsam nutzbaren Link-ID des Google-Laufwerks herunter und ändert auch die Werte der globalen Variablen

def on_message(client, 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', noticeReceived) globaler WettbewerbImg globales Meeting1 globaler Veranstaltungsort1 globales Meeting2 globaler Veranstaltungsort2 globales Meeting3 globaler Veranstaltungsort3 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= path)contestImg = result.group(1) meeting1 = result.group(2) Veranstaltungsort1 = result.group(3) meeting2 = result.group(4) Veranstaltungsort2 = result.group(5) meeting3 = result.group(6) Veranstaltungsort3 = Ergebnis. Gruppe(7)

Der Code besteht aus 2 Endlosschleifen,

rc = mqttc.loop()

und

sys.exit(app.exec_())

Um diese Schleifen gleichzeitig auszuführen, habe ich das Threading-Konzept verwendet

def sqImport(tId): if tId == 0: while 1: rc = 0 while 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()

Cool, wir haben das Raspberry Pi-Setup abgeschlossen. Lassen Sie uns als nächstes eine GUI für Windows-PC entwerfen, um die Nachricht auf dem Raspberry Pi zu veröffentlichen.

Schritt 6: Windows-PC-GUI:

Windows-PC-GUI
Windows-PC-GUI
  • Entwerfen Sie eine GUI für Windows und speichern Sie sie als Windows_UI.ui.
  • Konvertieren Sie es in eine Python-Datei.
  • Kombinieren Sie es mit der Datei CloudMQTT.py und speichern Sie es als Windows_UI.py.
  • Die Funktion der Datei Windows_UI.py ähnelt der Datei RPi_UI.py, der einzige Unterschied besteht darin, dass die Datei Windows_UI.py die Nachricht veröffentlicht, während die Datei RPi_UI.py die Nachricht empfängt.

Schritt 7: Erklärter endgültiger Windows-PC-Code:

  • Die Datei Windows_UI.py enthält alle Klassen und Funktionen von RPi_UI.ui mit Ausnahme einiger weniger.
  • Anstelle der Funktion on_message verfügt sie über eine Funktion on_publish zum Veröffentlichen der Nachricht.
  • Der folgende Code innerhalb der Funktion retranslateUi ruft die Veröffentlichungsfunktion auf, sobald auf die Schaltfläche PUBLISH geklickt wird.

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

  • Die Veröffentlichungsfunktion verkettet die gemeinsam nutzbare Link-ID von Google Drive und die Besprechungsinformationen und veröffentlicht sie unter dem Thema "Hinweis".
  • Diese Nachricht wird vom Raspberry Pi empfangen.

Schritt 8: Richten Sie das digitale Schwarze Brett ein:

  • Verbinden Sie den Raspberry Pi mit einem HDMI-Display, ich habe meinen Sony-Fernseher als digitales Anzeigetafel-Display verwendet.
  • Führen Sie die Datei RPi_UI.py auf dem Raspberry Pi aus.
  • Führen Sie die Datei Windows_UI.py auf dem Windows-PC aus.
  • Geben Sie die Google Drive-Link-ID eines Wettbewerbsbilds und der Besprechungsankündigung ein.
  • Klicken Sie auf die Schaltfläche VERÖFFENTLICHEN.
  • Jetzt können Sie innerhalb weniger Sekunden das aktualisierte Digitale Schwarze Brett sehen.

Hinweise:

  • Sie können die gewünschte Anzahl an digitalen Pinnwänden erstellen und die Boards können zu verschiedenen Themen abonniert werden.
  • Um die Datei Windows_UI.py portabel zu machen, können Sie die Datei mit pyinstaller in eine ausführbare Datei konvertieren, sodass Sie die ausführbare Datei auf jedem Windows-PC ausführen können, ohne die erforderlichen Bibliotheken auf dem PC zu installieren.

Dankeschön

SABARI KANNAN M

Empfohlen: