# Start here import { ChapterLanding } from '@/components/ChapterLanding'; > [!IMPORTANT] Start with authentication > Obtain an access token through the [Eniris Authentication API](https://authentication.eniris.be/docs) before trying a data request. In the interactive API reference, click `Authorize` and enter that access token. Signing in to the documentation website does not authorize API requests. ## Before you start > **Use your existing account.** Sign in to the Authentication API with the same email address and password you use for SmartgridX or the Eniris app. You do not need separate API credentials. Every API request requires a JWT access token. Obtain a token through the [Eniris Authentication API](https://authentication.eniris.be/docs) using those credentials and send it with each request: ```http Authorization: Bearer ``` The API uses HTTPS and JSON. Eniris also provides client packages for [Python](https://pypi.org/project/eniris/) and npm that implement the authentication flow and simplify communication with the API. ## How the API is organised - **Users and access:** users receive permissions through roles. Member, manages and monitors relations determine role membership, role hierarchy and access to devices. - **Devices and companies:** discover the assets and organisations that the authenticated user may access, or create and update them when the token has the required permissions. - **Telemetry:** query time-series measurements for one or more devices, fields and retention policies. - **Licences:** claim, activate and inspect controller licences where applicable. ## Typical integration flow 1. Sign in to the Authentication API with your SmartgridX or Eniris app credentials and obtain an access token. 2. Retrieve the user's companies and roles, then query the devices available through those roles. 3. Select the required measurement fields and retention policy from the reference below. 4. Send a telemetry query and process the returned time-series data. For the current request schemas, response models and interactive endpoint explorer, use the [official Eniris API reference](https://api.eniris.be/docs/). Prefer the newer `POST .../query` endpoints where the reference marks an older `GET` endpoint as replaced. > API access is intended for integrations and data export and may be subject to commercial fees. [Request API access or pricing information](https://eniris.io/api_request/). ## Measurement field reference The following table lists the available fields for which data can be retrieved via the Eniris Metadata & Telemetry Query API.
Data for a specific field is only available for the specified measurements and retention policies. ## Power related fields | Field name | Description | Unit Of Measurement | Measurement | Retention Policy | | ---------- | ----------- | ------------------- | ----------- | ---------------- | | actualPowerTot_W | Total active power at the current time. | Watt (W) |
⚠️ For the previous measurements:
**Positive values** indicate charging, consumption or import.
**Negative values** indicate discharging or export.
⚠️ For these measurements the values indicate production.
⚠️ For these measurements values indicate consumption.
| | | childrenStoragePower_W | Total real-time charging or discharging power of all connected batteries at a particular site. | Watt (W) | submeteringMetrics | | | childrenProducedPower_W | Total real-time power production of all connected power producing devices at a particular site. | Watt (W) | submeteringMetrics | | | childrenEVPower_W | Total real-time power consumption of all connected EV chargers at a particular site. | Watt (W) | submeteringMetrics | | | childrenConsumedPower_W | Total real-time power demand of all connected energy consuming devices at a particular site. | Watt (W) | submeteringMetrics | rp_one_m | | childrenOtherPower_W | Total real-time power consumption of devices that aren't EV chargers or heatpumps at a particular site. | Watt (W) | submeteringMetrics | | ## Energy related fields | Field name | Description | Unit Of Measurement | Measurement | Retention Policy | | ---------- | ----------- | ------------------- | ----------- | ---------------- | | importedAbsEnergyTot_Wh | Total imported energy | Watt-hour (Wh) | | | | exportedAbsEnergyTot_Wh | Total exported energy | Watt-hour (Wh) | | | | producedAbsEnergyTot_Wh | Total produced energy | Watt-hour (Wh) | | | | consumedAbsEnergyTot_Wh | Total consumed energy | Watt-hour (Wh) | | | | chargedAbsEnergyTot_Wh | Total charged energy | Watt-hour (Wh) | | | | dischargedAbsEnergyTot_Wh | Total discharged energy | Watt-hour (Wh) | | | | importedEnergyDeltaTot_Wh | Imported energy delta between two points in time | Watt-hour (Wh) | | | | exportedEnergyDeltaTot_Wh | Exported energy delta between two points in time | Watt-hour (Wh) | | | | childrenStorageChargedEnergyDeltaTot_Wh | Total charged energy delta between two points in time of all connected batteries at a particular site. | Watt-hour (Wh) | submeteringMetrics | | | childrenStorageDischargedEnergyDeltaTot_Wh | Total discharged energy delta between two points in time of all connected batteries at a particular site. | Watt-hour (Wh) | submeteringMetrics | | | producedEnergyDeltaTot_Wh | Total produced energy delta between two points in time | Watt-hour (Wh) | | | | chargedEnergyDeltaTot_Wh | Charged energy delta between two points in time | Watt-hour (Wh) | | | | dischargedEnergyDeltaTot_Wh | Discharged energy delta between two points in time | Watt-hour (Wh) | | | ## Planning related fields | Field name | Description | Unit Of Measurement | Measurement | Retention Policy | | ---------- | ----------- | ------------------- | ----------- | ---------------- | | powerSetpoint_W | Command power setpoint | Watt (W) | planning | | | policy | Command Policy | - | planning | | | constraint_ph0_label | Constraint Label | - | planning | | | reactivePowerSetpoint_VAr | Reactive Power Setpoint | Volt-Ampere reactive (VAr) | planning | | ## Other fields | Field name | Description | Unit Of Measurement | Measurement | Retention Policy | | ---------- | ----------- | ------------------- | ----------- | ---------------- | | currentL1_A | Phase 1 (Line 1) current | Ampere (A) | | | | currentL2_A | Phase 2 (Line 2) current | Ampere (A) | | | | currentL3_A | Phase 3 (Line 3) current | Ampere (A) | | | | currentN_A | Neutral current | Ampere (A) | | rp_one_m | | voltageL1N_V | Phase 1 to Neutral voltage (Phase Voltage) | Volt (V) | | | | voltageL2N_V | Phase 2 to Neutral voltage (Phase Voltage) | Volt (V) | | | | voltageL3N_V | Phase 3 to Neutral voltage (Phase Voltage) | Volt (V) | | | | voltageL1L2_V | Line-to-Line voltage between Phase 1 and Phase 2 | Volt (V) | | | | voltageL2L3_V | Line-to-Line voltage between Phase 2 and Phase 3 | Volt (V) | | | | voltageL3L1_V | Line-to-Line voltage between Phase 3 and Phase 1 | Volt (V) | | | | frequency_Hz | System frequency | Hertz (Hz) | | | | powerFactorTot | Total power factor | - | | | | powerFactorL1 | Phase 1 power factor | - | | rp_one_m | | powerFactorL2 | Phase 2 power factor | - | | rp_one_m | | powerFactorL3 | Phase 3 power factor | - | | rp_one_m | | voltageDC_V | DC voltage | Volt (V) | | | | currentDC_A | DC current | Ampere (A) | | | | status | Device status (e.g. On, Off, Error) | - | | | | operationMode | Device operation mode | - | | | | stateOfCharge_frac | State of Charge (SoC) | fraction (number between 0 and 1) | | | | stateOfHealth_frac | State of Health (SoH) | fraction (number between 0 and 1) | batteryMetrics | rp_one_m | | childrenStorageStateOfCharge_frac | Average State of Charge (SoC) of all connected batteries at a particular site. | fraction (number between 0 and 1) | submeteringMetrics | | | batteryCurrent_A | Real-time current to/from the battery | Ampere (A) | batteryMetrics | | | batteryVoltage_V | Real-time voltage of the battery | Volt (V) | batteryMetrics | | | evRequiringCharge | Indicates whether an EV is connected and requires a charge | True or False | evChargerMetrics | | | setpoint_W | External signal power setpoint | Watt (W) | externalSignalMetrics | | | strategy | External signal strategy | - | externalSignalMetrics | | | signalActive | Is an external signal active or not | 0 or 1 | externalSignalMetrics | | | reacPowerSetpoint_VAr | Reactive power setpoint | Volt-Ampere reactive (VAr) | externalSignalMetrics | | | importLimit_W | Import power limit command for a particular site. | Watt (W) | externalSignalMetrics | | | exportLimit_W | Export power limit command for a particular site. | Watt (W) | externalSignalMetrics | | # Data access and export # Downloading data: CSV export and the Eniris API Data from installations and devices linked to your Eniris account can be retrieved in two ways: * manually as a CSV file from the portal; * automatically through the Eniris API. CSV export is free. The API can also be used free of charge within the limits of the Free API tier. > [!IMPORTANT] > If an installation already has an active SmartgridOne software license for control, asset monitoring for that installation is included. You do not need to purchase a separate Monitoring Residential or Monitoring Commercial license for the same installation. ## Which option should I use? | Use case | Recommended option | Cost | | ------------------------------------------ | ------------------ | ---: | | One-time or occasional data export | CSV export | Free | | Automated reporting or a small integration | API Free | Free | | Regular or larger data queries | API Basic | Paid | | High-volume integrations | API Premium | Paid | ## CSV export Graph data in the SmartgridX portal can be downloaded as a CSV file. No API tier or separate export license is required. 1. Open the required installation or device in the portal. 2. Select the graph and time range you need. 3. Use the graph's CSV download option. 4. Open the downloaded file in Excel, Power BI, or another analysis tool. You can only export data from installations and devices that your account is authorized to access. The relevant meter or device must also be correctly integrated and sending data to Eniris. ## Do I need a separate monitoring license? ### Installation with SmartgridOne control An active SmartgridOne software license for control includes asset monitoring for the same installation. No separate monitoring license is required to: * view the installation's devices and measurements in the portal; * download graph data as CSV; * query the available data through the Eniris API. The API tier determines the available query capacity. ### Monitoring-only installation A separate monitoring license is intended for an installation that is only monitored and does not have an active SmartgridOne control license. This can apply when Eniris is used solely for energy monitoring, reporting, or collecting meter data, without SmartgridOne controlling the installation. > [!IMPORTANT] Start with authentication > Obtain an access token through the [Eniris Authentication API](https://authentication.eniris.be/docs) before trying a data request. In the interactive API reference, click `Authorize` and enter that access token. Signing in to the documentation website does not authorize API requests. ## API access The Eniris API is intended for automatically retrieving data for applications such as: * custom dashboards; * scheduled reports; * energy management or billing software; * automated analysis. ## API tiers | Tier | Monthly price | Compute-time allowance per minute | Bucket capacity | | ------- | ------------: | --------------------------------: | --------------: | | Free | €0 | 100 compute-ms | 100 ms | | Basic | €250 | 6,000 compute-ms | 6,000 ms | | Premium | €1,500 | 60,000 compute-ms | 60,000 ms | With optimized queries, the Free tier is suitable for approximately 2,000 data points per minute. Actual usage depends on the number of queries, selected time range, estimated number of data points, and query complexity. See the [Eniris webshop](https://webshop.eniris.com/) for current prices and limits. ## Using the API efficiently To stay within the available capacity: * always specify a clear start and end time; * request only the fields you need; * set an appropriate result limit; * bundle queries where possible—the API accepts up to 1,000 queries in one request; * avoid repeatedly retrieving the same historical data; * store data already retrieved in your own application when appropriate. If your integration consistently exceeds the Free tier, select the Basic or Premium tier in the webshop. ## CSV or API? Use CSV for occasional, manual analysis. Use the API when data must be transferred to another system automatically or at regular intervals. You do not need an API tier to download CSV files. For limited automated use, the Free API tier may be sufficient. ## More information * [Available API measurement fields](/API/api/) * [Interactive Eniris API documentation](https://api.eniris.be/docs/) * [SmartgridOne licenses](/Controller/license/) * [Select an API tier in the Eniris webshop](https://webshop.eniris.com/) * [External Monitoring API for live data forwarding](/Controller/External%20Signals/Monitoring/monitoring-api/) # Advanced/dynamic contract import { GithubAlert } from '@/components/GithubAlert'; import PdfLink from "@site/src/components/PdfLink"; # Advanced/dynamic contract The advanced dynamic energy contract configurator is available for any location and currency. This configurator requires you to specify a **default rule** and a list of **extra rules**, where each extra rule has an associated timing. This allows for the configuration of energy contracts where prices are time-dependent (e.g., dual tariffs). > ![Example advanced energy contract configuration](/img/generic/energy-contracts/advanced.png) > **Figure:** Configuration of Engie Flow variable (BE) contract as of April 2026, for a dual-tariff digital meter located in the Fluvius Imewo network. Note that the off-peak tariff is the default rule and peak tariff the additional rule. The peak rate will be applied on weekdays between 7 am and 10 pm, meaning that the off-peak tariff will be active during weekends and night time hours. ## Rule configuration Each rule specifies at least either a consumption or an injection price formula and (for non-default rules) a timing. In accordance with this, the rule configuration page has three sections: 1. **General:** Specify the name, scope (consumption/injection), and timing. 2. **Data sources:** Import data (like market prices) for use in formulas. E.g. adding a specific day-ahead market as a data source, enables a “day-ahead price” variable which may then be used in the formulas. 3. **Formula:** Compose injection/consumption formulas via a drag-and-drop interface. ### General The general section asks to specify the following inputs for non-default rules: - **Name:** A non-functional name used for organizational purposes. (The default rule has no name.) - **Applies to:** Define whether the rule specifies a **consumption (off-take)** price, an **injection** price, or both. (The default rule requires to specify both a consumption and an injection price.) - **Timing:** When the rule should be applied. Options include: - **Always** - **On specific weekdays, the entire day:** Specify active weekdays. - **During a time range, repeated on specific weekdays:** Specify a start/end time and days. If the start time is later than the end time (e.g., 10 PM to 6 AM), the UI will automatically update to reflect the overnight span. Note that the times should always be expressed in local time in the timezone the controller is located. > ![Example night rate](/img/generic/energy-contracts/advanced-general.png) > **Figure:** Typical settings of a peak rate rule. Peak hours depend on the specific location but in Belgium 7 a.m. to 10 p.m. is the most common. ### Data sources Adding data sources enables extra variables which can then be used in the consumption or injection formula. Click on the “+ Add” button to add a new data source and click on a pill to view the details of the corresponding data source. Pills in black are correctly configured, pills in red indicate a data source which requires extra input. Data sources can be removed by selecting them and using the delete button in their detail view. > ![Example night rate](/img/generic/energy-contracts/advanced-data-sources.png) > **Figure:** Example configuration of a day-ahead market price. The price data source is highlighted and in red, meaning it can be edited, but its configuration is not yet completed. The Netherlands are selected, but a choice between quarter hourly and hourly prices remains to be made. As of Oct. 2025, quarter hourly prices are commonly used. Even though a single data source is sufficient for specifying the formulas, it is possible to configure multiple sources for less common setups. In case multiple data sources are configured, they are numbered and each variable receives a number corresponding to its data source. Supported Sources (more may be added in the future): - **Day-ahead market:** depending on the selected currency, a list of countries is shown. After selecting a country, a specific market must be chosen. Many countries have both hourly and quarter hourly prices and some (e.g. the Nordics) have regional prices. A paid "long-term market prediction" feature may be available, depending on the EMS installers and market. When configured, this allows the controller to take prices up to several days in the future into account. Adding a day ahead market adds a “day-ahead price” variable in the formula builder. - **Tibber API:** Tibber is an energy provider which offers their customers to collect their consumption/injection prices via an API. To add a Tibber datasource, an API key must be provided, which will be used by the controller to fetch this data. Adding a Tibber data source adds a “consumption price” and “injection price” variable in the formula builder. For Switzerland, the day-ahead selector also contains direct Groupe E, CKW and EKZ tariff feeds, plus the Swiss wholesale market in EUR and converted to CHF. See **[Switzerland - dynamic prices](/App/energy-contract/ch-dynamic)** for the available identifiers and commissioning guidance. ### Formula The formula section allows configuring the consumption (offtake) and/or injection energy price formulas via a drag-and-drop interface. New blocks are added to a formula by dragging them from the **Available blocks** area to a formula area and they are removed by dragging them from a formula area to the **Drop to delete** area. A red border will show around a formula when it is currently invalid. All formulas must be valid before a rule can be saved. For each formula, the unit may be configured (e.g. currency/kWh, currency/MWh). Which units are available depends on the selected currency. Because this type of configurator is generic, it directly applies the entered prices, so it is important to explicitly include VAT, transport costs, duties or any extra cost in the entered numbers. > ![Example night rate](/img/generic/energy-contracts/advanced-formula.png) > **Figure:** Example configuration of an Energie.be dynamic contract ( ) for consumption and an Engie Empower ( ) contract for injection as of April 2026, for a dual-tariff digital meter located in the Fluvius Imewo network. ## Rule overview The energy contract overview shows an overview of all configured rules and their corresponding timings and formulas. The controller will always calculate a price based on the first active extra rule which matches a specific moment in time. If no extra rules match, the prices are set by the default rule. Note that because the first matching rule is applied, the ordering of the extra rules matters when there are overlapping timeranges. Rules can be reordered using the arrow icons on the left hand side of their cards, or by dragging and dropping them using their handle. > ![Example German rules (easy)](/img/generic/energy-contracts/advanced-germany-straightforward.png) > ![Example German rules (hard)](/img/generic/energy-contracts/advanced-germany-odd.png) > **Figure:** In Germany, net tariffs are time dependent. Often, there is a default rate (Standardtarif), a more expensive peak rate (Hochtarif) and a cheaper rate (Niedertarif). The images shows how two ways configure prices for an energy provider offering a dynamic tariff where the energy price equals the epex spot plus 4 cents/kWh, with net tariffs as follows: > - off-peak tariff of 2 cents/kWh from 23:00 to 05:00 and from 10:00 to 14:00 > - peak tariff of 12 cents/kWh from 17:00 to 20:00 > - a default tariff of 7 cents/kWh at any other time > Whilst both approaches are correct and minimal in terms of the number of rules, the second configuration relies on a correct ordering of rules and therefore the first modelling approach is preferable.

The rule set is usually easier to configure when the rule with the timing which is the hardest to describe is the default rule.

# Dynamic contract (BE) import { GithubAlert } from '@/components/GithubAlert'; import PdfLink from "@site/src/components/PdfLink"; # Dynamic contract (BE) While the “Advanced” configurator could also be used to configure a Belgian dynamic energy contract, there is a simpler option for this specific contract type which is faster and less complicated, helping to avoid manual input errors. This option is available for controllers in Belgium located in a Fluvius region (i.e. Flanders). If a controller is in Flanders but the option is not visible, it is recommended to check whether the postal code of the location is correctly configured. > ![Energy settings overview with dynamic selected](/img/generic/energy-contracts/be-dynamic-overview.png) > **Figure:** Energy contract settings for a controller located in Belgium (Flanders) and a currency set to EUR, with “Dynamic” selected. ## Configuration With the “Dynamic” card option selected, tap the “Provide contract details” button to start configuring. First select the segment the energy contract relates to: private or business. Then pick the contract name and select the month in which the contract was concluded. Once the contract date is selected, the offtake and injection formulas and a price trading interval switch appear, prefilled with the values corresponding to that specific contract and date. Carefully validate if the prefilled values and price trading interval match with the price sheet corresponding to the controller energy contract. The formula values should directly match the electricity price tariff of the energy provider, i.e. excluding net costs, VAT, contribution green power certificates,... These extra costs are automatically added.

The formula calculates the energy price in cent/kWh based on a market price in EUR/MWh, conforming to the formulas shared by the VNR (Vlaamse Nutsregulator). This convention involves a unit conversion: a market price multiplied by 0.1 corresponds to an energy provider offering the exact market price.

Many energy providers follow this convention, but some share a formula to calculate the energy price in EUR/MWh. In such cases the numbers provided by the energy supplier must be divided by 10. The contract configurator will show an error when unlikely numbers are entered to avoid unit conversion errors.

> ![Example dynamic energy contract configuration](/img/generic/energy-contracts/be-dynamic.png) > **Figure:** Configuration of Power2You Dynamic EL contract as of March 2026. The proposed tariffs exactly match the formula of the tariff sheet In case the prefilled values deviate from what the actual energy contract defines, the value(s) can be modified such that they align with the actual contract. # Flex contract (BE) # Flex contract (BE) Flex contracts use a price system with three prices, which depend on the time of day and the average EPEX spot price at the end of the month. This option is available for controllers in Belgium located in a Fluvius region (i.e. Flanders). If a controller is in Flanders but the option is not visible, it is recommended to check whether the postal code of the location is correctly configured. > ![Energy settings overview with flex selected](/img/generic/energy-contracts/be-dynamic-overview.png) > **Figure:** Energy contract settings for a controller located in Belgium (Flanders) and a currency set to EUR, with “Flex” selected. ## Configuration On the energy settings overview, if the “Dynamic” card option is currently selected, tap the “Flex” card option to start the configuration. If the “Flex” card option is already selected, tap the “Provide contract details” button to start. Select the contract name and select the month in which the contract was concluded. The system automatically takes into account the flex price windows as well as net costs, VAT, contribution green power certificates,... Click “Save” to configure the contract. > ![Example flex energy contract configuration](/img/generic/energy-contracts/be-flex-details.png) > **Figure:** Configuration of Engie Empower flex contract as of March 2026. # Switzerland - dynamic prices import { GithubAlert } from '@/components/GithubAlert'; # Switzerland - dynamic prices SmartgridOne can plan around dynamic electricity prices in Switzerland. It supports both a general Swiss day-ahead reference and direct tariff feeds for selected Swiss electricity providers. This makes it possible to schedule flexible assets such as batteries, EV chargers and heat pumps for lower-cost intervals. Swiss dynamic prices are configured with the **[Advanced dynamic contract](/App/energy-contract/advanced-generic)** option. There is no separate simplified Swiss contract card: the Advanced configurator provides the data source and formula controls needed for the different Swiss tariff models. ## Supported Swiss price feeds Set the contract currency before adding a data source. The app filters the available feeds by that currency. | Selection in the app | Currency | Resolution | What it represents | | --- | --- | --- | --- | | `CH_GroupeE-CHF-15m` | CHF | 15 minutes | Integrated tariff signal for Groupe E VARIO. | | `CH_CKW-CHF-15m` | CHF | 15 minutes | Integrated dynamic tariff signal for CKW. | | `CH_EKZ-CHF-15m` | CHF | 15 minutes | Integrated dynamic tariff signal for EKZ. | | `CH-EUR_to_CHF-1h` | CHF | 1 hour | Swiss wholesale day-ahead reference converted from EUR to CHF. | | `CH-EUR-1h` | EUR | 1 hour | Swiss wholesale day-ahead price in EUR/MWh. | The provider feeds and the converted Swiss market series appear under **Day-ahead market** in the Advanced configurator. The names above are the current identifiers; the list is loaded live and may grow as new integrations are released.

