MyTetra Share
Делитесь знаниями!
Время создания: 13.09.2025 23:04
Автор: alensav
Текстовые метки: test.mosquitto.org
Раздел: PLATFORMIO - Atiny
Запись: alensav/MyTetra2/main/base/1757793871iuvv7zlm74/text.html на raw.githubusercontent.com

Как подключиться клиентом и направить топики из сервера?

Qwen3-Next-80B-A3B10:56 PM

Отлично! Вы привели полный технический текст с сайта test.mosquitto.org — теперь давайте превратим его в понятную, практическую инструкцию, как подключиться к этому MQTT-брокеру и отправлять/получать сообщенияс кодом, командами и примерами для вашего проекта с ATtiny85 + ESP-01.



✅ Руководство: Как подключиться к test.mosquitto.org и использовать MQTT для управления реле

🎯 Цель:
Использовать публичный MQTT-брокер
test.mosquitto.org для обмена сообщениями между:

  • ATtiny85 (кнопка)ESP-01 #1 (MQTT-клиент)ESP-01 #2 (реле)



🔍 Что такое MQTT?

MQTT (Message Queuing Telemetry Transport) — это легковесный протокол передачи сообщений по модели “публикация/подписка”:


РОЛЬ

ОПИСАНИЕ

Публикатор (Publisher)

Отправляет сообщение в “топик” (например,"home/button/1/toggle")

Подписчик (Subscriber)

Слушает топик и получает сообщения

Брокер (Broker)

Сервер, который принимает сообщения и рассылает их подписчикам

💡 Это как радио:
— Кто-то говорит в микрофон (публикатор) →
— Все, кто настроены на эту волну (подписчики), слышат →
— Брокер — это радиостанция!



🌐 Доступ к test.mosquitto.org

✅ Основные параметры брокера


ПАРАМЕТР

ЗНАЧЕНИЕ

Хост (адрес)

test.mosquitto.org

Порт (незашифрованный)

1883Используем именно этот!

Порт (зашифрованный TLS)

8883— не нужен для нашего проекта

Аутентификация

❌ НЕ ТРЕБУЕТСЯ — можно без логина/пароля

Тип соединения

TCP (не WebSocket)

Доступ к темам

✅ Можно публиковать и подписываться на любые топики, кроме#(все) — но# разрешён при аутентификации через имя пользователя

Для вашего проекта — используйте порт 1883, без авторизации.



🛠️ Как подключиться? — 4 способа



✅ Способ 1: Подключение через Arduino IDE (для ESP-01)

(Как в вашем проекте — уже готовый код)

✔️ В вашем коде ESP-01 #1 (кнопка) и ESP-01 #2 (реле) используйте:

cpp

1

2

const char* mqtt_server = "test.mosquitto.org"; // ✅ РАБОТАЕТ!

const int mqtt_port = 1883; // ✅ НЕЗАШИФРОВАННЫЙ ПОРТ

НЕ используйте 8883 или другие порты — они требуют TLS, что сложно на ESP-01 без сертификатов.

Код из предыдущего ответа уже полностью рабочий — просто скопируйте его.



✅ Способ 2: Проверить через терминал (Linux/macOS/WSL)

Установите клиент Mosquitto:

bash

1

2

3

4

5

# Ubuntu/Debian

sudo apt update && sudo apt install mosquitto-clients


# macOS

brew install mosquitto

Подписаться на все сообщения (в реальном времени):

bash

1

mosquitto_sub -h test.mosquitto.org -t "#" -v

-t "#" — подписаться на все топики
-v — показывать топик + сообщение

👉 Откройте ещё одно окно терминала и отправьте сообщение:

bash

1

mosquitto_pub -h test.mosquitto.org -t "home/button/1/toggle" -m "TOGGLE"

️ В первом окне вы увидите:

1

home/button/1/toggle TOGGLE

Это означает: брокер работает, сообщение дошло.



✅ Способ 3: Через веб-клиент (без установки)

🔗 Перейдите:
👉
https://www.hivemq.com/demos/websocket-client/

Настройте:


ПОЛЕ

ЗНАЧЕНИЕ

Host

test.mosquitto.org

Port

1883

Client ID

mytestclient(можно любое)

Topic

home/button/1/toggle

QoS

0

Retain

Off

Нажмите Connect → затем Subscribe

Теперь в другом браузере откройте тот же сайт → введите:


ПОЛЕ

ЗНАЧЕНИЕ

Topic

home/button/1/toggle

Message

TOGGLE

QoS

0

Нажмите Publish → и вы увидите сообщение в первом окне!

✅ Это идеально для тестирования без кода.



✅ Способ 4: Подключиться через Python (для мониторинга)

Установите библиотеку paho-mqtt:

bash

1

