kW Prod Server

skyspark.kw-engineering.com — Last seen:

Tag: kw server

Loading license status…

Health

96% healthy
PodFunctionsOverridesScore
kwGithubExt 20 0 100%
kwLinkAnalyticsExt 326 0 100%
kwLinkCoreExt 154 1 99%
kwLinkDevToolsExt 17 0 100%
kwLinkDiagnosticsExt 55 0 100%
kwLinkegratorExt 100 0 100%
kwLinkEnergyAgentExt 169 0 100%
kwLinkEventsExt 22 0 100%
kwLinkMbcxExt 47 0 100%
kwLinkModelExt 191 0 100%
kwLinkRuleExt 177 0 100%
kwLinkUMichRuleExt 84 0 100%
kwLinkVirtualExt 95 1 99%
kwLinkWorkflowExt 22 0 100%
evseExt 20 0 100%
Show / hide diffs (2)
kwLinkCoreExt
pointQueryLookup
--- pointQueryLookup (pod)
+++ pointQueryLookup (local)
@@ -1,61 +1,270 @@
-(target: null, opts: {}) => do

-  cipherText :

-    "AxD:J7ik5GzASro65uWVIxMkAg::7cPS7lsTZSH5N2vG2V_-JnF7WnnW0YzEzAkoWuWN0t33cekbuST1" +

-    "jdwUtsnrnsWKnY2ZJ11FgjHRBw-4DchwEYWtNDzsPhtoG9qIeWzimhGiuRu1zA5WRrk0313ancLuQXcH" +

-    "zUsoSr9-_gDRNSvmhd8jJ8XaV0eozzR7scJJx801Sxs1lYKqn9-efJgMoGE5yUdio-ucRJMKwXCuww-J" +

-    "b8TqM0LRciBpX_qgy9sWW83-toyx1g1E6NXoPfuyE4EB_DXdpr3CmMSWscawuIAE3KH2FmPCMCU8ihr3" +

-    "tr_mcJm1MYsEo96AokjwJZusgH38mbnKrRoCf8NHPHr0pfCbgMSC-bF-D68vIgcs7pkROhkb8dHHy0Yb" +

-    "BGZHrQwecGLFxh3jego2SM4MSQxMksgcXyMChH17bY10l6VEqvIczPolCB66sNO2bVrCc5FWAFPGXxtr" +

-    "m_T7E__lMU78LEPWLfO1UMWE_FLJtlEAQbuv_xhB4jUy4kyqpWCjuwNLkCrYY7sWHzyE90-Ys6SJzJLF" +

-    "INz9kBTIPWsbbjDHx0satQxguftZqyzoAjtoNJvymRdqyVTMTH2kLe1zoF_fI7afvDstxdp_YJ1Snx8y" +

-    "b3DLsnyLYJmKX7M8z4og1VWfRq6MdK-OCyjnRkLCO8Yv2ieCKWXBBbt7b5H7sVq8aZe-QHMINJW9XJQa" +

-    "AnOn9ePqiMWZoCfUbSB_dpwe89a9xMwOB_Ndj9gW8AoXEiK2uUgBEN_p4zcjOmNOJemXpluU-yQDFqJ3" +

-    "bZKgktkwNLUwrhYAYsp8Rg12CkGeXqx5hEEhEeXaUZisO7OKUHC9iFpi0CXbKbIB7bQc5kmWXCQNOKpk" +

-    "WJX_EPBrGrlmKXXseMsPuT78bkNoPxGbYxGwE4cSIfDqE0wkZOpILvuYXWkc5_jIdwuNsHSNLMXtEG2W" +

-    "NZ2dCBXpdFS7pFE5KrdkkydqepBBHgcCia5uNWcm1Sm9MuqqhjSK3R2r8D8VxPAJNIP-B05znD5pcUt8" +

-    "H-XKlS1RIkPpOpT3_0o_ieo7Dk2A51Ta4aSMsV1dkCGA78aq6mSF6oBYWefmW2FGYsmJjl0_KhJ30cuM" +

-    "-VLV1Tm58wPWB4gk-VTLLCCYqcu2eiH2XOMA5h2A0Jqm8nAp0-VH8rIvsgcdXV7OyBp7RThiFhmXrczT" +

-    "9UjSq1fDGg5ss22R-nyAlL6Cy9lFNgAwJXhhZGyoeEmKAnTju_Eszm8fkclrd66V2OG8Oumqyo_uLyAT" +

-    "WaOvw-a_AV8IniBRcJsnpdMFFuoGLKQ_IeAojF82KpVG0sB7Q9SR5iOJOCgu1zOfjmbJJuRiKt_5lvlX" +

-    "vjjxxHEwjXF_f-PFNDclHEwLpjwPm0u3Vln7BaLW0nbWkRsC8_GugIUsI0JIOZXfv7gCowIcqWPqFl2k" +

-    "AQTXjulVkhATkjviOkhCRzRpJgBt_4vjZzIPZKnJZqEq1aIDDCk8TxIBlABWT2Secx_B7z6vXxM6sKJO" +

-    "nThHzuHjlsJYDXrMEq1NVYtIz6HOv86FEksDz8zR7cCtSfQE2z-PMEeIBL0g5g4k5lDduU0ltFQDamy8" +

-    "jGokPxsAKgmYeqtWlvQDFircTDaUEURdVC0t0aRmXAOHIlhqYslE5vMmXfaZyB8tY8XC-QO4RwKRNOsA" +

-    "Ii_lUujsAX-uRZib_Qj79SArzhQVKHalYEglFumjDyOfjftf0dAqW7Lm3RzLBPnSAP5drZMTfCqr_keo" +

-    "qCRPNnnsdgVhHpauC4oI3UwJJ3cnm6wK1qCQzw3LQTapoht77RJRHPZ0uepNmuxAENkXf0tm_ViUbsSj" +

