Категории

send_mqtt.php - скрипт для отправки команд в MQTT из браузера

23.11.2025 19:39 | коды из категории: IOT умный дом

про PHP-скрипт для отправки команд в MQTT из браузера send_mqtt.php

Этот небольшой PHP-скрипт позволяет отправлять сообщения в MQTT-брокер через HTTP-запрос (например, из браузера или другого веб-приложения). Он принимает два параметра через GET-запрос:

Если не указан хотя бы один из параметров, скрипт выдаст ошибку.

Как это работает

Скрипт использует системную команду mosquitto_pub — стандартный клиент MQTT из проекта Eclipse Mosquitto. Он запускается на сервере и публикует сообщение в локальный MQTT-брокер (localhost).

Пример вызова из браузера:

http://ваш-сервер/mqtt_send.php?topic=zigbee2mqtt/kitchen_light/set&payload={"state":"ON"}

Это отправит команду включения света на кухне в систему Zigbee2MQTT.

Защита от ошибок

Скрипт содержит простую проверку: если в топике встречается символ % (что часто бывает при некорректной URL-кодировке, например, %2F вместо /), он отклоняет запрос. Это предотвращает отправку битых топиков, которые могут нарушить работу MQTT-системы.

Ограничения и рекомендации

Где это применяется

Такой скрипт удобно использовать в веб-панели управления умным домом: кнопки на HTML-странице при клике делают AJAX-запрос или переход по ссылке, и сразу отправляют команду устройству через MQTT — без необходимости писать сложный бэкенд или использовать WebSocket.

<?php
$topic = $_GET['topic'] ?? '';
$payload = $_GET['payload'] ?? '{"command":"toggle"}';

if (!$topic || !$payload) {
    die('Не хватает параметров');
}

// Проверка: если топик содержит %, то ошибка
if (strpos($topic, '%') !== false) {
    die('Ошибка: неверная кодировка топика');
}

exec("mosquitto_pub -h localhost -t '$topic' -m '$payload'", $output, $return_code);

if ($return_code === 0) {
    echo "Отправлено в $topic: $payload";
} else {
    echo "Ошибка отправки";
}
?>

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA