OpenEMS Energy Management System

This lab introduces students to the architecture, telemetry integration, and control strategies of modern energy management systems using the modular open-source OpenEMS platform. Students explore a three-tier smart grid software architecture comprising OpenEMS Edge for deterministic on-site control, OpenEMS Backend for centralized data aggregation, and OpenEMS UI for real-time visualization. Working with simulated or physical distributed energy resources, students configure and interface telemetry from photovoltaic systems, battery energy storage systems, electric vehicle chargers, heat pumps, and utility power meters. Through these exercises, students learn how edge computing nodes execute localized control loops, manage energy dispatch and peak shaving, process industrial communication protocols, and visualize dynamic power flows across residential and commercial grid environments.

Energy Management System EMS Smart Grid Distributed Energy Resources DER Renewable Energy Battery Energy Storage System BESS Photovoltaic Solar Power Electric Vehicle Charging EVSE Edge Computing Power Systems Heat Pumps Internet of Things IoT Telemetry

Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗

Files: OpenEMS_README.md · SECURITY.md · gradle.lockfile · ui_package.json

Readiness checks

  • complete 2026-09-03 15:46 🛡 Cybersecurity: Do not place on an open network · 6 findings 10 searches · 18 pages
    view · PDF

Latest report — 2026-09-03 15:46

Readiness: OpenEMS Energy Management System

Verdict: Ready with caveats · 2026-09-03 · est. parts cost — (no parts specified) Cybersecurity — software & network: Do not place on an open network

