Build industrial IoT and device software

A battery cannot wait for a dropped link. The energy management system (EMS) we built for Skyfri controlled the batteries at its plants from the site's controller and was designed to keep working offline. We write this software for energy sites, field hardware and Android devices.

Book a free discovery workshop

Tell us what you're building.

A few details help us bring the right engineers to the first call.

Solar and battery plants
7

ran on the EMS we built for Skyfri, in production since June 2024

Battery capacity
5+ MWh

controlled by the Skyfri EMS across its solar and battery plants

Projects delivered
160+

by Order Group, among them industrial IoT, energy and device software

Raised by Kyoto Group
NOK 183.3 million

in private placements in the first half of 2021, backed by our MVP

What we do: IoT development services from the device to the cloud to the app

On the site controller and the device

Control logic that runs next to the hardware: the Skyfri EMS, written in Python with asyncio on Azure IoT Edge, and the software on the controller next to Global Green's batteries. On Android devices, we built RAW OS for RAW Cyber.

Device connectivity

We connect hardware through its own protocols and SDKs: Modbus over RS485, MQTT with TLS 1.2, LTE, TCP/IP, NFC tags, iBeacons and the Datalogic and Zebra scanner SDKs.

Cloud

Device data reaches the cloud through Azure IoT Hub (Skyfri) or AWS IoT Core (Zeronest). For Global Green we run a device simulator in AWS, so control logic is tested before it touches a battery on site.

IoT application development

The apps people work with on top of the hardware: the Zeronest installer app, the guard tour mobile app, the admin panel of the scanner app and the SCADA-based system with a digital twin for KYOTO.
KYOTO thermal energy storage dashboard with charts on a tablet
Skyfri mobile app on a phone showing battery charge and HZLF peak reduction targets for a site
RAW Cyber mobile security app on two phones – fingerprint unlock and protected apps list

Industrial IoT solutions for energy sites: edge and cloud

Our industrial IoT software for energy sites runs on a controller at the site. It reads batteries and inverters over Modbus, decides what the storage should do and reports to the cloud over MQTT or Azure IoT Hub. The energy side of this work, from the energy management system (EMS) to trading and flexibility, is covered on our Energy Hub.

IIoT solutions we have built for energy

  • Skyfri: the EMS behind a portfolio of solar and battery sites. It decides when batteries charge and discharge, runs peak shaving and energy trading, and works with batteries and inverters from several manufacturers. Energy meters on the grid, battery and solar side feed its data pipelines. From June 2024 it ran across 7 plants and controlled more than 5 MWh of storage capacity and more than 4 MW of battery power.
  • Zeronest: an EMS platform for home solar and storage that we have built since January 2024. It works with 16 inverter brands through Zeronest's own devices, the Bzyk D200 and the Świetlik D300, wired to each inverter over RS485 and Modbus. The device reports over LTE, independent of the manufacturer's cloud and the homeowner's Wi-Fi, and talks to AWS IoT Core over MQTT and TLS 1.2, with client data staying in the EU. Every minute the platform decides whether a home battery charges, discharges or sells to the grid, and installers work in a dedicated app. As of April 2026 it served more than 3,000 prosumer storage installations.
  • Global Green: a PV and battery storage operator in Germany and Canada. Since December 2025 we have built the software on the controller next to its batteries and in the cloud, across 15 MWh of storage. It covers Modbus register maps for batteries from two manufacturers, MQTT, a trading controller, commands from the distribution system operator and aFRR (automatic frequency restoration reserve) balancing. A device simulator in AWS tests the control logic before it touches storage on a site.
  • KYOTO: three and a half years of industrial IoT and digital twin work for Kyoto Group's thermal energy storage. We took a UX/UI MVP to a SCADA-based system that monitors and controls the flow of energy in real time, with a digital twin layer for weather data, energy price analysis and plant performance simulation. In 2024 our scope added secure cloud infrastructure that connects the devices, sensors and systems of the solar plant and the thermal storage. A management system for the molten salt heat store steers valves, pumps and the flow of hot liquids. Surveillance with infrared cameras and image recognition alerts staff to hazards.

Earlier projects with AP-TECH

Our earlier work with partner AP-TECH includes the airport systems Monster (lighting management) and ATOS (tracking of aircraft and airport vehicles).

More project detail is in our industrial IoT examples, and the terms are explained in our IoT glossary.

Decisions at the site

Why control stays on the site

Charging, discharging or capping exports at the grid limit cannot wait for a link that may be down, so the controller on the site decides.

At Skyfri the EMS combines trading signals, grid operator limits on exports and the battery's own data and alerts into one control decision.

Why control stays on the site

At Global Green the controller next to the batteries reads three channels over Modbus from a local device of the trading partner: the requested power, a flag that says whether the request is valid, and a life counter, a heartbeat that keeps changing while the link is up. While the request is valid and the link is alive, the controller sends the batteries an active power setpoint every cycle, for charging and for discharging alike. A request for 0 kW counts as a valid request.

Holding the last valid request

The link counts as lost when the life counter stops changing for longer than a configured threshold. From then on the controller holds the last valid request until the end of the current 15-minute window (UTC) and returns to idle afterwards. In an example from the requirements, the link drops at 13:06:07, the controller holds 500 kW until 13:14:59 and issues no command from 13:15:00. When the link returns, fresh data replaces the held request at once.

The setpoint is capped by the limits that are active on the controller.

Zeronest DIN200 energy meter device
Mobile app QR code scanner screen on iPhone

Maintenance, alerts and data quality

Maintenance of an industrial IoT system starts with knowing when a device has gone quiet and catching a fault before the customer calls.

Warnings and errors, active and archived

The alert module of the Zeronest platform splits events into warnings and errors, active and archived, with one global list for all installations. The alerts let the team reduce the number of service visits. The guard tour platform described below plans patrols and maintenance routines and raises an alert when a schedule is breached.

Data quality at the device and in the pipeline

Zeronest treats a device that sends no data packet for longer than a set time (120 seconds by default) as offline. When production jumps above a threshold (400 W by default), the values from the last meter packet are not passed on. Two more alerts watch the pipeline: one fires when the job that processes modem data fails 4 times within an hour, the other when the newest data in the database is older than 20 minutes.

Once a day the platform reads an inverter's configuration registers, writes them and reads them again, and raises an alert when the value read back differs from the one written. An installation changes its status to running only after the first correct reading from the inverter, and the initialisation of devices runs in stages that are shown separately. Data can be exported to CSV as energy aggregated every 15 minutes or every hour, or as raw readings.

Forecasts on top of the data

The Zeronest app shows how the storage is predicted to behave until the end of the day, the predicted consumption and production, and the saving in zloty that follows from them. The backend calculates the forecast for the next day from the statistics of day-ahead market tariff prices and updates it after the hourly aggregate is recalculated.

Access and security of the system

Zeronest's web panel is multi-tenant: data is separated between organizations, and permissions have two levels, so a manager sees all installations of the company and an installer only the ones assigned. Users sign in with a one-time six-digit code; password login was switched off in January 2025.

IoT development for field hardware: NFC, beacons, scanners, logistics

In the field the conditions set the design: a site with no signal, or a scanner that must not lose a scanning session. Custom IoT development for field hardware connects the devices people carry or install on site to the apps and back-office systems that depend on them.

Checkpoints read by QR codes, NFC tags and beacons

Since 2021 we have built a client's SaaS platform for guard tours. It manages inspections, service tickets and audit documentation in facilities through a web and a mobile app that keeps working offline and syncs when it reconnects. Guards confirm checkpoints by scanning QR codes, NFC tags or iBeacons, and paths plan patrols and complex maintenance and inspection patterns. The integration with tracking devices over TCP/IP grew from a prototype into a solution in use. The platform's clients operate in Poland, South Africa and Australia.

Scanners and logistics

For a wholesaler of products covered by the EU tracking system we build an Android app for industrial handheld scanners. Workers scan packs, cartons and pallets when goods arrive, when they leave against an invoice, when they are moved and in other events. The backend processes each type of session and registers it at the right moment in the central router of an EU institution. It is also the API of the app and an admin panel for verifying data and submissions.

In the background, tasks fetch the customer's documents (invoices, corrections and payments) over SFTP. After each session is submitted, the result comes back to the scanner: accepted, accepted conditionally or rejected with a list of codes. The app integrates the Datalogic and Zebra scanner SDKs, with support for the Zebra MC3300X added in January 2024 and for the Datalogic SDK in 2026, and buffers scanning sessions when the network drops. The app is written in Kotlin, and the backend runs on Django and Celery.

For device makers

Android device platforms: OS, app store, OTA

Operating system and device security

For RAW Cyber we built RAW OS on the Android Open Source Project, hardened with CopperheadOS. The phone was wiped when its SIM card was removed, and packet inspection with nDPI detected and blocked malware. The RAW Store, the app store of RAW OS, offered only pre-approved apps. See custom Android OS development.

App store and OTA updates

For Mudita we build the App Store, the Developer Portal and the over-the-air (OTA) platform for its phone. In 2026 the second OTA stage adds incremental updates, with a full package always available as the fallback, and staged rollouts that reach all devices in up to 10 phases.

Device management

The device management admin panel we built for RAW Cyber tracked devices and their status, published builds, handled configuration such as Wi-Fi and kept the fleet and the store in sync. RAW OS went to the client with an OTA test, and later OTA builds followed on request.

Energy storage, solar sites and a secure phone

Industrial IoT and device case studies

What happens after the discovery workshop

Every engagement starts with a free discovery workshop. It is the basic discovery: one meeting after which you have a scope, an estimate and a basic mockup or proof of concept that shows what the build will cost. In it we map the hardware and who makes it, the protocols it speaks, what has to keep working offline, how updates reach the device and where the security boundaries sit. Extended discovery, with the full set of artifacts, is a separate and wider scope.

From the workshop to a specification

