kW Prod Server
skyspark.kw-engineering.com — Last seen:
Tag:
kw server
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…
Ad-hoc deploy
Drop a .pod or .xetolib to install it on
kW Prod Server without going through the canonical
store. You'll review what each file actually is before anything is queued.
Configuration (.props)
Saved content will be written to lib/local/constellationSftp.props on the instance's next check-in.
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...