-    "6EFCV5CDWQqH3aXWIdkiCAU4A0RkucCfFULcqINf2dfBkY3R9167QcyyhIIR335dIg-Jn2S3Ms2TuOiJ" +

-    "mVIx3ht7V091uCY6UWCmpIKebvMwnDubPnelivQ9tAwKnC2jR4eo_SppqT981sI61cG0tmud_TU6lwIW" +

-    "KoCXkm74hOIIw-JtB0zwfMXU1joh9m0_aPdw2FHyn4IhZVKpLeLYGlq8LtA_f723YpAqGzUM3VdjBqBq" +

-    "evHqr-YL5X8Rq5CdMndKEk5xKgy7a9tabPjmQINlDJvPOh69qnCXU0EjY9YJkJAfVBM0-QUw2ENrkk8X" +

-    "0Jnerfrdo-jFmA4UGKQlRooB3WU2zRbzNHpUOlUhdr1PGvwaKFeZBVgD8mKPorQ9M9fpbfvLv94j4u0a" +

-    "vGuJnHS8fIEIIttwkptkl6dZY5VJPirMexsQ8x9h7WlmoJc5KmkWxBQhDvM3Ct_MUx1rZJNrOLNi4Ie5" +

-    "Js_rUphBPRUBvsZoHHP6a7BkoGVK1Jkkz94oVE3S43QHcwxLRg7LerPwKMIfnnNynQDm7IE0n7FJ6I1J" +

-    "SrIJnQ0Lw2TrKHGF3LxRqJPpnzxYXyk__AlFTONjPxdh5D5GWbOXxupbq2XetLrtcbPlXiVhewejzhdo" +

-    "9AAHINpe-THmsGMM0YgSq6TGY-nbox6NZfQIV7lFpKfbhb4-vRv6CTcrSo2nPxcPPJklUYDX8AK7h4L2" +

-    "Hmc6n3T-BFv3rttrQnM2kmSPKZ2CzO3cMuLCOIdgoO12BVTnhT6Q46g5gwL6YSdsuOcRR1lpko7AMUmv" +

-    "KYDmI_qQ3gpToK2m2VtjzmpdQwQPsHEoGZ3KCv3FE37x64gVBjFjkcJuOj8PL87x2xJVivML5GYLopia" +

-    "u6glIJnSB-lRUd_NZZanFi05MKqaD37mr4thZHmNgUbyKKJceApVRwPQnH5JXZ-hIdOkErcKotzzFSXH" +

-    "QElnlHMJwPqlMH-_7FC2pKOgpjeIZTaAZtI5yubMlvRu6xEYYZMVWjko6C0w6JGAztBsbGGih-cp9UgZ" +

-    "vqVdxZpueTfDpepAdIPFNYl5GthaQfyzfldAD2a16HgTl7_RGNKkecRQEq_KUr6iX9Q1PyvswN4LSN6v" +

-    "AMgI8Uimcz0ZFZ2GT9AV8rWnSSLxTq-QIMjbJORY3LwDzKOG9IOs4T-5ZAuGoaDwmNklXTxUyPrCAGgT" +

-    "koFLAbO8hgV3OIuAMAjOFf77vsgFVzsQhSCAx9uDKsowXuxTnwwfkWn60jPoeZFW_D_IMw_SUil3b73h" +

-    "XvVU9TzYdYzAldUUSs8c9T32w_EqTx3dAFeq_UZenGz-Hpb0UvrdWaG4Nak31iEDMWgEaa6A5m7DVrCp" +

-    "Ep95i5hgSxW_A9piXVMf0yuX0nS2pUk9I156QvkqM_nqLi0KeHTdObLNxq40FWgvzE8yh-1xYXkUOS9C" +

-    "x2pkdEnzNWPzvKEIUPKyaNS6rDKHi4OW2Z20UHi9G08mrHfFWV-tv59bisy7pJA5Gaa2sB7GFqUqyh5X" +

-    "mLu9Vy98861yGdSVdKybEmwLrOgz20N63ie0ACuRk6UVaQaFgQX5ZZFBKSO19gsqiNxAGTPucd-9-K8y" +

-    "cBtQJ3bJgjboXjjQ7J-ehZxYvVJI-88Rsst_hnmgLUlmqwcZEtOVPuZEl7PjecfjB_2TzH0YQcW1BfWZ" +

-    "kr7fT7nwjf-Ow_za4spUGPe2BVMsG8wxDTvVwzzP8Qs-CrExhKiqxD7vImKOyel2BXU79lSJ80EFZJpV" +

-    "AmWma5DPsQHQGWxHVYCSe4MBvKBFvu0nE2P3YohFlxU4eR4FDC9ELCSuzy3O-FPmIDZNlb5H-CxKSDf-" +

-    "x7RL9sAPVduoRyKm30xnjUh61B2MOlORwB4buvAMVFIqURU86jNv6UqSUjHK_JigaLN9FDz-QJfUT72e" +

-    "XX10CJiRvdf9MNPOQ6UZ3scFY0OgFNW6g6BCs3u_wrRvljuvkFI5LYLENV1XGLKLjjmBufV3vfjSql3f" +

-    "ihfVGCGjXRLXgutD5lSZpGbSF05Clf1JxfSUJCq1rP4V_3GzXMwZD9AB7_Z3loOAkeRAmsjGndYKW833" +

-    "DbR_zGnFc6EoVlDvHScL_l1UYF-piWIb9IOUZ5WdGc0LDiOfSIj3oltosUnyC73nBmLcnRiBKbbKgIlm" +

-    "TnyGvqONb_vKNBsOM5f36dcW9AeFBrxLl0-huFK3XA81fp9shkvpybeJz06GmRhVIu9kzAWhqH-rRoE2" +

-    "7YuB8U4a6I-5VpHQGdMxAN7tIqpziaSDjsVjlqmvOPk0VQzES2d4Asf6IYRyiA7W-OfGi5pBiw3f2JNR" +

-    "leiFvUGd_nBA0Rc-6C9HGTzMLmMzIr_SXfvUxJvBvJRfoEQkWwfdb-FE5dkCupIiFrTR0Lu699B7ACEJ" +

-    "k1itx5Q-p3jUqdSEG7AeqdLT6JJ5CwBoEiC1wa15itVs4q2TlsYKVgVWfXDQ06ax7qGwWgYQyk_xwTfE" +

-    "p7erfra5P0wL3XDCtKE_oMX0HSpgVgqvKAzDF7GulOpzs8pFiGlNa2a0-6MeZ3cY3Id9vjlDSfdwtg_r" +

-    "5yPKDd7I10BFV9PSq6PtI6LVpZDGgTsThjMRpjnloYsrcik5Y_JN8HdTDe2UUZzLlQ"

-  keyFunc : () => "ddJNIRm2qio2Z7CXpKADiw"

-  return afAxonEncryptorRt_callFunc("pointQueryLookup", cipherText, [target, opts], keyFunc)

+/*

+*   Description : Point queries

+*

+*   Work :

+*     Who                    When             Change

+*     Dylan Bardin           xx/xx/xxxx      - Initial Creation

+*     Apoorv Khanuja         12/16/2024      - Added "and not syntheticPoint" to elec_intervalPwr and natGas_intervalCons

+*     Apoorv Khanuja         01/07/2025      - Added a new group "Synthetic points" and a new point meter_anomaly. TODO: add more synthetic points like equip_anomaly, modelPoint (mlPoint? syntheticPoint?), etc.

+*/

+

+(target:null, opts:{}) => do

+

+  //opts

+

+

+  colMeta: if(opts.has("colMeta")) true else false

+  show: if(opts.has("show")) true else false

+

+