Skyfri shows what can follow the workshop. Before we built the EMS, a Technical Feasibility Study ran from 20 November 2023 to 7 January 2024: seven weeks that produced a feasibility study and a technical specification. The architecture and the implementation of the EMS started in January 2024.

Requirements before code

At Global Green every function gets a requirements document with acceptance criteria and open questions, linked to its task; the trading controller is one example. Register maps of the devices are prepared before the code is written.

IoT & device software

Hardware in the field or a device of your own? Let's scope the software.

In a free discovery workshop we map the hardware, the integration and the risks before any code is written.

Why teams build IoT software with us

Long-term support

Hardware stays in the field for years, so the software around it has to follow new device models and new Android versions. On RAW Cyber, keeping RAW OS in step with Copperhead's changes and with new hardware was a workstream of its own. When Copperhead moved to Android 11, we merged our changes into Android's framework code and finished the move in September 2021. What building on the Android Open Source Project means for updates and security patches is in our AOSP entry.

Industrial IoT

Guides and insights

All 8 articles about Industrial IoT

Do you have questions?

Industrial IoT & device software - FAQ

Maciej Sułek
Maciej Sułek
Co-founder & CTO
Book a free discovery workshop
  • Industrial IoT software for energy storage and solar sites, industrial facilities and field hardware, and software for devices: an operating system and app store for RAW Cyber, and an app store and OTA platform for Mudita.

  • Our IIoT services cover the software between field hardware and the people who run it. Industrial IoT software development here means control logic on a site's controller, integration over Modbus and MQTT, cloud platforms and dashboards, alerts, SCADA and digital twins, plus apps and back-office systems around field hardware.

  • Yes, when the control logic runs on the site's controller. At Global Green the controller holds the last valid request until the end of the current 15-minute window and then returns to idle, and fresh data replaces it as soon as the link returns. The guard tour and scanner apps keep working without signal and sync when they reconnect.

  • Yes. Zeronest's platform works with 16 inverter brands, Global Green's controller with batteries from two manufacturers, and the Skyfri EMS with batteries and inverters from several manufacturers. We start by mapping your existing hardware, its protocols and its makers in the discovery workshop.

  • Yes. For Mudita's phone we build the App Store and the Developer Portal: app versioning, developer onboarding and one-time SMS codes. For RAW Cyber we built the RAW Store, which offered only pre-approved apps.

  • Yes. For RAW Cyber we built RAW OS, a custom Android-based operating system hardened with CopperheadOS. The details are on our custom Android OS development page.

  • Yes. We integrate the Datalogic and Zebra scanner SDKs in an Android app for industrial handheld terminals that buffers scanning sessions offline and syncs them to a backend. On the guard tour platform we connected tracking devices over TCP/IP, and its mobile app reads QR codes, NFC tags and iBeacons.

  • Python with asyncio, Azure IoT Edge and Azure IoT Hub (Skyfri). Modbus over RS485, MQTT and TLS 1.2 behind AWS IoT Core (Zeronest). Modbus, MQTT and a device simulator in AWS (Global Green). Kotlin, Django and Celery behind the scanner app. Android and AOSP with CopperheadOS and nDPI (RAW Cyber).

  • Yes. On RAW Cyber, keeping RAW OS in step with Copperhead's changes and new hardware was a workstream of its own, and we finished moving it to Android 11 in September 2021. The guard tour platform has been in development since 2021.

  • The free discovery workshop is one meeting, and you leave with a scope, an estimate and a basic mockup or proof of concept. A feasibility study and requirements documents can follow, as the Skyfri and Global Green examples above show. Book the workshop and we will scope it with you.

  • The price depends on the scope agreed in the discovery workshop, the number of devices and manufacturers to integrate and the offline behaviour the system needs. You leave the workshop with an estimate based on that scope.

  • Device data travels over MQTT and TLS 1.2, and client data stays in the EU (Zeronest). Access to the Zeronest panel works with a one-time six-digit code, and data is separated between organizations. For RAW Cyber we built a phone wipe on SIM removal and packet inspection with nDPI that detected and blocked malware.

Developer with headphones coding at desktop monitor in an open office

Software that talks to hardware, from the discovery workshop to updates after launch.

Your message goes to

Filip Szamborski

Filip Szamborski

Co-founder & CEO

SO FAR WE HAVE WORKED WITH BRANDS LIKE:

Thank you for your message.

We read every message ourselves and get back to you within 48 hrs on business days.

Something urgent? hello@ordergroup.co

Let's build your IoT or device software

Tell us about your device, site or platform and we'll get back to you.

Fields marked with an asterisk (*) are required.

Order Group sp. z o.o. uses the information you provide only to reply to your enquiry and to keep a record of it (Art. 6(1)(b) and (f) GDPR). Details, including your rights, are in our Privacy Policy (opens in a new tab).

We reply within 48 hrs on business days - a person, not an autoresponder.

Using an AI assistant? It can send this inquiry for you or prepare a pre-filled form - instructions for it are in llms.txt.

Accessibility settings

Text size

100%