From 73c704c9bdac690a2deca8e1e4f1450f51ae66f0 Mon Sep 17 00:00:00 2001 From: Chris Mackey Date: Fri, 9 Aug 2024 14:54:44 -0700 Subject: [PATCH] fix(load): Output None when the load value is zero This makes it a little easier to use when creating lots of programs at once. --- .../icon/HB Equipment.png | Bin 1315 -> 1320 bytes .../icon/HB People.png | Bin 890 -> 892 bytes .../icon/HB Service Hot Water.png | Bin 1017 -> 1017 bytes .../json/HB_Equipment.json | 4 ++-- .../json/HB_People.json | 4 ++-- .../json/HB_Service_Hot_Water.json | 4 ++-- .../src/HB Equipment.py | 19 ++++++++++-------- honeybee_grasshopper_energy/src/HB People.py | 13 +++++++----- .../src/HB Service Hot Water.py | 13 +++++++----- .../user_objects/HB Equipment.ghuser | Bin 5495 -> 5538 bytes .../user_objects/HB People.ghuser | Bin 4671 -> 4697 bytes .../user_objects/HB Service Hot Water.ghuser | Bin 4838 -> 4864 bytes 12 files changed, 33 insertions(+), 24 deletions(-) diff --git a/honeybee_grasshopper_energy/icon/HB Equipment.png b/honeybee_grasshopper_energy/icon/HB Equipment.png index 19d2f6f6367268e919dc858337dfb7159836c2a9..5ab959b605b0e513eabf5b853d268cdc059b0796 100644 GIT binary patch delta 1250 zcmV<81ReXM3aAQ@R)4)oL_t(YOWjp#P?S{|-V3`6dy(CRW!W3-MQ%%gSWHDW#DWoE zk&I~*oE&wKshOs6D1H=!zyizD zd(OfP%_8=@cjlRM&UfDPyyv~0Pw>B$9DzW%S11&;(Y(!1D1SUJmx@obIYWR{d`hnp zejYMU*hV^^S+stwA%Q}+S5F8b%qeRh4fjV+r5Sg(n{lh!guC0!__fx8+cf{F%7DHa z3wACG#`-ihe%@k2%PKtz(>18c4Mwoa?^EKCc&U6vtW}8n2KI%cF;9oAconh{oxP_MIe2&y=6pHsFcso7Z{McP{HQ&8QE;2eI`o!CtB_N#y`Ag z`WLQLm@siL95`adOOL6LWDCG=yTeiXtOki;{^%voauemuK%|$>S1fX=Xv`I(Ko+}k zf-lmXN~FgskrAhY%c(*pdG{R6Q)9?m@{mF_PCO1Toqw;Gby`1ndx-%IU%x$tV(+@E z%!r^k@8t{F&2`Q2C`;5m+=PO!QwDb?0umVR}D5lVA13s{! zkCNWGF%;J-j2JmU-%r!`<1{uCnEojn7RUI{86th6MK(B2adtO_!F?c%6Q3*4BSI(O ziKIH#s zduff%rZxC#&q{1~keF$Gi=tN#}y7}mICqE#)epo1dCuy zn<#&{L?i}*1_h+J0BWKPii%63VV2sa%rp%xAR|LMT278S$ka^JI21pMLEr+Hr}vx> zW@zpe``tV9%sJ;f?|I(yZs(KyZzWeEk?xgBB^@;H@RCZ;D}M#~X*Or@738OM8tLc3 z3#1*S^O;%e)gHW1%Jv!w!Gw8b-J@0?^i`X1cZUhLYK^$N-GpE3&A3hTpKA0Ns54{N z@<43J@Wanrjc8k~Lvf}*>hc2-sPX!gIJ`wFcadvV@`0g!Rx}p`Av;ck971-S8cSo< zcrHPMd%G>TzklBfsZ<8iN5`86M1%-@e!fVL{3I2dFJfe#MEi7v@F&_G{Kh}LYy20k zR2eaK&#xlE!X4wN+VLkmG>EsNarrv^hn_koUj2$Stw@EZU;WFV}O$0 zy(t9Ostg!AK;KW(_v19S5}5ueJC;QG%o`$IqFFIKNpW_zSl~Qh;l$^PbO;NQ@I+D_ z@KGU^pnoJ|0fs5z%)r=w(miTJTDW3f1E!c@@9_yDpCmByt+`rG_#6d=G!-e7yPTp9$47jly zhbnSWx-tbf$pC(7#+|ceP^vV@iuR>YQMkxJPJfhgg3j1En+Ne<5~I2|-D-o2N--=@ zhVl)xgINDr4U%I``l*jS2E{;a)X3R9NWfx;FvQ}2 zz1qMH^d5c zg+jBBhhr|etBVYfM|VCdAwn6>tPA4(@_*mTl+}Nm9XoRU`QhHyLg02Ik2hFYSnMe@ zxLS`V;v6vf$uQbN%}Ji;#;eAN$1KvhiyNg}5+xJ=InD^Z5*c%_rR**KdA@lTBu23sL#`)Az#bq42`rmtH(xm&R;Db zB%VN#&a()F0zwhtb;637Im0T#D|6OtuW-(KHDS&>B$50BWr6}J4(|pQ00000NkvXX Hu0mjf(9m1{ diff --git a/honeybee_grasshopper_energy/icon/HB People.png b/honeybee_grasshopper_energy/icon/HB People.png index 029c67af0e1378015ccee2e525f4be5cc0ae1be1..c989cc3a4dd0ec0c7facee055a07040aab64aea5 100644 GIT binary patch delta 833 zcmV-H1HSzF2K)w)NPiB)000id0mpBsWB>pI5lKWrR7gwBm0d^_Q545#cV~8Hc6at` zW_M=4-PLuq%nVT~B_h*^kfIC{BLsWvAym>JP|^x~=plUQDGRb5+A{irsF#YKQld!0 z9*QiZhd$H@^K18X?#w7i54pQN^n=Ts^FR0Qx%b?UrT#bS1%H}8hTkok`)}##a7i#0 z%!dK59~>srAZi9JlsjyzO&o{3BA5-u0rHCBs8a;gtF&1P7F`T)K|4-V4$6 z4UE@o-LgZh;(xfQpOFMC;LIli`7q{-!ni*Mzrux(!jd&$LhM(pbINFVq1U5{$c;v~Ho?s3W+<#Sk^A?IKtK|8I?QRd5M2$LX zwUn5-_72GlCW>l6H+Iq?sU=cZfc3vBsVm!st(x?!;Q0YEZnf~OqBPp=QB)S5_#;qf6=srh z5FX26aDSRiWCeuAGM)!~H+ppcuaKE+!iJYsrFk?MTRhD3(`c90S}bqAL<%9yFlV%| z%0_H)&CHMx!#w&BE`S|^aFh5YJm2>z9EWP!I)U!eB(g?1B-m%3;dw{IfV=@>n>Dm&V!&tT!yy0m3H7P>`JQZg}8HVs!qPtI1 zms#I0DXBZS7Z#Igr>1Z)jS*?A#lo>Xoaimw0A;2(C zbvkJUW`kj%7oQ24F;Ak)YHDVXBUpjnUJ+;%AkxOHx;c?qDaCP zMV8T`4>iL4nmL{O-cyhkIb(}{aCzta&%JZ*J@;d%|BX74rhiZ2cZcr&Te{j^GK>fF zpwH_EhuJ)Unn@3>AGXCNO+aoT%!T3rxkYf&DFN!0dU*Z#Tba`TO%1BzKLUCUYThiLjX z#_RNM*&$VO+<)}XNCFmd=97Uu823eC!XJZQ;Q~lu$?7p7_AAo6XNaAq%ZJo3bh+xx|p9#hx6)J#1H3%Jes-6d;kg!+|8$&W)<&(B zVhh*SE_=aDQT6D?&N*bQMA{0l{x@W8W&5yIk$&Yo-$%x+6~0B1$C{k(cZOfqX_o*Z zg|LK4$ag^Ukpzt-c);cuIqy(EqZuInS~#+Scg zkCiYu&3|UH0zyM6&jY?2U55Wx$V|3j!^^7CG!~349q0KOv`cCP;mwyw0fZUmq8`@R ziY>0284_ZcM<2rZutyZ{5Wkq`dp?EZP(@oO(OsTI)~Lrs`|LA3?`WUVCFZ*}T`#GDBvV=I>aBR+s!0UCg%{Qnqxo2r8}C9z)6uTTaesx2!;bVV)Y& zDmW}AQ(ree6AELQLYLLm%pgaw23t(?{zSz_;yba?L|6?){RZ3S>Z6D+#?Al$002ov JPDHLkV1n@olw1G+ diff --git a/honeybee_grasshopper_energy/icon/HB Service Hot Water.png b/honeybee_grasshopper_energy/icon/HB Service Hot Water.png index 1a69f6524df278aae3c481ba0ab2d6a34dc4e645..2cad6e92afcc45f431fa22c89d33aa5fbe789f19 100644 GIT binary patch delta 936 zcmV;Z16Ta{2l)q(Uw>;%lV=piUwZFblNTt~cCR8>bhAb)mxgO61tkU4)xla71-ZyY zbYcJtbk@ndaI1hC2NICQEHi3MT$cD{`e7ej_GMWzHGVM0WyC~dmSrGM9P+#HDsuTjCRRw@tE+N|KXgXV;U-+x7u>5fjLIYYi;ty+29 zCPSyRbyXF1Y~O~4x?0p!Rie6bJDTcuN^hv;nI}9GtyEqKR*6f+8-~c%?*K+MADK16`OtN z@99B$>gwlYFCrJkMVWZ-0phhhC$;5e#%;^y|}@oS2Y) zMX0Y2qQ!iV;)h7}B=(BxbsAMruh)xjh<&SBNi-Pv@7WV%PxDYPh=JZ74241%9Oy^S zkt1l^*MiDz71&Txg1nq;ICFDgN-#pLR6Nyb)RO3M?0db1INxaeqkNMGt$RO5pu-P# zMZrJ--G2vz)a(Gh=lRu9l0;4!jykxWu#Cd&LNHm+v!doIk#c?0k9X^TcuYnVHUt;oKc2yTKPsv560VAux-Tlp# zA24zM2|6$T1ZT;nadIo=Xq3=$id`;GSt0LYqp_7tz3hD-IPO0~31Mv#;|nGL0000< KMNUMnLSTZhw$M`m delta 936 zcmV;Z16Ta{2l)q(Uw>&#R96(oAG6OJlLrirL!TmuScM|8OjxJFV95Y3qu`8yg6tqJ z7?uI1j+MHwO~oY&5|G9ijT#e;iC@}&=!Z7_VwzNpAB?dnG0`+lQ;oKS`tP~#&4&^( z5odnMKR4%`d(XM=zI!gWKtlXuP_V0&%A+*4C^+u0IU?d0(SKxmsMBaJkgrgyR(@p^ zguA>>cZO`9Em#P#%R~|RdAZ2W%)okU4qT*3hE35f~up!o&z zviGOhlA40*sw(W>wG)kXwWz78M0MpZG&j^sK4#a|R3kktl@%zKm%Tr+CX?y6)vMxW z#K_1eX`dv_w0|@;qOG+RWzOvg3l$!H9Jlh%w3K8l4iCRa^TXw33qv49le8pH#SRw+ z`}&ZYyzXzZmy#k$2_!WsU>a+8S7B^qgw8+dHQA!<4i0NpuZo%W4G!Sq_&B=VZbUB^ zr^ufzhXX{X(~b4GJ26SgFJHQZ8`rMk_?NxldH#lfN`F9D^cwXKUQZ83&!5BO#Dw$} zzJURVk>WD1(8&&8{H3nn%1|4E6V6*yqE^p+WQ= zJBIdyt*G2tflWn4$jQotH9HHY2qV-=#VeggEr~YA{?}WGi;c!#OSd}Ec3?j|U2d== z@_IbzJ%8+_Vu$c~cQ+38^q{Mw9S8QdpuV;SD; zY@?)Xu^gI3EL%zsHLBsmrt40jC%!%LMy(WF(W8kzJe zRTIVLP?2u2V29I*m9Z;k$zCD5xsA#Y?hCzIJwy-S39|Q)Oj2YnYy9Io$)l%XCL=Xj zI#06aOA-)#e5Q4Jovo1Vev9l1A`xL>MV(i^#mRfm|5+Luy3g+p9+|lX$4@=@3!_hg zeSafYk+os-D7jeoN-j7B7#TKu@7K5P zVB*P3bl?0Q)}pQBmy)M2>J=y5Ut0000< KMNUMnLSTZIwb4-k diff --git a/honeybee_grasshopper_energy/json/HB_Equipment.json b/honeybee_grasshopper_energy/json/HB_Equipment.json index 659529e0..880d7d4c 100644 --- a/honeybee_grasshopper_energy/json/HB_Equipment.json +++ b/honeybee_grasshopper_energy/json/HB_Equipment.json @@ -1,5 +1,5 @@ { - "version": "1.8.0", + "version": "1.8.1", "nickname": "Equipment", "outputs": [ [ @@ -64,7 +64,7 @@ } ], "subcategory": "3 :: Loads", - "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.equipment import ElectricEquipment, GasEquipment\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default Equipment name if none is provided\n name = clean_and_id_ep_string('Equipment') if _name_ is None else \\\n clean_ep_string(_name_)\n\n # get the schedule\n if isinstance(_schedule, str):\n _schedule = schedule_by_identifier(_schedule)\n\n # get default radiant, latent, and lost fractions\n radiant_fract_ = radiant_fract_ if radiant_fract_ is not None else 0.0\n latent_fract_ = latent_fract_ if latent_fract_ is not None else 0.0\n lost_fract_ = lost_fract_ if lost_fract_ is not None else 0.0\n\n # create the Equipment object\n if gas_:\n equip = GasEquipment(name, _watts_per_area, _schedule,\n radiant_fract_, latent_fract_, lost_fract_)\n else:\n equip = ElectricEquipment(name, _watts_per_area, _schedule,\n radiant_fract_, latent_fract_, lost_fract_)\n if _name_ is not None:\n equip.display_name = _name_", + "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.equipment import ElectricEquipment, GasEquipment\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default Equipment name if none is provided\n name = clean_and_id_ep_string('Equipment') if _name_ is None else \\\n clean_ep_string(_name_)\n\n # get the schedule\n if isinstance(_schedule, str):\n _schedule = schedule_by_identifier(_schedule)\n\n # get default radiant, latent, and lost fractions\n radiant_fract_ = radiant_fract_ if radiant_fract_ is not None else 0.0\n latent_fract_ = latent_fract_ if latent_fract_ is not None else 0.0\n lost_fract_ = lost_fract_ if lost_fract_ is not None else 0.0\n\n # create the Equipment object\n if _watts_per_area == 0:\n equip = None\n else:\n if gas_:\n equip = GasEquipment(name, _watts_per_area, _schedule,\n radiant_fract_, latent_fract_, lost_fract_)\n else:\n equip = ElectricEquipment(name, _watts_per_area, _schedule,\n radiant_fract_, latent_fract_, lost_fract_)\n if _name_ is not None:\n equip.display_name = _name_", "category": "HB-Energy", "name": "HB Equipment", "description": "Create an Equipment object that can be used to specify equipment usage in a ProgramType.\n-" diff --git a/honeybee_grasshopper_energy/json/HB_People.json b/honeybee_grasshopper_energy/json/HB_People.json index 193e50a1..4439692a 100644 --- a/honeybee_grasshopper_energy/json/HB_People.json +++ b/honeybee_grasshopper_energy/json/HB_People.json @@ -1,5 +1,5 @@ { - "version": "1.8.0", + "version": "1.8.1", "nickname": "People", "outputs": [ [ @@ -50,7 +50,7 @@ } ], "subcategory": "3 :: Loads", - "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\n from honeybee.altnumber import autocalculate\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.people import People\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default People name if none is provided\n name = clean_and_id_ep_string('People') if _name_ is None else \\\n clean_ep_string(_name_)\n latent = autocalculate if latent_fraction_ is None else latent_fraction_\n\n # get the schedules\n if isinstance(_occupancy_sch, str):\n _occupancy_sch = schedule_by_identifier(_occupancy_sch)\n if isinstance(_activity_sch_, str):\n _activity_sch_ = schedule_by_identifier(_activity_sch_)\n\n # create the People object\n people = People(name, _ppl_per_area, _occupancy_sch, _activity_sch_,\n latent_fraction=latent)\n if _name_ is not None:\n people.display_name = _name_\n", + "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\n from honeybee.altnumber import autocalculate\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.people import People\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default People name if none is provided\n name = clean_and_id_ep_string('People') if _name_ is None else \\\n clean_ep_string(_name_)\n latent = autocalculate if latent_fraction_ is None else latent_fraction_\n\n # get the schedules\n if isinstance(_occupancy_sch, str):\n _occupancy_sch = schedule_by_identifier(_occupancy_sch)\n if isinstance(_activity_sch_, str):\n _activity_sch_ = schedule_by_identifier(_activity_sch_)\n\n # create the People object\n if _ppl_per_area == 0:\n people = None\n else:\n people = People(name, _ppl_per_area, _occupancy_sch, _activity_sch_,\n latent_fraction=latent)\n if _name_ is not None:\n people.display_name = _name_\n", "category": "HB-Energy", "name": "HB People", "description": "Create a People object that can be used to create a ProgramType or be assigned\ndirectly to a Room.\n-" diff --git a/honeybee_grasshopper_energy/json/HB_Service_Hot_Water.json b/honeybee_grasshopper_energy/json/HB_Service_Hot_Water.json index 1d26ae1b..65b58bf7 100644 --- a/honeybee_grasshopper_energy/json/HB_Service_Hot_Water.json +++ b/honeybee_grasshopper_energy/json/HB_Service_Hot_Water.json @@ -1,5 +1,5 @@ { - "version": "1.8.0", + "version": "1.8.1", "nickname": "ServiceHotWater", "outputs": [ [ @@ -57,7 +57,7 @@ } ], "subcategory": "3 :: Loads", - "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.hotwater import ServiceHotWater\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default ServiceHotWater name if none is provided\n name = clean_and_id_ep_string('ServiceHotWater') if _name_ is None else \\\n clean_ep_string(_name_)\n\n # get the schedule\n if isinstance(_schedule, str):\n _schedule = schedule_by_identifier(_schedule)\n\n # get default radiant, latent, and lost fractions\n _target_temp_ = _target_temp_ if _target_temp_ is not None else 60\n _sensible_fract_ = _sensible_fract_ if _sensible_fract_ is not None else 0.2\n _latent_fract_ = _latent_fract_ if _latent_fract_ is not None else 0.05\n\n # create the ServiceHotWater object\n hot_water = ServiceHotWater(name, _flow_per_area, _schedule, _target_temp_,\n _sensible_fract_, _latent_fract_)\n if _name_ is not None:\n hot_water.display_name = _name_", + "code": "\ntry: # import the core honeybee dependencies\n from honeybee.typing import clean_and_id_ep_string, clean_ep_string\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.hotwater import ServiceHotWater\n from honeybee_energy.lib.schedules import schedule_by_identifier\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # make a default ServiceHotWater name if none is provided\n name = clean_and_id_ep_string('ServiceHotWater') if _name_ is None else \\\n clean_ep_string(_name_)\n\n # get the schedule\n if isinstance(_schedule, str):\n _schedule = schedule_by_identifier(_schedule)\n\n # get default radiant, latent, and lost fractions\n _target_temp_ = _target_temp_ if _target_temp_ is not None else 60\n _sensible_fract_ = _sensible_fract_ if _sensible_fract_ is not None else 0.2\n _latent_fract_ = _latent_fract_ if _latent_fract_ is not None else 0.05\n\n # create the ServiceHotWater object\n if _flow_per_area == 0:\n hot_water = None\n else:\n hot_water = ServiceHotWater(name, _flow_per_area, _schedule, _target_temp_,\n _sensible_fract_, _latent_fract_)\n if _name_ is not None:\n hot_water.display_name = _name_", "category": "HB-Energy", "name": "HB Service Hot Water", "description": "Create an ServiceHotWater object that can be used to specify hot water usage in\na ProgramType.\n-" diff --git a/honeybee_grasshopper_energy/src/HB Equipment.py b/honeybee_grasshopper_energy/src/HB Equipment.py index 65c96f7b..1dfcfc5a 100644 --- a/honeybee_grasshopper_energy/src/HB Equipment.py +++ b/honeybee_grasshopper_energy/src/HB Equipment.py @@ -38,7 +38,7 @@ ghenv.Component.Name = 'HB Equipment' ghenv.Component.NickName = 'Equipment' -ghenv.Component.Message = '1.8.0' +ghenv.Component.Message = '1.8.1' ghenv.Component.Category = 'HB-Energy' ghenv.Component.SubCategory = '3 :: Loads' ghenv.Component.AdditionalHelpFromDocStrings = '3' @@ -75,11 +75,14 @@ lost_fract_ = lost_fract_ if lost_fract_ is not None else 0.0 # create the Equipment object - if gas_: - equip = GasEquipment(name, _watts_per_area, _schedule, - radiant_fract_, latent_fract_, lost_fract_) + if _watts_per_area == 0: + equip = None else: - equip = ElectricEquipment(name, _watts_per_area, _schedule, - radiant_fract_, latent_fract_, lost_fract_) - if _name_ is not None: - equip.display_name = _name_ \ No newline at end of file + if gas_: + equip = GasEquipment(name, _watts_per_area, _schedule, + radiant_fract_, latent_fract_, lost_fract_) + else: + equip = ElectricEquipment(name, _watts_per_area, _schedule, + radiant_fract_, latent_fract_, lost_fract_) + if _name_ is not None: + equip.display_name = _name_ \ No newline at end of file diff --git a/honeybee_grasshopper_energy/src/HB People.py b/honeybee_grasshopper_energy/src/HB People.py index 7f0ed1b6..70fc1011 100644 --- a/honeybee_grasshopper_energy/src/HB People.py +++ b/honeybee_grasshopper_energy/src/HB People.py @@ -43,7 +43,7 @@ ghenv.Component.Name = "HB People" ghenv.Component.NickName = 'People' -ghenv.Component.Message = '1.8.0' +ghenv.Component.Message = '1.8.1' ghenv.Component.Category = 'HB-Energy' ghenv.Component.SubCategory = '3 :: Loads' ghenv.Component.AdditionalHelpFromDocStrings = "3" @@ -79,7 +79,10 @@ _activity_sch_ = schedule_by_identifier(_activity_sch_) # create the People object - people = People(name, _ppl_per_area, _occupancy_sch, _activity_sch_, - latent_fraction=latent) - if _name_ is not None: - people.display_name = _name_ + if _ppl_per_area == 0: + people = None + else: + people = People(name, _ppl_per_area, _occupancy_sch, _activity_sch_, + latent_fraction=latent) + if _name_ is not None: + people.display_name = _name_ diff --git a/honeybee_grasshopper_energy/src/HB Service Hot Water.py b/honeybee_grasshopper_energy/src/HB Service Hot Water.py index 9272f6b2..21c943d1 100644 --- a/honeybee_grasshopper_energy/src/HB Service Hot Water.py +++ b/honeybee_grasshopper_energy/src/HB Service Hot Water.py @@ -38,7 +38,7 @@ ghenv.Component.Name = 'HB Service Hot Water' ghenv.Component.NickName = 'ServiceHotWater' -ghenv.Component.Message = '1.8.0' +ghenv.Component.Message = '1.8.1' ghenv.Component.Category = 'HB-Energy' ghenv.Component.SubCategory = '3 :: Loads' ghenv.Component.AdditionalHelpFromDocStrings = '3' @@ -75,7 +75,10 @@ _latent_fract_ = _latent_fract_ if _latent_fract_ is not None else 0.05 # create the ServiceHotWater object - hot_water = ServiceHotWater(name, _flow_per_area, _schedule, _target_temp_, - _sensible_fract_, _latent_fract_) - if _name_ is not None: - hot_water.display_name = _name_ \ No newline at end of file + if _flow_per_area == 0: + hot_water = None + else: + hot_water = ServiceHotWater(name, _flow_per_area, _schedule, _target_temp_, + _sensible_fract_, _latent_fract_) + if _name_ is not None: + hot_water.display_name = _name_ \ No newline at end of file diff --git a/honeybee_grasshopper_energy/user_objects/HB Equipment.ghuser b/honeybee_grasshopper_energy/user_objects/HB Equipment.ghuser index 4d2e9a7ea9dd0a15345611b24d190ea19284308f..fcbb46e28501b53d609996fafd16f22333c846e5 100644 GIT binary patch literal 5538 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 literal 5495 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 diff --git a/honeybee_grasshopper_energy/user_objects/HB People.ghuser b/honeybee_grasshopper_energy/user_objects/HB People.ghuser index 8d02b73e5f4fa9eac7b76334645236f1c783d15f..8434dadf7b5bac818f04eb33e5daa5c096945850 100644 GIT binary patch literal 4697 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 baqbZd_no`>|Nkxm2r)`ZGQNeHS-SogNWDXu literal 4671 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 literal 4838 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 Mv@}r1-PRuYKSCs(kpKVy