Swiss dynamic products differ. A signal can represent the energy component, grid usage or a more complete tariff. Do not assume that every feed is an all-in customer price. Confirm the selected provider product and compare a few intervals with the provider's tariff publication before putting the controller into operation.

## Configure a Swiss dynamic contract 1. Verify that the controller location is set to **Switzerland** and that its timezone is correct. 2. Open **Energy contract** and set the currency used by the customer's contract: normally **CHF**, or **EUR** when the contract is explicitly denominated in EUR. 3. Select **Advanced dynamic** and open the default rule. 4. Under **Data sources**, add **Day-ahead market**. 5. Select **Switzerland**, then choose the provider feed or wholesale series that matches the contract. 6. Build both the consumption and injection formulas. Include every component that is not already part of the selected signal. 7. Save the rule and compare the resulting prices with the supplier's published values for several intervals, including a low-price and a high-price interval. 8. Verify the next-day plan before allowing the controller to steer flexible assets automatically. ### Choosing a source Use a **provider feed** when the customer has the matching dynamic product. These integrations follow the provider's published tariff signal and are usually the clearest option for that product. Use the **Swiss wholesale day-ahead** series when the customer's formula is explicitly indexed to the Swiss spot market. `CH-EUR-1h` is the original EUR/MWh series. For a CHF contract, use `CH-EUR_to_CHF-1h` so the price signal and formula use the same currency. The optional **day-ahead prediction** is currently available for the EUR Swiss market when the feature is enabled. It extends the planning horizon, but it is a forecast rather than a settled tariff. The controller should still fall back to the published market price when it becomes available. ## What must be included in the formula? A dynamic customer price can contain more than the selected signal: - the dynamic energy or grid-price component; - a supplier surcharge or discount; - fixed energy components; - local and national grid charges; - municipal or cantonal charges; - federal levies; - VAT; - a separate remuneration formula for exported energy. For a wholesale-indexed contract, the structure is commonly similar to: ```text consumption price = market price × contract factor + supplier surcharge + other variable charges injection price = market price × contract factor - supplier fee ``` These are structural examples, not values to copy. Use the exact units and coefficients from the customer's tariff sheet. The Swiss feeds are stored as a price per MWh; the formula editor can display the result in `c/kWh` or `Fr/MWh` and applies the corresponding unit scale. ## Provider-specific notes ### Groupe E VARIO Groupe E publishes prices for every 15-minute interval of the following day through a web API. The provider offers both grid-only and more complete tariff views, and the complete view can contain energy, national-grid charges, federal levies and VAT. Municipal or cantonal charges can still vary by location. In Eniris, select `CH_GroupeE-CHF-15m` and verify which tariff composition applies to the project. [Read the official Groupe E VARIO information](https://www.groupe-e.ch/de/strom/vario) ### CKW dynamic tariff CKW publishes a dynamic grid-usage profile through its public API. The API distinguishes grid usage, broader grid components, electricity and an integrated value. In Eniris, select `CH_CKW-CHF-15m`, then confirm the applicable CKW product and tariff component for the customer. [Read the official CKW technical information](https://www.ckw.ch/energie/strom/dynamischer-tarif-fuer-privatkunden-und-unternehmen/dynamischer-tarif-technische-voraussetzungen) ### EKZ dynamic tariff EKZ's optional dynamic tariff combines a dynamic energy component with dynamic grid usage. Prices change every 15 minutes and next-day tariff information is sent to the EMS. In Eniris, select `CH_EKZ-CHF-15m` and validate the resulting values against the customer's EKZ tariff. [Read the official EKZ dynamic-tariff information](https://www.ekz.ch/de/angebote/strom/tarife/dynamischer-wahltarif.html) ## Commissioning checklist - The site, currency and timezone are correct. - The selected feed matches the customer's provider and tariff product. - Consumption and injection are both configured, even if one is fixed. - Formula units match the tariff sheet. - Taxes, charges and VAT are neither omitted nor counted twice. - At least several published intervals match the provider's values. - The controller has a safe fallback when future prices are temporarily unavailable. - The planned charging and discharging behaviour respects the asset limits and customer preferences.