+  queries: [

+    /////////////////////// AHUS /////////////////////////////////

+    //temps

+              {target:"oat_sensor",                  query:"temp and air and point and outside and sensor",                            colMeta:{color:"#00b843"} },

+              {target:"dat_sensor",                  query:"temp and air and point and discharge and sensor",                          colMeta:{color:"#0547fc"} },

+              {target:"datClg_sp",                   query:"temp and air and point and discharge and cooling sp",                      colMeta:{color:null} },

+              {target:"datHtg_sp",                   query:"temp and air and point and discharge and heating sp",                      colMeta:{color:null} },

+              {target:"dat_sp",                      query:"temp and air and point and discharge and sp",                              colMeta:{color:"#5cb3ff"} },

+              {target:"mat_sensor",                  query:"temp and air and point and mixed and sensor",                              colMeta:{color:"#FFD580"} },

+              {target:"mat_sp",                      query:"temp and air and point and mixed and sp",                                  colMeta:{color:"#FFA500"} },

+              {target:"rat_sensor",                  query:"temp and air and point and return and sensor",                             colMeta:{color:"#FF0000"} },

+              {target:"zntClg_sp",                   query:"temp and air and point and effective and zone and cooling and sp",         colMeta:{color:"#0547fc"} },

+              {target:"zntHtg_sp",                   query:"temp and air and point and effective and zone and heating and sp",         colMeta:{color:"#FF0000"} },

+              {target:"znt_sensor",                  query:"temp and air and point and zone and sensor",                               colMeta:{color:"#00b843"} },

+              {target:"znt_sp",                      query:"temp and air and point and zone and sp and not heating and not cooling",   colMeta:{color:"#71bd8d"} },

+

+    //pressures

+              {target:"dsp_sensor",                  query:"pressure and air and point and discharge and sensor and not filter"       ,colMeta:{color:null} },

+              {target:"dsp_sp",                      query:"pressure and air and point and discharge and sp and not filter"           ,colMeta:{color:null} },

+              {target:"bldg_press_sensor",           query:"air and building and point and pressure and sensor"                       ,colMeta:{color:null} },

+              {target:"bldg_press_sp",               query:"air and building and point and pressure and sp"                           ,colMeta:{color:null} },

+    //Flow

+              {target:"daFlow_sensor",               query:"flow and air and point and discharge and sensor"                          ,colMeta:{color:null} },

+              {target:"daFlow_sp",                   query:"flow and air and point and discharge and sp"                              ,colMeta:{color:null} },

+              {target:"znflow_sp",                   query:"flow and air and point and discharge and sp"                              ,colMeta:{color:null} },

+              {target:"znflow_sensor",               query:"flow and air and point and discharge and sensor"                          ,colMeta:{color:null} },

+    //valves

+              {target:"htgValve_cmd",                query:"point and cmd and valve and water and (reheat or hot)"                    ,colMeta:{color:null} },

+              {target:"clgValve_cmd",                query:"point and water and (cool or chilled) and cmd and valve"                  ,colMeta:{color:null} },

+              {target:"phtValve_cmd",                query:"point and preheat and cmd and valve"                                      ,colMeta:{color:null} },

+    //dampers

+              {target:"oaDmpr_cmd",                  query:"damper and air and point and outside and cmd"                             ,colMeta:{color:null} },

+              {target:"maDmpr_cmd",                  query:"damper and air and point and mixed and cmd"                               ,colMeta:{color:null} },

+              {target:"raDmpr_cmd",                  query:"damper and air and point and return and cmd"                              ,colMeta:{color:null} },

+              {target:"rlfDmpr_cmd",                 query:"damper and air and point and relief and cmd"                              ,colMeta:{color:null} },

+              {target:"dmpr_cmd",                    query:"damper and air and point and cmd"                                         ,colMeta:{color:null} },

+    //fans

+              {target:"rtnFan_speed",                query:"return and point and fan and speed and cmd"                               ,colMeta:{color:null} },

+              {target:"rtnFan_cmd",                  query:"return and point and fan and run and cmd"                                 ,colMeta:{color:null} },

+              {target:"rlfFan_speed",                query:"relief and point and fan and speed and cmd"                               ,colMeta:{color:null} },

+              {target:"rlfFan_cmd",                  query:"relief and point and fan and run and cmd"                                 ,colMeta:{color:null} },

+              {target:"exhFan_speed",                query:"exhaust and point and fan and speed and cmd"                              ,colMeta:{color:null} },

+              {target:"daFan_speed",                 query:"discharge and point and fan and speed and cmd"                            ,colMeta:{color:null} },

+              {target:"daFan_run",                   query:"discharge and point and fan and run and cmd"                              ,colMeta:{color:null} },

+

+    //humidity

+              {target:"daHumid_sensor",              query:"point and sensor and discharge and air and humidity"                      ,colMeta:{color:null} },

+              {target:"humidifier_cmd",              query:"point and air and cmd and humidifier and not output"                      ,colMeta:{color:null} },

+

+    //energy recovery

+              {target:"ercETemp_sensor",             query:"energy and recovery and air and entering and sensor and temp"             ,colMeta:{color:null} },

+              {target:"ercLTemp_sensor",             query:"energy and recovery and air and leaving and sensor and temp"              ,colMeta:{color:null} },

+              {target:"ercLTemp_sp",                 query:"energy and recovery and air and leaving and sp and temp"                  ,colMeta:{color:null} },

+              {target:"erc_valve",                   query:"energy and recovery and valve and sensor and temp"                        ,colMeta:{color:null} },

+    //other

+              {target:"occ_cmd",                     query:"occupied and point and cmd"},

+              {target:"siteOcc_cmd",                 query:"occupied and sitePoint"},

+              {target:"ahu_state",                   query:"point and (ahu or ahuState)"},

+    //dual duct

+              {target:"hotDeck_daFlow_sensor",       query:"hotDeck and flow and air and point and discharge and sensor"                          ,colMeta:{color:null} },

+              {target:"hotDeck_daFlow_sp",           query:"hotDeck and flow and air and point and discharge and sp"                              ,colMeta:{color:null} },

+              {target:"hotDeck_dmpr_cmd",            query:"hotDeck and damper and air and point and cmd"                                         ,colMeta:{color:null} },

+              {target:"hotDeck_dmpr_reset",          query:"hotDeck and damper and air and point and cmd and reset"                               ,colMeta:{color:null} },

+

+              {target:"coldDeck_daFlow_sensor",      query:"coldDeck and flow and air and point and discharge and sensor"                          ,colMeta:{color:null} },

+              {target:"coldDeck_daFlow_sp",          query:"coldDeck and flow and air and point and discharge and sp"                              ,colMeta:{color:null} },

+              {target:"coldDeck_dmpr_cmd",           query:"coldDeck and damper and air and point and cmd"                                         ,colMeta:{color:null} },

+              {target:"coldDeck_dmpr_reset",         query:"coldDeck and damper and air and point and cmd and reset"                               ,colMeta:{color:null} },

+

+    //buildingHealth

+              {target:"site_eui",                     query:"point and eui and equipRef->buildingHealth"},

+              {target:"chw_eui",                      query:"point and chilledWater and euiContributor and equipRef->buildingHealth"},

+              {target:"elec_eui",                     query:"point and elec and euiContributor and equipRef->buildingHealth"},

+              {target:"hw_eui",                       query:"point and hotWater and euiContributor and equipRef->buildingHealth"},

+              {target:"natGas_eui",                   query:"point and naturalGas and euiContributor and equipRef->buildingHealth"},

+              {target:"other_eui",                    query:"point and euiContributor and other and equipRef->buildingHealth"},

+              {target:"site_eci",                     query:"point and eci and equipRef->buildingHealth"},

+              {target:"site_uncomfortableVAVs",       query:"point and vavScorePt and uncomfortable and equipRef->buildingHealth"},

+              {target:"site_comfortableVAVs",         query:"point and vavScorePt and comfortable and equipRef->buildingHealth"},

+              {target:"site_equipLife",               query:"point and equipmentLife and equipRef->buildingHealth"},

+              {target:"site_buildingComfort",         query:"point and buildingScore and comfort and equipRef->buildingHealth"},

+              {target:"site_buildingArea",            query:"point and buildingArea and equipRef->buildingHealth"},

+

+    //elec meter

+              {target:"elec_intervalPwr",            query:"elec and power and interval and not cost and not modelPoint and not syntheticPoint and not savings and not virtualPoint"},

+              {target:"elec_modelPwr",               query:"elec and power and calculated and modelHisFunction and modelPoint and interval and equipRef->siteMeter"},

+              {target:"elec_monthlyEnergy",          query:"elec and energy and monthly and not cost and not rateCost and equipRef->siteMeter and not modelPoint and not savings"},

+              {target:"elec_modelEnergy",            query:"elec and energy and monthly and equipRef->siteMeter and modelPoint"},

+              {target:"elec_monthlyCost",            query:"elec and energy and monthly and equipRef->siteMeter and cost"},

+              {target:"elec_intervalCost",           query:"elec and power and interval and equipRef->siteMeter and cost"},

+              {target:"elec_monthlyRateCost",        query:"elec and energy and monthly and equipRef->siteMeter and rateCost"},

+              {target:"elec_intervalSavingsCost",    query:"elec and power and interval and equipRef->siteMeter and savings and cost"},

+              {target:"elec_savingsPwr",             query:"elec and power and interval and equipRef->siteMeter and savings and not cost"},

+              {target:"elec_monthlySavingsCost",     query:"elec and energy and monthly and equipRef->siteMeter and savings and cost"},

+              {target:"elec_savingsEnergy",          query:"elec and energy and monthly and equipRef->siteMeter and savings and not cost"},

+

+    //natGas meter

+              {target:"natGas_intervalCons",         query:"naturalGas and consumption and interval and equipRef->siteMeter and not cost and not modelPoint and not syntheticPoint and not savings"},

+              {target:"natGas_intervalModelCons",    query:"naturalGas and consumption and calculated and modelHisFunction and modelPoint and interval and equipRef->siteMeter"},

+              {target:"natGas_monthlyCons",          query:"naturalGas and consumption and monthly and not cost and not rateCost and equipRef->siteMeter and not modelPoint and not savings"},

+              {target:"natGas_monthlyModelCons",     query:"naturalGas and consumption and monthly and equipRef->siteMeter and modelPoint"},

+              {target:"natGas_monthlyCost",          query:"naturalGas and consumption and monthly and equipRef->siteMeter and cost"},

+              {target:"natGas_intervalCost",         query:"naturalGas and consumption and interval and equipRef->siteMeter and cost"},

+              {target:"natGas_monthlyRateCost",      query:"naturalGas and consumption and monthly and equipRef->siteMeter and rateCost"},

+              {target:"natGas_intervalSavingsCost",  query:"naturalGas and consumption and interval and equipRef->siteMeter and savings and cost"},

+              {target:"natGas_intervalSavingsCons",  query:"naturalGas and consumption and interval and equipRef->siteMeter and savings and not cost"},

+              {target:"natGas_monthlySavingsCost",   query:"naturalGas and consumption and monthly and equipRef->siteMeter and savings and cost"},

+              {target:"natGas_monthlySavingsCons",   query:"naturalGas and consumption and monthly and equipRef->siteMeter and savings and not cost"},

+

+    //water meter

+              {target:"water_intervalCons",         query:"water and consumption and interval and equipRef->siteMeter and not cost and not modelPoint and not savings"},

+              {target:"water_intervalModelCons",    query:"water and consumption and calculated and modelHisFunction and modelPoint and interval and equipRef->siteMeter"},

+              {target:"water_monthlyCons",          query:"water and consumption and monthly and not cost and not rateCost and equipRef->siteMeter and not modelPoint and not savings"},

+              {target:"water_monthlyModelCons",     query:"water and consumption and monthly and equipRef->siteMeter and modelPoint"},

+              {target:"water_monthlyCost",          query:"water and consumption and monthly and equipRef->siteMeter and cost"},

+              {target:"water_intervalCost",         query:"water and consumption and interval and equipRef->siteMeter and cost"},

+              {target:"water_monthlyRateCost",      query:"water and consumption and monthly and equipRef->siteMeter and rateCost"},

+              {target:"water_intervalSavingsCost",  query:"water and consumption and interval and equipRef->siteMeter and savings and cost"},

+              {target:"water_intervalSavingsCons",  query:"water and consumption and interval and equipRef->siteMeter and savings and not cost"},

+              {target:"water_monthlySavingsCost",   query:"water and consumption and monthly and equipRef->siteMeter and savings and cost"},

+              {target:"water_monthlySavingsCons",   query:"water and consumption and monthly and equipRef->siteMeter and savings and not cost"},

+

+    //steam meter

+              {target:"steam_intervalCons",         query:"steam and interval and equipRef->siteMeter and not cost and not modelPoint and not savings"},

+              {target:"steam_intervalModelCons",    query:"steam and calculated and modelHisFunction and modelPoint and interval and equipRef->siteMeter"},

+              {target:"steam_monthlyCons",          query:"steam and monthly and not cost and not rateCost and equipRef->siteMeter and not modelPoint and not savings"},

+              {target:"steam_monthlyModelCons",     query:"steam and monthly and equipRef->siteMeter and modelPoint"},

+              {target:"steam_monthlyCost",          query:"steam and monthly and equipRef->siteMeter and cost"},

+              {target:"steam_intervalCost",         query:"steam and interval and equipRef->siteMeter and cost and not savings"},

+              {target:"steam_monthlyRateCost",      query:"steam and monthly and equipRef->siteMeter and rateCost"},

+              {target:"steam_intervalSavingsCost",  query:"steam and interval and equipRef->siteMeter and savings and cost"},

+              {target:"steam_intervalSavingsCons",  query:"steam and interval and equipRef->siteMeter and savings and not cost"},

+              {target:"steam_monthlySavingsCost",   query:"steam and monthly and equipRef->siteMeter and savings and cost"},

+              {target:"steam_monthlySavingsCons",   query:"steam and monthly and equipRef->siteMeter and savings and not cost"},

+

+    //site meter

+              {target:"siteMeter_intervalCost",     query:"interval and (energy or consumption) and cost and (not savings)"},

+              {target:"siteMeter_intervalUse",      query:"interval and (usage or consumption) and (not modelPoint) and (not cost)"},

+              {target:"siteMeter_monthlyCost",      query:"monthly and (energy or consumption) and cost and (not savings)"},

+              {target:"siteMeter_monthlyUse",       query:"monthly and (usage or consumption) and (not modelPoint) and (not savings) and (not rateCost) and (not cost)"},

+              {target:"siteMeter_blendedRate",      query:"rateCost and (energy or consumption)"},

+    //hot water

+              {target:"hw_delta_press",             query:"hot and water and pressure and delta and sensor"},

+              {target:"hw_flow",                    query:"hot and water and flow and sensor"},

+              {target:"hw_pri_pump_speed",          query:"hot and water and pump and speed and cmd and primary"},

+              {target:"hw_pri_pump_status",         query:"hot and water and pump and run and cmd and primary"},

+              {target:"hw_sec_pump_speed",          query:"hot and water and pump and speed and cmd and secondary"},

+              {target:"hw_sec_pump_status",         query:"hot and water and pump and run and cmd and secondary"},

+              {target:"hw_pri_pump_power",          query:"hot and water and pump and power and sensor and primary"},

+              {target:"hw_sec_pump_power",          query:"hot and water and pump and power and sensor and secondary"},

+              {target:"hw_supply_temp",             query:"hot and water and supply and temp and sensor"},

+              {target:"hw_return_temp",             query:"hot and water and return and temp and sensor and not domestic"},

+              {target:"hw_supply_temp_sp",          query:"hot and water and supply and temp and sp"},

+              {target:"hw_delta_press_sp",          query:"hot and water and pressure and delta and sp"},

+              {target:"hw_delta_temp",              query:"hot and water and temp and delta and sensor"},

+              {target:"hw_sys_load",                query:"hot and water and load and energy"},

+              {target:"hw_bypass_valve",            query:"hot and water and bypass and valve and cmd"},

+

+    //chilled water

+              {target:"chw_delta_press",             query:"chilled and water and pressure and delta and sensor"},

+              {target:"chw_flow",                    query:"chilled and water and flow and sensor and not bypass"},

+              {target:"chw_pri_pump_speed",          query:"chilled and water and pump and speed and cmd and primary"},

+              {target:"chw_sec_pump_speed",          query:"chilled and water and pump and speed and cmd and secondary"},

+              {target:"chw_pri_pump_status",         query:"chilled and water and pump and run and cmd and primary"},

+              {target:"chw_sec_pump_status",         query:"chilled and water and pump and run and cmd and secondary"},

+              {target:"chw_pri_pump_power",          query:"chilled and water and pump and power and sensor and primary"},

+              {target:"chw_sec_pump_power",          query:"chilled and water and pump and power and sensor and secondary"},

+            //{target:"chw_pri_pump_status",         query:"chilled and water and pump and run and cmd and primary"},

+            //{target:"chw_sec_pump_status",         query:"chilled and water and pump and run and cmd and secondary"},

+              {target:"chw_supply_temp",             query:"chilled and water and supply and temp and sensor"},

+              {target:"chw_return_temp",             query:"chilled and water and return and temp and sensor"},

+              {target:"chw_supply_temp_sp",          query:"chilled and water and supply and temp and sp"},

+              {target:"chw_delta_press_sp",          query:"chilled and water and pressure and delta and sp"},

+              {target:"chw_delta_temp",              query:"chilled and water and temp and delta and sensor"},

+              {target:"chw_sys_load",                query:"chilled and water and load and energy"},

+

+     //General Pump Points

+              {target:"pri_pump_speed",          query:"water and pump and speed and cmd and primary"},

+              {target:"sec_pump_speed",          query:"water and pump and speed and cmd and secondary"},

+              {target:"pri_pump_status",         query:"water and pump and run and cmd and primary"},

+              {target:"sec_pump_status",         query:"water and pump and run and cmd and secondary"},

+              {target:"pri_pump_power",          query:"water and pump and power and sensor and primary"},

+              {target:"sec_pump_power",          query:"water and pump and power and sensor and secondary"},

+

+     //chillers

+              {target:"chlr_status",                   query:"chiller and cmd and run"},

+              {target:"chlr_power",                    query:"chiller and power and sensor"},

+              {target:"chlr_entering_temp",            query:"chiller and chilled and entering and temp and water and sensor and not condenser"},

+              {target:"chlr_leaving_temp",             query:"chiller and chilled and leaving and temp and water and sensor and not condenser"},

+              {target:"chlr_flow",                     query:"chiller and chilled and flow and water and sensor"},

+              {target:"chlr_fla",                      query:"chiller and fla and sensor"},

+              {target:"chlr_cw_entering_temp",         query:"chiller and condenser and entering and temp and water and sensor"},

+              {target:"chlr_cw_leaving_temp",          query:"chiller and condenser and leaving and temp and water and sensor"},

+              {target:"chlr_water_load",               query:"chiller and sensor and tonref"},

+

+     //boilers

+              {target:"blr_firing_rate",              query:"boiler and firingRate and sensor"},

+              {target:"blr_entering_temp",            query:"boiler and hot and (entering or return) and temp and water and sensor"},

+              {target:"blr_leaving_temp",             query:"boiler and hot and leaving and temp and water and sensor"},

+              {target:"blr_leaving_temp_sp",          query:"boiler and hot and leaving and temp and water and sp"},

+              {target:"blr_run_status",               query:"boiler and run and cmd"},

+              {target:"blr_enable",                   query:"boiler and cmd and enable"},

+              {target:"blr_gas_flow_rate",            query:"boiler and flow and rate and sensor and naturalGas"},

+              {target:"blr_flow",                     query:"boiler and notImplemented"},

+              {target:"blr_power",                    query:"boiler and power and sensor"},

+              {target:"blr_iso_valve",                query:"boiler and isolation and valve"},

+

+     //cooling tower

+              {target:"clgtwr_leaving_temp",         query:"coolingTower and temp and (leaving or supply) and water and sensor"},

+              {target:"clgtwr_entering_temp",        query:"coolingTower and temp and (entering or return) and water and sensor"},

+              {target:"clgtwr_fan_speed",            query:"coolingTower and fan and speed and air and cmd"},

+              {target:"clgtwr_power",                query:"coolingTower and power and sensor"},

+              {target:"clgtwr_fan_status",           query:"coolingTower and cmd and run"},

+

+

+     //condenser water

+              {target:"cws_supply_temp",             query:"condenser and water and supply and temp and sensor"},

+              {target:"cws_supply_temp_sp",          query:"condenser and water and supply and temp and sp"},

+              {target:"cws_return_temp",             query:"condenser and water and return and temp and sensor"},

+

+     //miscellaneous

+              {target:"wet_bulb",                    query:"temp and wetBulb"},

+              {target:"oah_sensor",                  query:"humidity and air and point and outside and sensor"},

+

+     // Synthetic points

+              {target:"meter_anomaly",               query:"anomaly and equipRef->equipRef->siteMeter"}, // separate out elecMeter_anomaly and gasMeter_anomaly? Resolve -> vs -> ->

+

+     //Coil Temps

+             //hot

+             {target:"chw_entg_temp",                    query:"chilled and water and valve"},

+             {target:"chw_lvg_temp",                     query:"humidity and air and point and outside and sensor"},

+

+             //chilled

+             {target:"hw_entg_temp",                    query:"temp and wetBulb"},

+             {target:"hw_lvg_temp",                     query:"humidity and air and point and outside and sensor"},

+

+             //Baseline Search

+             {target:"baseline_calc",                query:"point and calculated and modelPoint and not cost and not savings"},

+           ].toGrid

