WorkSys

WorkSys

Did You Know?

We design Worksys for users so that the user clicks as little as possible.

leafleafleafDocy banner shape 01Docy banner shape 02Man illustrationFlower illustration

Computed Atributy digitálních entit

Estimated reading: 4 minutes 76 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