This is the cold check for this lab — it establishes the baseline for future drift comparisons. OpenEMS is a pure software platform: the materials contain no schematics, no PCB or Gerber files, and no bill of materials, so there is nothing to source and no part can go obsolete, out of stock, or overpriced between now and the next check. The verdict is not a flat "Ready" for two reasons. First, the lab defines no hardware at all — the instructor must supply a host machine, and while the requirement is genuinely easy (the project's build sets java_source and java_target to 21, and the Getting Started guide states "OpenEMS requires Java 21 to run", so any Java 21-capable PC or single-board computer works), it is still an undefined decision the instructor has to make. Second, one of the lab's own hosted resources has already rotted: the OpenEMS API Javadoc link returns HTTP 404. Separately, and more urgently than anything in the parts picture, the Cybersecurity section below should be read before this lab is connected to any network.

Action required

Part Problem Recommended action
— No parts are specified in this lab; the bill of materials is empty by design. None — all sourcing is out of scope for this lab.

Non-part items needing attention this run:

Item Problem Recommended action
OpenEMS API Javadoc link Returns HTTP 404 — dead link in the lab materials. Find the current Javadoc entry point from the live documentation site, or generate Javadoc locally from the checked-out source, and update the materials.
Member Security Advisory Category (forum) Returns HTTP 404 to anonymous visitors; reachable only with OpenEMS Association membership, if at all. Do not rely on it in the lab procedure unless the instructor holds membership and has confirmed access.
Gitpod live demo · Codecov dashboard Hosts answer but serve JavaScript-only pages; contents could not be verified by fetch. Open both in a browser before class rather than assuming the live demo still launches.

Cybersecurity — software & network

Do not place on an open network — The lab's documented setup ships default admin/admin credentials on the Apache Felix configuration console and a Backend mode that accepts any password, so as built it has no working authentication on a network-facing service.

Component Version How known Support status
OpenEMS Edge not determined not determined (No version string is declared for Edge in the fetched build files (gradle.properties declares only java_source/java_target).) —
OpenEMS Backend not determined not determined (No version string is declared for Backend in the fetched build files (gradle.properties declares only java_source/java_target).) —
OpenEMS UI (openems-ui) 2026.10.0-SNAPSHOT read from project (ui/package.json 'version' field (fetched/01-package.json); same value is the lockfile root version in ui/package-lock.json.) —
Java runtime (Eclipse Temurin) 21 read from project (gradle.properties java_source/java_target = 21 (fetched/05-gradle.properties); the Getting Started guide states 'OpenEMS requires Java 21 to run'.) supported until 2029-12-31
TypeScript 6.0.3 read from project (ui/package.json devDependencies (fetched/01-package.json).) —
Angular framework (@angular/core and the pinned @angular/* set) 22.1.3 read from project (ui/package.json dependencies (fetched/01-package.json).) —
@types/node 26.3.0 read from project (ui/package.json declares the range ^26.3.0; ui/package-lock.json resolves it to exactly 26.3.0 (fetched/02-package-lock.json).) —
@ionic/angular 8.8.18 read from project (ui/package.json declares ^8.8.18; ui/package-lock.json resolves it to exactly 8.8.18 (fetched/02-package-lock.json).) —
@capacitor/core 8.5.0 read from project (ui/package.json declares ^8.5.0; ui/package-lock.json resolves it to exactly 8.5.0 (fetched/02-package-lock.json).) —
ajv (transitive, under @ngx-formly/schematics) 8.9.0 read from project (ui/package-lock.json, node_modules/@ngx-formly/schematics/node_modules/ajv (fetched/02-package-lock.json).) —
JaCoCo coverage toolchain (org.jacoco:*) 0.8.14 read from project (gradle.lockfile (fetched/03-gradle.lockfile).) —
OW2 ASM bytecode library (org.ow2.asm:*) 9.9 read from project (gradle.lockfile (fetched/03-gradle.lockfile).) —
Component Finding Severity Fix available?
ajv (transitive, under @ngx-formly/schematics) The copy of ajv 8.9.0 that the UI build pulls in under @ngx-formly/schematics can be forced into a very slow pattern match when it validates a schema that uses the $data option, which stalls the build tool rather than anything students reach over the network. — GHSA-2g4f-4pwh-qvx6 moderate No — @angular-devkit/core nested under @ngx-formly/schematics pins ajv 8.9.0 exactly, so the top-level project cannot raise it to the fixed 8.18.0
OpenEMS Backend (Metadata.Dummy) The Backend configuration the guide walks through uses Metadata.Dummy, which the documentation states accepts any user and password combination, so the Backend has no working authentication as the lab builds it. posture Mitigation only — switch to a real Metadata implementation, as the documentation instructs, before the Backend is reachable from anywhere but the bench
OpenEMS Edge / OpenEMS Backend (Apache Felix Web Console) The lab's own setup guide has students log in to the Apache Felix Web Console — the console that configures every OpenEMS component — with the username admin and the password admin, on port 8080 for Edge and port 8079 for Backend. posture Mitigation only — change the Felix Web Console password during setup and keep ports 8080 and 8079 off any shared or campus network
OpenEMS Edge to Backend link The Edge-to-Backend connection the guide configures is an unencrypted websocket (ws://localhost:8081), so telemetry and control traffic between the two halves of the lab is sent in the clear. posture Mitigation only — keep both halves on the same isolated machine or segment for the lab, and use an encrypted wss:// endpoint for anything beyond it
OpenEMS UI In the Edge-only setup the guide describes, anyone who opens the UI can log in as guest by leaving the password blank, or gain extended permissions simply by typing admin into the password field. posture Mitigation only — configure real user accounts before the UI is reachable by anyone outside the bench, and keep it on an isolated network segment
OpenEMS UI dependency manifest Dependencies unpinned: 95 of 114 in ui/package.json, and the lab materials shipped no package-lock.json, so an instructor installing from the lab's copy gets whatever npm resolves on the day rather than the versions checked here. posture Mitigation only — install from the repository's ui/package-lock.json (npm ci) instead of resolving ui/package.json fresh

What this means for your lab

Built the way its own Getting Started guide describes, this system is not safe to put on a shared network. The administrative console that configures every part of OpenEMS is protected by the username admin and the password admin, and the guide tells students to log in that way — anyone who can reach port 8080 (Edge) or 8079 (Backend) can therefore reconfigure the whole installation, including the control logic that would drive real batteries, inverters and chargers. The web interface is no better: a visitor can sign in as a guest with no password at all, or get elevated permissions by typing admin into the password box, and the Backend setup in the guide accepts any username and password you give it. Traffic between the Edge and Backend halves is unencrypted, so anyone on the same network can read the telemetry going past. None of this is a defect the project is hiding — the documentation itself says this setup is for testing only — but it does mean the lab must be run on an isolated bench network or a single offline machine, never on campus Wi-Fi or a building network, and never wired to real energy equipment while in that state. Before the lab runs, change the console password, set up real user accounts, and talk to campus IT if the machine needs to be reachable from anywhere else. One moderate-severity issue was found in a build-time library used to generate UI code; it affects the developer's build, not anything a student reaches over the network, and it cannot be upgraded from this project because a dependency pins the affected version. Note also that a large part of the UI's locked dependency list was beyond this run's automatic check limit, so a clean result here is not a statement that everything in it is clean.

Not checked

  • OpenEMS Edge: No version is declared in the project's build files, so no advisory database could be queried for it.
  • OpenEMS Backend: No version is declared in the project's build files, so no advisory database could be queried for it.
  • openems-ui 2026.10.0-SNAPSHOT: Not published to npm — the registry has no package by that name, so no advisory database covers the application's own release.
  • 709 of the 1217 locked npm dependencies in ui/package-lock.json: Beyond the 500-row automatic OSV check cap for one manifest this run.
  • Java runtime (Eclipse Temurin 21) vulnerabilities: Only the support lifecycle was looked up; no CVE database was queried for the JDK build itself.
  • Listening ports of a running installation: Ports were read from the setup documentation, not observed on a running system; a real deployment may differ.
  • openems-ui 2026.10.0-SNAPSHOT: no package by this name in the registry
  • 709 further dependencies in package-lock.json: beyond the 500-dependency automatic check cap (e.g. @typescript-eslint/tsconfig-utils, @typescript-eslint/type-utils, @typescript-eslint/typescript-estree, @typescript-eslint/utils, @typescript-eslint/visitor-keys)
  • java 21: support status: endoflife.date has no such product

Parts

No parts. The snapshot states: "No PCB layout files, Gerber packages, schematic captures, or physical hardware bills of materials are provided in the project files. OpenEMS is a pure software platform." There are no BOM entries to table, and no lookups were dispatched.

Item Spec/Package Status Stock Price Source
(no bill of materials) — not applicable — — —
Host computing platform (industrial Linux gateway, single-board computer, or PC) Not specified by the lab; must run a Java 21 runtime not checked — no part specified — — —
Integrated field equipment (energy storage inverters, PV arrays, meters, charging controllers) Not specified by the lab; connected over field communication networks not checked — no part specified — — —

Substitutes

None needed.

No substitute was proposed this run, so there is nothing to verify against a datasheet. Where substitutes do appear in future reports, check each one against its datasheet before ordering.

Other dependencies

Every external link and hosted resource the snapshot flags was fetched this run.

  • OpenEMS Official Documentation — live. Introduction retrieved (4,239 characters), current and describing the Edge / UI / Backend stack the lab uses.
  • OpenEMS Getting Started Guide — live. Getting Started retrieved (8,000 characters). This is the page the lab procedure leans on most heavily.
  • OpenEMS API Javadoc — dead, HTTP 404: https://openems.github.io/openems.io/javadoc/ no longer resolves. The single piece of link rot found this run.
  • OpenEMS Community Forum — live and active. community.openems.io shows topics dated 2–3 September 2026, including "Release 2026.9.0 · OpenEMS/openems". The support channel students are pointed to is healthy.
  • Member Security Advisory Category — not reachable anonymously, HTTP 404: https://community.openems.io/c/openems-association/security-advisories-members-only/23. Consistent with a members-only category hidden from unauthenticated visitors, but this check cannot distinguish hidden from deleted.
  • Public Security Advisories — live. The repository's advisory page states "There aren't any published security advisories", with a repository advisory count of 0. Recorded as the baseline: anything appearing here by the next check is new.
  • GitHub Actions Build Workflow — live and running. build.yml lists recent "Build OpenEMS" runs up to #7928 on the develop branch, so upstream CI is healthy and pre-built releases should keep appearing.
  • Zenodo Archive / Scientific Reference DOI — live. 10.5281/zenodo.4440883 resolves to the archived record, latest deposited version 2026.9.0, published 31 August 2026. The citation the lab offers works.
  • Code Coverage Dashboard — reachable but not verifiable. codecov.io/gh/openems/openems returned only "You need to enable JavaScript to run this app." The host answers; whether it still holds OpenEMS coverage data needs a browser to confirm.
  • Gitpod Live Demo Environment — reachable but not verifiable, same result: "You need to enable JavaScript to run this app." Whether a workspace still launches for this repository could not be established. Gitpod's free-tier terms have changed repeatedly — try it before class.
  • Security Reporting Contact (security@openems.io) — not checked. An email address is not a fetchable resource, and no tool here can confirm a mailbox is monitored without sending mail to it.
  • Source repository — live. github.com/OpenEMS/openems was listed successfully on the develop branch this run and five project files were fetched from it; the code the lab downloads is where the materials say it is.

Fabrication — none. The snapshot confirms no custom PCB or physical fabrication data exists in the repository: no board dimensions, layer counts, copper weights, or drill specifications.

Watch list

  • The Javadoc URL — already 404 this run and will stay broken until the materials are updated. The highest-value fix available to the instructor.
  • The Gitpod live demo — unverifiable by fetch and dependent on a third-party free tier that has changed before; the live link most likely to fail outright next.
  • The members-only advisory category — 404 anonymously; if the lab expects students to read it, that expectation is already unmet.
  • Upstream release drift — the archived release moved to 2026.9.0 on 31 August 2026 while the materials track a 2026.10.0-SNAPSHOT development build. Expect the lab's pinned dependency versions to drift from upstream within a release or two.
  • No parts to watch — no obsolescence or stock risk exists for this lab, and none will appear unless a future revision adds hardware.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.

This project provides OpenEMS (Open Source Energy Management System), a modular software platform designed to monitor, control, and integrate renewable energy assets, energy storage systems, EV charging stations, heat pumps, and electric utility meters. The system architecture consists of three distinct tiers: OpenEMS Edge (running locally on an on-site embedded edge gateway or industrial computer to collect device telemetry and run deterministic control loops), OpenEMS UI (a cross-platform web and mobile graphical user interface built on Angular, Ionic, and Capacitor), and OpenEMS Backend (a cloud/server data aggregation and remote management platform). The repository contains no hardware circuit schematics, PCB layout files, or physical bill of materials; physical hardware operating voltages and power rails are not stated in the source files, as the software is intended to interface with heterogeneous external equipment and run on host computing hardware.

Bill of Materials

No PCB layout files, Gerber packages, schematic captures, or physical hardware bills of materials are provided in the project files. OpenEMS is a pure software platform. The physical systems it integrates (energy storage inverters, PV arrays, meters, charging controllers) connect via field communication networks to edge host computing platforms (such as industrial Linux gateways, single-board computers, or PCs), but no specific hardware BOM or circuit assembly is defined in the source archive.

Software and network dependencies

The OpenEMS platform depends on a Java/Gradle build toolchain for Edge and Backend code coverage analysis and an npm-based TypeScript/Angular/Ionic/Capacitor build toolchain for the frontend user interface.

Application and Toolchain Core

  • OpenEMS Edge: Version not stated in the sources; license is EPL-2.0. Check plan: not checkable: version not stated.
  • OpenEMS Backend: Version not stated in the sources; license is EPL-2.0. Check plan: not checkable: version not stated.
  • OpenEMS UI (openems-ui): Version 2026.10.0-SNAPSHOT, pinned in ui_package.json; license is AGPL-3.0. Check plan: vulnerability lookup: openems-ui / npm / 2026.10.0-SNAPSHOT.
  • TypeScript: Version 6.0.3, pinned in ui_package.json. Check plan: vulnerability lookup: typescript / npm / 6.0.3.
  • Node.js Types (@types/node): Version ^26.3.0 (unpinned minor/patch range), pinned in ui_package.json. Check plan: vulnerability lookup: @types/node / npm / 26.3.0.

Java and Gradle Coverage Toolchain (gradle.lockfile)

The manifest gradle.lockfile pins the JaCoCo code coverage and OW2 ASM bytecode dependencies used by the Gradle build system:

  • org.jacoco:org.jacoco.agent: Version 0.8.14, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.jacoco:org.jacoco.agent / Maven / 0.8.14.
  • org.jacoco:org.jacoco.ant: Version 0.8.14, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.jacoco:org.jacoco.ant / Maven / 0.8.14.
  • org.jacoco:org.jacoco.core: Version 0.8.14, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.jacoco:org.jacoco.core / Maven / 0.8.14.
  • org.jacoco:org.jacoco.report: Version 0.8.14, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.jacoco:org.jacoco.report / Maven / 0.8.14.
  • org.ow2.asm:asm: Version 9.9, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.ow2.asm:asm / Maven / 9.9.
  • org.ow2.asm:asm-commons: Version 9.9, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.ow2.asm:asm-commons / Maven / 9.9.
  • org.ow2.asm:asm-tree: Version 9.9, pinned in gradle.lockfile. Check plan: vulnerability lookup: org.ow2.asm:asm-tree / Maven / 9.9.

OpenEMS UI Runtime Dependencies (ui_package.json)

Manifest location: ui_package.json. Notice: No package-lock.json was provided. While several Angular framework dependencies are pinned to exact versions, many supporting libraries use caret (^) or tilde (~) version ranges, leaving resolution unpinned against upstream updates.

Exact-pinned production dependencies:

  • @angular/animations: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/animations / npm / 22.1.3.
  • @angular/common: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/common / npm / 22.1.3.
  • @angular/core: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/core / npm / 22.1.3.
  • @angular/forms: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/forms / npm / 22.1.3.
  • @angular/platform-browser: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/platform-browser / npm / 22.1.3.
  • @angular/platform-browser-dynamic: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/platform-browser-dynamic / npm / 22.1.3.
  • @angular/router: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/router / npm / 22.1.3.
  • @angular/service-worker: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/service-worker / npm / 22.1.3.
  • ng2-charts: Version 10.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: ng2-charts / npm / 10.0.0.
  • ngx-cookie-service: Version 22.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: ngx-cookie-service / npm / 22.0.0.
  • ngx-device-detector: Version 12.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: ngx-device-detector / npm / 12.0.0.
  • swiper: Version 14.1.0, pinned in ui_package.json. Check plan: vulnerability lookup: swiper / npm / 14.1.0.

Range-constrained production dependencies:

  • @angular/cdk: Version ^22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/cdk / npm / 22.1.3.
  • @awesome-cordova-plugins/core: Version ^9.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @awesome-cordova-plugins/core / npm / 9.5.0.
  • @awesome-cordova-plugins/file-opener: Version ^9.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @awesome-cordova-plugins/file-opener / npm / 9.5.0.
  • @capacitor-community/file-opener: Version ^8.0.1, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor-community/file-opener / npm / 8.0.1.
  • @capacitor/android: Version ^8.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/android / npm / 8.5.0.
  • @capacitor/app: Version ^8.1.1, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/app / npm / 8.1.1.
  • @capacitor/core: Version ^8.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/core / npm / 8.5.0.
  • @capacitor/filesystem: Version ^8.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/filesystem / npm / 8.1.3.
  • @capacitor/ios: Version ^8.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/ios / npm / 8.5.0.
  • @capacitor/screen-orientation: Version ^8.0.1, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/screen-orientation / npm / 8.0.1.
  • @capacitor/splash-screen: Version ^8.0.2, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/splash-screen / npm / 8.0.2.
  • @date-fns/tz: Version ^1.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @date-fns/tz / npm / 1.5.0.
  • @ionic/angular: Version ^8.8.18, pinned in ui_package.json. Check plan: vulnerability lookup: @ionic/angular / npm / 8.8.18.
  • @ionic/core: Version ^8.8.18, pinned in ui_package.json. Check plan: vulnerability lookup: @ionic/core / npm / 8.8.18.
  • @ngx-formly/core: Version ^7.1.0, pinned in ui_package.json. Check plan: vulnerability lookup: @ngx-formly/core / npm / 7.1.0.
  • @ngx-formly/ionic: Version ^7.1.0, pinned in ui_package.json. Check plan: vulnerability lookup: @ngx-formly/ionic / npm / 7.1.0.
  • @ngx-formly/schematics: Version ^7.1.0, pinned in ui_package.json. Check plan: vulnerability lookup: @ngx-formly/schematics / npm / 7.1.0.
  • @ngx-translate/core: Version ^17.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: @ngx-translate/core / npm / 17.0.0.
  • @nodro7/angular-mydatepicker: Version ^20.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: @nodro7/angular-mydatepicker / npm / 20.0.0.
  • capacitor-blob-writer: Version ^1.1.20, pinned in ui_package.json. Check plan: vulnerability lookup: capacitor-blob-writer / npm / 1.1.20.
  • capacitor-ios-autofill-save-password: Version ^5.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: capacitor-ios-autofill-save-password / npm / 5.0.0.
  • capacitor-secure-storage-plugin: Version ^0.13.0, pinned in ui_package.json. Check plan: vulnerability lookup: capacitor-secure-storage-plugin / npm / 0.13.0.
  • chart.js: Version ^4.5.1, pinned in ui_package.json. Check plan: vulnerability lookup: chart.js / npm / 4.5.1.
  • chartjs-adapter-date-fns: Version ^3.0.0, pinned in ui_package.json. Check plan: vulnerability lookup: chartjs-adapter-date-fns / npm / 3.0.0.
  • chartjs-plugin-annotation: Version ^3.1.0, pinned in ui_package.json. Check plan: vulnerability lookup: chartjs-plugin-annotation / npm / 3.1.0.
  • chartjs-plugin-datalabels: Version ^2.2.0, pinned in ui_package.json. Check plan: vulnerability lookup: chartjs-plugin-datalabels / npm / 2.2.0.
  • chartjs-plugin-zoom: Version ^2.2.0, pinned in ui_package.json. Check plan: vulnerability lookup: chartjs-plugin-zoom / npm / 2.2.0.
  • classlist.js: Version ^1.1.20150312, pinned in ui_package.json. Check plan: vulnerability lookup: classlist.js / npm / 1.1.20150312.
  • compare-versions: Version ^6.1.1, pinned in ui_package.json. Check plan: vulnerability lookup: compare-versions / npm / 6.1.1.
  • d3: Version ^7.9.0, pinned in ui_package.json. Check plan: vulnerability lookup: d3 / npm / 7.9.0.
  • date-fns: Version ^4.4.0, pinned in ui_package.json. Check plan: vulnerability lookup: date-fns / npm / 4.4.0.
  • file-saver-es: Version ^2.0.5, pinned in ui_package.json. Check plan: vulnerability lookup: file-saver-es / npm / 2.0.5.
  • ngx-spinner: Version ^22.0.1, pinned in ui_package.json. Check plan: vulnerability lookup: ngx-spinner / npm / 22.0.1.
  • patternomaly: Version ^1.3.2, pinned in ui_package.json. Check plan: vulnerability lookup: patternomaly / npm / 1.3.2.
  • roboto-fontface: Version ^0.10.0, pinned in ui_package.json. Check plan: vulnerability lookup: roboto-fontface / npm / 0.10.0.
  • rxjs: Version ~7.8.2, pinned in ui_package.json. Check plan: vulnerability lookup: rxjs / npm / 7.8.2.
  • tinyduration: Version ^3.4.1, pinned in ui_package.json. Check plan: vulnerability lookup: tinyduration / npm / 3.4.1.
  • tslib: Version ^2.8.1, pinned in ui_package.json. Check plan: vulnerability lookup: tslib / npm / 2.8.1.
  • uuid: Version ^14.0.2, pinned in ui_package.json. Check plan: vulnerability lookup: uuid / npm / 14.0.2.
  • zone.js: Version ~0.16.2, pinned in ui_package.json. Check plan: vulnerability lookup: zone.js / npm / 0.16.2.

Key development dependencies:

  • @angular/cli: Version ^22.1.6, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/cli / npm / 22.1.6.
  • @angular/compiler: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/compiler / npm / 22.1.3.
  • @angular/compiler-cli: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/compiler-cli / npm / 22.1.3.
  • @angular/language-service: Version 22.1.3, pinned in ui_package.json. Check plan: vulnerability lookup: @angular/language-service / npm / 22.1.3.
  • @capacitor/cli: Version 8.5.0, pinned in ui_package.json. Check plan: vulnerability lookup: @capacitor/cli / npm / 8.5.0.
  • eslint: Version ^10.9.1, pinned in ui_package.json. Check plan: vulnerability lookup: eslint / npm / 10.9.1.
  • karma: Version ^6.4.4, pinned in ui_package.json. Check plan: vulnerability lookup: karma / npm / 6.4.4.
  • prettier: Version ^3.9.6, pinned in ui_package.json. Check plan: vulnerability lookup: prettier / npm / 3.9.6.

Network Exposure

  • Architecture and connections: OpenEMS Edge executes locally on-site and establishes telemetry and control communication with local devices (such as energy storage systems, inverters, and meters) while simultaneously communicating upstream over the internet to OpenEMS Backend (cited in OpenEMS_README.md). OpenEMS UI connects to Edge and Backend systems to render live telemetry and history views for desktop browsers and smartphones.
  • Protocols and listening ports: The documentation states OpenEMS supports a "wide range of supported devices and protocols", but specific listening TCP/UDP port numbers (such as default Modbus TCP, WebSocket, or HTTP ports) are not stated in the sources.
  • Default credentials: Not stated in the sources.
  • Interface management: Documentation refers to web browser and smartphone user interfaces, and development live-demos via Gitpod, but instructions for enabling SSH, opening firewall ports, or setting administrative passwords are not stated in the sources.

Remaining temporal dependencies

Fabrication

No custom PCB or physical hardware fabrication data exists in this repository. There are no board dimensions, layer counts, copper weights, or drill specifications.