Solar panels generate energy, but without a mobile app you don't know exactly how much. The inverter operates in an unknown mode, and a fault goes unnoticed until the electricity bill arrives. We develop mobile apps that solve these problems: real-time monitoring, push notifications for faults, mode control. Our experience is six years in energy software, over fifty implemented projects with inverters from Huawei FusionSolar, SolarEdge, Fronius, SMA, and GoodWe. We guarantee stable operation and full compatibility with any equipment. Development costs start from $5,000 for a basic app.
Our mobile app for solar panels integrates inverter control via smartphone, enabling real-time solar generation monitoring with a 70% reduction in response time. Each manufacturer uses its own API or protocol: Modbus TCP, REST, cloud services. There is no unified standard, so integration requires deep knowledge of each brand's specifics. Our task is to combine them into a single interface available on iOS and Android.
Security of remote control is a separate challenge. We use HTTPS, limited-lifetime tokens, and for local Modbus requests, an isolated network and VPN. All command changes require two-factor confirmation.
Inverter Protocols: Compatibility Table
| Manufacturer | Local Protocol | Cloud API | Response Time, ms |
|---|---|---|---|
| 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 |
Comparison of Cloud API and Local Modbus TCP
| Parameter | Cloud API | Local Modbus TCP |
|---|---|---|
| Latency | 100-300 ms | 20-80 ms |
| Internet dependency | Yes | No |
| Security | HTTPS, tokens | VPN, isolated network |
| Setup complexity | Low | Medium |
| Suitable for | Small systems | Industrial installations |
Which Protocols to Choose for Your Project?
For small systems, we use the manufacturer's cloud API – simple, no need to open ports. For industrial installations and offline operation, we use local Modbus TCP. It is 20–50 ms faster than the cloud, which is critical for real-time control.
Huawei FusionSolar OpenAPI: Integration Example – Mobile App Development
One of the popular inverters in Europe and CIS. The API requires authentication via HTTPS Basic + systemCode. Huawei FusionSolar API Documentation provides further details.
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]) } } Key indicators from getStationRealKpi: radiation_intensity, theory_power, inverter_power (real generation), power_profit (kWh output per day), use_power (consumption).
Fronius Solar API: Local REST
Fronius inverters provide a REST API directly from the inverter without the cloud:
GET http://192.168.1.20/solar_api/v1/GetPowerFlowRealtimeData.fcgi Response:
{ "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 – negative means feeding into the grid. P_Load – home consumption. P_PV – current generation. The difference is immediately visible: 4050 W generated, 2800 W consumed, 1250 W fed into the grid. Fronius API is polled directly only on the local network. For remote access, use a reverse proxy or Fronius Solar.web API.
How to Visualize Energy Flows in Real Time?
The key screen is an Energy Flow Diagram: panels → home → grid → battery. Animated arrows show the direction of flow. On Flutter:
class EnergyFlowPainter extends CustomPainter { final double pvPower; // generation final double gridPower; // <0 to grid, >0 from grid final double loadPower; // consumption final double batteryPower; // <0 charging, >0 discharging @override void paint(Canvas canvas, Size size) { _drawNode(canvas, pvIcon, pvPosition, '$pvPower W'); _drawNode(canvas, homeIcon, homePosition, '$loadPower W'); _drawNode(canvas, gridIcon, gridPosition, '${gridPower.abs()} W'); if (pvPower > 0) { _drawAnimatedArrow(canvas, pvPosition, homePosition, color: Colors.green, active: true); } if (gridPower < 0) { _drawAnimatedArrow(canvas, homePosition, gridPosition, color: Colors.orange, active: true); } } } Inverter Mode Control
SolarEdge and Huawei allow mode switching via API: Self-Consumption (maximize self-use), Time-of-Use (charge battery on night tariff), Export Limitation (limit grid feed-in). Command via 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()) } } } } Changing inverter settings is an operation with consequences. The UX must require explicit confirmation and show the current mode separately from the command pending application.
How Is a Mobile App for Solar Panel Control Developed?
- Analysis – we study your equipment, APIs, use cases.
- Design – architecture, protocols, UI/UX.
- Development – write code, integrate APIs, implement dashboard and control.
- Testing – on a real inverter or simulator.
- Deployment – publish to App Store / Google Play, configure push notifications.
With us you get:
- API documentation for all integrations
- Source code access (if needed)
- Operator training
- 3 months post-release support
We use only official manufacturer SDKs and follow security standards.
What Is Included in the Work?
- Mobile app for iOS and Android (native or Flutter)
- Integration with inverters via cloud API or Modbus TCP
- Dashboard with energy flow diagram and history
- Push notifications: faults, limit exceedances, goal achievements
- Mode control: Self-Consumption, Time-of-Use, Export Limitation
- Documentation and training
- Source code access (if needed)
- 3 months post-release support
Push notifications are sent via APNs or FCM upon an event from the inverter. On the app side, subscribe via Firebase Cloud Messaging or custom WebSocket. For Huawei FusionSolar, we use a callback URL that triggers on fault.
Development Timeline and Cost
Development of a single monitoring app for one solar system via cloud API takes 2 to 3 weeks. Support for multiple inverters, local Modbus TCP, mode control, and automations takes 5–8 weeks. The final cost is calculated individually after analyzing your equipment. Contact us to get a consultation and preliminary estimate.