Dynamic Swiss tariffs require the corresponding product, metering setup and provider eligibility. Having a feed available in the Eniris app does not by itself enrol the customer in that tariff. Arrange the tariff and any required smart-meter or EMS registration directly with the electricity provider.

# Fixed/variable contract import { GithubAlert } from '@/components/GithubAlert'; import PdfLink from "@site/src/components/PdfLink"; # Fixed/variable contract The fixed/variable energy contract configurator is available for any location and currency, allowing to model the simplest types of energy contract with minimal configuration. A contract of this category uses a fixed, non-time dependent energy price for both consumption and injection. The form offers two inputs, to configure the consumption and feed-in (injection) prices, in a configurable unit (e.g. currency/kWh, currency/MWh). Which units are available depend on the selected currency. Because this type of configurator is generic, it directly applies the entered prices, so it is important to explicitly include VAT, transport costs, duties or any extra cost in the entered numbers. Carefully confirm that both the entered prices and the picked unit match the energy contract before submitting.

Note that the advanced wizard should be used for contracts where the fixed price depends on the hour of day or the day of the week (e.g. day-night tariff)

> ![Example fixed/variable energy contract configuration](/img/generic/energy-contracts/fixed.png) > **Figure:** Configuration of Luminus MaxxFix (BE) contract as of April 2026, for a single-tariff digital meter located in the Fluvius Imewo network. # Energy Contract import { FolderOverview } from "@/components/FolderOverview"; import { GithubAlert } from '@/components/GithubAlert'; import { InsightsName } from "@site/src/components/customFields"; # Energy Contract For the controller to make a plan which maximizes profit, it must be able to calculate at any time the worth of energy. This includes both the cost of consuming energy from the grid and the revenue made by exporting it to the grid. These costs are set in the energy contract of a site, and can be configured in the app both by the company which claimed the controller and any “installer”-level user of the controller, provided the controller has a firmware version released after April 26th, 2026. The controller supports any energy contract where prices are either fixed or a function of the day-ahead market cost, with a formula which depends on the time-of-day and day-of-the-week. Notably, this covers most variable, fixed, dynamic and flex energy contracts. In order to configure these prices, the app offers various configuration forms. Which forms are available depends on two factors: - The **location** (country, zip code, ...) of the controller, which can be configured on the controller interface or alternatively via - The **currency** used by the energy provider (e.g. EUR, USD, CHF, SEK), which can be configured on the settings page itself Note that changing the currency after a contract was configured will invalidate the contract. Depending on the specific configuration method, changing the location of a controller might also result in a configuration becoming invalid. The app has the following contract configurators: - **[Fixed/variable](/App/energy-contract/fixed-generic)** (available for any location/currency): Configure a contract by providing a fixed consumption and feed-in price. - **[Advanced dynamic](/App/energy-contract/advanced-generic)** (available for any location/currency): Configure a contract by specifying a base rule and a set of extra time-dependent rules. The controller will always calculate a price based on the first active extra rule which matches a specific moment in time. If no extra rules match, the prices are set by the default rule. This option is the most flexible, but also the most complicated to set up. - **[Belgium - dynamic](/App/energy-contract/be-dynamic)** (available for controllers in Belgium [Flanders] and prices in EUR): Pick a private or business energy contract by specifying a contract name and the contract conclusion date. - **[Belgium - flex](/App/energy-contract/be-flex)** (available for controllers in Belgium (Flanders) and prices in EUR): Flex contracts use a price system with three prices, which depend on the time of day and the average EPEX spot price at the end of the month. There are currently two energy providers offering this system. - **[The Netherlands - dynamic](/App/energy-contract/nl-dynamic)** (available for the Netherlands and prices in EUR): Dynamic contracts in the Netherlands charge a price equal to the market price with a fixed offset called "inkoopvergoeding" or "verkoopvergoeding". You can configure an energy contract by specifying an energy supplier. - **[Switzerland - dynamic prices](/App/energy-contract/ch-dynamic)**: Use Swiss wholesale prices or one of the directly integrated Swiss tariff feeds from Groupe E, CKW or EKZ. Swiss contracts are configured through the Advanced dynamic configurator. ## Available price integrations The exact choices shown in the app depend on the selected currency. Availability is loaded live, so the selector in the app is the definitive source if this table and the application ever differ. | Integration | Market or provider | Currency | Resolution | Typical use | | --- | --- | --- | --- | --- | | Day-ahead market | Multiple European bidding zones | Depends on market | Hourly or 15 minutes | Build a contract formula from a wholesale market price. | | Day-ahead prediction | Selected supported markets | Same as the linked market | Depends on market | Optional longer planning horizon; availability depends on the market and enabled features. | | Tibber API | Tibber | Contract currency | Supplied by Tibber | Use the consumption and injection prices returned for a Tibber account. | | Groupe E VARIO | Switzerland | CHF | 15 minutes | Use the integrated Groupe E tariff signal. | | CKW dynamic tariff | Switzerland | CHF | 15 minutes | Use the integrated CKW tariff signal. | | EKZ dynamic tariff | Switzerland | CHF | 15 minutes | Use the integrated EKZ tariff signal. | | Swiss day-ahead | Switzerland | EUR | 1 hour | Use the Swiss wholesale day-ahead price directly. | | Swiss day-ahead converted to CHF | Switzerland | CHF | 1 hour | Use the Swiss wholesale reference converted to CHF. |

