Оглавление:

Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT: 8 шагов
Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT: 8 шагов

Видео: Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT: 8 шагов

Видео: Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT: 8 шагов
Видео: Система видеонаблюдения ANNKE - камера BR200 и регистратор DW41JD, интеграция в Home Assistant 2024, Ноябрь
Anonim
Image
Image
Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT
Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT

Доски объявлений используются почти везде, например в офисах, школах, больницах и отелях. Их можно использовать снова и снова, чтобы отображать важные уведомления или рекламировать предстоящие события или встречи. Но уведомление или рекламные объявления должны быть напечатаны на бумаге и прикреплены к доске объявлений.

В этом руководстве давайте научимся создавать нашу цифровую доску объявлений с Raspberry Pi, чтобы сэкономить много бумаги и тонера!

Шаг 1. Как работает цифровая доска объявлений?

Как работает электронная доска объявлений?
Как работает электронная доска объявлений?
  • Raspberry Pi подключен к дисплею HDMI, который является нашей цифровой доской объявлений.
  • ПК с Windows используется для публикации уведомления на электронной доске объявлений через Интернет.
  • Уведомление, опубликованное на ПК с Windows, поступает в Digital Notice Board через брокера CloudMQTT.
  • Связь между ПК с Windows и Digital Notice Board осуществляется с помощью протокола MQTT.

Шаг 2: Необходимые вещи:

  1. Raspberry Pi с ОС Rasbian
  2. Дисплей с портом HDMI
  3. ПК с ОС Windows
  4. Интернет-соединение
  5. Учетная запись CloudMQTT

Шаг 3: Дизайн графического интерфейса пользователя для отображения уведомлений:

Image
Image
Дизайн графического интерфейса пользователя для отображения уведомлений
Дизайн графического интерфейса пользователя для отображения уведомлений

Нам нужно разработать 2 графических интерфейса: один для Raspberry Pi для отображения уведомления на дисплее HDMI и другой для ПК с Windows, чтобы опубликовать уведомление для Raspberry Pi через брокера CloudMQTT.

Дизайн графического интерфейса зависит от того, где вы собираетесь разместить электронную доску объявлений. Например, позвольте мне разработать графический интерфейс для Instructables Office, чтобы отображать предстоящие события и встречи, чтобы сотрудники могли получать самую свежую информацию.

Создать графический интерфейс на ПК с Windows легко, поэтому давайте спроектируем графический интерфейс Digital Notice Board на ПК с Windows и скопируем код на Raspberry Pi.

Требуется программное обеспечение:

Anaconda (который включает python 2.7, пакет Qt Designer и Spyder IDE).

Qt Designer - это инструмент, используемый для разработки графических интерфейсов. Результатом работы Qt Designer будет файл.ui, позже он может быть преобразован в.py для дальнейшей обработки.

Что происходит на видео ?:

  • Загрузите установщик Anaconda Windows для python 2.7 и установите его на ПК с Windows (обычный процесс установки).
  • После установки вы можете найти инструмент Qt Designer в «каталог_установки / Library / bin / designer.exe» (для меня это «C: / Anaconda2 / Library / bin / designer.exe»)
  • Создайте ярлык для «designer.exe» и поместите его на рабочий стол.
  • откройте "designer.exe".
  • Создайте новое главное окно.
  • Выберите и разместите макеты и необходимые виды (текстовый вид, вид метки и т. Д.).
  • Сохраните как файл Rpi_UI.ui.
  • Чтобы преобразовать его в файл.py, откройте командную строку в текущей папке, в которой существует файл Rpi_UI.ui, и введите следующую команду

каталог_установки / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

для меня это, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

эта команда преобразует файл Rpi_UI.ui в файл Rpi_UI.py и поместит его в тот же каталог.

  • Откройте файл Rpi_UI.py с помощью Spyder IDE, которая включена в Anaconda.
  • Запуск сценария отобразит графический интерфейс, который мы разработали ранее.

Затем давайте настроим учетную запись CloudMQTT.

Шаг 4: Настройте учетную запись CloudMQTT:

Image
Image
  • Посетите эту ссылку.
  • Создайте учетную запись с помощью электронной почты и войдите в свою учетную запись.
  • Создайте новый экземпляр (я назвал его TEST_1).
  • Откройте информацию об экземпляре.
  • Запишите сервер, пользователя, пароль и порт.
  • Обратитесь к документации CloudMQTT Python и сохраните скрипт как CloudMQTT.py.
  • Для примера кода в документации требуется библиотека paho, установите клиент Paho Python с помощью инструмента pip, откройте командную строку от имени администратора и введите следующую команду.

pip install paho-mqtt

Шаг 5: Объяснение окончательного кода Raspberry Pi:

