Computed Atribúty digitálnych entít

Estimated reading: 4 minutes 192 views

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).
Ak používate kontextový Atribút z aktuálnej inštancie Entity a výsledok výrazu závisí od jeho hodnoty a je potrebné ho vyhodnotiť pri každej zmene hodnoty, musíte do definície závislého atribútu pridať Parameter computed_attributes s odkazom na názov vypočítaného atribútu. 
 
Nasledovný príklad popisuje výpočet nákladov v lokálnej mene pri Entite elektromera, ktorý meria Atribút Total Energy. Atribúty v sekcii “computed_attributes” určujú, že ktoré Computed polia sa majú dopočítať, ak sa zapíše hodnota do pola “total_energy”.

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"
...