+

+

+  if(show) return queries

+

+  match: queries.find(r => r.get("target")==target)

+  if (match.isNull) throw "Cannot find query: "+target

+

+  out: if (colMeta) match.get("colMeta")

+       else         match.get("query")

+

+  return out

 end
kwLinkVirtualExt
virtualSyncHis
--- virtualSyncHis (pod)
+++ virtualSyncHis (local)
@@ -1,4 +1,4 @@
-(recs, span:null, logging:false, taskId:null, heapLimit:95%) => do

+(recs, span:null, logging:false) => do

 

   //ogSpan check to use later

   ogSpan:span

@@ -13,25 +13,8 @@
   full: virtualSyncOrder(recs).toGrid.filter(virtualPoint and virtualPointMode=="Persistent")

                               .map(r => if (r.isRef) r.toRec else r)

 

-  //list for keeping track of already synced ids

-  syncedIds: []

-

   //loop through each point

   results: full.map() r => do

-

-    //check to see if that point was already synced.  If so continue to next point

-    if(syncedIds.contains(r.get("id"))) do

-      if(logging) log("info", {name:"virtualSyncHis", point:r->id}, "Point has already been synced.  Proceeding to next point")

-      return r=r

-    end

-

-    //Check Heap usage and cancel task if above 95%