A wholesale day-ahead price is not automatically the amount on the customer's invoice. Supplier margins, grid charges, duties, taxes and VAT may still need to be included in the formula. A provider-specific tariff feed can already contain several of these components. Always compare the configured result with the customer's current tariff sheet before enabling automated planning.

> ![Example energy contract configuration](/img/generic/energy-contracts/example.png) > **Figure:** Energy contract configuration for a controller located in the Netherlands with the currency set to EUR. # Dynamic contract (NL) # Dynamic contract (NL) While the “Advanced” configurator could also be used to configure a Dutch dynamic energy contract, there is a simpler option for this specific contract type which is faster and less complicated, helping to avoid manual input errors. This option is available for any controllers located in the Netherlands. If a controller is located in the Netherlands but the option is not visible, it is recommended to check whether its location is correctly configured. > ![Energy settings overview with dynamic selected](/img/generic/energy-contracts/nl-dynamic-overview.png) > **Figure:** Energy contract settings for a controller located in the Netherlands and a currency set to EUR, with “Dynamic” selected. ## Configuration With the “Dynamic” card option selected, tap the “Provide contract details” button to start configuring. Select the energy provider corresponding to the contract which needs to be configured. Once the energy provider is selected, feed-in fees (one for “binnen salderen” and another for “buiten salderen”), as well as the price trading interval appear, prefilled with the values currently corresponding to that specific energy supplier. Carefully validate if the prefilled values and price trading interval match with the energy contract (the contract should mention these fees). The fees should directly match the numbers provided by the energy provider, i.e. **including VAT**, but excluding the fixed energy taxes. The tax is automatically added by the controller. > ![Example dynamic energy contract configuration](/img/generic/energy-contracts/nl-dynamic-details.png) > **Figure:** Configuration of Easy Energy dynamic contract as of April 28th, 2026. > ![Easy Energy website contract details](/img/generic/energy-contracts/easy-energy-2026-04-28.png) > **Figure:** Feed-in fee as communicated by Easy Energy on April 28th, 2026. Note that this matches with the automatically provided prices. In case the prefilled values deviate from what the actual energy contract defines, the value(s) can be modified such that they align with the actual contract. To avoid unit misinterpretations, input validation will show an error if the magnitude of the entered values is significantly off. # Start here import { ChapterLanding } from '@/components/ChapterLanding'; import { FolderOverview } from '@/components/FolderOverview'; ## Explore the Eniris App # App overview import { BrandName, ControllerName } from '@site/src/components/customFields'; import ClickableImage from '@site/src/components/ClickableImage'; # App overview After signing in, the app opens an overview of the energy devices connected to the . Select a device icon to open the corresponding detail page ## Understand the installation value The home or installation value is calculated from the grid connection, solar production, and battery power:
Installation icon = Grid icon - ( Solar panel icon + Battery icon )
Production is shown as a negative value because it reduces the power drawn from the grid. ## Standard device categories Depending on the installation, the overview can contain: - **Grid connection:** power imported from or exported to the public grid - **Solar inverters:** current and historical solar production - **Battery system:** battery power, status, and stored energy - **Home or installation:** the combined installation balance - **Charging stations:** connected EV charging points - **Heating and cooling:** heat pumps, air conditioners, and boilers Icons shown in grey represent device categories that are not connected, monitored, or controlled for the selected installation. ## Navigate to device details Select an icon on the overview or use the dropdown menu at the top of the app. The dropdown lists all available device categories and is useful when several devices of the same type are connected. ## Data update speed The overview shows real-time data at the fastest rate provided by the . Device detail graphs use quarter-hour values. The displayed **last update** can therefore be newer than the latest point in a quarter-hour graph. The real-time measurement is added to the historical graph after its aggregation interval has completed. # Charging schedules # Charging schedules The app can schedule electric-vehicle charging per connector at each charging station. A rule defines how much energy or driving range a connected vehicle should receive before a deadline. ## Available rule types Create a target for: 1. **A fixed time on selected days of the week**, for a recurring charging routine. 2. **A fixed date and time**, for a one-off deadline. The app always uses the next applicable rule. When no future rule is configured, the vehicle is allowed to charge until it is full, subject to the charging station, vehicle, site limits, and active controller functions. ## Before relying on a schedule - Confirm that the correct charging station and connector are selected. - Choose whether the target is expressed in kilometres or kWh. - Check that the vehicle remains connected long enough to reach the target. - Allow for the maximum charging power of the vehicle and charging station. - Verify whether another site or controller limit can reduce the available charging power. > [!NOTE] > A schedule defines a charging objective, not a guaranteed result. Available grid power, vehicle limits, communication, and other energy controls can affect the delivered energy. # Controller setup and settings import { BrandName, ControllerName } from '@site/src/components/customFields'; import ClickableImage from '@site/src/components/ClickableImage'; # Controller setup and settings ## Add a controller Use **Add controller** to register a new under the signed-in account. Enter the serial number and verification code printed on the controller label. Keep the verification code private. It is used to prove that the account is allowed to claim the controller. ## Open Controller Configuration Select **Controller Configuration** to open the commissioning interface in a web browser. Use this interface for installation-level configuration and technical commissioning. > [!CAUTION] > If the controller interface does not open, confirm that the is switched on, online, and reachable. ## Settings The Settings page provides access to controller options such as energy prices and control modes. The available options correspond to settings in the commissioning interface. End-user accounts generally see fewer settings than installer or administrator accounts. For detailed controller configuration, continue to the [SmartgridOne documentation](/Controller/). ## Manual Select **Manual** in the app to open the documentation for the controller and connected functionality. # Using the app import { FolderOverview } from '@/components/FolderOverview'; # Using the app The Eniris app gives users a mobile view of their energy installation and provides access to the functions available for their account. Use these guides to understand the dashboard, configure planning and charging, add or configure a controller, and manage access. ## How the guides fit together 1. Start with **App overview** to understand the dashboard, device icons, navigation, and update speed. 2. Use **Charging schedules** when an EV must reach a target by a specific time. 3. Open **Controller setup and settings** to register a controller or access its commissioning settings. 4. Read **Planning and energy prices** to interpret forecasts, import, export, and price data. 5. Use **Users and account** to share access and manage app-level preferences. > [!NOTE] > The available menus and settings depend on the connected equipment, supplier configuration, and permissions of the signed-in account. # Planning and energy prices import { BrandName, ControllerName } from '@site/src/components/customFields'; import ClickableImage from '@site/src/components/ClickableImage'; # Planning and energy prices The Planning page combines a forecast of grid consumption and export with the energy prices used by the . ## Consumption and grid-return planning The planning view contains two grid-connection forecasts: - **Without control:** the expected installation behaviour if the controller does not optimise the flexible devices. - **With control:** the expected result after planned controller actions. A positive value represents consumption from the grid. A negative value represents energy returned to the grid. Forecasts are estimates based on the available device data, weather, schedules, prices, and configured controls. Actual site behaviour can differ. ## Energy prices The app shows the prices used by the for planning and optimisation. The price source depends on the configured energy contract and can, for example, use Day-Ahead market prices or a supported supplier integration. > [!NOTE] > Purchase and feed-in prices are stored separately because an energy contract can use different prices for consumption and export. To configure the price calculation, continue to [Energy Contract](/App/energy-contract). # Users and account import { BrandName, ControllerName } from '@site/src/components/customFields'; import ClickableImage from '@site/src/components/ClickableImage'; # Users and account ## User management Use User Management to give another person access to the selected . Enter the user's email address and confirm the entry. Only grant access to people who need it and review the user list when an installer, employee, tenant, or service provider no longer requires access. ## Global settings Global Settings can control app-wide presentation options such as colour schemes and the visibility of selected menus. > [!WARNING] > Global Settings may be unavailable depending on the supplier configuration and the permissions of the signed-in account. ## Account settings Use Account Settings to change the username or password for the signed-in account. > [!IMPORTANT] > Use an email address as the username whenever possible. Without a recoverable email-based username, restoring access after a forgotten password may not be possible. # Apple app setup import LicenseDisclaimer from '@site/src/components/LicenseDisclaimer'; # Apple developer Setup Guide This guide walks you through setting up your white-labeled app on the Apple Developer ## Initial Setup 1. Visit the [Apple Developer](https://developer.apple.com/account) 2. The app files will have been uploaded by Eniris ## Required Checklist Items ### 1. Screenshots Iphone 6'7, 6'5, 5'5 and both Ipad 12'9 versions are required to be added. ### 2. Description, Keywords, Keywords are also all mandatory fields. ### 3. App Review Information: Here is sign-in required, the login details here are those you have received for the insights/app platform ### 4. App information - Content Rights and Age Rating must be entered on this page. The app does not contain any sensitive content. - Under Privacy Policy URL should be the link to your company privacy policy. ### 5. Pricing and Availability 1. Price Schedule: Here should be the usual price for the app 2. App Availability: Here you can select all countries where the app should be available. ### 6. Add for Review When all these fields are completed click “Save”, then “Add for Review”. Now Apple needs to review the app this can take 24h-48h. ## Creating Screenshots ### Browser Method 1. Visit [insights3.eniris.be](https://insights3.eniris.be) or your custom domain 2. Log in to your account 3. For mobile screenshots: - Open browser developer tools (F12) - Enable device simulation - Select mobile device preset - Use built-in screenshot tool 4. Save screenshots for Play Store listing