Сонячні панелі генерують енергію, але без мобільного додатка ви не знаєте, скільки саме. Інвертор працює в невідомому режимі, а збій залишається непоміченим до рахунку за електрику. Ми розробляємо мобільні додатки, які вирішують ці проблеми: моніторинг у реальному часі, 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 тижнів. Остаточна вартість розраховується індивідуально після аналізу вашого обладнання. Зв'яжіться з нами, отримайте консультацію та попередню оцінку.