-    if(taskId.isNull) log("warn", {name:"virtualSyncHis", point:r->id}, "No task Id provided.  Skipping Heap Check")

-    if(taskId.isNonNull) do

-      try heapUsed: diags()[5].get("attrs").last.get("val") catch throw "Please create a task user with userAllow = diags"

-      if(heapUsed > heapLimit) taskCancel(taskId)

-    end

-

 

     //initiate loop, log stuff, sleep

     if (logging) log("info", {name:"virtualSyncHis", point:r->id}, "Sync Triggered")

@@ -54,7 +37,7 @@
     //          catch now()

     //

     //if (span==null) span = (hisStart..hisEnd).toSpan

-    if (span==null) span = (r.get("hisEnd"))..now() //TODO: need error catching here for missing hisEnd. Just use past month.

+    if (span==null) span = (r.get("hisEnd"))..now()

     span = span.toSpan

     if (logging) log("info", {name:"virtualSyncHis", point:r->id, span:span}, "Span set")

 

@@ -102,8 +85,7 @@
       if (logging) log("info", {name:"virtualSyncHis", point:r->id}, "Data returned with size: "+data.size)

 

       //find all the non-null data

-      // Added != nan() check 6/24/2025

-      data = data.findAll(r => r.get(data.colNames[1]).isNonNull and r.get(data.colNames[1]) != nan() and r.get(data.colNames[1]) != na())

