Солнечные панели генерируют энергию, но без мобильного приложения вы не знаете, сколько именно. Инвертор работает в неизвестном режиме, а сбой остаётся незамеченным до счёта за электричество. Мы разрабатываем мобильные приложения, которые решают эти проблемы: мониторинг в реальном времени, push-уведомления об авариях, управление режимами. Наш опыт — шесть лет в энергетическом софте, более пятидесяти реализованных проектов с инверторами Huawei FusionSolar, SolarEdge, Fronius, SMA и GoodWe. Гарантируем стабильную работу и полную совместимость с любым оборудованием.
Каждый производитель использует собственный API или протокол: Modbus TCP, REST, облачные сервисы. Унифицированного стандарта нет, поэтому интеграция требует глубокого знания специфики каждого бренда. Наша задача — объединить их в единый интерфейс, доступный на iOS и Android.
Безопасность удалённого управления — отдельная задача. Используем HTTPS, токены с ограниченным сроком, для локальных Modbus-запросов — изолированную сеть и VPN. Все команды на изменение настроек требуют двухфакторного подтверждения.
Протоколы инверторов: таблица совместимости
| Производитель | Локальный протокол | Облачный API | Время отклика, мс |
|---|---|---|---|
| Huawei FusionSolar | Modbus TCP + SUN2000 SDK | FusionSolar OpenAPI | 50-150 |
| SolarEdge | Modbus TCP | SolarEdge Monitoring API | 30-100 |
| Fronius | REST (Fronius Solar API v1) | Fronius Solar.web API | <20 |
| SMA | SMA Data Manager Modbus | Sunny Portal REST | 40-120 |
| GoodWe | Modbus TCP | GoodWe SEMS API | 60-180 |
| Enphase | N/A | Enlighten API v4 | 100-300 |
Сравнение облачного API и локального Modbus TCP
| Параметр | Облачный API | Локальный Modbus TCP |
|---|---|---|
| Задержка | 100-300 мс | 20-80 мс |
| Зависимость от интернета | Да | Нет |
| Безопасность | HTTPS, токены | VPN, изолированная сеть |
| Сложность настройки | Низкая | Средняя |
| Подходит для | Небольшие системы | Промышленные инсталляции |
Какие протоколы выбрать для вашего проекта?
Для небольших систем используем облачный API производителя — просто, не требует открытия портов. Для промышленных инсталляций и офлайн-работы — локальный Modbus TCP. Он быстрее облака на 20–50 мс, что критично для управления в реальном времени.
Huawei FusionSolar OpenAPI: пример интеграции — разработка мобильного приложения
Один из популярных инверторов в Европе и СНГ. API требует авторизации через HTTPS Basic + systemCode:
struct FusionSolarClient {
let baseURL = URL(string: "https://intl.fusionsolar.huawei.com/thirdData")!
var token: String?
mutating func login(userName: String, systemCode: String) async throws {
let body = ["userName": userName, "systemCode": systemCode]
let response: LoginResponse = try await post("/login", body: body)
token = response.data.token
}
func getStationList() async throws -> [Station] {
let response: StationListResponse = try await post(
"/getStationList",
body: ["pageNo": 1]
)
return response.data.list
}
func getRealTimeData(stationCode: String) async throws -> RealTimeData {
return try await post("/getStationRealKpi", body: ["stationCodes": stationCode])
}
}
Основные показатели из getStationRealKpi: radiation_intensity (инсоляция), theory_power (теоретическая мощность), inverter_power (реальная генерация), power_profit (выработка кВт·ч за сутки), use_power (потребление).
Fronius Solar API: локальный REST
Fronius инверторы предоставляют REST API прямо с инвертора без облака:
GET http://192.168.1.20/solar_api/v1/GetPowerFlowRealtimeData.fcgi
Ответ:
{
"Body": {
"Data": {
"Site": {
"Mode": "produce-load-grid",
"P_Grid": -1250.5,
"P_Load": -2800.0,
"P_PV": 4050.5,
"P_Akku": null,
"E_Day": 18.4,
"E_Year": 4230.0
}
}
}
}
P_Grid — отрицательное значение означает подачу в сеть. P_Load — потребление дома. P_PV — текущая генерация. Разница видна сразу: 4050 Вт генерируется, 2800 Вт потребляется, 1250 Вт отдаётся в сеть. Fronius API опрашивается напрямую только в локальной сети. Для удалённого доступа — через обратный прокси или Fronius Solar.web API.
Как визуализировать потоки энергии в реальном времени?
Ключевой экран — диаграмма потоков энергии (Energy Flow Diagram): панели → дом → сеть → аккумулятор. Анимированные стрелки показывают направление потока. На Flutter:
class EnergyFlowPainter extends CustomPainter {
final double pvPower; // генерация
final double gridPower; // <0 в сеть, >0 из сети
final double loadPower; // потребление
final double batteryPower; // <0 заряд, >0 разряд
@override
void paint(Canvas canvas, Size size) {
_drawNode(canvas, pvIcon, pvPosition, '$pvPower Вт');
_drawNode(canvas, homeIcon, homePosition, '$loadPower Вт');
_drawNode(canvas, gridIcon, gridPosition, '${gridPower.abs()} Вт');
if (pvPower > 0) {
_drawAnimatedArrow(canvas, pvPosition, homePosition,
color: Colors.green, active: true);
}
if (gridPower < 0) {
_drawAnimatedArrow(canvas, homePosition, gridPosition,
color: Colors.orange, active: true);
}
}
}
Управление режимами инвертора
SolarEdge и Huawei позволяют переключать режимы через API: Self-Consumption (максимум на свои нужды), Time-of-Use (заряжать аккумулятор по ночному тарифу), Export Limitation (ограничение подачи в сеть). Команда через SolarEdge API:
suspend fun setStorageCommand(siteId: String, command: StorageCommand): Result<Unit> {
return withContext(Dispatchers.IO) {
runCatching {
val response = api.setStorageCommand(
siteId = siteId,
body = StorageCommandBody(
mode = command.mode.apiValue,
chargeLimit = command.chargeLimit,
dischargeLimit = command.dischargeLimit,
)
)
if (!response.isSuccessful) {
throw ApiException(response.code(), response.message())
}
}
}
}
Изменение настроек инвертора — операция с последствиями. UX должен требовать явного подтверждения и показывать текущий режим отдельно от команды, ожидающей применения.
Как разрабатывается мобильное приложение для управления солнечными панелями?
- Аналитика — изучаем ваше оборудование, API, сценарии использования.
- Проектирование — архитектура, протоколы, UI/UX.
- Разработка — пишем код, интегрируем API, реализуем дашборд и управление.
- Тестирование — на реальном инверторе или симуляторе.
- Деплой — публикация в App Store / Google Play, настройка push-уведомлений.
С нами вы получаете:
- Документацию API всех интеграций
- Доступ к исходному коду (при необходимости)
- Обучение операторов
- Пост-релизную поддержку 3 месяца
Мы используем только официальные SDK производителей и следуем стандартам безопасности. — из нашего блога
Что входит в работу?
- Мобильное приложение под iOS и Android (нативное или Flutter)
- Интеграция с инверторами по облачному API или Modbus TCP
- Дашборд с энергетической диаграммой и историей
- Push-уведомления: аварии, превышение лимитов, достижение целей
- Управление режимами: Self-Consumption, Time-of-Use, Export Limitation
- Документация и обучение
Как настроить push-уведомления для аварий инвертора
Push-уведомления отправляются через APNs или FCM при событии от инвертора. На стороне приложения подписка через Firebase Cloud Messaging или собственный WebSocket. Для Huawei FusionSolar используем callback URL, который активируется при сбое.Сроки разработки и стоимость
Разработка одного приложения для мониторинга одной солнечной системы через облачный API — от 2 до 3 недель. Поддержка нескольких инверторов, локальный Modbus TCP, управление режимами и автоматизации — 5–8 недель. Окончательная стоимость рассчитывается индивидуально после анализа вашего оборудования. Свяжитесь с нами, получите консультацию и предварительную оценку.







