Введение
Датчики газа серии MQ (MQ-2, MQ-135, MQ-7, MQ-9) — одни из самых популярных сенсоров для обнаружения утечек метана, пропана, угарного газа, дыма и оценки качества воздуха в умном доме, гараже или на производстве. Однако их потенциал часто ограничен: данные выводятся на локальный дисплей или отправляются в простую IoT-панель. Чтобы по-настоящему автоматизировать реакцию (включение вентиляции, отправка тревоги в Telegram, логирование в базу данных), требуется писать код, настраивать серверы и разбираться в протоколах. AI-агент ASI Biont решает эту проблему: он подключается к датчику через микроконтроллер (ESP32/Arduino) по MQTT или COM-порту, сам пишет код интеграции и управляет сценариями через обычный диалог в чате. В этой статье мы разберем, как подключить датчик MQ-* к ASI Biont, настроить мониторинг и автоматизировать действия без единой строки ручного кода.
Что такое датчики MQ-* и зачем их подключать к AI-агенту?
Датчики MQ- — это полупроводниковые сенсоры, изменяющие сопротивление при контакте с определенными газами:
- MQ-2 — метан, пропан, дым (чувствительность 300–10000 ppm).
- MQ-135 — аммиак, бензол, CO2 (качество воздуха).
- MQ-7 — угарный газ (CO).
- MQ-9* — метан, пропан, угарный газ.
Они подключаются к аналоговому пину микроконтроллера (ESP32, Arduino) через напряжение 5 В. Микроконтроллер оцифровывает сигнал (0–1023 или 0–4095 для ESP32) и передает его по UART, MQTT или HTTP. Без AI-агента данные остаются «сырыми» — их нужно преобразовывать в ppm, анализировать тренды и вручную писать триггеры. ASI Biont берет на себя всю логику: он получает данные, конвертирует их в значения концентрации, сравнивает с порогами и принимает решения (уведомление, команда на реле, запуск вентилятора).
Как ASI Biont подключается к датчику MQ-*
ASI Biont использует два основных способа для интеграции с датчиками газа:
- MQTT (через paho-mqtt) — если микроконтроллер (ESP32 с Wi-Fi) публикует данные в топик MQTT-брокера (например, Mosquitto на Raspberry Pi). ASI Biont подписывается на топик, получает JSON с показаниями и анализирует их.
- COM-порт через Hardware Bridge — если микроконтроллер (Arduino Uno, ESP32 без Wi-Fi) подключен к ПК по USB. Пользователь запускает bridge.py на своем компьютере, который соединяется с ASI Biont через WebSocket, и AI отправляет команды на чтение аналоговых пинов.
Почему именно эти способы? Для датчиков газа MQ-* не требуется промышленный протокол (Modbus, OPC UA) — достаточно простого последовательного чтения. MQTT удобен для удаленного мониторинга через интернет, а COM-порт — для локальных проектов с Arduino. ASI Biont сам выбирает метод на основе описания пользователя.
Сценарий: ESP32 + MQ-135 + ASI Biont — мониторинг качества воздуха и автоматизация вентиляции
Постановка задачи
Вы хотите отслеживать качество воздуха в гостиной с помощью датчика MQ-135, подключенного к ESP32. Если концентрация CO2 или вредных газов превышает порог, нужно включить вытяжку (через реле) и отправить уведомление в Telegram. Все это без написания кода вручную.
Шаг 1. Подготовка устройства
На ESP32 загружается прошивка, которая каждые 10 секунд считывает аналоговый сигнал с пина GPIO34 (ADC) и отправляет его по MQTT:
# Микропрограмма для ESP32 (MicroPython)
import network
import time
from umqtt.simple import MQTTClient
from machine import Pin, ADC
WIFI_SSID = "your_wifi"
WIFI_PASS = "your_pass"
MQTT_BROKER = "192.168.1.100" # IP брокера
TOPIC = "home/air_quality/mq135"
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB) # 0-3.3V -> 0-4095
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
time.sleep(0.5)
client = MQTTClient("esp32_mq135", MQTT_BROKER)
client.connect()
while True:
raw = adc.read()
# Простая конвертация в ppm (калибровка зависит от датчика)
ppm = (raw / 4095.0) * 1000 # примерный диапазон 0-1000 ppm
payload = f'{{"raw": {raw}, "ppm": {ppm:.2f}}}'
client.publish(TOPIC, payload)
time.sleep(10)
Шаг 2. Подключение ASI Biont через чат
Пользователь описывает задачу в диалоге с ASI Biont:
«Подключись к MQTT-брокеру 192.168.1.100:1883, подпишись на топик home/air_quality/mq135. Получай JSON с полями raw и ppm. Если ppm > 500, отправь уведомление в Telegram на мой канал @my_channel и опубликуй команду home/ventilation/control с payload {"state": "on"}. Логируй все данные в PostgreSQL базу данных air_quality.»
AI автоматически генерирует и выполняет Python-скрипт в sandbox-окружении:
import paho.mqtt.client as mqtt
import json
import requests
import psycopg2
from datetime import datetime
# Настройки
BROKER = "192.168.1.100"
PORT = 1883
TOPIC = "home/air_quality/mq135"
TELEGRAM_TOKEN = "your_token"
TELEGRAM_CHAT = "@my_channel"
DB_HOST = "localhost"
DB_NAME = "air_quality"
DB_USER = "user"
DB_PASS = "pass"
THRESHOLD = 500.0
conn = psycopg2.connect(host=DB_HOST, dbname=DB_NAME, user=DB_USER, password=DB_PASS)
cur = conn.cursor()
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
ppm = data["ppm"]
timestamp = datetime.now()
# Логирование в БД
cur.execute("INSERT INTO readings (timestamp, ppm) VALUES (%s, %s)", (timestamp, ppm))
conn.commit()
# Проверка порога
if ppm > THRESHOLD:
# Уведомление в Telegram
text = f"⚠️ Внимание! Концентрация газов превышает норму: {ppm:.2f} ppm"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT, "text": text})
# Команда на включение вентиляции (через MQTT publish)
client.publish("home/ventilation/control", '{"state": "on"}')
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect(BROKER, PORT, 60)
mqtt_client.subscribe(TOPIC)
mqtt_client.loop_forever() # Примечание: в sandbox используется asyncio для избежания бесконечного цикла
Важно: В реальном sandbox ASI Biont код выполняется с таймаутом 30 секунд, поэтому для долгоживущих интеграций используется асинхронный подход с asyncio или подписка через industrial_command. AI адаптирует скрипт под ограничения среды.
Шаг 3. Результат
- Данные с датчика поступают в PostgreSQL для исторического анализа.
- При превышении порога AI автоматически отправляет сообщение в Telegram и включает вентиляцию.
- Все действия происходят без участия человека — только через диалог в чате.
Альтернативный сценарий: Arduino + MQ-2 через COM-порт
Если у вас Arduino Uno без Wi-Fi, ASI Biont подключается через Hardware Bridge. Пользователь запускает bridge.py на ПК (скачивает из дашборда), указывает порт COM3 и baud rate 9600. Затем в чате пишет:
«Подключись к COM3 через bridge, читай аналоговый пин A0 каждые 5 секунд. Если значение > 800, отправь мне уведомление в Telegram.»
AI использует industrial_command с протоколом serial: serial_write_and_read(data="READ_A0\n"). Микроконтроллер отвечает строкой "A0: 723", AI парсит ответ и проверяет условие.
Преимущества интеграции с ASI Biont
| Параметр | Традиционный подход | С ASI Biont |
|---|---|---|
| Время настройки | Часы — дни (писать код, отлаживать) | Минуты (описать задачу в чате) |
| Необходимые навыки | Знание Python, MQTT, SQL, Telegram API | Умение описать задачу словами |
| Гибкость | Нужно переписывать код при изменении требований | Изменить условие в чате — AI перепишет код |
| Интеграция с другими сервисами | Ручная настройка каждого | AI подключает Telegram, БД, реле одной командой |
Заключение
Датчики газа MQ-* — это доступный и эффективный способ контролировать безопасность и качество воздуха. Интеграция с AI-агентом ASI Biont превращает их из простых сенсоров в интеллектуальную систему мониторинга с автоматическими реакциями: уведомления, управление вентиляцией, логирование данных. Вам не нужно писать код — просто опишите задачу в чате, и AI сам подключится к устройству через MQTT или COM-порт, настроит все сценарии и будет следить за показаниями. Попробуйте интеграцию на asibiont.com уже сегодня — подключите свой датчик газа и убедитесь, насколько это просто.
Комментарии