+      data = data.findAll(r => r.get(data.colNames[1]).isNonNull)

 

       //check if units match

       dataUnit: data.find(r=>r.get(data.colNames[1]).isNumber).get(data.colNames[1]).unit

@@ -115,20 +97,23 @@
       end

 

       //check for nan values

-      //hasNanValues: data.find(r => r.vals.any(v=> v.isNaN))!=null

-      //if (hasNanValues) throw "Data has NaN values"

+      hasNanValues: data.find(r => r.vals.any(v=> v.isNaN))!=null

+      if (hasNanValues) throw "Data has NaN values"

 

       //clear all his for span

       if (ogSpan==null) hisClear(r, null)

       else              hisClear(r, span)

     //if (logging) log("info", {name:"virtualSyncHis", point:r->id}, "Cleared data via hisClear")

 

-      //check tz

-      if (r.get("tz")!=data.first.get("ts").tz) data = data.map(row=>row.set("ts",row.get("ts").toTimeZone(r.get("tz"))))

+      //write data

+//CHANGE

+      if(r.has("euiContributor")) do

 

-      //write data

-      futureWaitFor(hisWrite(data, r))

-      syncedIds = syncedIds.add(r.get("id"))

+        data = data.map(s=> s.merge({ts: s.get("ts").toTimeZone("Denver")}))

+        data = data.reorderKeepCols(["ts"])

+        diff(r, {stopError: data}, {update}).commit

+      end

+      hisWrite(data, r, null)

       if (logging) log("info", {name:"virtualSyncHis", point:r->id}, "Wrote data via hisWrite")

 

       //clear errors and return success

PodFunctionsOverridesScore
kwGithubExt 20 0 100%
kwLinkAnalyticsExt 326 0 100%
kwLinkCoreExt 154 0 100%
kwLinkDevToolsExt 17 0 100%
kwLinkDiagnosticsExt 55 0 100%
kwLinkegratorExt 100 0 100%
kwLinkEnergyAgentExt 169 0 100%
kwLinkEventsExt 22 0 100%
kwLinkMbcxExt 47 0 100%
kwLinkModelExt 191 2 99%
kwLinkRuleExt 177 0 100%
kwLinkUMichRuleExt 84 0 100%
kwLinkVirtualExt 95 1 99%
kwLinkWorkflowExt 22 0 100%
evseExt 20 0 100%
Show / hide diffs (3)
kwLinkModelExt
action_editNormSavingsRec
--- action_editNormSavingsRec (pod)
+++ action_editNormSavingsRec (local)
@@ -28,10 +28,11 @@
   spans: ""

 

   // If the normRefPtCsv has a file in the io folder already, delete it.

-  if(changes.get("normRefPtCsv") == `io/`) changes = changes.set("normRefPtCsv", null)

+  if(changes.get("normRefPtCsv") == `io/`) changes = changes.remove("normRefPtCsv") //.set("normRefPtCsv", null)

 

   // Remove unnecessary elements from dict, and check the size.

   keys: changes.remove("pointRef").remove("normSrc").remove("normRefPtSpan").names()