pip install paho-mqtt

?? Скрипт: Подписка на топик

python

1

2

3

4

5

6

7

8

9

10

11

12

import paho.mqtt.client as mqtt


def on_message(client, userdata, msg):

print(f"[ПОЛУЧЕНО] {msg.topic}: {msg.payload.decode()}")


client = mqtt.Client()

client.on_message = on_message

client.connect("test.mosquitto.org", 1883)

client.subscribe("home/#") # Подписываемся на все топики home/*


print("Ожидание сообщений...")

client.loop_forever()

Запустите — и отправьте команду через mosquitto_pub:

bash

1

mosquitto_pub -h test.mosquitto.org -t "home/button/1/toggle" -m "TOGGLE"

Вы увидите:

1

[ПОЛУЧЕНО] home/button/1/toggle: TOGGLE



🧩 Какие топики использовать для вашего проекта?


ЦЕЛЬ

РЕКОМЕНДУЕМЫЙ ТОПИК

Команда от кнопки

home/button/1/toggle

Состояние реле

home/relay/1/state

Уведомление о включении

home/relay/1/notification

Лог ошибок

home/error

💡 Используйте логичную структуру:
домашняя_зона/устройство/действие

Пример:

  • home/kitchen/light/on
  • home/garage/door/open



⚠️ Важные ограничения test.mosquitto.org


ОГРАНИЧЕНИЕ

ЧТО ЗНАЧИТ ДЛЯ ВАС

Без аутентификации

Любой может читать/писать ваши топики —никаких паролей!

Не для продакшена

Не храните конфиденциальные данные (например, пароли Wi-Fi)

Может быть перегружен

Иногда задержки — но обычно работает отлично

Поддерживает QoS 0 и 1

Для вашего проекта —QoS 0достаточно (быстро, без гарантии доставки)

Поддерживает Retain

Можно сохранять последнее состояние — полезно для реле

🔧 Добавьте Retain, если хотите, чтобы реле “помнило” своё состояние после перезагрузки:

cpp

1

client.publish("home/relay/1/state", "ON", true); // true = retain



📦 Пример: Полная цепочка (ваш проект)

graph LR

A[ATtiny85<br>Нажал кнопку] -->|UART: "TOGGLE"| B[ESP-01 #1<br>MQTT-клиент]

B -->|publish "home/button/1/toggle"|"test.mosquitto.org"

C[ESP-01 #2<br>MQTT-клиент] -->|subscribe "home/button/1/toggle"| B

C -->|переключает реле| D[Реле]

D -->|отправляет состояние| C

C -->|publish "home/relay/1/state ON"| "test.mosquitto.org"

E[Ваш телефон/ПК] -->|sub "home/relay/1/state"| "test.mosquitto.org"

✅ Теперь вы можете:

  • Смотреть состояние реле в терминале
  • Получать уведомления в Python-скрипте
  • Интегрировать в Home Assistant (через MQTT)



💡 Бонус: Как сделать умное уведомление?

Запустите простой Python-скрипт, который отправляет Telegram-уведомление, когда реле включается:

python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import paho.mqtt.client as mqtt

import requests


TELEGRAM_TOKEN = "YOUR_BOT_TOKEN"

CHAT_ID = "YOUR_CHAT_ID"


def send_telegram(message):

url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"

data = {"chat_id": CHAT_ID, "text": message}

requests.post(url, data=data)


def on_message(client, userdata, msg):

if msg.topic == "home/relay/1/state" and msg.payload.decode() == "ON":

send_telegram("🔌 Реле включено!")


client = mqtt.Client()

client.on_message = on_message

client.connect("test.mosquitto.org", 1883)

client.subscribe("home/relay/1/state")

client.loop_forever()

?? Чтобы получить Telegram-бота:

  1. Напишите в Telegram: @BotFather
  2. Напишите /newbot
  3. Скопируйте токен
  4. Найдите свой Chat ID: напишите боту /start, затем перейдите по ссылке:
    https://api.telegram.org/bot[TOKEN]/getUpdates



✅ Итоговая таблица: Что делать?


ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ?

КАК СДЕЛАТЬ?

Проверить, работает ли брокер

mosquitto_sub -h test.mosquitto.org -t "#" -v

Отправить команду "TOGGLE"

mosquitto_pub -h test.mosquitto.org -t "home/button/1/toggle" -m "TOGGLE"

Подключить ESP-01 к MQTT

Используйтеtest.mosquitto.orgи порт1883в коде

Получить уведомление в Telegram

Запустите Python-скрипт выше

Сделать систему автономной

Установите Mosquitto на Raspberry Pi

Избежать прослушивания

Никогда не используйте конфиденциальные данные— это публичный сервер!



 
MyTetra Share v.0.67
Яндекс индекс цитирования