Метеостанции на базе Arduino или ESP32 — отличный способ собирать данные о температуре, влажности, давлении и осадках. Но что, если эти данные начнёт анализировать AI? ASI Biont — это AI-агент, который подключается к вашей погодной станции, обрабатывает показания в реальном времени, отправляет уведомления в Telegram, ведёт историю в базу данных и интегрируется с умным домом. В этой статье — практический гайд по интеграции метеостанции с ASI Biont без сложного кода.
Как AI-агент подключается к метеостанции
ASI Biont поддерживает несколько способов подключения, но для погодной станции на ESP32 с датчиком DHT22 (температура/влажность) и BMP280 (давление) оптимальны два варианта:
- MQTT — ESP32 публикует данные в MQTT-брокер (например, Mosquitto), а ASI Biont подписывается на топик и анализирует их.
- Hardware Bridge + COM-порт — если метеостанция подключена к ПК через USB (Arduino/ESP32), AI подключается через bridge.py, читает данные с порта и управляет устройством.
Почему MQTT? Этот протокол лёгкий, надёжный и идеально подходит для IoT-устройств с ограниченными ресурсами. ESP32 с MQTT может работать годами без сбоев.
Сценарий: мониторинг погоды с уведомлениями в Telegram
Допустим, у вас есть ESP32 с датчиками DHT22 (температура, влажность) и BMP280 (давление). Данные публикуются в топик weather/sensor. Вы хотите:
- Получать уведомление в Telegram, если температура выходит за пределы 18–25 °C.
- Логировать все данные в PostgreSQL.
- Отправлять ежедневную сводку погоды.
Шаг 1. Настройка ESP32 на публикацию MQTT
На ESP32 загружается прошивка на MicroPython или Arduino. Пример на MicroPython:
import network
import time
from umqtt.simple import MQTTClient
from machine import Pin, I2C
import dht
import bmp280
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('SSID', 'PASSWORD')
# Инициализация датчиков
i2c = I2C(scl=Pin(22), sda=Pin(21))
dht_sensor = dht.DHT22(Pin(4))
bmp = bmp280.BMP280(i2c)
# MQTT-клиент
client = MQTTClient('esp32_weather', 'mqtt_broker_ip', port=1883)
client.connect()
while True:
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
pres = bmp.pressure()
payload = '{{"temp":{},"hum":{},"pres":{}}}'.format(temp, hum, pres)
client.publish('weather/sensor', payload)
time.sleep(60)
Этот код отправляет JSON с показаниями раз в минуту.
Шаг 2. Подключение ASI Biont к MQTT-брокеру
В чате с ASI Biont вы пишете:
«Подключись к MQTT-брокеру по адресу mqtt://192.168.1.100:1883, подпишись на топик weather/sensor, получай данные с датчиков температуры, влажности и давления. Если температура выходит за 18–25°C — отправь уведомление в Telegram на мой канал @my_channel. Также запиши все данные в PostgreSQL на localhost:5432, база weather, таблица sensor_log, с полями temp, hum, pres, timestamp.»
ASI Biont автоматически генерирует и выполняет Python-скрипт. Выглядит он примерно так:
import paho.mqtt.client as mqtt
import json
import psycopg2
import requests
from datetime import datetime
# Настройки
telegram_token = 'YOUR_BOT_TOKEN'
telegram_chat = '@my_channel'
db_config = {
'host': 'localhost',
'port': 5432,
'database': 'weather',
'user': 'user',
'password': 'pass'
}
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
temp = data['temp']
hum = data['hum']
pres = data['pres']
timestamp = datetime.now()
# Логирование в БД
conn = psycopg2.connect(**db_config)
cur = conn.cursor()
cur.execute(
'INSERT INTO sensor_log (temp, hum, pres, timestamp) VALUES (%s, %s, %s, %s)',
(temp, hum, pres, timestamp)
)
conn.commit()
cur.close()
conn.close()
# Проверка температуры
if temp < 18 or temp > 25:
message = f'⚠️ Внимание! Температура вышла за норму: {temp}°C'
requests.post(
f'https://api.telegram.org/bot{telegram_token}/sendMessage',
json={'chat_id': telegram_chat, 'text': message}
)
client = mqtt.Client()
client.on_message = on_message
client.connect('192.168.1.100', 1883, 60)
client.subscribe('weather/sensor')
client.loop_forever()
Этот скрипт выполняется в sandbox-окружении ASI Biont (с таймаутом 30 секунд, поэтому loop_forever нужно заменить на loop_start() и использовать time.sleep(30) — AI сам подбирает корректный вариант).
Шаг 3. Получение ежедневной сводки
Вы также можете попросить AI отправлять сводку раз в сутки. Для этого ASI Biont использует execute_python с запросом к PostgreSQL:
import psycopg2
import requests
from datetime import datetime, timedelta
# Подключение к БД
conn = psycopg2.connect(host='localhost', port=5432, database='weather', user='user', password='pass')
cur = conn.cursor()
# Средние за последние 24 часа
cur.execute(
'SELECT AVG(temp), AVG(hum), AVG(pres) FROM sensor_log WHERE timestamp > %s',
(datetime.now() - timedelta(hours=24),)
)
avg_temp, avg_hum, avg_pres = cur.fetchone()
# Отправка в Telegram
message = f'📊 Сводка погоды за сутки:\nСредняя температура: {avg_temp:.1f}°C\nСредняя влажность: {avg_hum:.1f}%\nСреднее давление: {avg_pres:.1f} гПа'
requests.post(
f'https://api.telegram.org/bot{telegram_token}/sendMessage',
json={'chat_id': telegram_chat, 'text': message}
)
cur.close()
conn.close()
Альтернативный сценарий: подключение через Hardware Bridge
Если ваша метеостанция подключена к ПК через USB (например, Arduino Uno с датчиками), используйте bridge.py:
- Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge).
- Запустите на своём компьютере:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=9600 - В чате напишите: «Подключись к порту COM3 через bridge, прочитай данные с метеостанции, если температура выше 30°C — включи светодиод на пине 13.»
AI использует industrial_command с протоколом serial://:
industrial_command(protocol='serial://COM3', command='read', params={'baud': 9600, 'timeout': 1})
Bridge передаёт команду на COM-порт, считывает ответ и возвращает его AI.
Почему это выгодно
- Не нужно писать код вручную. Вы просто описываете задачу на естественном языке, AI генерирует и выполняет скрипт.
- Гибкость. Подключайте любые датчики, базы данных, мессенджеры — AI сам подберёт библиотеки.
- Скорость. Интеграция занимает минуты, а не дни.
- Поддержка любых протоколов. MQTT, Modbus, OPC UA, HTTP API, COM-порт — ASI Biont умеет всё это из коробки.
Заключение
Интеграция погодной станции с AI-агентом ASI Biont превращает обычный сбор данных в интеллектуальную систему мониторинга. AI не только собирает показания, но и анализирует их, отправляет уведомления, ведёт историю и управляет устройствами по заданным правилам. Попробуйте сами: опишите свою задачу в чате на asibiont.com, и AI подключит вашу метеостанцию за секунды.
Комментарии