Computed Atribúty digitálnych entít
Computed atribúty predstavujú ďalšiu možnosť ako rýchlo a bezprácne predprípravovať údaje už počas procesu ich spracovania do systému WorkSys. Ide o veľmi efektívny nástroj, ktorý umožňuje asynchrónne vypočítať hodnotu zo statických alebo nameraných poli.
Typickým príkladov použitia je napr. spotreba elektrickej energie v lokálnej mene, kde cez tarifné ceny a spotrebovanú energiu spočítame reálne finančné náklady.
Podobne je to napríklad pri výpočte OEE – Quality, kde cez pomer kvalitatívne zhodných vyrobených kusov / počet celkovo vyrobených kusov * 100, vieme percentuálne vyjadriť hodnotu parametru.
Určite sami viete nájť ďalšie použiteľné príklady apreto si v krátkosti ukážeme ako to do Typu Entity nadefinovať. Dôležité je si pripomenúť základné fakty:
- je to aplikovateľné pre Atribúty s parametrom “type” : “computed”
- do výpočtu poľa je možne zahrnúť len Atribúty s parametrom “type” : “static” alebo “type” : “telemetry”
- hodnoty sa počítajú asynchrónne, ale vždy sa dopočítajú, takže výpočet môže trvať niekedy aj viac ako 1-2 sekundy
- Je možne počítať aj s atribútmi iných entít, ale podmienko je aby Entity boli v rovnakej logickej línii (na tej istej, alebo vyššej úrovni).
Poďme si pozrieť definície Atribútov vybraných polí obsiahnutý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": {}
}
...
Nasledujúci príklad ukazuje definíciu Atribútu s prepočtom na kW, tiež obsiahnutý Atribút 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 prípade potreby je možné cez Parameter “context” definovť aj lokálne premennné (ako napr. premennú kilo ).Samotný vzorec pre výpočet sa definuje pomocou Parametra “expression“.
...
"context": {
"kilo": 1000
},
"expression": "entity.attributes['total_power'] / kilo"
...
Ak je potrebné zahrnúť do výpočtu Atribút inej ako definovanej entity, je možné použiť Parameter “entity_ids“, kde definujete ID vybranej Entity. (pozri nasledujúci obrázok.)
...
"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 sa do Parametra “expression” vo vzoroch zohľadní poradie objektov v defincii “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"
...