MQ-* газовые сенсоры + ASI Biont: автоматизация безопасности без кода через REST API и MQTT

Введение

Газовые сенсоры серии MQ- (MQ-2, MQ-5, MQ-135, MQ-7) — одни из самых распространённых датчиков в DIY-проектах, умном доме и промышленных системах мониторинга. Они измеряют концентрацию метана, пропана, дыма, CO₂, аммиака и других газов. Проблема в том, что ручной мониторинг показаний требует постоянного внимания, а написание скриптов для автоматизации (уведомления, включение вентиляции, отключение газа) занимает часы и требует знания языков программирования. ASI Biont — AI-агент, который подключается к любым MQ- сенсорам через MQTT, REST API или COM-порт за секунды. В этой статье разберём, как это работает на практике.

Как ASI Biont подключается к газовым сенсорам

ASI Biont поддерживает несколько способов интеграции. Для MQ-* сенсоров оптимальны два:

Способ Описание Когда использовать
MQTT Сенсор подключён к ESP32/Arduino, который публикует данные в топик MQTT-брокера (например, Mosquitto). AI подписывается на топик через execute_python с библиотекой paho-mqtt Если у вас уже развёрнут MQTT-брокер и ESP32 с прошивкой
COM-порт (Hardware Bridge) Сенсор подключён к Arduino/ESP32 через UART, который соединён с ПК. Пользователь запускает bridge.py, AI отправляет команды через industrial_command Для быстрых экспериментов без настройки сети
HTTP API ESP32 поднимает простой HTTP-сервер с эндпоинтом /sensor. AI опрашивает его через execute_python с aiohttp Когда сенсор используется как веб-сервер

Почему MQTT — лучший выбор

MQTT — лёгкий протокол для IoT, идеально подходит для газовых сенсоров, так как: не требует постоянного соединения, поддерживает QoS (гарантия доставки), работает через NAT и фаерволы. Большинство прошивок для ESP32 с MQ-* сенсорами уже включают MQTT-клиент.

Реальный сценарий: умная вентиляция и уведомления в Telegram

Задача: ESP32 с сенсором MQ-135 измеряет качество воздуха (CO₂, NH₃, бензол). При превышении порога CO₂ > 800 ppm AI отправляет уведомление в Telegram и включает вытяжку через реле.

Шаг 1. Подключаем ESP32 к MQTT-брокеру

Пользователь описывает задачу в чате ASI Biont:

«У меня ESP32 с MQ-135 на пине A0. Он публикует данные в топик home/air/quality раз в 5 секунд. MQTT-брокер — test.mosquitto.org, порт 1883. Подпишись и при превышении CO₂ > 800 ppm отправь Telegram-уведомление на мой chat_id: 123456789»

Шаг 2. AI генерирует код интеграции

ASI Biont выполняет Python-скрипт в sandbox-окружении (через execute_python):

import paho.mqtt.client as mqtt
import requests
import json

TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "123456789"
CO2_THRESHOLD = 800

def on_message(client, userdata, msg):
    try:
        data = json.loads(msg.payload.decode())
        co2 = data.get("co2", 0)
        if co2 > CO2_THRESHOLD:
            text = f"⚠️ Превышение CO₂: {co2} ppm! Включаю вентиляцию."
            requests.post(
                f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
                json={"chat_id": CHAT_ID, "text": text}
            )
            # Публикуем команду на включение реле
            client.publish("home/actuators/fan", "ON")
    except Exception as e:
        print(f"Ошибка: {e}")

client = mqtt.Client()
client.on_message = on_message
client.connect("test.mosquitto.org", 1883, 60)
client.subscribe("home/air/quality")
client.loop_start()  # не блокирует выполнение
# Скрипт завершится через 30 секунд (таймаут sandbox), но loop_start успеет обработать несколько сообщений

Важно: execute_python имеет таймаут 30 секунд. Для долгоживущих подписок нужно использовать industrial_command с MQTT-протоколом (см. ниже).

Шаг 3. Альтернатива — через industrial_command

AI также может использовать встроенный инструмент industrial_command для MQTT:

industrial_command(
    protocol='mqtt',
    command='subscribe',
    params={
        'broker': 'test.mosquitto.org',
        'port': 1883,
        'topic': 'home/air/quality',
        'condition': 'co2 > 800',
        'action': 'telegram:chat_id=123456789'
    }
)

Этот способ не требует написания кода — AI сам обрабатывает условие и действие.

Подключение через COM-порт (Hardware Bridge)

Если у вас нет сети Wi-Fi на ESP32, используйте Hardware Bridge:

  1. Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge)
  2. Запустите:
    pip install pyserial requests websockets python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200
  3. В чате напишите: «Подключись к COM3, baud 115200, прочитай данные с MQ-135 на A0 каждые 10 секунд. Если CO₂ > 800 ppm — включи реле на D2»

AI отправит команду:

industrial_command(
    protocol='serial',
    command='serial_write_and_read',
    params={'data': '524541440a'}  # "READ\n" в hex
)

Bridge прочитает ответ от Arduino, AI его распарсит и выполнит действие.

Пример прошивки для ESP32 с MQTT

Для полноты картины — минимальный код для ESP32 (Arduino IDE):

#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "ваш_SSID";
const char* password = "ваш_пароль";
const char* mqtt_server = "test.mosquitto.org";

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  client.setServer(mqtt_server, 1883);
}

void loop() {
  if (!client.connected()) client.connect("ESP32_MQ135");
  client.loop();
  int sensorValue = analogRead(36);  // A0 на ESP32 — GPIO36
  float voltage = sensorValue * (3.3 / 4095.0);
  // Упрощённая калибровка — для реальной используйте библиотеку
  float co2 = voltage * 100;  
  String payload = "{\"co2\":" + String(co2) + "}";
  client.publish("home/air/quality", payload.c_str());
  delay(5000);
}

Другие сценарии автоматизации

  • MQ-2 (метан/пропан): AI включает газовый клапан и отправляет SMS через Twilio при утечке
  • MQ-7 (CO): AI запускает вытяжку и вызывает службу газа через HTTP API
  • MQ-135 (качество воздуха): AI строит график показаний через matplotlib и отправляет в Telegram

Почему это выгодно

  • Без кода: Пользователь просто описывает задачу — AI пишет и выполняет код
  • Универсальность: ASI Biont подключается к любому устройству через execute_python — не нужно ждать поддержки новых сенсоров
  • Экономия времени: Интеграция занимает минуты вместо часов
  • Гибкость: Можно комбинировать с другими устройствами — например, при утечке газа отключать свет через умную розетку

Заключение

Газовые сенсоры MQ-* — отличный старт для автоматизации безопасности. С ASI Biont вы получаете готового AI-помощника, который сам подключается к вашему оборудованию, анализирует данные и выполняет действия. Никаких сложных скриптов — просто опишите задачу в чате.

Попробуйте интеграцию на asibiont.com — подключите свой MQ-135 за 5 минут.

← Все статьи

Комментарии