Введение: зачем подключать метеостанцию к AI-агенту?
Метеостанции — это не просто датчики температуры и влажности. Современные IoT-метеостанции (на базе ESP32, Raspberry Pi или промышленных контроллеров) собирают десятки параметров: температуру, влажность, атмосферное давление, скорость и направление ветра, количество осадков, уровень УФ-излучения. Данные поступают непрерывно, и вручную анализировать их практически невозможно. Именно здесь на помощь приходит AI-агент ASI Biont.
ASI Biont — это AI-конструктор, который позволяет подключать любые устройства через диалог в чате. Вам не нужно писать код интеграции вручную: достаточно описать задачу, указать параметры подключения (IP-адрес, порт, API-ключ), и AI сам сгенерирует и выполнит Python-скрипт, который будет собирать, анализировать и визуализировать данные с метеостанции.
В этой статье мы разберём конкретный сценарий: подключение IoT-метеостанции на базе ESP32 с датчиками BME280 (температура, влажность, давление) и анемометром к ASI Biont через протокол MQTT. Вы узнаете, как настроить ESP32, как AI-агент подписывается на топики MQTT, анализирует тренды погоды и отправляет оповещения в Telegram. Всё это — без единой строки кода с вашей стороны: код пишет AI.
Как ASI Biont подключается к метеостанции?
ASI Biont поддерживает несколько способов подключения к IoT-устройствам. Для метеостанций оптимальный вариант — MQTT. Почему?
- MQTT — лёгкий протокол, идеально подходит для ESP32 с ограниченными ресурсами.
- Позволяет организовать двустороннюю связь: метеостанция публикует данные (publish), AI-агент подписывается на топики (subscribe) и при необходимости отправляет команды управления.
- Не требует статического IP-адреса устройства — достаточно MQTT-брокера (например, Mosquitto, HiveMQ Cloud или локального брокера на Raspberry Pi).
Альтернативные способы для метеостанций:
- COM-порт (RS-232/RS-485) — если метеостанция подключена к ПК через USB-COM-адаптер. Используется Hardware Bridge (bridge.py).
- SSH — если метеостанция работает на одноплатнике (Raspberry Pi, Orange Pi) и данные передаются через локальный скрипт.
- HTTP API — если метеостанция имеет встроенный веб-сервер (например, на базе ESP32 с REST API).
В нашем примере мы используем MQTT, так как это самый гибкий и масштабируемый вариант для IoT.
Схема подключения
Ниже приведена упрощённая схема интеграции:
[ESP32 + BME280 + анемометр] → (MQTT publish) → [MQTT Broker (mosquitto)] → (MQTT subscribe) → [ASI Biont (облако)] → [Telegram / аналитика]
ESP32 подключена к датчикам по шине I2C (BME280) и GPIO (анемометр). Каждые 10 секунд ESP32 публикует JSON-сообщение в топик weather/data. ASI Biont через execute_python запускает скрипт, который подписывается на этот топик с помощью библиотеки paho-mqtt, получает данные и анализирует их.
Аппаратная часть
- ESP32 DevKit V4 — микроконтроллер с Wi-Fi.
- BME280 — датчик температуры, влажности, давления (I2C, адрес 0x76).
- Анемометр (датчик скорости ветра) — подключается к GPIO34 (аналоговый вход).
- MQTT-брокер — можно использовать публичный
broker.hivemq.com:1883или поднять локальный Mosquitto на Raspberry Pi.
Пример прошивки для ESP32 (MicroPython)
Вот как выглядит код на MicroPython, который ESP32 будет выполнять для публикации данных. Обратите внимание: вы можете попросить ASI Biont сгенерировать такой код, просто описав задачу в чате.
import network
import time
import json
from machine import Pin, I2C, ADC
import ubinascii
from umqtt.simple import MQTTClient
# Настройка Wi-Fi
ssid = 'YOUR_SSID'
password = 'YOUR_PASSWORD'
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
time.sleep(1)
print('Wi-Fi connected')
connect_wifi()
# Настройка I2C для BME280
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
# Адрес BME280: 0x76 (или 0x77)
BME_ADDR = 0x76
# Функции чтения BME280 (упрощённо)
def read_bme280():
# Читаем регистры калибровки и данных
# (полный код см. в официальной библиотеке bme280_float)
# Возвращаем кортеж (t, h, p)
return (25.0, 60.0, 1013.25) # заглушка
# Настройка анемометра (аналоговый вход)
anemometer = ADC(Pin(34))
anemometer.atten(ADC.ATTN_11DB) # 0-3.3V
def read_wind_speed():
raw = anemoeter.read()
# Преобразование в м/с (зависит от датчика)
voltage = raw / 4095 * 3.3
speed = voltage * 5.0 # пример калибровки
return speed
# Настройка MQTT
mqtt_server = 'broker.hivemq.com'
client_id = ubinascii.hexlify(network.WLAN().config('mac')).decode()
client = MQTTClient(client_id, mqtt_server, port=1883)
client.connect()
print('MQTT connected')
# Основной цикл
while True:
temp, hum, pres = read_bme280()
wind = read_wind_speed()
payload = json.dumps({
'temperature': temp,
'humidity': hum,
'pressure': pres,
'wind_speed': wind,
'timestamp': time.time()
})
client.publish('weather/data', payload)
print('Published:', payload)
time.sleep(10)
Важно: Этот код выполняется на ESP32, а не в ASI Biont. ASI Biont будет принимать данные через MQTT.
Как ASI Biont подключается к MQTT-брокеру?
Всё, что нужно сделать пользователю, — описать задачу в чате ASI Biont. Например:
«Подключись к MQTT-брокеру broker.hivemq.com:1883, подпишись на топик weather/data, получай данные с метеостанции (температура, влажность, давление, скорость ветра). Если температура поднимается выше 35°C или скорость ветра превышает 15 м/с — отправь мне уведомление в Telegram. Также построй график температуры за последний час и сохрани в PDF.»
AI-агент автоматически сгенерирует и выполнит Python-скрипт с использованием библиотеки paho-mqtt. Вот как выглядит этот скрипт (он выполняется в защищённом sandbox-окружении ASI Biont):
import paho.mqtt.client as mqtt
import json
import time
import requests
from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
# Конфигурация
BROKER = 'broker.hivemq.com'
PORT = 1883
TOPIC = 'weather/data'
TELEGRAM_BOT_TOKEN = 'YOUR_BOT_TOKEN'
TELEGRAM_CHAT_ID = 'YOUR_CHAT_ID'
# Хранилище данных
temperatures = []
timestamps = []
def on_connect(client, userdata, flags, rc):
print('Connected to MQTT broker')
client.subscribe(TOPIC)
def on_message(client, userdata, msg):
global temperatures, timestamps
try:
data = json.loads(msg.payload.decode())
temp = data['temperature']
humidity = data['humidity']
pressure = data['pressure']
wind_speed = data['wind_speed']
current_time = datetime.now()
# Сохраняем данные
temperatures.append(temp)
timestamps.append(current_time)
# Проверка аномалий
if temp > 35.0:
message = f'⚠️ Высокая температура: {temp:.1f}°C'
requests.post(
f'https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage',
json={'chat_id': TELEGRAM_CHAT_ID, 'text': message}
)
if wind_speed > 15.0:
message = f'💨 Сильный ветер: {wind_speed:.1f} м/с'
requests.post(
f'https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage',
json={'chat_id': TELEGRAM_CHAT_ID, 'text': message}
)
# Построение графика (каждые 100 сообщений)
if len(temperatures) % 100 == 0:
plt.figure(figsize=(10, 5))
plt.plot(timestamps, temperatures, label='Temperature (°C)')
plt.xlabel('Time')
plt.ylabel('Temperature (°C)')
plt.title('Temperature Trend (Last Hour)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('temperature_trend.pdf')
plt.close()
print(f'Received: T={temp:.1f}°C, H={humidity:.1f}%, P={pressure:.1f} hPa, W={wind_speed:.1f} m/s')
except Exception as e:
print(f'Error processing message: {e}')
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
# Запускаем цикл обработки (не бесконечный, чтобы не превысить таймаут sandbox)
client.loop_start()
time.sleep(30) # Работаем 30 секунд (максимум для sandbox)
client.loop_stop()
Важно: Sandbox ASI Biont имеет таймаут 30 секунд. Поэтому скрипт не может работать непрерывно. В реальном сценарии AI запускает такой скрипт периодически (например, каждые 5 минут) или использует MQTT-мост с долгоживущим процессом на стороне пользователя (Hardware Bridge).
Реальные сценарии использования
1. Умный полив на основе данных метеостанции
AI-агент анализирует данные о температуре, влажности воздуха и давлении. Если в ближайшие 2 часа ожидается дождь (по данным прогноза и тренду давления), AI отменяет запланированный полив и отправляет уведомление в Telegram. Если, наоборот, жарко и сухо — включает полив через MQTT-команду на ESP32 с реле.
Пример команды в чате:
«Настрой сценарий: если температура > 30°C и влажность < 30% — включи полив на 15 минут через топик irrigation/control. Если давление резко падает (более 2 гПа за час) — отмени полив и предупреди меня.»
2. Оповещения о резких изменениях погоды
Метеостанция измеряет скорость ветра и давление. AI-агент отслеживает аномалии: резкое падение давления (признак шторма) или порывы ветра > 20 м/с. При обнаружении AI отправляет оповещение в Telegram или Slack.
Пример команды в чате:
«Мониторь скорость ветра. Если за 5 минут средняя скорость превысит 15 м/с — отправь предупреждение в Telegram. Также построй график давления за последние 3 часа и пришли мне PDF.»
3. Аналитика микроклимата теплицы
В теплице установлена метеостанция с датчиками CO2, освещённости и температуры. AI-агент собирает данные, строит корреляции (например, зависимость температуры от освещённости) и рекомендует оптимальное время для проветривания или включения обогрева.
Пример команды в чате:
«Проанализируй данные за последнюю неделю: температура, влажность, CO2. Найди периоды, когда CO2 превышал 800 ppm, и сопоставь с температурой. Построй тепловую карту и сохрани в Excel.»
Почему это выгодно?
- Нулевой порог входа. Вам не нужно уметь программировать на Python или разбираться в протоколах IoT. Достаточно описать задачу на естественном языке.
- Экономия времени. AI генерирует и отлаживает код за секунды. Типичная интеграция, которая заняла бы у разработчика 2-3 часа, выполняется за 2-3 минуты диалога.
- Гибкость. Можно подключать любые устройства: от простых датчиков на Arduino до промышленных контроллеров Siemens S7 по протоколу S7 или Modbus TCP. ASI Biont поддерживает более 15 протоколов.
- Масштабируемость. Добавление новой метеостанции — это просто новая строка в конфигурации MQTT. AI сам адаптирует скрипты под новые устройства.
Заключение
Интеграция метеостанции с AI-агентом ASI Biont через MQTT открывает широкие возможности для автоматизации сбора и анализа погодных данных. Вы можете настроить умный полив, получать оповещения о штормах, анализировать микроклимат теплицы — и всё это без написания кода. ASI Biont подключается к любому устройству через execute_python: AI сам пишет интеграцию под ваше оборудование.
Попробуйте сами: зайдите на asibiont.com, создайте AI-агента, опишите свою метеостанцию и начните управлять данными о погоде уже сегодня.
Комментарии