Launch the energy product you cannot buy off a shelf.
Sensor to model — board, firmware, connectivity, cloud, data, applications and the models on top. Take the whole stack, or the two layers you are missing.
Tell us where you are, and we will show you the seam
Eight layers between a sensor and a decision. Switch any of them to see what we would build, what comes back, and how many handovers that leaves.
What would you like built
Switch any layer between yours and ours. The seam is drawn where ownership changes.
What each layer is actually made of
The tools we build it with, what comes back at the end of it, and how long one pass through it usually takes. Every one of these has been sold on its own.
Circuit and PCB design
The board itself — analogue front end, power, isolation and layout, drawn to the accuracy class the meter has to hold.
Stack-up
How many copper layers the board gets, and what that buys.
- Top copperSignal and parts
- Prepreg
- Inner 1Solid ground plane
- Core
- Inner 2Power planes, split by rail
- Prepreg
- Bottom copperSignal and the isolated side
50 Ω single-ended, 90 Ω differential
Every signal has an unbroken plane under it
Three-phase metering, USB or Ethernet on board, any radio module.
Creepage and clearance to IEC 62052-11, a keep-out under the barrier no plane may cross, slots milled beneath the optocouplers, and surge parts sized forIEC 61000-4-5. On two layers this decides the outline, not the parts.
Schematic, layout, Gerber and ODB++, bring-up notes, DFM review
- Capture and layout
- Altium DesignerKiCadCadence OrCADAllegro
- Simulation
- LTspiceQSPICESaturn PCB ToolkitSI and PI checks
- Metering front end
- ADE7880ADE9000Shunt and CTRogowski integrators
- Standards worked to
- IEC 62052-11IEC 62053-21/22IPC-2221BIEC 61000-4-5
- Schematic capture2–4wk
- Layout and routing2–5wk
- Fab and assembly of prototypes2–3wk
- Bring-up and rework2–4wk
8–16weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Parts, sourcing and manufacture
Turning a working prototype into something a factory can build twice — second sources, a qualified line, and a workmanship class agreed before the first panel runs.
What the line owes you
Quantity and workmanship class, and the obligations they pull in.
- Visual to IPC-A-610 Class 2
- AOI
- Functional test
GB/T 2828.1 general level II, AQL 1.0 major / 2.5 minor.
Single SMT line, first article signed before the run.
Stencil, a test jig, and a reflow profile proven on this board.
Dedicated service equipment. Continued function expected; uninterrupted service is not required.
ISO 9001 quality systemRoHS 2011/65/EUREACHIPC J-STD-001 solderingCCC where the product ships into China
Costed BOM, second sources, supplier qualification, first-article report
- Search and lifecycle
- OctopartFindchipsSiliconExpertZ2Data
- Distribution
- Digi-KeyMouserArrowLCSC
- Fabrication and assembly
- JLCPCBPCBWayShenzhen and Dongguan SMT lines
- Workmanship standards
- IPC-A-610 Class 2/3IPC-6012IPC J-STD-001GB/T 2828.1
- Compliance
- CCCRoHS 2011/65/EUREACHISO 9001IATF 16949
- Test coverage
- AOIFlying probeX-ray for BGAFunctional test jig
- BOM costing and second sourcing1–2wk
- Supplier qualification and quote2–3wk
- Tooling, stencil, first article2–4wk
- Pilot run and inspection3–5wk
8–14weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Firmware
What the board does when nobody is watching it — sampling, control, holding readings through an outage, and a signed way to change its mind later.
Controller bench
What it runs on, and what it has to do — which together pick the part.
- Sleep current3µA
- Awake current8.0mA
- Duty cycle0.40%
- Usable capacity180mAh
CR2032, derated. Peak current matters more than average — a radio burst can brown out a tired cell.
Bare-metal super-loop
A fixed cadence with no concurrency needs no scheduler, and a super-loop is easier to prove correct.
- Flash256 KB
- RAM64 KB
MCUboot with A/B slots and a signed image, rolling back on a failed boot.
At 256 KB the two slots are tight — the image gets compressed, or the update becomes a swap rather than a dual-bank.
Repository, sampling and control logic, signed OTA path, test rig
- Languages
- C11C++17Rust (embedded)MicroPython for rigs
- Controllers
- STM32 G0 / G4 / L4 / H7ESP32-S3ESP32-C6nRF52840nRF9160RP2040Renesas RA
- RTOS
- ZephyrFreeRTOSThreadXBare-metal super-loop
- Toolchain
- ESP-IDFSTM32CubenRF Connect SDKPlatformIOCMakearm-none-eabi-gcc
- Debug and test
- SEGGER J-Link and OzoneRTT loggingSaleaeCeedlingHardware in the loop
- Update path
- MCUbootA/B slotsSigned imagesRollback on failed boot
- Bring-up and drivers2–4wk
- Application and control logic3–6wk
- OTA and provisioning2–3wk
- Soak and field build2–4wk
9–17weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Network and IoT
Getting a reading off the device and into a system, over whatever the site actually has — which is rarely the transport the datasheet assumed.
Transport chooser
Four site facts, and what they rule out.
Ordered by battery behaviour, then by infrastructure burden. Where two survive, the tie-break is a site fact this demo does not know.
- RS-485 Modbus RTUInside a plant room. Boring, cheap, and it does not care about concrete.You would run: A cable pull, and a master that owns the bus timing
- Wi-SUN FAN meshUtility AMI at scale, where the meters themselves carry the network.You would run: Border routers and a mesh that has to be planned, not just deployed
- LTE-M Cat-M1Mobile or scattered assets that need real bandwidth and firmware updates.You would run: A carrier, coverage at the meter, and a SIM per device
- BLE 5.xreaches about 80 m
- Zigbee 3.0reaches about 300 m
- Wi-Fi 4 / 6reaches about 60 m; will not run on a battery
- LoRaWANcannot carry a firmware image
- NB-IoTcannot carry a firmware image
- G3-PLCwill not run on a battery
Transport choice with an RF budget, provisioning, store-and-forward
- Short range
- BLE 5.xZigbee 3.0Thread and MatterWi-Fi 4 / 6
- Long range
- LoRaWANWi-SUN FAN meshNB-IoTLTE-M Cat-M1Sigfox
- Wired
- RS-485 Modbus RTUM-BusEthernetG3-PLCPRIME
- Network servers
- ChirpStackThe Things StackSX126x gateways
- Application protocols
- MQTT and MQTTSCoAP over DTLSLwM2MDLMS/COSEM over HDLC or TCP
- Device security
- X.509 per deviceTLS 1.3ATECC608NXP SE050
- Transport trade study and RF budget1–2wk
- Radio bring-up and antenna tuning2–4wk
- Provisioning and store-and-forward2–3wk
- Site RF survey and soak2–4wk
7–13weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Cloud
Where the fleet lands — on your tenant, on ours, or inside your own building when the data is not allowed to leave it.
Topology
What sits in each position, and who is holding the keys.
- IngestIoT Hubyou operate
- StreamEvent Hubsyou operate
- StoreData Exploreryou operate
- ServeAKSyou operate
- WatchAzure Monitoryou operate
You hold the keys. We are given scoped access for the build and it is revoked at handover.
Nothing to migrate. We leave, the system stays where it is.
The default where the client already runs Microsoft identity — one directory instead of two.
Infrastructure as code, on your account or ours, with a runbook
- Azure
- IoT HubEvent HubsAKSEntra ID
- AWS
- IoT CoreGreengrassKinesisEKS
- Google Cloud
- Pub/SubGKEBigQuery
- Platforms and brokers
- ThingsBoard CE and PEEMQXMosquittoNode-RED
- Runtime and delivery
- DockerKubernetesTerraformGitHub Actions
- Observability
- PrometheusGrafanaLokiOpenTelemetry
- Architecture and landing zone1–2wk
- Broker, ingest and identity2–4wk
- Infrastructure as code and environments2–3wk
- Hardening, backup and runbook2–3wk
7–12weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Data and services
Readings arrive dirty, late, duplicated and in the wrong unit. This is the layer that decides what a number means before anyone bills against it.
Sizing
Devices, channels and cadence — and the store that follows from them.
- Uncompressed13.5 GB
- Compressed, everything kept1.0 GB
- Rollup policy, which changes nothing at this cadence1.0 GB
At this reporting interval there is nothing to roll up — the readings are already fifteen minutes apart, and four statistics per interval would be larger than the one reading they replace. The policy starts paying at a finer cadence.
PostgreSQL with TimescaleDB
One node. Continuous aggregates for the dashboards, and nothing exotic.
Readings land late, twice, out of order, and occasionally with a CT ratio nobody applied. Decoding DLMS/COSEM OBIS codes is the easy half. Deciding which of two conflicting readings you bill against is the half that takes the weeks.
Schema, ingest pipeline, validation rules, documented APIs
- Time series stores
- TimescaleDBInfluxDBClickHousePostgreSQL
- Streaming
- KafkaRedpandaMQTT bridge
- Transform
- PythonpandasPolarsdbtAirflow
- Protocol decode
- DLMS/COSEM OBIS codesModbus register mapsIEC 61850
- Interfaces
- REST with OpenAPIGraphQLgRPCWebhooks
- Validation
- Gap detectionCT-ratio normalisationUnit reconciliationLate-arrival handling
- Schema and OBIS or register mapping1–3wk
- Ingest and validation pipeline3–5wk
- API surface2–4wk
- Backfill and reconciliation1–3wk
7–15weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Applications
The screens the work gets judged on. Six people open the same platform, and each of them should see one job rather than everyone’s job.
Who sees what
Pick a job, and watch most of the product disappear.
- Live readingsvisible
- Trends and historyvisible
- Alarms and eventsvisible
- Control and setpointsvisible
- Tariffs and rateshidden
- Billing and invoiceshidden
- Asset registervisible
- Commissioninghidden
- Audit loghidden
- Users and roleshidden
- Scheduled reportsvisible
- API keyshidden
Schedules and setpoints within limits an administrator set.
- Monthly consumption, XLSX
- Scheduled PDF summary
Everything about one building, nothing about any other. The setpoint limits are why this role can be handed out freely.
Operator and customer interfaces, roles, exports
- Web
- Next.jsReactTypeScriptRechartsvisx
- Mobile
- React NativeFlutter
- Identity and access
- OIDC and OAuth2KeycloakEntra IDRole-based access
- Reporting
- CSV and XLSXScheduled PDFWebhooksEmbedded dashboards
- Quality
- PlaywrightVitestaxe accessibility checksi18n and RTL
- Flows and wireframes1–3wk
- Component system2–3wk
- Screens and data binding4–8wk
- Roles, exports and UAT2–4wk
9–18weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
Energy-tech AI
Models trained on your own metering and load data. The first honest output of this layer is often that the history is too thin to model — which is worth knowing before it is paid for.
Feasibility
The question, the data you have, and whether those two are compatible.
Gradient boosting on calendar and weather features — XGBoost or LightGBM, with a seasonal-naive baseline it has to beat.
MAPE 4–9% day-ahead at feeder level; worse on a single building, which is noisier than a feeder.
It cannot forecast a load that has never happened — a new tenant, a new machine, a new tariff.
A full year, because the model has to have seen a summer and a winter. Weather history helps more than any modelling choice.
Models on your own metering and load data, with a backtest
- Modelling
- Pythonscikit-learnXGBoostLightGBMPyTorchstatsmodels
- Optimisation
- PyomoOR-ToolsMILP dispatch
- Serving
- MLflowONNX RuntimeFastAPI
- On the device
- TFLite MicroCMSIS-NN
- Method
- IPMVP Option C baselinesWalk-forward backtestDrift monitoring
- Data audit and feasibility2–3wk
- Baseline model2–4wk
- Evaluation and backtest2–3wk
- Deployment and monitoring2–4wk
8–14weeksAdded up from the stages above, for one pass. The prototype and field-trial loop can run more than once, and no honest figure says in advance how many.
How an engagement runs
The stage durations above are for one pass. This is the figure that says why a total cannot be given.
How we work with you
Engagements run under NDA, and most of what we build carries your name rather than ours. Ask, and we will tell you which references we can name for work like yours.
You own what you paid for. Design files, firmware source, schematics and the infrastructure definition are assigned to you at handover — including the parts we would rather keep. Anything we bring in that predates the engagement is licensed to you outright rather than rented back.
See how a saving gets measuredTell us what has to exist
Bring the problem at whatever stage it is in — a requirement, a failing board, or a platform that will not integrate. The first conversation is about which of the eight layers you actually need.
