Введение
Современные предприятия и умные дома всё чаще оснащаются счётчиками электроэнергии (Energy meters), которые передают данные о потреблении, напряжении, токе и мощности. Однако просто установить счётчик — мало. Чтобы превратить сырые цифры в actionable insights, нужна интеграция с системой, способной анализировать тренды, выявлять аномалии и автоматически отправлять уведомления. Здесь на помощь приходит AI-агент ASI Biont. В этой статье мы разберём, как подключить Energy meters к ASI Biont через MQTT и Modbus/TCP, настроить сбор данных и реализовать сценарии автоматизации без единой строки кода со стороны пользователя.
Почему стоит подключать Energy meters к AI-агенту?
Energy meters — это не просто устройства учёта. Современные модели поддерживают цифровые протоколы: Modbus RTU/ TCP, MQTT, Pulse-выходы. Подключив их к AI-агенту, вы получаете:
- Автоматический мониторинг энергопотребления в реальном времени.
- Прогнозирование пиковых нагрузок и аномалий.
- Уведомления в Telegram, Slack или email при превышении порогов.
- Интеграцию с другими устройствами (например, отключение не критичных нагрузок при перегрузке).
Как ASI Biont подключается к Energy meters?
ASI Biont — это AI-агент, который сам пишет код интеграции под ваше устройство. Пользователю достаточно описать в чате: «Подключись к счётчику энергии на 192.168.1.100 по Modbus TCP, slave ID 1, читай регистры напряжения и тока каждые 5 минут, отправляй в Telegram при превышении 250 В». AI анализирует задачу, выбирает подходящий протокол из своего арсенала и генерирует Python-скрипт, который выполняется в облачном sandbox ASI Biont.
Доступные способы подключения для Energy meters:
| Протокол | Когда использовать | Инструмент ASI Biont |
|---|---|---|
| Modbus RTU (RS-485) | Счётчики с последовательным портом | Hardware Bridge (bridge.py) + industrial_command с serial:// |
| Modbus/TCP | Счётчики с Ethernet-интерфейсом | industrial_command с protocol='modbus' |
| MQTT | Счётчики, публикующие данные в MQTT-брокер | execute_python с paho-mqtt |
| HTTP API | Счётчики с REST API (например, Shelly EM) | execute_python с requests/aiohttp |
В этой статье мы рассмотрим два самых популярных сценария: Modbus/TCP и MQTT.
Сценарий 1: Сбор данных со счётчика через Modbus/TCP
Допустим, у вас есть счётчик электроэнергии с поддержкой Modbus TCP (например, SDM630Modbus или Eastron SDM120). IP-адрес 192.168.1.100, порт 502, slave ID 1. Вы хотите каждые 10 минут читать напряжение (регистр 0x0000), ток (0x0006) и мощность (0x000C), и при превышении мощности > 5000 Вт получать уведомление в Telegram.
Как это работает в ASI Biont
Вы пишете в чат:
Подключись к Modbus TCP счётчику по адресу 192.168.1.100:502, slave 1. Читай регистры: напряжение (0x0000), ток (0x0006), мощность (0x000C) каждые 10 минут. Если мощность > 5000 Вт, отправь мне сообщение в Telegram. Мой токен Telegram: 123456:ABC…
AI-агент выполняет следующие шаги:
1. Использует industrial_command с protocol='modbus' и command='read_registers' для проверки связи.
2. Пишет Python-скрипт с pymodbus, который запускается через execute_python в sandbox.
3. Скрипт циклически (с таймаутами) читает регистры, парсит значения (32-bit float) и сравнивает с порогом.
4. При превышении отправляет HTTP-запрос к Telegram Bot API.
Пример кода, который генерирует AI
import asyncio
from pymodbus.client import AsyncModbusTcpClient
import requests
import time
TELEGRAM_TOKEN = '123456:ABC...'
CHAT_ID = '123456789'
def send_telegram(message):
url = f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage'
requests.post(url, json={'chat_id': CHAT_ID, 'text': message})
async def read_energy_meter():
client = AsyncModbusTcpClient('192.168.1.100', port=502)
await client.connect()
while True:
# Чтение регистров (адреса: 0x0000, 0x0006, 0x000C)
voltage_reg = await client.read_holding_registers(0x0000, 2, slave=1)
current_reg = await client.read_holding_registers(0x0006, 2, slave=1)
power_reg = await client.read_holding_registers(0x000C, 2, slave=1)
# Преобразование в 32-bit float (Modbus order: big-endian)
voltage = (voltage_reg.registers[0] << 16 | voltage_reg.registers[1]) / 10000.0
current = (current_reg.registers[0] << 16 | current_reg.registers[1]) / 1000.0
power = (power_reg.registers[0] << 16 | power_reg.registers[1]) / 10.0
print(f'Voltage: {voltage} V, Current: {current} A, Power: {power} W')
if power > 5000:
send_telegram(f'⚠️ Превышение мощности: {power} Вт!')
await asyncio.sleep(600) # 10 минут
asyncio.run(read_energy_meter())
Важно: В sandbox ASI Biont код выполняется с таймаутом 30 секунд, поэтому в реальности AI использует industrial_command для периодического опроса, а не бесконечный цикл. Но для демонстрации логики пример корректен.
Сценарий 2: Подключение через MQTT (например, Shelly EM или ESP32 с счётчиком)
Если ваш Energy meter публикует данные в MQTT-брокер (например, Shelly EM публикует топик shellyem/status), вы можете подписаться на эти топики и анализировать данные.
Как это работает
Вы пишете в чат:
Подпишись на MQTT-брокер по адресу mqtt.example.com:1883, топик shellyem/status. Парси JSON-сообщения, извлекай поля total_power и current. Если total_power > 3000 Вт, отправь уведомление в Slack.
AI генерирует скрипт с paho-mqtt, который подписывается на топик, парсит JSON и вызывает Slack API.
Пример кода
import paho.mqtt.client as mqtt
import json
import requests
SLACK_WEBHOOK = 'https://hooks.slack.com/services/...'
def on_message(client, userdata, msg):
payload = json.loads(msg.payload)
total_power = payload.get('total_power', 0)
current = payload.get('current', 0)
print(f'Power: {total_power} W, Current: {current} A')
if total_power > 3000:
requests.post(SLACK_WEBHOOK, json={'text': f'⚠️ Высокое потребление: {total_power} Вт!'})
client = mqtt.Client()
client.on_message = on_message
client.connect('mqtt.example.com', 1883, 60)
client.subscribe('shellyem/status')
client.loop_forever()
Примечание: В ASI Biont для быстрого тестирования можно использовать industrial_command с protocol='mqtt' и command='publish' или 'subscribe', но для длительного мониторинга AI использует execute_python с paho-mqtt.
Преимущества интеграции с ASI Biont
- Нет необходимости писать код вручную. Вы описываете задачу естественным языком, AI генерирует рабочий скрипт.
- Поддержка десятков протоколов. Modbus, MQTT, OPC-UA, BACnet, HTTP API — AI сам выбирает нужный.
- Гибкость. Можно комбинировать данные с разных счётчиков, отправлять уведомления в любые мессенджеры, сохранять историю в базы данных (PostgreSQL, MongoDB).
- Мгновенная интеграция. Не нужно ждать, пока разработчики добавят поддержку конкретной модели — подключайте любое устройство прямо сейчас.
Заключение
Energy meters — это источник ценных данных, но их потенциал раскрывается только при интеграции с интеллектуальной системой. ASI Biont позволяет подключить любой счётчик за считанные минуты через диалог в чате, настроить сбор данных, аналитику и автоматические уведомления. Вы экономите недели разработки и получаете готовое решение под ключ.
Попробуйте интеграцию уже сегодня: перейдите на asibiont.com, создайте API-ключ, скачайте bridge.py и опишите в чате ваше устройство. AI сделает всё остальное.
Комментарии