kW Prod Server
skyspark.kw-engineering.com — Last seen:
Tag:
kw server
Loading license status…
Health
96% healthy
| Pod | Functions | Overrides | Score |
|---|---|---|---|
| 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
| Pod | Functions | Overrides | Score |
|---|---|---|---|
| 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 before any check spec. Tokens
{SKYSPARK_USER},
{SKYSPARK_PASS}, and {port} are resolved from env vars on the sidecar.
Saved ✓
Loading…
Current Pods
| Pod | Reported | Canonical | Modified | Status |
|---|---|---|---|---|
| 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.
Live Pod Status
Last report:Loading…
Update Log
| Pushed At | Pod | Version | Status | Error | Restart |
|---|---|---|---|---|---|
| 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...