> For the complete documentation index, see [llms.txt](https://docs.unwaste.energy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.unwaste.energy/dzialanie-unwaste-robot/technical-details/electrical-network-calculations.md).

# Obliczenia sieci elektrycznej

Zrozum obliczenia sieci elektrycznej używane przez Unwaste EMS.

## Obliczenia sieci elektrycznej

### Założenia

* Obliczenia sieci elektrycznej są wykonywane **na jedno przyłącze**. Przyłącza są od siebie oddzielne (nie powinno być przepływów energii między przyłączeniami) i często są geograficznie rozdzielone, więc stanowią rozsądną granicę zarówno dla obliczeń, jak i dla partycjonowania bazy danych.
* Dla danego przyłącza instalacja elektryczna jest modelowana jako **drzewo obwodów elektrycznych**.
* Obwody mogą być **opomiarowane** lub **nieopomiarowane**:
  * Jeden **obwód opomiarowany** ma własny licznik energii elektrycznej i może obliczać zarówno **całkowite zużycie** i **zużycie resztkowe**.
  * Obwód elektryczny **obwód nieopomiarowany** nie ma licznika. Nie może mierzyć dwukierunkowego przepływu energii, więc jego `energyImported` / `energyReturned` muszą być obsługiwane zgodnie z założeniami opisanymi poniżej.
* W obecnym modelu system **nie śledzi faz** (L1/L2/L3) na potrzeby obliczeń. Jeśli wartości są zbierane dla każdej fazy, są sumowane do jednej wartości.

***

### Elementy w drzewie obwodów elektrycznych

#### Obwód elektryczny

Obwód elektryczny jest elementem strukturalnym drzewa. Obwód elektryczny może mieć **obwody podrzędne (Obwód podrzędny)** i może też mieć elementy liściowe podłączone bezpośrednio pod nim (produkcja, magazyn, urządzenia).

**Odczyty obwodu opomiarowanego**

Jeden **obwód opomiarowany** udostępnia dwa odczyty energii (jak pokazano na diagramie):

* `energyImported` \[Wh] — energia wpływająca do tego obwodu z jego obwodu nadrzędnego (Obwód nadrzędny)
* `energyReturned` \[Wh] — energia płynąca z tego obwodu z powrotem do jego obwodu nadrzędnego (Obwód nadrzędny)

Te dwie wartości są odczytywane **bezpośrednio z własnego licznika tego obwodu**.

**Założenia dla obwodu nieopomiarowanego**

Obwód elektryczny **obwód nieopomiarowany** nie ma licznika, więc system nie może zmierzyć, ile energii przepłynęło w obu kierunkach.

Dla obwodów nieopomiarowanych model zakłada:

* `energyReturned = 0`
* `energyImported = energyUsedChildren`

Oznacza to: obwód nieopomiarowany jest traktowany tak, jakby cała energia potrzebna jego obwodom podrzędnym była „importowana” od obwodu nadrzędnego, a nic nie było „zwracane” w górę (ponieważ nie można tego zmierzyć).

`energyUsedChildren` dla obwodu jest zdefiniowane w sekcji obliczeń poniżej.

***

#### Produkcja

Produkcja to element podłączony pod obwodem (element liściowy). Reprezentuje każde źródło, które wprowadza energię do instalacji, na przykład falowniki fotowoltaiczne lub turbiny wiatrowe.

Produkcja udostępnia:

* `energyProduced` \[Wh] — całkowita wyprodukowana energia

(Używaj `energyProduced` konsekwentnie; unikaj `energyProduction`.)

***

#### Magazyn energii

Magazyn to element podłączony pod obwodem (element liściowy). Reprezentuje urządzenie, które może zarówno pochłaniać, jak i oddawać energię elektryczną (obecnie: Bateria).

Magazyn udostępnia:

* `energyStored` \[Wh] — energia naładowana do magazynu
* `energyRetrieved` \[Wh] — Energia oddana z magazynu (Z magazynu)
* `chargeLevel` \[%] — stan naładowania
* `freeStorage` \[Wh] — pozostała „wolna przestrzeń”, obliczana na podstawie `chargeLevel` i skonfigurowanej pojemności magazynu

***

#### Urządzenia

Urządzenia to elementy podłączone pod obwodem (elementy liściowe). Reprezentują sterowalne odbiory (jednostki wykonawcze).

Urządzenie może udostępniać:

* `energyConsumption` \[Wh] — zużycie energii przez urządzenie

***

## Obliczenia dla pojedynczego obwodu

Ta sekcja wyjaśnia, jak są wykonywane obliczenia **dla jednego obwodu**, oraz jak obwody podrzędne wpływają na wynik.

Kluczowa zasada stosowana w całym tekście:

* Gdy obwód potrzebuje „sumy poniżej siebie”, sumuje tylko swoje **bezpośrednie elementy potomne** (obwody podrzędne i bezpośrednio podłączone elementy liściowe).\
  Wartości z głębszych poziomów są już uwzględnione w sumach każdego obwodu podrzędnego.

***

### Krok 1: Oblicz `energyUsedChildren` dla obwodu

Dla każdego obwodu zdefiniuj:

`energyUsedChildren = (suma energyUsedChildren wszystkich obwodów podrzędnych) + (suma energyConsumption urządzeń podłączonych bezpośrednio do tego obwodu)`

Uwagi:

* **Obwody podrzędne** wnoszą wkład przez swoje `energyUsedTotal` (ich własne sumy poddrzewa).
* **Urządzenia podłączone bezpośrednio** do tego obwodu wnoszą wkład przez swoje `energyConsumption`.
* są uwzględniane *nie* bezpośrednio, `energyUsedChildren` ponieważ wpływają na bilans energii poprzez obliczenia w `energyProduced`, `energyStored`, i `energyRetrieved` Kroku 2.

Ta definicja jest również tym, czego **obwód nieopomiarowany** obwód nieopomiarowany używa jako swojego założonego importu:

* `energyImported = energyUsedChildren`
* `energyReturned = 0`

***

### Krok 2: Oblicz sumy poddrzewa dla produkcji i magazynu

Dla obwodu zdefiniuj te sumy poddrzewa jako sumy **bezpośrednie elementy potomne**:

* `energyProduced` = suma `energyProduced` z:
  * elementów produkcji podłączonych bezpośrednio do tego obwodu oraz
  * własnych `energyProduced` sum obwodów podrzędnych (już obejmujących ich głębsze poziomy)
* `energyStored` = suma `energyStored` z:
  * elementów magazynu podłączonych bezpośrednio do tego obwodu oraz
  * ich `energyStored` sumy
* `energyRetrieved` = suma `energyRetrieved` z:
  * elementów magazynu podłączonych bezpośrednio do tego obwodu oraz
  * ich `energyRetrieved` sumy

To odpowiada idei z diagramu: produkcja i odzyskana energia „wpływają” do bilansu obwodu, podczas gdy zmagazynowana i oddana energia „wypływają”.

Ważne doprecyzowanie:

* `energyImported` i `energyReturned` nigdy nie są **sumowane z obwodów podrzędnych**. Są **odczytami licznika (lub założeniami) dla obwodu, który jest obliczany**.

***

### Krok 3: Całkowite zużycie energii dla obwodu (`energyUsedTotal`)

![](https://3030738239-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWf3M0a04WuhvfEbAgXFl%2Fuploads%2Fgit-blob-f4e8fd93f865ef6200dca628dc497782e766e950%2FInner%20Workings_9d18a379-deff-4f9c-849c-9060c5912e2c_w%C4%99ze%C5%82.png?alt=media)

Na podstawie **Zasada zachowania energii**, całkowita energia wpływająca **do** do obwodu (z importu, lokalnej produkcji i rozładowania magazynu) musi być równa całkowitej energii wypływającej **z** z tego obwodu (do eksportu/zwrotu, ładowania magazynu) oraz energii **zużytej** w obrębie obwodu i jego poddrzewa — więc bilans energii obwodu można zapisać jako równanie „dopływy − odpływy = zużycie”.

`energyConsumption = energyImported + energyProduced + energyRetrieved - energyReturned - energyStored`

Gdzie:

* `energyImported`, `energyReturned` są:
  * **odczyty licznika** dla obwodów opomiarowanych lub
  * **wartości założone** dla obwodów nieopomiarowanych (jak opisano powyżej).
* `energyProduced`, `energyRetrieved`, `energyStored` są **sumami poddrzewa** obliczonymi w Kroku 2.

***

### Krok 4: Zużycie resztkowe dla obwodu opomiarowanego (`energyUsedThisLevel`)

Zużycie resztkowe oznacza: zużycie, które zachodzi „na poziomie tego obwodu”, to znaczy **nie jest mierzone oddzielnie** w żadnej części poniżej niego.

Dla **obwód opomiarowany**:

`energyUsedThisLevel = energyUsedTotal - energyUsedChildren`

![](https://3030738239-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWf3M0a04WuhvfEbAgXFl%2Fuploads%2Fgit-blob-ece5ef208fa7810831527f2d7fa597fa164d8ec6%2FInner%20Workings_2947b528-b993-4138-a023-4bb51941d03a_w%C4%99ze%C5%822.png?alt=media)

Wyjaśnienie (diagram):

* `energyUsedTotal` obejmuje całe Poddrzewo.
* Jeśli istnieją obwody podrzędne, ich `energyUsedTotal` reprezentuje zużycie, które można przypisać do tych gałęzi podrzędnych.
* To, co pozostaje, to zużycie resztkowe dla tego poziomu obwodu (`energyUsedThisLevel`).

Z definicji, jeśli obwód opomiarowany nie ma obwodów podrzędnych:

* `energyUsedThisLevel == energyUsedTotal`

Dla **obwód nieopomiarowany**, `energyUsedThisLevel` obwodu nieopomiarowanego zwykle nie jest to tak samo znaczące, ponieważ nie ma własnego bilansu opartego na liczniku. W tym modelu zużycie resztkowe jest przede wszystkim cechą **obwodów opomiarowanych**.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.unwaste.energy/dzialanie-unwaste-robot/technical-details/electrical-network-calculations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