+  //throw keys

   if(keys.size > 1) throw "Only one normalized source may be selected at once"

 

   // Get the normalized source

wdg_normalizedSavingsConfig
--- wdg_normalizedSavingsConfig (pod)
+++ wdg_normalizedSavingsConfig (local)
@@ -35,11 +35,11 @@
     if(query == "write") func_normConfigRecord(null, true)

     return {"error": "Mismatched Model Types"}.toGrid.setMeta({"title": "Independent Variable", "subtitle": ivStr})

   else do

-    baselineModelIVars : try [baselineModelRec.get("modelConfig").get("viewInputs").get("temp")] catch [read(temp and weatherStationRef == baselineModelRec.get("modelConfig").get("weather")).get("id")]

+    baselineModelIVars : try [read(temp and weatherStationRef == baselineModelRec.get("modelConfig").get("weather")).get("id")] catch [baselineModelRec.get("modelConfig").get("viewInputs").get("temp")]

     baselineModelIVars = try baselineModelIVars.addAll([baselineModelRec.get("modelConfig").get("settings")->additionalPoint]).flatten catch baselineModelIVars

     baselineModelIVars = try baselineModelIVars.sort catch baselineModelIVars

 

-    performanceModelIVars: try [performanceModelRec.get("modelConfig").get("viewInputs").get("temp")] catch [read(temp and weatherStationRef == performanceModelRec.get("modelConfig").get("weather")).get("id")]

+    performanceModelIVars: try [read(temp and weatherStationRef == performanceModelRec.get("modelConfig").get("weather")).get("id")] catch [performanceModelRec.get("modelConfig").get("viewInputs").get("temp")]

     performanceModelIVars = try performanceModelIVars.addAll([performanceModelRec.get("modelConfig").get("settings")->additionalPoint]).flatten catch performanceModelIVars

     performanceModelIVars = try performanceModelIVars.sort catch performanceModelIVars

 

kwLinkVirtualExt
calcTMRASavings
--- calcTMRASavings (pod)
+++ calcTMRASavings (local)
@@ -1,4 +1,4 @@
-(siteId, savingsHis, modelPt,  meterPt, performancePeriodStartDate, performancePeriodEndDate, mildTempRangeLower: "40", mildTempRangeUpper: "65") => do

+(siteId, savingsHis, modelPt,  meterPt, performancePeriodStartDate, performancePeriodEndDate, mildTempRangeLower: "35", mildTempRangeUpper: "50") => do

   mildTempRange: (mildTempRangeLower.parseNumber.as("°F")..mildTempRangeUpper.parseNumber.as("°F"))

   performancePeriod : (performancePeriodStartDate..performancePeriodEndDate).toDateSpan

   siteRec: siteId.toRec

5 overridden function(s) total Export JSON

Browser Checks

Loading…

Steps run in order after login. Drag specs to reorder.
Register SkySpark view templates with named variables. Use them to insert navigate steps into specs.

Loading…

Current Pods

PodReportedCanonicalModifiedStatus
constellationBrowser 1.0.33 not reported
constellationSftp 1.0.21 1.0.40 mismatch
kWEnergyCapExt 1.0.7 not reported
kWEPOExt 1.8 not reported
kwGithubExt 1.1.1 not reported
kwLinkAlc 0.0.5 not reported
kwLinkAnalyticsExt 1.5.31 1.5.31 ok
kwLinkArcadia 2.0.15 2.0.16 mismatch
kwLinkBlink 0.0.1 0.0.1 ok
kwLinkCoreExt 1.3.45 1.3.48 mismatch
kwLinkDesigo 2.0.7 2.0.9 mismatch
kwLinkDevToolsExt 1.0.12 not reported
kwLinkDiagnosticsExt 0.1.4 0.1.4 ok
kwLinkegratorExt 2.0.1 2.0.1 ok
kwLinkEmcs 0.0.1 not reported
kwLinkEnergyAgentExt 0.0.26 0.0.26 ok
kwLinkEventsExt 0.1.0 not reported
kwLinkFCoreExt 1.0.39 1.0.39 ok
kwLinkLicenseExt 1.0.4 1.0.4 ok
kwLinkMbcxExt 1.4.47 1.4.54 mismatch
kwLinkModelExt 1.1.21 1.1.21 ok
kwLinkRuleExt 0.4.0 0.4.2 mismatch
kwLinkUMichRuleExt 0.0.6 not reported
kwLinkVirtualExt 1.2.23 1.2.25 mismatch
kwLinkWorkflowExt 0.2.0 not reported
kWMonnitExt 1.1 not reported
kWTrackerExt 1.11 not reported
kWUtilityAPIExt 1.0.15 not reported
evseExt 1.0 not reported
ocpp 3.1.12 not reported
ocpp1_6 3.1.12 not reported
ocpp2_0_1 3.1.12 not reported
ocppExt 3.1.12 not reported

Queue Update

Updates are queued here and downloaded by the instance on its next check-in.

Configuration (.props)

Saved content will be written to lib/local/constellationSftp.props on the instance's next check-in.

Queued ✓

Live Pod Status

Last report:

Loading…

Update Log

Pushed AtPodVersionStatusErrorRestart
constellationSftp 1.0.22 success
evseExt 1.0 success
constellationSftp 1.0.21 success
constellationSftp 1.0.15 success
kwLinkCoreExt 1.3.47 success
ocppExt 3.1.12 success
ocpp2_0_1 3.1.12 success
ocpp1_6 3.1.12 success
ocpp 3.1.12 success
ocppExt 3.1.12 success
ocpp2_0_1 3.1.12 success
ocpp1_6 3.1.12 success
ocpp 3.1.12 success
constellationSftp 1.0.0 success
kwLinkArcadia 2.0.16 success
kwLinkArcadia 2.0.16 success

Loading network data...