WorkSys

WorkSys

Did You Know?

With WorkSys, there is no risk of vendor lock in.

leafleafleafDocy banner shape 01Docy banner shape 02Man illustrationFlower illustration

Computed Atributy digitálních entit

Estimated reading: 4 minutes 47 views

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).
Pokud používáte kontextový Atribut z aktuální instance Entity a výsledek výrazu závisí na jeho hodnotě a je třeba jej vyhodnotit při každé změně hodnoty, musíte do definice závislého atributu přidat Parametr computed_attributes s odkazem na název vypočteného atributu.
 
Následující příklad popisuje výpočet nákladů v lokální měně u Entite elektroměru, který měří Atribut Total Energy. Atributy v sekci „computed_attributes“ určují, že která Computed pole se mají dopočítat, pokud se zapíše hodnota do pole „total_energy„.

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

Leave a Comment

CONTENTS