Your smart home is consuming 30% more than needed. The AC runs in an empty room, the water heater fires up during peak tariff, lights stay on past schedule. Classic scenario: IoT devices exist, but control is chaotic. The solution is an AI system that analyzes sensor data, forecasts consumption, and automatically switches devices on/off. We implement such systems turnkey in 6–10 weeks. Contact us for a free assessment of your current setup.
Why devices waste energy
Without optimization, each appliance lives in isolation. The AC doesn't know the room is empty. The heater runs at peak hours when electricity is most expensive. The pump maintains pressure at night when it could be off. AI resolves this automatically: a model based on LSTM learns from consumption history and weather data, predicts the profile for 24–48 hours, and gives recommendations or executes commands.
How we collect data: smart meters and sensors
For an accurate picture, we use devices streaming data via MQTT. We read data at 1–10 second intervals depending on the task.
| Device | Interface | Accuracy | Use case |
|---|---|---|---|
| Sonoff POWR316 | MQTT | ±1% | Home outlets |
| Shelly EM | HTTP REST | ±2% | Single-phase loads |
| Tuya Smart Plug | Cloud API | ±1.5% | Smart home |
For industrial lines, we use SCT-013 or PZEM-004T current transformers. Data is read by an ESP32 via ADC and published to an MQTT topic. All devices are calibrated to the specific wiring.
// Android: subscribing to power data via MQTT data class PowerReading( val deviceId: String, val activePower: Double, // W val reactivePower: Double, // VAr val voltage: Double, // V val current: Double, // A val energy: Double, // kWh, accumulated counter val timestamp: Long ) class EnergyMonitorRepository { fun observeDevicePower(deviceId: String): Flow<PowerReading> = channelFlow { mqttClient.subscribe("devices/$deviceId/power", qos = 1) { _, msg -> val reading = Json.decodeFromString<PowerReading>(String(msg.payload)) trySend(reading) } awaitClose { mqttClient.unsubscribe("devices/$deviceId/power") } } } How AI analyzes consumption patterns
The server receives the data stream and builds a profile for each device. Time-series clustering (K-Means on MFCC-like features) identifies typical patterns: working day, weekend, empty house. Then an LSTM model forecasts consumption for 24–48 hours with 85–90% accuracy—20% better than traditional ARIMA. Input features: 7 days of history, day of week, hour, outside temperature, presence of people.
# Server: preparing features for consumption forecast def build_features(device_id: str, horizon_hours: int = 24) -> pd.DataFrame: history = get_power_history(device_id, days=7) weather = get_weather_forecast(hours=horizon_hours) df = pd.DataFrame({ 'hour_sin': np.sin(2 * np.pi * history.hour / 24), 'hour_cos': np.cos(2 * np.pi * history.hour / 24), 'dow_sin': np.sin(2 * np.pi * history.dayofweek / 7), 'dow_cos': np.cos(2 * np.pi * history.dayofweek / 7), 'temp_outdoor': weather.temperature, 'power_lag_1h': history.power.shift(1), 'power_lag_24h': history.power.shift(24), 'power_lag_168h': history.power.shift(168), # one week ago }) return df What auto-scenarios can be set
Based on the forecast, the app suggests specific automations. For example: "AC ran for 3 hours in an empty room — create a rule to turn off when no movement?", "Washing machine starts during peak tariff — move to 23:00 and save X rubles per month." The user confirms the recommendation, and the scenario is created on the backend (Node-RED, Home Assistant) or sent directly to the device via MQTT.
// iOS: creating a device schedule struct DeviceSchedule: Codable { let deviceId: String let actions: [ScheduledAction] } struct ScheduledAction: Codable { let cronExpression: String // "0 1 * * *" — every day at 01:00 let command: DeviceCommand // ON, OFF, SET_TEMPERATURE, SET_MODE let payload: [String: AnyCodable]? let tariffProfile: String? // "night" — only at night tariff let conditions: [ScheduleCondition]? // presence_detected: false } What is included in the work
- ML forecasting model with documentation
- Mobile app (iOS with SwiftUI, Android with Jetpack Compose)
- Backend on Kotlin/Spring Boot with REST API and WebSocket
- Integration with Home Assistant or Node-RED
- Installation and configuration of equipment (smart plugs, ESP32)
- Documentation and training of your team
Development process
Analysis — requirements gathering, audit of current devices, stack selection. Design — architecture of ML model, database, API. Implementation — model training, mobile and server code development, MQTT setup. Testing — load tests, scenario debugging, integration testing. Deployment — publication to App Store and Google Play, CI/CD setup. Get a consultation — we will assess your project within a day.
Tariff calculations and savings
Two-rate meters — data from energy supplier API or manual setup. The app displays consumption cost in real time: current tariff × power. Charts with tariff overlay using Swift Charts or MPAndroidChart. Users see how much the evening peak costs and can set auto-scenarios to reduce expenses.
Timeline and cost
AI optimization module development: 6–10 weeks. Cost is calculated individually — contact us for an estimate.
Example savings calculation for a typical house
House 150 m², 15 devices. Average savings 25–30% on heating and lighting. Payback period — 8–12 months.Guarantee and experience
We guarantee stable operation. Our engineers have 7+ years in IoT and machine learning. In over 5 years on the market, we have completed 20+ projects in smart home and industrial sectors. When publishing the app, we follow App Store Review Guidelines Section 4.2. Contact us for a free consultation — we will assess your project at no cost. Order development now.







