В этой статье обсуждается «использование платформ Интернета вещей emqx и mqtt в Vue и Nodejs».
Учитесь обобщать, если что-то не так, поправьте меня, спасибо!
Недавно я сделал кое-что, связанное с Интернетом вещей, и, кстати, тоже подведу итог. Мой личный Go-проект все еще в разработке, прошу обратить внимание.
MQTT (Message Queuing Telemetry Transport) — это легкий протокол связи, предназначенный для связи между устройствами IoT и приложениями. Это протокол публикации/подписки, который позволяет устройствам и приложениям взаимодействовать через промежуточного брокера.
Протокол MQTT работает следующим образом:
MQTT — это протокол, который очень подходит для связи между устройствами и приложениями Интернета вещей. Он широко используется в области Интернета вещей, обеспечивая эффективное и надежное решение для связи между устройствами.
MQTT также поддерживает подстановочные знаки для более гибких подписок. Существует два типа подстановочных знаков: одноуровневые подстановочные знаки (+) и многоуровневые подстановочные знаки (#). Одноуровневые подстановочные знаки соответствуют одному уровню, а многоуровневые подстановочные знаки соответствуют нулю или более уровням. Например, подписка «дом/+/температура» может соответствовать таким темам, как «дом/гостиная/температура» и «дом/спальня/температура».
Сеанс также может установить ясный флаг, указывающий, должен ли агент сохранять состояние подписки и публикации устройства. Если для флага очистки установлено значение true, сеанс будет удален после отключения, а статус подписки и публикации устройства будет очищен.
Устройства могут выбирать соответствующий уровень QoS по мере необходимости. Более высокие уровни QoS приведут к увеличению нагрузки на сеть.
ЭМК
EMQ X разработан для обеспечения высокой производительности, надежности и масштабируемости для Интернета вещей (IoT) и передачи сообщений в реальном времени. Он поддерживает миллионы одновременных подключений и может обрабатывать большие объемы трафика сообщений.
Архитектура EMQ X использует распределенный дизайн, который позволяет увеличить емкость и пропускную способность за счет горизонтального расширения. Он обеспечивает различные режимы кластера, включая режим «главный-подчиненный», режим с несколькими главными устройствами и режим кластера. Вы можете выбрать подходящий режим в соответствии с фактическими потребностями.
EMQ X также предоставляет мощные функции маршрутизации и пересылки сообщений, которые могут направлять сообщения в разные темы или клиентам в соответствии с разными правилами. Он поддерживает подписки с подстановочными знаками на основе тем и может реализовать гибкую фильтрацию сообщений и режимы подписки.
EMQ X также предоставляет богатую систему плагинов для расширения его функциональности. Он предоставляет множество часто используемых плагинов, включая плагины баз данных, плагины аутентификации, плагины WebHook и т. д., для удовлетворения потребностей различных сценариев.
Таким образом, EMQ X — это высокопроизводительный, надежный и масштабируемый распределенный сервер-брокер сообщений MQTT, подходящий для сценариев IoT и передачи сообщений в реальном времени. Он предоставляет богатые функции и гибкий архитектурный дизайн для удовлетворения сценариев приложений различного масштаба и потребностей.
Первым делом скачайте emqx. После скачивания это сжатый пакет, а затем разархивируйте его.
После установки перейдите в каталог bin, введите emqx start и нажмите Enter, чтобы запустить службу. Этот emqx фактически создает локальный сервер mqtt.
Чтобы проверить успешность запуска, мы можем ввести http://localhost:18083/ в локальном браузере. Когда вы увидите изображение ниже, это означает, что служба запустилась успешно. Затем введите имя пользователя и пароль пользователя по умолчанию. имя — admin, а пароль по умолчанию — общедоступный. Введите. Затем вам будет предложено установить имя пользователя и пароль, выбор за вами.
После входа это
Мы можем проверить ссылку в
Тогда мы сможем увидеть нашу собственную ссылку на клиенте
Сначала установите mqtt,
Адрес официального сайта npm выглядит следующим образом:
npm i mqtt
После установки импортируйте его в компонент Vue. Это синтаксис es6.
import * as mqtt from 'mqtt'
После импорта инкапсулируйте функцию. В методах инкапсулируйте функцию init, а затем вызовите ее в установленной функции жизненного цикла.
// ссылкаmqtt
init() {
console.log('начал');
// Варианты конфигурации подключения
let options = {
connectTimeout: 4000, // тайм-аут
// Информация о сертификации
clientId: "111", //Если не заполнено, идентификатор будет сгенерирован случайным образом по умолчанию.
username: "adminVue", //имя пользователя
password: "123456", //пароль
};
this.client = mqtt.connect("ws://localhost:8083/mqtt", options); //Вызов подключенного API
//Соединение успешное
this.client.on("connect", (e) => {
console.log("Соединение успешно", e);
});
//напоминание о переподключении
this.client.on("reconnect", (error) => {
console.log("Повторное подключение", error);
});
//Напоминание о сбое соединения
this.client.on("error", (error) => {
console.log("Соединение не удалось", error);
});
},
Затем инкапсулируйте конец функции, чтобы отключить ссылку, а затем вызовите ее в функции жизненного цикла beforeDestroy, прежде чем компонент будет уничтожен.
end(){
this.client.end()
this.client = null
console.log('Отключено');
}
Теперь запускаем проект и в консоли вы можете увидеть следующее
Это также можно увидеть в emqx
Затем мы инкапсулируем функцию sub, которая используется для подписки на сообщения и также вызывается в mount.
//Подписываемся на сообщение
sub() {
let str = 'text'
this.client.subscribe(str, { qos: 0 }, (err) => {
if (!err) {
console.log(`Тема: "${str}" Подписка на сообщение прошла успешно`)
} else {
console.log('Ошибка подписки на сообщение')
}
})
},
Затем, после запуска, вы можете увидеть
Принцип аналогичен приведенному выше. Подробности смотрите в коде. Я написал комментарии, поэтому не буду их здесь объяснять. Сначала нужно установить mqtt, а затем импортировать его сюда. Я использую npm и mqtt. а затем поместите пакет mqtt. Файл mqtt копируется отдельно и используется. Функцию прослушивания можно использовать несколько раз для облегчения мониторинга и использования данных в других местах.
const express = require('express')
const server = new express()
const mqtt = require('mqtt') //Импортируйте здесь, обратитесь к методу импорта mqtt на официальном сайте npm. Я не стандартный.
// Конфигурация ссылки
const options = {
clean: true, // true: чистая сессия, false: сохранить сеанс
connectTimeout: 4000, // тайм-аут
// Информация о сертификации
clientId: '222222',
username: 'test',
password: '1234'
}
//ws://localhost:8083/mqtt
const connectUrl = 'mqtt://localhost:8083/mqtt'
const client = mqtt.connect(connectUrl, options)
client.on('connect', () => {
console.log('Соединение успешно')
})
client.on('reconnect', (error) => {
console.log('Повторное подключение:', error)
})
client.on('error', (error) => {
console.log('Ошибка подключения:', error)
})
const i = ['setM2','setM3']
//Подписываемся на сообщение setM3
// client.subscribe(i, (err) => {
// console.log('Подписка на setM2 успешна')
// })
// client.on('message', (topic, message) => {
// // const formattedTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
// console.log('Получено сообщение: ', topic, message.toString())
// const data = JSON.parse(message)
// console.log(data)
// })
server.listen(6666, () => {
console.log('Прослушивание порта 6666');
})
Стоит отметить, что мы можем использовать облачный сервис, предоставляемый платформой emqx, а это означает, что нам нужно использовать npm только для установки пакета mqtt, а затем мы можем выполнять облачные услуги, и тогда обе стороны будут подключаться к этому бесплатному облаку. сервис, и тогда обе стороны подпишутся. По одной и той же теме можно добиться информационного взаимодействия.
Если вы подключаетесь к локальному серверу mqtt, обе стороны должны находиться в одной локальной сети, но облачные сервисы гораздо удобнее и игнорируют ограничения по расстоянию.
Все вышеперечисленное основано на локальном использовании, что на самом деле относительно неудобно, а платформа emqx также предоставляет людям бесплатный персональный выделенный облачный сервер, к которому также можно подключиться. Ниже будет продемонстрировано использование бесплатных облачных сервисов в Vue. на самом деле это тоже Просто смените локальный на облачный адрес
this.client = mqtt.connect("ws://broker.emqx.io:8083/mqtt", options); //Вызов подключенного API
В nodejs адрес такой, есть отличия
mqttClient = mqtt.connect('mqtt://broker.emqx.io:1883', options)
Обратите внимание, что перед подключением этими двумя способами вам необходимо установить ранее упомянутые зависимости.