Computed Atributy digitálních entit
Computed atributy představují další možnost jak rychle a bezpracně předpřípravovat data již během procesu jejich zpracování do systému WorkSys. Jedná se o velmi efektivní nástroj, který umožňuje asynchronně vypočítat hodnotu ze statických nebo naměřených poli.
Typickým příkladem použití je například. spotřeba elektrické energie v lokální měně, kde přes tarifní ceny a spotřebovanou energii spočítáme reálné finanční náklady.
Podobně je to například při výpočtu OEE – Quality, kde přes poměr kvalitativně shodných vyrobených kusů / počet celkově vyrobených kusů * 100, umíme procentuálně vyjádřit hodnotu parametru.
Určitě sami umíte nalézt další použitelné příklady a proto si v krátkosti ukážeme jak to do Typu Entity nadefinovat. Důležité je si připomenout základní fakta:
- je to aplikovatelné pro Atributy s parametrem „type“ : „computed“
- do výpočtu pole lze zahrnout pouze Atributy s parametrem „type“ : „static“ nebo „type“ : „telemetry“
- hodnoty se počítají asynchronně, ale vždy se dopočítají, takže výpočet může trvat někdy i více než 1-2 sekundy
- Je možné počítat is atributy jiných entit, ale podmínko je aby Entity byly ve stejné logické linii (na stejné nebo vyšší úrovni).
Pojďme si prohlédnout definice Atributů vybraných polí obsažených v computed_attributes.
...
"ee_dane_var_EUR": {
"type": "computed",
"unit": "€",
"trans": {
"en": "Taxes - var.part",
"sk": "Dane - var.časť",
"de": "Steuern - var. Teil",
"cz": "Daně - var. část"
},
"evaluation": {
"context": {
"mega": 1000000
},
"entity_ids": {
"tarify": 864
},
"expression": "(entity.attributes['total energy'] / mega) * tarify.attributes['ee_dane_var']"
},
"value_type": "number",
"value_default": 0
},
},
...
"total_energy": {
"type": "telemetry",
"unit": "Wh",
"trans": {
"en": "Total Energy",
"sk": "Celková Energia",
"de": "Gesamtenergie",
"cz": "Celková Energie"
},
"value_type": "number",
"value_default": 0,
"computed_attributes": {
"ee_dane_var_EUR": {},
"ee_total_power_kW": {},
"ee_total_power_EUR": {},
"ee_odchylka_var_EUR": {},
"ee_poplatky_tps_EUR": {},
"ee_poplatky_tss_EUR": {},
"ee_obchodnik_var_EUR": {},
"ee_komodita_dokup_EUR": {},
"ee_total_power_target_kW": {},
"ee_distribucia_el_njf_EUR": {},
"ee_distribucia_var_vn_EUR": {},
"ee_distribucia_straty_vn_EUR": {}
}
...
Následující příklad ukazuje definici Atributu s přepočtem na kW, též obsažený Atribut v computed_attributes.
...
"ee_total_power_kW": {
"type": "computed",
"unit": "kW",
"trans": {
"en": "Total Power in kW",
"sk": "Celkový Výkon v kW"
},
"evaluation": {
"context": {
"kilo": 1000
},
"expression": "entity.attributes['total_power'] / kilo"
},
"value_type": "number",
"value_default": 0
},
...
V případě potřeby je možné přes Parameter „context“ definovat i lokální proměnné (jako např. proměnnou kilo). Samotný vzorec pro výpočet se definuje pomocí Parametru „expression„.
...
"context": {
"kilo": 1000
},
"expression": "entity.attributes['total_power'] / kilo"
...
Pokud je třeba zahrnout do výpočtu Atribut jiné než definované entity, lze použít Parametr „entity_ids„, kde definujete ID vybrané Entity. (viz následující obrázek.)
...
"entity_ids": {
"tarify": 864
},
...
V prípade ak tých entít potrebujete spracovať viac je možne pole „entity_ids“ definovať ako objekt s viacerými hodnotami. (Viď. nasledújúci obrázok)
...
"entity_ids": {
"entities": [
890,
891,
892,
893,
894,
904,
905
]
},
...
Potom se do Parametru „expression“ ve vzorech zohlední pořadí objektů v definici „entities„.
...
"expression": "(entities[0].attributes['total power'] + entities[1].attributes['total power'] + entities[2].attributes['total power'] + entities[3].attributes['total power'] + entities[4].attributes['total power'] + entities[5].attributes['total power'] + entities[6].attributes['total power'] + entities[7].attributes['total power']) / kilo"
...