Здесь позвольте мне объяснить, как я объединил файл RPi_UI.py с CloudMQTT.py и сохранил его как RPi_UI.py.

Импортируйте библиотеки, если они не установлены, просто установите их

импортировать paho.mqtt.client как mqtt

импортировать urlparse из PyQt5 импортировать QtGui, QtWidgets, QtCore из PyQt5. QtCore импортировать QTimer, QTime из потокового импорта Thread import sys import re из google_drive_downloader импортировать GoogleDriveDownloader как gdd import os

Чтобы установить googledvedownloader, используйте команду

pip install googledvedownloader

Инициализация переменных,

icon = "[email protected]"

CompetitionImg = "black" meeting1 = "Meeting1:" Место проведения1 = "Время и место проведения1." Meeting2 = "Встреча2:" Место проведения2 = "Время и место проведения2." meeting3 = "Meeting3:" location3 = "Время и место3."

Далее следует класс Ui_MainWindow

класс Ui_MainWindow (объект):

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

Следующие строки в функции setupUi обновляют графический интерфейс каждые 3 секунды, вызывая функцию _update

self.retranslateUi (MainWindow)

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

Функция on_message ожидает сообщения от брокера, после того как сообщение получено, она загружает изображение с диска Google, используя идентификатор ссылки общего доступа диска Google, а также изменяет значения глобальных переменных

def on_message (клиент, объект, сообщение):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('% 1 (. *)% 2 (. *)% 3 (. *)% 4 (. *)% 5 (. *)% 6 (. *)% 7 (. *)% 8 ', noticeReceived) глобальное соревнованиеImg global meeting1 глобальное место проведения1 глобальное собрание2 глобальное место проведения2 глобальное собрание3 глобальное место проведения3 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 = путь) контестImg = результат.группа (1) встреча1 = результат.группа (2) место проведения1 = результат.группа (3) встреча2 = результат.группа (4) место проведения2 = результат.группа (5) встреча3 = результат.группа (6) площадка3 = result.group (7)

Код состоит из 2-х бесконечных циклов,

rc = mqttc.loop ()

а также

sys.exit (app.exec_ ())

Чтобы запускать эти циклы одновременно, я использовал концепцию Threading.

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 (цель = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()

Круто, мы завершили настройку Raspberry Pi, теперь давайте разработаем графический интерфейс для ПК с Windows, чтобы опубликовать сообщение на Raspberry Pi.

Шаг 6: графический интерфейс ПК с Windows:

Графический интерфейс для ПК с Windows
Графический интерфейс для ПК с Windows
  • Создайте графический интерфейс для Windows и сохраните его как Windows_UI.ui.
  • Преобразуйте его в файл Python.
  • Объедините его с файлом CloudMQTT.py и сохраните как Windows_UI.py.
  • Функция файла Windows_UI.py аналогична файлу RPi_UI.py, с той лишь разницей, что файл Windows_UI.py публикует сообщение, тогда как RPi_UI.py получает сообщение.

Шаг 7. Объяснение окончательного кода для ПК с Windows:

  • Файл Windows_UI.py содержит все классы и функции RPi_UI.ui, за исключением нескольких.
  • Вместо функции on_message у него есть функция on_publish для публикации сообщения.
  • Следующий код в функции retranslateUi вызывает функцию публикации после нажатия кнопки PUBLISH.

self.pushButton.clicked.connect (самостоятельная публикация)

  • Функция публикации объединяет идентификатор ссылки для совместного использования на Google Диске и информацию о встрече и публикует ее в разделе «уведомление».
  • Это сообщение получит Raspberry Pi.

Шаг 8: Настройте Цифровую доску объявлений:

  • Подключите Raspberry Pi к дисплею HDMI, я использовал свой телевизор Sony в качестве дисплея Digital Notice Board.
  • Запустите файл RPi_UI.py в Raspberry Pi.
  • Запустите файл Windows_UI.py на ПК с Windows.
  • Введите идентификатор ссылки на Google Диск для изображения конкурса и объявления о встрече.
  • Щелкните кнопку ПУБЛИКАЦИЯ.
  • Теперь вы можете увидеть обновленную электронную доску объявлений в течение нескольких секунд.

Подсказки:

  • Вы можете создать желаемое количество электронных досок объявлений, и на них можно будет подписаться на разные темы.
  • Чтобы сделать файл Windows_UI.py переносимым, вы можете преобразовать файл в исполняемый файл с помощью pyinstaller, чтобы вы могли запускать исполняемый файл на любом ПК с Windows без установки необходимых библиотек на ПК.

Спасибо

САБАРИ КАННАН М

Рекомендуемые: