Work

Schneider Electric — Wiser Energy

Dev
Frontend
IoT

Energy and photovoltaic monitoring across EMEA, plus BLE control of lights and shutters from a web app on Android and iOS — where a device is only ever probably in a state.

BLE device lifecycle: scan, pair, control, with drop-out and recovery paths Happy path Scan discover nearby Pair bond, may fail Control lights, shutters Scenes grouped Reality device drifts out of range · command times out UI shows probable state, retries, never traps the user The design constraint An operation that succeeded a moment ago may not now, so the interface cannot pretend to know a device's state — it represents what is probable and recovers without a restart. Residential software is used by people who did not choose it and will not read documentation, so defaults must be right unconfigured.

Energy monitoring and BLE home automation for Schneider Electric

As a consultant at Capgemini-Sogeti High Tech, I built interfaces for Schneider Electric’s Wiser Energy platform: energy consumption monitoring and photovoltaic production tracking for residential installations, delivered as both internal and end-user applications across EMEA.

Two products, two framework generations

The platform shipped as WiserEnergy on AngularJS and WiserOne on Angular. Working across both meant keeping shared concepts consistent while the codebases had genuinely different idioms — and it is where the case for migrating rather than maintaining two generations stops being theoretical.

Two audiences, too: internal tools for people who use them daily and know the domain, and end-user applications for residents who did not choose the software and will never read documentation. The same data, presented with different assumptions about what the reader already knows.

Home automation over Bluetooth Low Energy

I delivered control of BLE actuators — light bulbs and shutters — through a web application deployed to Android and iOS via Ionic Cordova.

BLE is the interesting constraint. It is not a request/response transport: devices drift out of range, pairing fails intermittently, and an operation that succeeded a moment ago may not now. The interface has to represent a device as probably in a state rather than pretending it knows, and it has to recover without making someone restart the app.

Technical environment

Java 8 behind React, Angular, AngularJS and TypeScript on the front end, NodeJS, ThreeJS for visualisation, and Ionic Cordova for the mobile build.