From 7750941f78c6b56c886f36053cf6260079f77045 Mon Sep 17 00:00:00 2001 From: yaowc Date: Mon, 30 Mar 2026 13:39:37 +0800 Subject: [PATCH 1/2] feat: support cth01 --- .../cth-series/cth01-compress/CTH01.png | Bin 0 -> 79173 bytes .../cth-series/cth01-compress/README.md | 550 ++ .../cth01-compress/cth01-codec.json | 7030 ++++++++++++++++ .../cth01-compress/cth01-decoder.js | 69 + .../cth01-compress/cth01-encoder.js | 66 + .../milesight-iot/cth-series/cth01/CTH01.png | Bin 0 -> 79173 bytes .../milesight-iot/cth-series/cth01/README.md | 550 ++ .../cth-series/cth01/cth01-codec.json | 7037 +++++++++++++++++ .../cth-series/cth01/cth01-decoder.js | 1501 ++++ .../cth-series/cth01/cth01-encoder.js | 2388 ++++++ vendors/milesight-iot/devices.json | 28 + 11 files changed, 19219 insertions(+) create mode 100644 vendors/milesight-iot/cth-series/cth01-compress/CTH01.png create mode 100644 vendors/milesight-iot/cth-series/cth01-compress/README.md create mode 100644 vendors/milesight-iot/cth-series/cth01-compress/cth01-codec.json create mode 100644 vendors/milesight-iot/cth-series/cth01-compress/cth01-decoder.js create mode 100644 vendors/milesight-iot/cth-series/cth01-compress/cth01-encoder.js create mode 100644 vendors/milesight-iot/cth-series/cth01/CTH01.png create mode 100644 vendors/milesight-iot/cth-series/cth01/README.md create mode 100644 vendors/milesight-iot/cth-series/cth01/cth01-codec.json create mode 100644 vendors/milesight-iot/cth-series/cth01/cth01-decoder.js create mode 100644 vendors/milesight-iot/cth-series/cth01/cth01-encoder.js diff --git a/vendors/milesight-iot/cth-series/cth01-compress/CTH01.png b/vendors/milesight-iot/cth-series/cth01-compress/CTH01.png new file mode 100644 index 0000000000000000000000000000000000000000..3f140ed2e47071c0e01f35e10f6a902924baf800 GIT binary patch literal 79173 zcmXt91xy@Wv|ik;K#LV9#jUt|ffjdnXK{C@KyivY6klL*Ee^%q-QBIYz4_nEOJ+kt z7IJ6ip6{GbZn&cSHw;uFR1gS+A@yBc83cl11U_WQh`?{25}w?EADLdNnl8#l?&JPr19-A{;X zxR|Luh)4!*)sk^l*sHp z>}@z)-3pEipmNu4_HhB{mz0j@-4{`88`L0BfLMAFGHeAK6ej6KRs}lEVH;-jPnsmw zjiK;XL0(?yEye#K<%6F9)dDi{X7Lvrkh-YH-Ku+;|Lea0E7tnMm^*1^Ru)2TZoMRS zssd<2`zxK9sEi+lH-+5PFT^!W*m`c{pjB|XkUwxcAD_BEv}3wy#5{7w>@7mSlQWODt}a!R!<9sh{3X&>$+qG%6_%Z0v%<}J$j0qGbc$uHP|dV z9bmm~VDSkLUD^JKzDOYA0u7`2Kll4TS7MR*y;MHE=>Iz^t274w830<(<7Mre zi#E8le$ESH0x3z^yN6{(2dZvxAK7sqDN(5EC`N4b`58S7qx0S7vBBFT1`=j#Q^z!T z94qWAiI5Ku9Agqpyyuw4+d@o|u>k2;>uB1Dny^3?)U-4lItD{?ZR-LsA9B!!CP}gP zmPcLjq~%FQMh5?DnE!p)Hkllg4Y15E4B~*KkT&nTx%Q{kbHBUp5VSia(Ez`W*m(nC zSY?z*&@eolK$||65ka0d6jpIdE1E+Nr@zleq7y&#*ZpXz84NPD_HnH!c6%!2B~~}f z3OgsK>j8togY;dP&S&5Td@i~b1Px#M?4Kp6BJ!-)y^f)=|DIl2yxY2%$+N6EsQY)F z4lM~nza$Rt3StRAU+l+{3BMA9)9DNG{;V>u`90ZkWXORK3+CAWxbuCKm6c^FV^ata z`M%V~rt^M_CvXm;#+gt1LpcyGikfz?H?9aGuhRA&{wP=3YQ04G@iqBW2UFnX-?R*| z)sEyn7)w|!;AXkwWx2kvu#lKpzx967uF+egL%5Y8=366HSbhjk41Qq$&JNz*-X069 zQm``27SEh0cCIcnL>UrgRUgC?an;Sogv;sk zb6rS|WvAB>q?r2l)cf_r^66}jLi|oem!Ze7Axr9%HUlUK>cE<$oSMxQpaz}G#S<`T z7E7o8{w}|d6-3y{icS|YM^vaxSg1_7H7W*ba=Muc7|=8NPr?-RHSIY;~ zG9Lg@u*C1f;mX$^vWmH0Hjvg|zc4T`U=3<X?|f3w_QdL^H0cP;z~csk#Ryl4ehe!(TX+e zia}H*2@nhD%@3U((~cnZlHaUflu2UmU>EetW-)zUjtvZ2^ZJ$mhz-N`D+stb?sz>O zO-f42f~s3P+1c5ZB=Y&b+|1{+#4~BXo{Ybq7`)sV2w#tKulwYSZ@@K`rl3zTo1!1? z{Z^*y9+AZz-HSqCTt}pyts3qh?RbeZF}?kR71y4giu5HcDKPrjco6HcO=wQr+Ol37 zxd*#md$ezWJvFfDz3GM;uw39-W($tvBWf4($xZ)KKC(D#voDWcK^7jm z_=;3sob5&Lby`2~#~ZUf&QN&9lq6kGj+~@CAr&8!)J<48;~d;&=nqj{>hQeY>v>)J z)A7{Ov3#}SJpOS3K*3v;VtF|1V7hPNb^Sl;uD=sVregEWdLoFMZHMO+53|WAi7lW#QEmW4ohW{Q9@0dxBoapMW zC>jU1oL8a9oT5aZq)0D8n=+gXN%KJ>4am5aiLb+#*zBT|x-A0#Db}wfyFb$C@Pc8! zvIAO9b~hGAmEUorpY?Huefz`7zkmPaC?PQJ$;VfVY;Y#Wb5KWuP@{NCtGCw|P3=Fb zonk)T@zuQe8214DE-q@xDk$XZGK-elaA3bIelz}Ty0c%iow)Ln7B>SlSH`B92CU|Ni~N@l9@G_gb5Gbxn;j3q$|qhZa)uNP~Q3NbaJI zvAH?53d*jpus^z&lj2ha@@sL_@XIOYkufLsg_`su^LErWd{&H+dX_wrRD7N;bG~|6 zo^Ay>di3NfBU}VdKWh-VX%Rw=|6uDrj7;fZA`+}^A>L3S8~rRQP}_JCglNvec*x*V z+=9nU)SeGpJd5nCN{cPOCGCDNU`z_X49te*e~W!p$e%ngke8Q-y@+mnWlSkkpAf<9 z!Oq~a6|0=D^^?q>dMH#0MvTKK7(lXHXE(pt>v0H6T59Oo2A zbwi0o&daxdUV56z`GGT-%*^kC1IzM6tW`_ZM#jfYoSddgIg}A}$E);BUG(Q)sXBwQ zxpSQ6r}Cs7)Wqb&hU1IOEq>P5bCyG)MjS++kP~5kIuRB+4K8IQ2I=`*HnhRi$>Sh? zDuJatBUk($KNCb;IIe#ah#=rDmv8Xied;s%SD^A$%kX~~nbPpBn5m@Y27wjWiNm=Q z#LwZT+IF2h*SovBTmG9*JPZiu?%MC#j+X5^Uj7@WsgG~|oYo;aBsMOKlA<3tyEUY_ zJ_4_QU||+nD&CY1Y&wj9LrXPxicc7~Dn3HaEGe6Yg-Fja=0f|BV9{RolN zv?MC35kWG{3F_CADQ$ltsdyJh$IFuh1)&Gs^dfHnv*#^2Fzw2tpBK^284R=d-Ov05 zo%cq3dp5D7C42NO@?Gf>TgL)}=7@lrot~a1Ko4Cc=QOl%_MMh zTJ-9)nb5<&_9V02!NC$&koCy-u>1&x8D>FeAwXvi2C#XC!t0KS%d8_K`edZ zcOpc0C|N~{Fp%F84ZJEbn+~SKY5?j%RBH$a;~V9$u;GnB2iA$o^FNIK$w(voStoPJ z_PH9=2rxW%Sa^FalFP_`x=QKrK>^4LU#mU+rhEH!mO|^lDVevbx;j-}j|=j>{e76G zjZKBk53B3#FGQ45CvEwY=XaMc=l<(8@I$RbnvrOs0rt~**7Zx`Men%EmrTzix~TMU zQnm2qNSkgHO=F$4%+_+5bAF9Ph;$Q-^#e^*Q(s>csAI-~5?vf=B@`uysjXIMJpnld zS$TcE8V6B=C6~ns`j&@4pCw1Phrrm;YEuM3u%O}HNlnPCaYN#@!ULrSZgGsEYFnO} zDtc(u}h8KA3C4#6O_IZlgi6SY7<9?@>1G}(A zgoMVjQAblxPoibDx+O(Y$rQ<*E&^L}q+y2)X=IoJwJ|lIGP}uL@ z(8zPkseFX*@`T>J^2FQ~fd5!r@5Odp(fD75bm6<7L|+7=okvRFpS7I7hM|36UXhJY zx{ZY0Ku3Q}46a_a+uj*W00xSlnHfsNV9}zzAGx-gBe|mu1h*{eeGIm;0wCR|_hkYz zU5ETNPd53#E_b?yS}pw09Gs{A*?=b$$uo3thIcqD4QZqz^ee3`;I|i8WMMz6XrK~Z z42>V&dHK>7PS{*w;tLTV1&U!4u%xD@=8DGhP=kmyB_(gDkK;wcxAF=V%eNxZ2Sg;T z$tOwK=lE2h>^;7>#w4+lpH=B+M4~=+V^3^oNpUd!Nbp3g>80#b7KYOI$KxOGqG25`j7!$d$SwULnbT~;*7|I zQvkc1bWYQtA1AVhh{)2A-<&SJc43!1i;mdm`+N0_e9Zi@o29CP@SQl-=fdZIPrd-j z2?_C>u~Hk0N%%4d-^^%asX8oO7$lkhi*vi>?EKwb5x|v&cxINLbgt8L+1E}GzqQ3sIg>Fl(_|{AO#31^lywJHv z91+2H@Y?QttCto+*E>3(Tbe-+1?-ty{}U5;l2uLOhc1ja#w3UFY{3jn5}u2x#afF- zI3KGK>&muJxeTuGv7${j26lq+Ox|E%qS19FTxEK7`iK2n6f!!ajr>zQA#ZHo*`!#1a zBcDYh6|W1r0C2qp<|Hj6W0~h-8xC)cy=O|htT@N-@vY6}aLUbC9mE!EHLuWr{!bGB z#L&nH2H`;VkicG;?dn`^@ub%>!opR}RxfeSJCH)jn4{(=I8=n>Hu8rYQ^o0di>D=(kE zD27DIeu1~kQb94bw-;1W*-cdWfNVsN*4A4mS?XFOiOGbPFNYY8kCePwGpZESs3ZIu zfgBzAA*ITBUtZN(59k*Eo&=w42trdcZO9`==tC)`CJ)_MNicEX1I>*3nv+^O4rxS7 zRI4yL_Y=GK<0)sYt)X+c3IY#S>D1nU7*ba6_nNW(yw}(KOStGFn{W=0x~|vT9`-W) zrw(1TBWS#i$hoi36dB=6vO*N#uaB&x1 zX`2!-bk(!0{)TIf^N_@_kjAp%3&Ze3BK9FnbvB?6_jIw`t1h@Pq=Hr<1Z~9dFm_Fw zk|g|Y=)f$XMDSY|vXC|kybAsC09`!7D$d$?0m4l-`)t|o)26wJd`0zZA3`^?Ippqa z7i)I2FpB5MO9ST&HGdH;lJ*n(_4<9nsr0 z@4jc)Ex@C4llUa1oXO(|8-_*Zgnr9Re9>-gt4F$XWA2PNy2nUOZDq){Tbd*Rr$E}Z zTh=I|pOiR##*FO{7tFr>o*=gWz~xVq%i+5}t9E_5a*w8l+zo{Tekn+*@PXY9JmOIG zp63+-`q_xlFdHlsyeW5?F|S9%k(0@F-)?B7@do>OhG-52p#H@4r_qCFzR&wox@ywj z#Ihi><#5$z{EhiIzXbq3L9}E{M6>I$`pDQAENCoSFmiX-EaO}o8mc{7?g3D&UJrp9 z*N+lZ#|zRKq+Y8-M(M!dUg#ii{UR2B&?XwNiiU<31{BkwTSXUlw=jPzO_Ia;TAOfV zQw_ceg7rMy{Y0Or{T+ zP%}%Xrh)U6nU<8)mYYfhBr5PSD|Fg#+V?LP)D#8}8Bld{)XeyOjvTTu(QL#{;_L}yxt$rUneulkF_7trlN@)ZKAt*tGYrxAZBSo-jj zi%waGw^Ew!cRCoyV2ygP%a&Mc{_L!(l_-E3b!b<)L8TPt{68Qj0;mN=3~s@8b^g>; z(0x)8elf<;4IeNV{!Uy>yjZ9{q($a8$ENfA;{EVF>XQ*>P zLqjjr*smCvClR zz_b@vp$AcC5fn6QdrP2{C^jLO9~we!uw4!v9HgsTwp|tiQ~{land;Wos4l~wUcRs@ zDk^FG;ggiW8wFslrtONMM7@kQMaH-VjN8pp4r&`4z%S;bu!k8c!6f8XzrZ=Bgr)#VRiBDJ5Dvc7A{tV7rUXyzugaV-e3>d&7b^|BCP zU}DhWqR>Jui}7juX>{4vWf(BGLqYJ8(Ly93^67g8SLhYljWa&{!-R) zY;9igXdqPjEU)jozu0OWG|cDwlx)4vz5!ku_c+Wq&h_+HwV*@5aC z6d4tiF<@d~(aEr4d-nr|nudmzlhdp|=(w_j^ji!`mnBC{XIqm84)?kX?wZH793X-J zqLe~(8V2OLXh}E~l>|!;q5~H`KycC2Kl_XN^H7 z$6S{`diKlziVSLvJ#mju9UBz=wTJ|A3hvf*c2|$H%7Jj}4r>WRBQ2wUuiSZMzt0Vh_nZ(z-;5g>dvyb$?9sC07J84OX+CILV;0iavz z9b?{8$$nPxem>2(eoAbPsq@^^;>a%Wl^uwN<<~fqBhHD1wC7hT!{pIc)%t+E_hS1) zL!$dlqWY^1FX?h+JM{GQ;5x0Wil<$vBjW!uhI#F;x>r@P#9mtd@XC)#O9TIPi~=Zl zef@jTHmJ>Znd_gIFVG&Aydt&*5JX-P+i#};;&ED@i-U0&+8Rc8BC<9Jq*I^Z03Et3D9^hht{$WQhqEziRN7h1+M* zj4N>=GpC-fjm)}FI;;!{jG-_POB7rbROw-j^_RNUyB+>S&W>#(yGIjiy%szDap)c#2?ia=>Sr$UTdM*B%y>y7ow+aq5*yXs-0f+7*3Pjbg`45 za7KpN?;YrJx3jauAZ)F3(yGy!J}Shd_{%qdFZehQ+xR+p)Ge7h#$*{19KfHS#e`lG zr~+srQtvD-hina$C+)Ae7++J)Wpu(?br=`JFI=tXLg%^%+YI}N+vgiD%3X#l@v8qRfMqB^2Cm;0H{AX2+%={+vM4S# zp|W`Teh>HnFvX$UEH~I9_e|K8$-rTD&xc_NCJ_&Gtvvz$sL-F)3JWYp!o*|ZU1>k) zXgII4vor8^#{_;~4})b}Ukz!ACPtVEcx!!l)YEZXFGBA>e5n5OCvh5(M=`Y?(m46km7=QTHtP%z92Hp8;*f`Jt(O;Z3GuGcv%=r zb^NjwHtA}N@B_0AQqJ0188C`Zi}DkV1f@uHa;i2Reo(SzU@CX~mP32FWloVv&CIO1 zOQ003UHtptybtgI+jKymn%AxUc;0%AStb|RgTE+=992dS* zo7mTP^hxye__YR_xk2dVdI?|EH5RKqk4ome#w|HkQ~(p>?MUX`Z@vG|0svylq`~X1 zfqcZ#HVvyTXU`vpO)-p4_y^G>X{r|dsA}+~I|z72fGIzi?Kq1DjfQsGP=B-1G4y{L zE09MDonWnzPb@l1rWC)Eibs+jE2nGnV4`edFYE8L<}Wk1bV73D0<|ql5_Y^4M!!V( z#K^9KX_K^JL=2OJA^m?>ZMc*wxqociRj=c{xScptw70e)4=5O$I-0xEE#?t(>}nx5S!?hC7(v8%LdhXvq{rlzJy*{oRpq)6LZ=jHZ!9xxWJ zpMQk`z9^Zmgp`XTA=#!djd$vXBqNh@BIeTbw{*@^)0$ka9o!S7houbmfx>9j+7fj8vHFk26CW*7!GFQX6_2ka!wNaWQ4va3d zmDzaztn~D1sjByy%zq{i&3x}a9vn-&Q}3e_$%kz#IbV0J!)t3i`yDi7w~YH+8!B=v zg(h$Qi<`HBIt?6r4Xu|fn+2{0S2d_QD?h(Ai2?hUx57dhV0Hm;T(YblQQ3KZPF;yP z1%_6)wFx=h12Rj^!p)6Fff5{eIj zHf=hjLihvonb{)a(L5II@)El(@%WcNU(>X9p$-H}cvh3=nIf6>OF-6C>D7D=zH;YI zg8|RL%t|}eRz{$P{D@z!COv((I~kg42DVlGN%{LLmu{!DN;K^j3QFlTr4-;{1s@)! zq3;l47rumEA2yK9*N>oy`?io5WZorS>jnMpV$Fgu+6ig){y1guBh^#OxgHKU*S}8t z4X+J}NeGA^nYKvh^8F>pjgfTvtSH$gWMt95%Z%@`2g=}*6#(??VA1tH{7@XCn?I`^ z)^>KxCR*kOU6BCX_&#w0WG-!DCT&<83E-D=z_X=Kny?w`JR!9B@eC06EuOK~t6{+K zecySqlN>aqEf=PAp;#b|Wp<94*;4fZz+fNwPLvWcgG22|V&ZB$ z3tOIs$I`Mf#dF}YwD89j4G=MGHR4i_KkE9w-0-;lBRIN2lrBUD*8UAIw1oR;j(Pdm zwYte;vZN(V#kx>g6slfdhFTKS%~A?X;nu$1*zg^%fcki3z3cSA-Tr!0=}#Vgr-7jf zn7Wd5g+DPSWIrvZ;Soh65=9T5r2b=F^V}zp&lU)OI`6;&F|{a-aShC%nEA{Em>ZRo z%$$M9s}f(;7V(?1cpL(f*8@l43jKktt^N6MWrYz4p8)>|P?-9*2}aFv`Q1)B0V47E zB2+gwM=DA@%lrKkL86q5v=^db79?_qfH0H@a6m*#XHoa|%(L2hOrMJcR55pTi*XD% zXqn(Ka;f**q!ls+tp}>QY6b>peP;b#$}1(>9M{9t-QL1hW}(mfT&T# zn7FijjFL3T6!s@wZm{nMJZa#XgX#d9CU1E~g}Iqp(_Z>1uvdb+u(xqeXO^m|)2!;# zZCx}a3w0&2L$w6qm6~-Qb~)tEUQaB9pT2ZlM%$D0ATjE48oIWu5(W_KdKD$e0EQLp z)QqewK+rdOKN!@JOXwsLu%Mo}(NgZxF@yVSTB5aQM?ZQ9<>x)`rlr6z@oqf3Z}W8Z zMt)!=ie};GkL2K#aT+P|fZ?)bt97DL$Ob}RO&*sNk1sIvNo+#Tn^-1hW(bl0eI27W zAl@^9ix-xa$8&;6-FW(j1s%YY#vPLTGTm~@@RN!#R{qXYl#BfZz@8dIQ zLrCGFh{u_cwq;=ayJ&Cj-%~NOjdNvaB0W_tFPVths}GVs@9>~jBKVJ)g9QuK0eeQ$ z-p{BIiBB!6rdE`;ymI`9>DS~&{fNz96<7Mo+Ov5Z=*xm`p9IT#DZ?9JxBnfo1H2pw zkaRM#zNOv3fxz*3%csBRP41YKKQkoJm(J4X(YCV6P22mPIp;k6MT!RNaT-b}aeNUi zRi$6-;wC_^s;VNNdx1g1A{B33=7hsAcaWM#AS&0+7+r^@{UK_Jbwf#wI6?S>1UXUj z<1iKx*|5%e-l6g5j>)JLcskMG zzX$y&LoDZzv#@+2lX7E|g{xY2!T#ymA}Fr(11N(}QDXcTg9P9AG5?bzfJoGGqy5+T zBHE<9k-mIrq63^ey4r+H;g7^4GP0i=m;onJIP5GWm=2d)AV9lVxu9^X8sS+qX@A|ar$0qvc9)WXpb zXI`%nw?CFF4ArANFtrxMR6!Gc$x}onmvi7YixrSG<_m-(Y2~W6m-;Gf6n6A$wYAJO5!+r2sKhsO4?*?~nQT%@1#R7eG8JDK?r9w8M1nP}hcn zPL5p1pB%)GX}-ZF-9OX7QT<>43)}!{#*teIcC(pHHA&~|cly#K#7^(xIvDUx-Pqpr zP-NOoslhukded5fRdHHUET4tQEr5Wi7w;n!Cnb`UOF!I93P(%dP^RC^C?@SL9d>2R zUosbimuwR;w8Kt7hDS?QBkLzvc_%QK!$?d~sY<&3x}(n^?=Lw1b`xZpDLR{V|bm6Ne`o-OtxvwvuM9WcKcd}vRoRh1Hic3{ZxVu!@atNlKNo!{kX6~Zl3ktUd z?yDB4x(bVe2s#ZEagL&iRD6OofqBTfdV4g(JxIRaH9%U)c?}!Ze*PCGbyCWyl=J{@1=;`DzXvlkfvu&ZO$V{|u zFZym^4-bB4+?2qWApKBZ>k^#4b$^M=+Ml}1yNUeMlL z8ax^Q0tcwq^CrvFQ-++?1dh4RR= zOzmZ;M<2z+>2OT*1T}gr3||*EAN_~J%q~Z7>N&DDI8->r@$dnve$4-0N;hBlz6*faMZ`w#Q9|ymeXc3aftoP@~2LpistNPHVbN|joiLP&cOUw(W zGs;d)jP&D~O_LCIDPmN2KSX%uFIW{pOBZV?^LqQ5rDTs#n9Ze)cDaukF?(C!t2_Zb zP)-RAhP&Z+#LZI1t&dpfqbKEc#Dg%0tbz%jFQZz&9H(dyRY{*r$yF9f_P)%B(0o7bc2e$uCz+HoQN&L`{&qN+q? zIc3*@7%E#$0qX+xJH%T3xB@_DC%_Ez*bMmqq`)qLd6izLwl_G<{ADW2cJXC}Gq8Zc zmju!H5c(7AnUr|t*Qy2N3sqfshF0wIChDZjoDyknjm8wEL@DRU+&aC?`p2lb?_aLs z+))&7wfu9PSDQBA<>C`)7x zdY)LyJb+~NjEVw6{-mX}+ZhY`N2G7H9sG-ReTy-efxhx|A&qNZXvGRSeV=0mBAT1E zknWpcku_BtJaYEBAaaPpZA3g5ELyOB6<-m%vl@?%gU=z4pszuhB$zTsKe7~<8~;q zkSSVQgE^NByN>yVl6vTn^6mr~x7Ql>_(=eNxepD4$HtVyXM`7d^C3}3f(t1^#8w!o z`2lqa3>y*=Gu{zrbAD6Ok(%1edk(lrH#0+`GihU_rW&scBn_o3DeTStNXibEC0DJA zk%Sj$B5lI5TUEeVP*<{+Vf{EMWuVepF(WT~ODp*%U*dd|ubFT2t_94edFq)NNB+xfE;QH@bJ?#M zEBryNH4|Vw_l zgp14h)f_t#D&ehL-SQQXeE=)Zwowk;$nWv6n*t=BS3MK>^a!Sw!~zbOG&DC{*>IIN zO_7R&OLdDK`8oYlCT|m%#}cuAw^<9nx4<%P?yyuvyiAXZy^@!4(3EhoRj>0wiQp%4 zRpgJe`Igecs%vMJ{Vf68O+W2NWDL*sDwf)>y(cG(K|{NU|^8=!>Lc0Crm&_{xf=yBN#w+N;x z`ZchCPR_5W@|gdCX}8j3Q$8Qi=p9^Vuy|*gVrG9K-54O=k8CF#^0w!$kSoL~77zO3 ze+P@{dueXNd|E)VOW9^h{CC8#u-W<>MW3k2h>sP2nUvWD681q^dj`94)M;Ikx@^UZq*A=UYMdvqMCK;8nSF#cBfnW(~@n)|Xo`a*j)ugXW--9LlP3 zo+SMVOnDMNK?j3@`PetVNja*sVSx&b3dS%#gGx7&E~u!}Q49qj-_6o9>+8PLIdbUW zUV{x>SD((3zq7^?xVWdeJ$*V$yOC+~YoZUGJ$18K9laU(cbLXr?D+3Mi67Up;TnUn zhdyO^F;7qXc_jL!kJx?#@S2-$m#mqx68$u6TK9t@wU8A);(Q!vfECG-nbOEQBsWc9 z3*_U6$&l1N-JbOKCyIvP;04gapFMmKJh`uo&11LZz4=`16FKt^BmX^{gXf5d8|AL_ zzr4VT`k#8=?MnIoY?}8}mYopo_V)d5l4R!gqDAZ-ckFL8?%gZ?$vQxO+@s-}Iw;LY zz3!|PonxEU|LmI+Z3gBUuhq`#G1GA$xq7~ua<2JkmRZ!ka#y%rUCE~woIrBQ+ae>yM*zb+3fuIR8e;Hf0 zs&}}*FaoU47Nb7xt!cOwD$7PgDchd71{OdkqezpubB5OD2IBU9&CB z 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

`_v&{)tb*hxkw82T zHb^IYsW@JTgIz0W*FY$ie04ZUaaOEatR@+Q-$dWR$rEB~6XU@TlaF+aek3%_VUB@R zTw$zaV@&ZBj=hV&i42;^14|BxV5DJXI!Y#cu9c7;EWaLQ}a%fNXx1%F&oi{~|kLI>+&f3ZSg4qs&pIoE-&BuX<& zhLoiXlkaL`RFTo63pdpS`7+4$I`v9|ISHR%Xq6dEFx`c5qh~J}HEbRmpz>+S(nl0w zj=sJA{>EdG`S&9+K*x9LVE{k-doeqGrjHluM!4yg%5zE6StFx_N`qCk1pd~|6v|a{ zuEPM7<3Cnx_Vmtve+(Cpyyvf-?aY7sDqf`AYt4y*w*@T4=Ir+oiE+ShgzHxZdV8TQ zxh$pTky{j&ttIp(fVQ3$>l6H@T+LmjFW9`YwcL1XnA0d*@dKYe4Zuc0Yp7((i&5e< zMJdq^{Yng^3u3fP1Ci4}Y+|&#N#97v;uzJt7r=THjK*<6?s0iqV-}K%5w@R-j+7UO z;KZ28y;N(%?k&T9(WxS*G0m1P)HLu=5TpiJ3%M_lN&B@i#cE%ZtmfOlA3d`+*Vw*T zcfqK^P5ko9G7U3>1IIM%d|#;G*iJ|Kt!jY!Thit;hhC>K^hAapPVk)z&0-B8eF0LM z;;9@wnZ{adlsg;AP~^X*8-R%l%;LX8gNAUVncRn*dg9KtR~7Q}n8+EkI>w@CI|@yT z#i7$=S=?8;@{n>DEDZsT0VPCUS}D5bP=$E^+&FPy;OK86sua$!;5IgyZD(U+utG`T z=~6Yqhha`i&X9*^?^{oAR7p{NP)_xdC2aqhVyB-6XTPJKO5&4IOk3LLjI?W^HKxyIRrhQUsY$OM_8qgWRcVZQDXV_{QGe*3`cv zgKWhX*h+5T^3XLPZCYebxa<_WE~L#!@!S&WRHf8(7APTelgJu-$ucg7O+s<|v}!!z zGX92f21#bA4`$|sfim%J-XLA^4^~*3+>)ZpTutqD(h_T}&H_I=(|(d_8*yh)ikB~l zkqoEGjl>O1&mMD_z!xdueVwM~15NwJ4*=?s)ak<}t;&}SU?}W*|5s7qJf%hax?26J zRW3(>`ZFS5C_UVA040eKhrE1({8!R+(fpcygm5Ba`ybnarBfqc-%VATeY5d%j@3oT zdU!ZfN_DM_d{LF@FIe=4BGhO18g{mMZW zjJY6@O8gQOn)ZFVr2~?bIo3Np@d2%wxLgS~Pz$_!d5O9Ccgpqhe(h^OXQwV8e06Tu zjU2`XRGc>d{tl>*xOqK*Ve@K?p*j~BOZzdt0-ba)DdTj=5de;Lj}yd&th};D)70GF z;&PTQC$jZ9?Mz!KM+Zw zHNKM^k|9RIeEO_KW6tVCk;`MV{K}{F+3U>fouZ~gy&nxVHBpGOJ|C1ggl$nKN>Gf; zQNyHPCk+gAybSadR|%3CM7}4tL7-ApvbJ(N1A83jnds6{^xmrf`T zbP-VYlzu<-!wV+suG1~IE=MO6%)slbHOpHzX9p}}Dh@(<-farXHX>A=RUvFqBSb}+ z8)s)zmvcpdzH`UUU2m0k-s1=xRA0V)iQ=CoHjv!Q`$yC;Ug^~Q)~j5`Ym}tkCityfKPuG5m*rc;0 zmyY@KM;D01fuHj`lf;3WmaDihsvfaNqHd(N{6hdlhKB?Fn7h~e<3N2XIsolMnCyWh zLZCa-2vCaobR%r&az&eQ^YQinixUSZ6<~1v{{jdF1qC2q2w0iilKO;HfL03wL&R4f zj6mVdDBu6GFz-Cjq9i^5!pR?44+Bv3jQ!TU{SfX;<-|_k7q78iM#=0C|8*KI#N%U? zMech^5HZkS%_D|oV7(lW$kkc}i^#Cl+51XmE%rN?MS#a%7YpRoJ`AcA-v5bYs?ipm ztLzoSs-qZY)$WxLN~8zkCWh?y5mO#xXhZ0bmjhx|yL1e|+7KR1h+qb#eg) zfqkcJs$*#w$#^i5pq>vb_6eHbk|vDHGdcO0id5UNBAyty&O&2W6B7Q}(XLd}3*NS3uTP&o+;ABT5;vy*gkMZeA|UBk-v)LYGm&G@zz|CtPkIHeoeGP%)d=FOTqh=H7YcSXvR}Cz~r`%REbb@LqI1s zqj53CVfNSOP)%zQlWc?9r=x?cINS_5V{#-LOQh+Of+>{W{xwawl&!x-RHPx4WD!zH z5t)C3m>IydJ!_?qV?IXr8XH>(C5n}wNp|l*T(w-C7USS|b0KnGhajyI|1mXOaXp9+ zr^H51zN!t``kD~>BV}W(>ooUV5ekpAGsA5^UQRX#(t`y zdQ?XGq~GWN{rB=$76?aR_}3lu&cVzb59p3uDuQR>Wosj5qPeuSVRu(fzif00n;bnnFRyHnFID~Qc!=38FTIsT-JXh0YemLn9HoOOXQ^A}ayD6d zj^E#NZoKqmq(*)T+a&<3T!4vd*eu68gas%B5f))B4>W=tvN}5>C1G+*)D<(k2t=Hk^|K(dYP+Hbc5cmxAn?>lq;&X1|k`P`kB=a9qZuxd3_M2!oEkTV1&=};{W%*4QK<$&r#T`}1@V1AmGu-tp z7b3ZeJfuGO8BT6p@l?X)3qFqfWBb*w8yBw|p9zc{y`~I& zo|}E2zq;N3x6%zCX@E3@R=>CdbXWi)1lAqyK0{$`@T4i*A#~v{1fBPvNX%ktoCIVA z{|WND70hB*su7>LjN9#PJ)OlR^Aihp4q?Ypz5%FD&d~O@fzZp>iHDMJIel6Yz(7+# zi~O>H;2UhURBhnt>A5RleK;!@*=_Z~=&wM=e|{B)tn|CS9c5>Zqu}rHvZa)xgNx?9 z8(H?~d#{nCEshnrcow2Ah1<#zV%$uJ~>feRZ0g(nP!@Q2_q4x%vKC-}m+I{rr#X=BJ%d?)U}EMw?0wD)~MQ z#^{?Zh$u5bb!T7)q(8*s4~KP!l+MB2KL`f`5=y5LtQ^EZHtq#s+@2IP`s_lHI#+Tg zBXBl&hi!wWQGQz%zP&E!zv7}Ze*!2+mKuZO!`g9IZ0z5Wa_{r;-+hPI0afWTn_X$-to^es*!>S0_jrmSO^k z?nSMEnZ``icq*6dB`m-#fqX<8ZPcJ;V{P*Ts2Ajzo(Ko1q#T}G>3ddT_H?CC(oSv} zNN*&s4#_Q7lJl(57*g}zAkJMHfyTM0!*VI9B^*4U^uMYVkEbaW8z_~dhNlNxTPh9+ zk$%sulQtY4KwZ(HG~`!oKmdk8LzOrqjluA_MTo!oz6j?I;(`b69iEL>+tD{L@Kq7` z)kmdz*%kC#$0ni9UlH;HEtyqPgSN&`Y98mzh1en;n8^S7DSx_Xl>R=~z;fE&@YS!I zT%=Ns2_U`R9)LanwE(!Jh%qkTccdf=l+@pQVo4xt6C{9+xgiNJ>E~7=aW;hY3zE^y z2|iYM70W=@j0GWlmI4BRxo_xEVCqQ=gtlbj`WGq)d-&jpKLWkSQU7KIE30u&=hUx^&9T&5fAK zJlLz)p$hmm&Dn?SxrMsFMPyljx}D+fO#9(ivE5}rWzvneG+s6NM`=^ z4K=zX#YCj4YM#wMSb3^z%G^DBcK|l}fAht^kswC!3DF{c=YWAL@bJUllPx1BNkeU;!R;Axp4vs>;x`HOh~!q_r!Wc; znZ_;P%Tw7P3#7;}tLFg(4KPVu(uV9AO#i-4!2gmdLY6oi-=7Q32CxF-G%0u8sdP9{ z0U|o)eZ(pOz8=ItiA?(d3WeLuLuw9o!7@1VkHpDN{r7Nrit@kom<<8Ulx56BlAxq8 zMNODJFa-NU;lO}KWfTDPE|jT2S%G;@jQ$!%dT0epm+LLhu8*u1ee~H=;3}VJ1BnS{7*40BB5&+)> zz&$WrB#Tg&)vDL9A!OO`6W)3aiZL>9FqjFH9SP2kyt+O9KFIhJ0<^tI8Un``fJ7ZR z^8%crPkEudWE!~zm3ti8X})J982F3Z-GX}O;qCp|T8rlcbNXcQmq=E6qxQ7VC|o|) zzFVSe;{Zdz_2M+cIGDoJAsKeOi`f0uX37Rg zzijB&b7s){i5PcwFjOp#g9O>Y7c1q$|Pt?f&d+%Yll82rK+EW-u^$d&U|=#)L1g8;-4Tn zzZ0@iS7Fgx!77*XezGH4sykdRVR876gd%0m z5Qvln!_#g(tOm{zjr54ogBRTAREec9zf6&ipV3=yt4!#KKbzSm;MLZGPxhnqck_j) zBd|(>{5a~64^wTF&|gzw{;O>WhBK_atCjTRC*8fh{XJc@(UaO{@%nPaW41Rjp}h7X z4alyrbU2Rb6$eMsrm@3k zQ+25Q(1bvTre&e~Q`l2dg^eCg_PL6%M#)P4M3T zRQWiy5V789yN%z$!-68i$*0&}hHM$VZI9SAKI=59w`kj3+u8XK0{`oG#He5914J+< zlwiYy79Tx3u~x7M%e8s-4>3<1kFXbKioX<5Di{_f{nocaUC^BlCs~o9&rDQGqv8sM z2puiMJCCvV6vaWg-Rk1NWqw3|{%Dnuw2kc#;SyT7bK(yv{ zPRH|kd*0#6<_+jyitO88H~zoJ0Qm;?uGI)=V%2gx_5@^~zydF>QiPC3OGZ=q-Ktpi zoV}c(BiDFK$2x*ov58O-Zfc@CVV;m(w7}_FFnMe7+Broj1{UXfYkbEHW`-x&;0{`0 zAur1yJ=?#w)7r`k<<3LEp7M0$8T4lu0`%FuypRCN3CO9ke@T7b5A(RA!l;f_2v$~B z2uas{{aAdin0g5KecwocV@X(Ut@yAuTsnIk>*S6XXaxf0umHBUlR@M&tJQHR~4$O6Pa^z^{m9xILe-0NpfOe{U!=GfAG!L}!JKQGYe2V8v;)%Ne1rKXVX26k_G4QXTQb^kB-~x1qd{=Lfs$R9KAN@<7PdN z<089G;1zdzK_fX(_t{tP$}(B;O*J7rxCss|8)zvsmh0XeHmtp5exyic*X%GU$drJo zyWGCmM>NSw7`{|KeLO|^?T1~1goY!ylct255>=#JYmJ$V49AZ|9+>2E>H~tl1b(6> zKCTRmv`!|;;7*!i|2YTTmu<@%c*eyEO?R~xj4a9w*z`8zTW4+y`i8%f&xN$K6_n4cRejs=i6^I9y^~{dBnA?^t$7LfT z39#&sp%~UAUXTz@FIj~G!i0aFP0at2yW`Mw&b#WV&8=5VA=&37Sxm zw)Ww)dz`UsoH76HJtUTJvF)12zYXTYnk2C00yboz9zd(I=?k-eR2_F=Q#_U7^&ZG8X^xVSsUqf+ zVJQzW^xb)y!5pkC|AMNRx#uq3;?b%^^_nx?iwr)X-vV40+I?GOoI zUtF7B*a^q5nd+k#+rAm7?|JmJC)NPs-@JA=y*0h>Sk{LdvVjC5iUzszMD$^3j?{{V zO(F*C8yglR*5+D%PBe4|jH>#{hp!Kt!|GkvCYhO;xocijV*WeT0p0+$AZ{RACLd+N#0|7ig* z2eFLsODJTNWc*N|!^yK2?EXmRV_>=3Hr^E_?1Qn~7^?L4#KpGxK? z*QVJsm(Ea01UXwnH4p8IIvGv1c})|OekY!=M+#3uHr9>(&|s48gtdOjN;T0+wHtJ( z*T{WG!aZa3&|7cbtS3vt-=t-AL`1>5-4P_yG1TQT?JSR#Z50Vkd8I>=M2+!^Zr1Cuo`n4Dlcs?D-J2K{3V9(B*3>2CTrZ(guFo*<%ub-lSR(L<<%d&hcY524< zdi7JCE>-il)eq|*bc_X&Q{0fn3w{+t1>PyscgSap^c~=;e>^GxJYtN11ah%zzNwv6 z+33QwQVpf59Wn0M>d`&&1i*}#b=z<{N@!^h6WAd%78P_{@e+2}Q`W}a$dbBzmZ*V(+l7SW< zx3CTOY2wAGd3ZT0BIpMymQv<-W7a|7F&ly3tD(eHhS&DTW}UmkpGv;hA?Rk1M6^W2 zNx4Jn0t z`(Wm;1|GEwvwaAEJCosFYVIFSTU%Jx6K zi)sj2Q@~SYvbMX(ows-%Ls`E7K0nYD0TIS+!S zg#`&e6q83SRiOQEw%L4-gzq*}PHosjhb=^0XJo53z=hMDbFIe8?04*~8 z%nO)kJ)-hZq)&D>Hrqh9^pfdZV@*GOygh2T^J$&dz(n{Nsfnj54q>w-*~+ZQ<2Okh z@qf~A;Ay;|lQn9gNlHp~eU*D*{4?5~>H$AgOQ+*O6YktahA`wXioHTEfqDtY%?A4N zRhn>@C&t3$0{9EITy53U9FjUqpLlI#=eu(NO6zV(|Dn~27t%yxgqM$as)X{eeR&DO z)G1#WLx_u(pv-*mKp(`EkNScgNy_gBh6kX-$6gG9ca!;+3}Zjar- zmG#CozV9dtX=J5ms4D;2qE_DeQX}Z%!c9HeAB$;Ok6m%)HwO_dWYU{^8={V%Kx? znG_IeHMOt#4=3)n-`*@5O>llm`5@G&HTd?{Ro;qskid+G!uo;{3UrUEz&$`d@5WKR z`8ZyXBJW4Zt>;H)cE$w#^rZ2V0y}Vmm-}qKn=x7cHxn0LcX*7QBv+u_!jrKD1ddhW z?LSMmQqy`cW)P#!vEPem=PZFWyjlT4D5Z1zpJ6~|(CuPxe>wfed8U%%N&xj3tPeZ{ z1q7Zy*IAp0v|}(O-_gfVjCyuvV~l(lBZs+kpd_#RC@n-SM0FT@Uf>EqGr%FEPTtV- zr``3XY7D>3-z)K_&gzssFLK!C@!_%yCz@&O?=N7Il@9i*+bj_}_UBmDZm2wyrGMPnK6!kQ`Z?o0@>h&feKM z2*9{^hJ9a#U!OVCaF}_y(&R3;LqG3~>%Y}WR^too=9}3Xnm#qlKj_?&OpWe^*8!@F zz+Oe_)bHkj4gdjWQ8z%=j^%r&VK}>lM};t1<+r zU-@@C#KYn?kdVxN!NipP81n2=>DE5VWT^SSj;=B)%C3tJNQ0C}r@VBxlr+*U(hU;Q zIdr3xbVzr157Hpb5CTf~&?yWs_uO;#-e;emKrh?-k|fBTW5MC* zBYjjHKnv*Q1>9s>=zWe<1k!N8&L;6co~0A7K*Z(l^L5Lj$$cGQgT1OQgxkMvufCqeBTwsxx&qxQkrzGr`jfKPkvXwue{9k^_2@VqRZhMlXOVrtqLp5dwg^bP zB7eomG@*lDH|F^OzauuEjrZz|1L_tJ5yO2CW`R;5F`juQ;lXqoC`CM&pLH;ATp!Gp ztvw-1xB~3xrI-JU<+O-D9-_vHB8BLb0^_naZNrEBL)fAIRBg=hB?&bB0m!@J6S3t~ z_xJbZixt^|bj)3B38ew0+BZL8fa#lg@U7zXw63F}p|Rh|QcIBE^%SMr@o-4yV22P=TG`x2Ui*qk(IuUXkj6EL`GE&j?J#(H(?bgA7W5<-2uz2 zLDyIy-v@Hd^;Zeb&6shWBn7qkMelIY**Zg`Bm15ikZa$emb?k?QOlwHHtciO z1^3r4P+d&b%*36%HOKAF6Y8bHLEFE+x4NZ?<0kvYlgEXOM}s~z`zW2&+4&EFL^4RS z31@v%CtP{~CZz9aAc+uh^Svw2NT zD$|-lSHw59=;9&1OcmgonEBkA@=g^d{353)c|6HVFv~(P3;g;YkPRGU)@w%igdBx_ zm-$>|N8rQfryW%3^X&X~ll|Dj_IyfM%KVWh%^HxfxB}i9J?gX)StX=2S@@*SwT^h- z&y)Y_1C+Y4z}5kBmcI?LgaXk>L7rFjcAJg9%z~_U#yVbsUOO^;0N;yF7k%Mv>^T!_ zyIsp1jMr>bMu7sivve;>0#v71VwtN>Bqv^?zdslI8^uyDX8s1QxPK@$U`wI*2dy7G4pJc5RcO${px$c0b=gU+t`b_ z8y?2@1$B)`!qFBwRjF}(jT6V7lo|3l*5-nF(0|_%Afz$9yG#$|nJqW0f*ti+HbooU znAwLf99;vqjAo5)Xa`*G$%vwza>|Tbwr737qG1q$AUjvi?shzn!Hw-l3}mtJz>v1&?US! z-oKqMf$-D!z4VT&{LN`o^YZwUe-NPj16mzsJ`29sDbK4A>S7K$6nu@kJEZRbL|)A* z%~*0MdV!MW>PCR>5hBF*$F+RLN*hq_R@6_j-^j1Vkm=e6&ETY?hWLyR`jsY{fU}F3 zFC*`3oJfp^rvX2)Fr89WW~HLMn5jqZ@{_`&TeukX;sN3Q4{iepJwPpRxz=%cFVq72 z=Q!hXwkEzmfpyy1Tp-rkYsGt0p-m~9^B)T^3Gq?lu1Lb)({lKkntBwqXZc^{d1>F` zYxyqkdHBE7K^tUAf?UikF_1wD<<6-7E_U9pF|s)%;hJ zvOck-9h#`YlaX#?N%^y~{t{%~!ZTtYZW>*r8jX`-v8pevi3sE<`w4s(ZyB7|9q_ zzYIV__)ob7xV&+hO5Q^~6u(hd9zdy=!BeB1m=(aAY9azzSZCBn8-Lv285kAgu@57P6Z7$ES`p?kp`zE2Jm$Zd8@;kPP}Pi~fL%9XQZllc z5VRlNe?18K%=b}vKVaXW6gtI_c_~>kYsssfRv4g&?S-Uoh$so8`#yVxe>Zq4b%;HQ z{O&<;`2EoIl>(BnYV%>!pIFA;fkBJr3Fd+7s)-etv_z-NX6Tyw(ha{d-g?h@KlZ<> z9hCH3uvJD}W^OOAxOq>#;|6xze6#mj&O87N2A@@Em$mAI+Dd@mN1%dS_NNPinjnyy z>J(m?2HNK8Y15yhQNJ;|%t4G6A*a1IRSDp8A|H5je_;$a@5 zn98q6sEdmW3m%zx;_oR*e;G)5YqLo4^U4!&R|oZ+|-oC&@XS}`@VJ8{uVyR#RdBrLoSX7N~GENqq4c3%!xH(3q3ffzk;+2{L`KxeoVU0t7$vi$P7aKx^0Rh>9w!4~-5qW88 zno@<%Y}#uzr&x;?gPPncP54muoK5JmyYM{wf|_;x>-gy3SjIgErC-{6-&v}_NX<9F z1scIX_6H!JbBpm;1*- z2GiT)**%%2%{S@sEhc8B$d(hZ>`#JJl7M&p9SaBF{)Lf(s^uF5V-59~Gk z`r1x*8kNhGD->r|I13LjWkPuqxd*1MuB#hBT)|qDBZFAd_M$tb-G?~PT zD2I&OMnHCPR^U2-CdB4C;Ja3Ehpdj~791q${(IZ12n(mr(n>|(6pI0ICE0@g@m@Ab zx+LG<0r?Xz+3!ql<5~Xbp&^R;)>f<`i^Lt7uR0Ei24Z$_WWs4tHQ&RT2R3`p+itv7 zr;mBqT`+UfegNyK=HwI)8_-WFzZ~2yWl?Glz2D8A;jySj@&2)KJ#D0) z*urnyVPJ2!Dd6|YPMGsHVKTVo0+rm6H}4M{Iw&VrurIG+#J2&H;!`6NJ~i7Umd6D- z(GGUeZ=%yMix1_;Z%OdwB5l4yB4R6+>Ve0L^8k)+Lql>o$Vpz`_F-BI__MlJrT?*V z6k-yuzix?5)W%xXTrsWDb@zRCGkU@Uy4!dv8)lmn!M@lbd!mx1NErH*Ye}nb zMPrd!j|CIQ!2@ON4^B=_dw*xXJ}W(|>Y>MN0USKMBU+TnKQgFcIbryV{dX#r;YNJ{ z0IVGs2F`u+0`LfZBdcj;ZgboJSj4Ms*}o$m64Sz7X@EK`N}5<%IK_vH_!o~h~cBhBOf`yhBco-g)@b9KGo zD;5U7oy7N-*;hGLRaM%PHcfBBGrksF)LJjiyH2K zzW8CgN^KpSKeQ%=-~0P_M(!^k8bLupenU3ayTE?ZFs+Id(1s&+R*@3Hw>Wq*q>!GT zo;G~zGZc0u0t(>=AP)-rmhWnAzy}0MmyP}iY?0?!FivA;^{H}#VEnm1LEV7b8s|xC z2*YRfUa^mUiOGsU(N|$@gDg9eQ4l@JvgSaXX;Si;Fqvn=DlY~lY#xFIZ4WEY(3uHR z^JDyVR55Q42j-SZyq$;BInyCLxvNbLGwkV?(SpZEkDL!~l9|-e)}L%cT>qo zMySvKa#?@nPAef-;m5A)|9N|XqmJc;uwPh%# z0^#;ro-*g~3#oJs+Z2AGnsv~&xP-bSYQdcHG16pr#GpIHo7d)3d64&&IxjoD_x}biNgyQ9N{NFYZEG32_n%3BCi$FGCwU7hoA&f+bo}r-X={;O9Q%GWGZwHziL1%djoRcdQH5+lvMAF6-5J4 zTQyO;0qe|^0T0ugx~xrqZ(8Rn^Tp{7aDI!)HX#iT?2 zNm@io8hoMzK?*U6_@s{Z;@6T{<@b80$i`2PYa8@7&mM&B2$SfX-bE}7S0WEGyXbHj z4@M{@^E)3M?w@YJR{yPpy}C6&|G~CpDVTxdmvqr7Ck&Z4Q_>XOBGCt0zO48R0r5;8 z53^rtRTSq9JUoa2Tg13i)@~MWv7f|IGOIQCb&TA|u3N&W6?>9Ak$3j=x>g%W-Pu?w zTm6q8)vFE@?+2E2R?5Jq8J~Xsh1phQ!G0FZYX!W0DHa;B#|p)1;QJ80$I6o?$)eYZ zeWyR;a2>FI9^&i@R_Cc+FU=MM^9DWKUi=FyZQdd|_Jk-I1jwu)3z7J3OwdS(K_z?J zjB00o1?ZN{v+i!ww5yjz@4mi`3_=ZJBG33y-q=W=Hg?i$S%_UZwYqpebYkn8FGmnb zpiseztn!JTqN)gMqMgcQwtAqrsy!p~XsNJ}l{kjHO1i32x5~~a8Y1{J;>@#6^FIZQ z2T3++59oQv%(`DLdQnl)Qj(=ggB7jn%e8dhuG&cXRp49@6ZHgwdH zbfpgK0cLl5I|dsYTktKpr+^(d5-Rp$O++8xdY|8W!@+IrgQ^mpV=|zP#vsur*R9}R z>7d*Uk}UJvICEKVR@Po3?fn$BqPy#+&&Ax;o{6X#v(ur<0*+?HC@Xv#o$evG!J3Fq zvO#Z}z5Vg0lf^vDSIr`3jH3#;Xi7toC`PN$Mg0KJBfh$>o26Rcu0X#olf2FBk5Z_} z+{Ttdmh8zmg7O~~2AO_I9y+4uJ%B(e*j3EYpkVzlXv@aFpOHR6a$&>*O|iwD7jB*LEOnZ(Sxq9UcE9v;wOLk&w~zw zjy7wOKhViDTR{F1U$ATjll zax=&3#zFd+sbOQIWY@R7^{q|+tt@;@{-_=}wz9Hv4nSJY0NtAUHvSW2)hU8UH&JV9 z&{gd9@DCKw1nSL!832eu4NJ5RT7cIl(PAGd5u1s#0$pMQG5$h@^`iVCi!ttF#`cWj zXua=us`*lW4>(MstY|=|^!pe!g=6k;ECR$&eD@;{5&U7E*l*vCre=YB^zg9q6#MHK zN)5_@Ld;l>e%gN~c)^qEv?gnmKoh`UnUmaQOo zL<3+1nn$N zE_xwjvLaHKloJEvoIXc`NY3Ty0sL>HbS!$=hsR_oCV&Vh#H}g=#5rkC-|d^y5n&%M zEqyNqQ&Ur;u`mFolMHF3;&yUqYqagJ3|8vhcd#w#f{m9iUxG&lLmKPrL4G$XjO(gx z^@P@XZo?P4sUiK4(SFibp!$p-CT>E|$;k#_s!()UULd)|{WdU6v?qjVai_H@@K7%i0v) zx>sQ=LR8z{0h@!Bot<5p^1TLYs_%X<^Y1e;%g06dYbe>!<7{`-nVmJ#tRTQG0m3y% zSVCh`Mxc|9Ytc|{g3!X)?j_A@tf4b`&GvLo(yObh4KTHe$}y-g&zFc9B$?FS#j%qX zN4SP{xes&!bUh~&=ij_S%nTeXyKd(q#4fU}#% zrfAGe9^gSAax0#GClYUIOc@_EGp60o@1)C)d%&0jU{K@Pf4N2~)v=)`grr%`1W>kk zuvUU2I)<$pxm#>pY^*J1?Vr#6v$KSN79TsgFpVL=l`gpK+^qu}HBEo>ng2uom6$Qx z*V_+m%MsVtFGpbROX8k+^j*%Z^#qay3BwMFlQvfXSF%clBIRmjh0@O*TJ^CG1nLF; z1rTmd)y9i-!Qc6NdB=aVg|sKf$>f4fmF78ec+g(G67`_^kI?x0RsDelw|DGLdIQkyfW#e3E|m}hklTg` z56Sim?FAvT2?{g47abjLfA=*n0HW`JD=j@8Z@Je2V$|h(9rDe8hrSGW2M!Fk$aHEG zeF@@|#)$P=V+Our#=I%%)V<<5Oa*XM4~;_x(H6V(74RD1=q-Tq(Lm48)y02387pIBWAPCY5fwH~ z`f=OsZ^FyDfBs8jG3mVArlNpv=`GI{LJYV|^b8Gwng!*=D{BW4ToSBNkSXnW@6Qq_ zj|!J6`sBpRRf8CWXJj9&y%LLLVHEOMlJ9UW?CoXM`lQm4%LrWiWHo0f_?T$6MtubZ zbj<1FkcWyHTgj$B;hW}iE1$I2%>+;kCRj^ktS3nbSt%?Z3wY%S-w{DD+Tk-_%xxIp z{>zdwFCtpvis$VQ7=BU3{u)9C0SzLnYvQC}z+bTw5q9C(GUx%?7Gnt8unk)}NgD z7XKVIb}Ubv84JCFPI`Ejnzi=*uubbxOzeFSv@3BR;(CqZFgBDuytpHX!bXZX>fS0PvJQG1z;k)^w2nk5SB^oD5ii0M^+4}K8ZNE;bH z^SK&N4|6o2?mD96T8Eq4*Vu;K|R-am_>fQsyN~+yDe0|J{_Ze8#({WMn z(`qV-z#kIOi_QemvmaN_z#>y7Y8_6!3;2&SRVfcGSP_)5nGIE7VRNNCOVZl&U;pHH za|{Oi`rcin1N{{efVDu->Vb!p(%hz;zC-f`#@twc@UO@Oo|jPr_nT;_NzMl+zfNQy zM$B}CT{@;*p3Q-|g#^Qgz>P1LX#Yo$7b|eXaM&HS!di!1L4G^LMv50!`vegPc^vaI zn(kV>!XDs`FWet~q}g6b3h7^x-?|S>cIS-1$H~M!y!P#>JF^$eGL=5E0E2~bL(LrB z+%9=7kLN8KZa=}Ma;mQHT_p%e$3jhFqOmMh23`G+fhib{4=PHdx!}Fb&5x!5o|iYv z&QP7I`KBmbsxA0>P*8xm`6fJKqbNFpwkY)r(%+Z&5odgl!q(X(nhJ;SuD9MEY(eI2 zdb*^L#BgnHJ2`6^KNC^*d)exPn^iD`cL?~sS6lhJeJl$y{VYwR9s{E3A+t_xrf*%h z2LE{f5H^(kx1C0(r>6-mt2s;9l`Eug0L)-`*OkeHSO3KnLJjmA6GQ`yoN@;BeiRa2 zTUjysH=OJl4%}aHzFpmJdlQ)%?$jIaUUIMci2>Wg%ZoUkMnX*@9i*XdV$gkE&m0=wC;k`#7uNwJ)UE@oEy%uqwQM*6GgGAV4<<|hqD zbT<|E$zQW_B*0s>6)eo(3Raz%Fnbx_d{HuV-DG?6F(?RLR56zE#jT~NZbh1AMFIuO z7yYqsTmB{`G3SguCTZ?S-vJB=HIR5lK%vSkXIn-sTLva3t>mwYk>&zY#!7cdhXLgO ze1Z=u#wQ{1%mtD}ld5lUUhii6CqC&+PEOWfCfcZJTT?;}LITJE3v=@ViMB@ie{I)X zNWI#Bn*fw!ujeY~Or>@C#GXiQUbpH4QgAd3oXU;!Z<8hvim|-DW>vEg5*1e!&b&8c z=kvHeX3kPo4dWzl37&mhil1EAlK->6f9vh+Hg_~~hsd>@NmxTr0=bgU?b9G&vOw9sT%i(vo`G)hDg{HQa9@;HDOurHIz_i1W+iQEVH zWD*TOemvk<##T`KWHHd+U>Ur~RM{i^5jBPd+Q2rw?I#CSBT1^qR061iwW-f$MAy;L z(VRKyl!r);9rOwps26~YL=K}N4ANHKJn@*6;38`OW8x$|v$XoWYwL&?p=~2tN*G4Hlb>|D>^0N&|O#3UpVFF-+xaDV`0{qs4E=ck#S z-6(Ry+|!Mkg7MCMkn^7BGsF$xyYNArjCI=of_e47QK9t@hgEfJKZPamhg~Dw13@}< z!7MDhYj5L~K}jrf7TZQTQYES6*A@<4V4b}Hu7R2*^k6pu)P^7BT1~DzBoiN>?-M3% zfOSS_awI z_*fPWobY!wnZVCXg z=JM=ZCG$XM5yzGcYUAbzmCfXxdlTc)?}&DM-_505GTZaK%N2x(gCB3Tl`F9P`Sk88 z6B(oen6Ov)c9~oU1Tn^MN2j<1U)>5$A#gz>%76JLojI&!Nw9Z$XT3~nQ-2c1*k^o; zixZa+5V(fDkEaA*cXchT$Kwz!2&MtuP(dOR5$?waPYC!1oNiYy$T z$v8Mjme* zFZNo%U|E>I^nY<-0qf~Nd^q{~^=lq53H^+#`*w)y-LTHfeGZNn5uVs1OcIFE0H7P} z&iTaa9*@j2mNlIl$8&~L^~>N1sC9m)J4gs?;z}$N3R`CTG%H*x@-~CJH`;|3yAZIa@-P_yy@zDfq-8yeCPAxZ+lM4fr z@<`jDqwKy!lVE9U>_u0I--;Ed;zUm!xwb2)rMTm-PMJuEYz_8v%#VJpT^zRuL76ByM zpvI2H8VK@sbc2D=D^@A|*fb>uVL`!GZs0+1;O_)>8`M0VpLU)(^<1r?^Co1mJ<}Lq W)xRB|QWOUPKZ2:1.0.3
3:1.0.3
4:1.0.4 | +| TSL Version | 0xDF | 3 | r | | | | +| Product Name | 0xDE | 33 | rw | | | | +| PN | 0xDD | 33 | rw | | | | +| SN | 0xDB | 9 | r | | | | +| Product Version | 0xDA | 9 | r | | | | +| Hardware Version | 0xDA | 3 | r | | | | +| Firmware Version | 0xDA | 7 | r | | | | +| OEM ID | 0xD9 | 3 | rw | | | | +| Product Region | 0xD8 | 17 | r | | | | +| Device Information | 0xD7 | M | r | | | | +| Temperature | 0x01 | 3 | r | | -20 - 100 | | +| Voltage Three-phase Unbalance | 0x02 | 3 | r | | 0 - 100 | | +| THDi | 0x03 | 25 | r | | | | +| THDi | 0x03 | 3 | r | | | | +| THDi | 0x03 | 3 | r | 0 | 0 - 100 | | +| THDv | 0x04 | 7 | r | | | | +| THDv | 0x04 | 3 | r | | | | +| THDv | 0x04 | 3 | r | 0 | 0 - 100 | | +| Current(RMS) | 0x05 | 37 | r | | | | +| Current(RMS) | 0x05 | 4 | r | | | | +| Current(RMS) | 0x05 | 4 | r | 0 | 0 - 4000 | | +| Voltage(RMS) | 0x06 | 7 | r | | | | +| Voltage(RMS) | 0x06 | 3 | r | | | | +| Voltage(RMS) | 0x06 | 3 | r | 0 | 0 - 500 | | +| Power Factor | 0x07 | 1 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor a | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor1 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor2 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor3 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factorb | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor4 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor5 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor6 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor c | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor7 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor8 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor9 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor d | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor10 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor11 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor12 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Active Power | 0x08 | 1 | r | | | | +| Active Power | 0x08 | 2 | r | | | | +| Active Power | 0x08 | 2 | r | | | | +| Active Power a | 0x08 | 5 | r | 0 | | | +| Active Power | 0x08 | 9 | r | | | | +| Active Power1 | 0x08 | 5 | r | 0 | | | +| Active Power2 | 0x08 | 5 | r | 0 | | | +| Active Power3 | 0x08 | 5 | r | 0 | | | +| Active Power b | 0x08 | 5 | r | 0 | | | +| Active Power | 0x08 | 9 | r | | | | +| Active Power4 | 0x08 | 5 | r | 0 | | | +| Active Power5 | 0x08 | 5 | r | 0 | | | +| Active Power6 | 0x08 | 5 | r | 0 | | | +| Active Power | 0x09 | 1 | r | | | | +| Active Power | 0x09 | 2 | r | | | | +| Active Power | 0x09 | 2 | r | | | | +| Active Power c | 0x09 | 5 | r | 0 | | | +| Active Power | 0x09 | 9 | r | | | | +| Active Power7 | 0x09 | 5 | r | 0 | | | +| Active Power8 | 0x09 | 5 | r | 0 | | | +| Active Power9 | 0x09 | 5 | r | 0 | | | +| Active Power d | 0x09 | 5 | r | 0 | | | +| Active Power | 0x09 | 9 | r | | | | +| Active Power10 | 0x09 | 5 | r | 0 | | | +| Active Power11 | 0x09 | 5 | r | 0 | | | +| Active Power12 | 0x09 | 5 | r | 0 | | | +| Reactive Power | 0x0A | 1 | r | | | | +| Reactive Power | 0x0A | 2 | r | | | | +| Reactive Power | 0x0A | 2 | r | | | | +| Reactive Power a | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0A | 9 | r | | | | +| Reactive Power1 | 0x0A | 5 | r | 0 | | | +| Reactive Power2 | 0x0A | 5 | r | 0 | | | +| Reactive Power3 | 0x0A | 5 | r | 0 | | | +| Reactive Power b | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0A | 9 | r | | | | +| Reactive Power4 | 0x0A | 5 | r | 0 | | | +| Reactive Power5 | 0x0A | 5 | r | 0 | | | +| Reactive Power6 | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0B | 1 | r | | | | +| Reactive Power | 0x0B | 2 | r | | | | +| Reactive Power | 0x0B | 2 | r | | | | +| Reactive Power c | 0x0B | 5 | r | 0 | | | +| Reactive Power | 0x0B | 9 | r | | | | +| Reactive Power7 | 0x0B | 5 | r | 0 | | | +| Reactive Power8 | 0x0B | 5 | r | 0 | | | +| Reactive Power9 | 0x0B | 5 | r | 0 | | | +| Reactive Power d | 0x0B | 5 | r | 0 | | | +| Reactive Power | 0x0B | 9 | r | | | | +| Reactive Power10 | 0x0B | 5 | r | 0 | | | +| Reactive Power11 | 0x0B | 5 | r | 0 | | | +| Reactive Power12 | 0x0B | 5 | r | 0 | | | +| Apparent Power | 0x0C | 1 | r | | | | +| Apparent Power | 0x0C | 2 | r | | | | +| Apparent Power | 0x0C | 2 | r | | | | +| Apparent Power a | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0C | 9 | r | | | | +| Apparent Power1 | 0x0C | 5 | r | 0 | | | +| Apparent Power2 | 0x0C | 5 | r | 0 | | | +| Apparent Power3 | 0x0C | 5 | r | 0 | | | +| Apparent Power b | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0C | 9 | r | | | | +| Apparent Power4 | 0x0C | 5 | r | 0 | | | +| Apparent Power5 | 0x0C | 5 | r | 0 | | | +| Apparent Power6 | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0D | 1 | r | | | | +| Apparent Power | 0x0D | 2 | r | | | | +| Apparent Power | 0x0D | 2 | r | | | | +| Apparent Power c | 0x0D | 5 | r | 0 | | | +| Apparent Power | 0x0D | 9 | r | | | | +| Apparent Power7 | 0x0D | 5 | r | 0 | | | +| Apparent Power8 | 0x0D | 5 | r | 0 | | | +| Apparent Power9 | 0x0D | 5 | r | 0 | | | +| Apparent Power d | 0x0D | 5 | r | 0 | | | +| Apparent Power | 0x0D | 9 | r | | | | +| Apparent Power10 | 0x0D | 5 | r | 0 | | | +| Apparent Power11 | 0x0D | 5 | r | 0 | | | +| Apparent Power12 | 0x0D | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 1 | r | | | | +| Imported Active Energy | 0x0E | 2 | r | | | | +| Imported Active Energy | 0x0E | 2 | r | | | | +| Imported Active Energy a | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 9 | r | | | | +| Imported Active Energy1 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy2 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy3 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy b | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 9 | r | | | | +| Imported Active Energy4 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy5 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy6 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 1 | r | | | | +| Imported Active Energy | 0x0F | 2 | r | | | | +| Imported Active Energy | 0x0F | 2 | r | | | | +| Imported Active Energy c | 0x0F | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 9 | r | | | | +| Imported Active Energy7 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy8 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy9 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy d | 0x0F | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 9 | r | | | | +| Imported Active Energy10 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy11 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy12 | 0x0F | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 1 | r | | | | +| Exported Active Energy | 0x10 | 2 | r | | | | +| Exported Active Energy | 0x10 | 2 | r | | | | +| Exported Active Energy a | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 9 | r | | | | +| Exported Active Energy1 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy2 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy3 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy b | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 9 | r | | | | +| Exported Active Energy4 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy5 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy6 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 1 | r | | | | +| Exported Active Energy | 0x11 | 2 | r | | | | +| Exported Active Energy | 0x11 | 2 | r | | | | +| Exported Active Energy c | 0x11 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 9 | r | | | | +| Exported Active Energy7 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy8 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy9 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy d | 0x11 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 9 | r | | | | +| Exported Active Energy10 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy11 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy12 | 0x11 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 1 | r | | | | +| Imported Reactive Energy | 0x12 | 2 | r | | | | +| Imported Reactive Energy | 0x12 | 2 | r | | | | +| Imported Reactive Energy a | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 9 | r | | | | +| Imported Reactive Energy1 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy2 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy3 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy b | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 9 | r | | | | +| Imported Reactive Energy4 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy5 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy6 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 1 | r | | | | +| Imported Reactive Energy | 0x13 | 2 | r | | | | +| Imported Reactive Energy | 0x13 | 2 | r | | | | +| Imported Reactive Energy c | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 9 | r | | | | +| Imported Reactive Energy7 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy8 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy9 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy d | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 9 | r | | | | +| Imported Reactive Energy10 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy11 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy12 | 0x13 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 1 | r | | | | +| Exported Reactive Energy | 0x14 | 2 | r | | | | +| Exported Reactive Energy | 0x14 | 2 | r | | | | +| Exported Reactive Energy a | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 9 | r | | | | +| Exported Reactive Energy1 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy2 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy3 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy b | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 9 | r | | | | +| Exported Reactive Energy4 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy5 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy6 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x15 | 1 | r | | | | +| Exported Reactive Energy | 0x15 | 2 | r | | | | +| Exported Reactive Energy | 0x15 | 2 | r | | | | +| Exported Reactive Energy | 0x15 | 9 | r | | | | +| Exported Reactive Energy7 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy8 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy9 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy d | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x15 | 9 | r | | | | +| Exported Reactive Energy10 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy11 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy12 | 0x15 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 1 | r | | | | +| Apparent Energy | 0x16 | 2 | r | | | | +| Apparent Energy | 0x16 | 2 | r | | | | +| Apparent Energy a | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 9 | r | | | | +| Apparent Energy1 | 0x16 | 5 | r | 0 | | | +| Apparent Energy2 | 0x16 | 5 | r | 0 | | | +| Apparent Energy3 | 0x16 | 5 | r | 0 | | | +| Apparent Energy b | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 9 | r | | | | +| Apparent Energy4 | 0x16 | 5 | r | 0 | | | +| Apparent Energy5 | 0x16 | 5 | r | 0 | | | +| Apparent Energy6 | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 1 | r | | | | +| Apparent Energy | 0x17 | 2 | r | | | | +| Apparent Energy | 0x17 | 2 | r | | | | +| Apparent Energy c | 0x17 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 9 | r | | | | +| Apparent Energy7 | 0x17 | 5 | r | 0 | | | +| Apparent Energy8 | 0x17 | 5 | r | 0 | | | +| Apparent Energy9 | 0x17 | 5 | r | 0 | | | +| Apparent Energy d | 0x17 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 9 | r | | | | +| Apparent Energy10 | 0x17 | 5 | r | 0 | | | +| Apparent Energy11 | 0x17 | 5 | r | 0 | | | +| Apparent Energy12 | 0x17 | 5 | r | 0 | | | +| Historical Data Type | 0x40 | 2 | r | | | | +| Historical Data Type | 0x40 | 2 | r | 1 | | 1:month energy
2:month min
3:month max | +| Collecting Interval | 0x60 | 1 | rw | | | | +| Collecting Interval Unit | 0x60 | 2 | rw | 0 | | 0:second
1:min | +| Collecting Interval | 0x60 | 3 | rw | 30 | 10 - 64800 | | +| Collecting Interval | 0x60 | 3 | rw | 1 | 1 - 1440 | | +| Report Interval | 0x61 | 1 | rw | | | | +| Report Interval Unit | 0x61 | 2 | rw | 1 | | 0:second
1:min | +| Report Interval | 0x61 | 3 | rw | 30 | 10 - 64800 | | +| Report Interval | 0x61 | 3 | rw | 1 | 1 - 1440 | | +| Device Status | 0xC8 | 2 | rw | 0 | | 0:Power Off
1:Power On | +| Temperature Unit | 0x63 | 2 | rw | 0 | | 0:℃
1:℉ | +| Bluetooth Name | 0x64 | 1 | rw | | | | +| Name Length | 0x64 | 2 | rw | 13 | 1 - 13 | | +| Name | 0x64 | 1 | rw | | | | +| Data Storage Settings | 0xC5 | 1 | rw | | | | +| Sub-command | 0xC5 | 2 | rw | 0 | | | +| Data Storage Enable | 0xC5 | 2 | rw | 0 | | 0:disable
1:enable | +| Data Retransmission Enable | 0xC5 | 2 | rw | 0 | | 0:disable
1:enable | +| Retransmission Interval | 0xC5 | 3 | rw | 600 | 30 - 1200 | | +| Retrieval Interval | 0xC5 | 3 | rw | 60 | 30 - 1200 | | +| Voltage Channel | 0x66 | 2 | rw | 0 | | 0:four_wire
1:three_wire | +| Group a | 0x67 | 1 | rw | | | | +| Circuit Type | 0x67 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x67 | 10 | rw | | | | +| Current Channel Configuration | 0x67 | 4 | rw | | | | +| Current Direction | 0x67 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x67 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group b | 0x68 | 1 | rw | | | | +| Circuit Type | 0x68 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x68 | 10 | rw | | | | +| Current Channel Configuration | 0x68 | 4 | rw | | | | +| Current Direction | 0x68 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x68 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group c | 0x69 | 1 | rw | | | | +| Circuit Type | 0x69 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x69 | 10 | rw | | | | +| Current Channel Configuration | 0x69 | 4 | rw | | | | +| Current Direction | 0x69 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x69 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group d | 0x6A | 1 | rw | | | | +| Circuit Type | 0x6A | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x6A | 10 | rw | | | | +| Current Channel Configuration | 0x6A | 4 | rw | | | | +| Current Direction | 0x6A | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x6A | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Temperature Calibration Settings | 0x6B | 4 | rw | | | | +| Temperature Calibration | 0x6B | 2 | rw | 0 | | 0:disable
1:enable | +| Calibration Value | 0x6B | 3 | rw | 0 | -120 - 120 | | +| Time Zone | 0xC7 | 3 | rw | 0 | | -720:UTC-12(IDLW)
-660:UTC-11(SST)
-600:UTC-10(HST)
-570:UTC-9:30(MIT)
-540:UTC-9(AKST)
-480:UTC-8(PST)
-420:UTC-7(MST)
-360:UTC-6(CST)
-300:UTC-5(EST)
-240:UTC-4(AST)
-210:UTC-3:30(NST)
-180:UTC-3(BRT)
-120:UTC-2(FNT)
-60:UTC-1(CVT)
0:UTC(WET)
60:UTC+1(CET)
120:UTC+2(EET)
180:UTC+3(MSK)
210:UTC+3:30(IRST)
240:UTC+4(GST)
270:UTC+4:30(AFT)
300:UTC+5(PKT)
330:UTC+5:30(IST)
345:UTC+5:45(NPT)
360:UTC+6(BHT)
390:UTC+6:30(MMT)
420:UTC+7(ICT)
480:UTC+8(CT/CST)
540:UTC+9(JST)
570:UTC+9:30(ACST)
600:UTC+10(AEST)
630:UTC+10:30(LHST)
660:UTC+11(VUT)
720:UTC+12(NZST)
765:UTC+12:45(CHAST)
780:UTC+13(PHOT)
840:UTC+14(LINT) | +| Daylight Saving Time | 0xC6 | M | rw | | | | +| Daylight Saving Time | 0xC6 | 2 | rw | 0 | | 0:disable
1:enable | +| DST Bias | 0xC6 | 2 | rw | 60 | 0 - 120 | | +| Month | 0xC6 | 2 | rw | 1 | | 1:Jan.
2:Feb.
3:Mar.
4:Apr.
5:May
6:Jun.
7:Jul.
8:Aug.
9:Sep.
10:Oct.
11:Nov.
12:Dec. | +| Number of Week | 0xC6 | 2 | rw | 1 | | 1:1st
2: 2nd
3: 3rd
4: 4th
5: last | +| Week | 0xC6 | 2 | rw | 1 | | 1:Mon.
2:Tues.
3:Wed.
4:Thurs.
5:Fri.
6:Sat.
7:Sun. | +| Time | 0xC6 | 3 | rw | 0 | | 0:00:00
60:01:00
120:02:00
180:03:00
240:04:00
300:05:00
360:06:00
420:07:00
480:08:00
540:09:00
600:10:00
660:11:00
720:12:00
780:13:00
840:14:00
900:15:00
960:16:00
1020:17:00
1080:18:00
1140:19:00
1200:20:00
1260:21:00
1320:22:00
1380:23:00 | +| Month | 0xC6 | 2 | rw | 1 | | 1:Jan.
2:Feb.
3:Mar.
4:Apr.
5:May
6:Jun.
7:Jul.
8:Aug.
9:Sep.
10:Oct.
11:Nov.
12:Dec. | +| Number of Week | 0xC6 | 2 | rw | 1 | | 1:1st
2: 2nd
3: 3rd
4: 4th
5: last | +| Week | 0xC6 | 2 | rw | 1 | | 1:Mon.
2:Tues.
3:Wed.
4:Thurs.
5:Fri.
6:Sat.
7:Sun. | +| Time | 0xC6 | 3 | rw | 0 | | 0:00:00
60:01:00
120:02:00
180:03:00
240:04:00
300:05:00
360:06:00
420:07:00
480:08:00
540:09:00
600:10:00
660:11:00
720:12:00
780:13:00
840:14:00
900:15:00
960:16:00
1020:17:00
1080:18:00
1140:19:00
1200:20:00
1260:21:00
1320:22:00
1380:23:00 | +| Temperature Threshold Alarm Settings | 0x76 | 7 | rw | | | | +| Threshold Alarm Enable | 0x76 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x76 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x76 | 3 | rw | 0 | -20 - 100 | | +| Value B | 0x76 | 3 | rw | 0 | -20 - 100 | | +| Current Threshold Alarm Settings | 0x77 | 1 | rw | | | | +| Current Threshold Alarm | 0x77 | 8 | rw | | | | +| Threshold Alarm Channel | 0x77 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x77 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x77 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x77 | 3 | rw | 0 | 0 - 4000 | | +| Value B | 0x77 | 3 | rw | 0 | 0 - 4000 | | +| Voltage Threshold Alarm Settings | 0x78 | 1 | rw | | | | +| Voltage Threshold Alarm | 0x78 | 8 | rw | | | | +| Threshold Alarm Channel | 0x78 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x78 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x78 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x78 | 3 | rw | 0 | 0 - 500 | | +| Value B | 0x78 | 3 | rw | 0 | 0 - 500 | | +| THDi Threshold Alarm Settings | 0x79 | 8 | rw | | | | +| THDi Threshold Alarm | 0x79 | 8 | rw | | | | +| Threshold Alarm Channel | 0x79 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x79 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x79 | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x79 | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x79 | 3 | rw | 8 | 1 - 100 | | +| THDv Threshold Alarm Settings | 0x7A | 8 | rw | | | | +| THDv Threshold Alarm | 0x7A | 8 | rw | | | | +| Threshold Alarm Channel | 0x7A | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x7A | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x7A | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x7A | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x7A | 3 | rw | 5 | 1 - 100 | | +| Voltage Three-phase Unbalance Threshold Alarm Settings | 0x7B | 7 | rw | | | | +| Threshold Alarm Enable | 0x7B | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x7B | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x7B | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x7B | 3 | rw | 3 | 1 - 100 | | +| Threshold Alarm Global Settings | 0x7C | 1 | rw | | | | +| Alarm Interval | 0x7C | 3 | rw | 5 | 1 - 1440 | | +| Alarm Times | 0x7C | 3 | rw | 3 | 1 - 1000 | | +| Threshold Released Report Enable | 0x7C | 2 | rw | 0 | | 0:disable
1:enable | +| Monthly Statistics Time | 0x6D | 1 | rw | | | | +| day | 0x6D | 2 | rw | 1 | 1 - 28 | | +| hour | 0x6D | 2 | rw | 0 | 0 - 23 | | +| minute | 0x6D | 2 | rw | 0 | 0 - 59 | | +| Report Parameters | 0x6C | 3 | rw | | | | +| Temperature | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Current(RMS) | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Voltage(RMS) | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Power Factor | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Active Power | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| ReActive Power | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Apparent Power | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Imported Active Energy | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Exported Active Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Imported Reactive Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Exported Reactive Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Apparent Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| THDi | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| THDv | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Voltage Three-phase Unbalance | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | + +### Event + +| CHANNEL | ID | LENGTH | READ/WRITE | DEFAULT | RANGE | ENUM | +| :------ | :--: | :----: | :--------: | :-----: | :---: | :--: | +| Sequence Number Check Response | 0xFF | 2 | r | | | | +| Order Check Response | 0xFE | 2 | r | | | | +| Command Response | 0xEF | 1 | r | | | | +| Request to Push All Configurations | 0xEE | 1 | r | | | | +| Historical Data | 0xED | 6 | r | | | | +| Temperature Threshold Alarm | 0x30 | 1 | r | | | | +| Current Threshold Alarm | 0x31 | 1 | r | | | | +| Voltage Threshold Alarm | 0x32 | 1 | r | | | | +| THDi Threshold Alarm | 0x33 | 1 | r | | | | +| THDv Threshold Alarm | 0x34 | 1 | r | | | | +| Voltage Three-phase Unbalance Threshold Alarm | 0x35 | 1 | r | | | | +| Power Failure Alarm | 0x36 | 1 | r | | | | + +### Service + +| CHANNEL | ID | LENGTH | READ/WRITE | DEFAULT | RANGE | ENUM | +| :------ | :--: | :----: | :--------: | :-----: | :---: | :--: | +| Sequence Number Check | 0xFF | 2 | w | | | | +| Sequence Number | 0xFF | 2 | w | 0 | 0 - 255 | | +| Sequence Number | 0xFF | 2 | r | 0 | 0 - 255 | | +| Order Check | 0xFE | 2 | w | | | | +| Order | 0xFE | 2 | w | 0 | 0 - 255 | | +| Command Queries | 0xEF | 1 | w | | | | +| Query Information | 0xEF | 2 | w | | | | +| Command Length | 0xEF | 2 | w | 1 | 1 - 15 | | +| The command that was queried | 0xEF | 1 | w | | | | +| Answer Result | 0xEF | 2 | r | 0 | | 0:success
1:unknow
2:error order
3:error passwd
4:error read params
5:error write params
6:error read
7:error write
8:error read apply
9:error write apply | +| Command Length | 0xEF | 2 | r | 1 | 1 - 15 | | +| Answered Commands | 0xEF | 1 | r | | | | +| Request to Query All Configurations | 0xEE | 1 | w | | | | +| Historical Data Mode | 0xED | 2 | r | | | 0:target time
1:historical time | +| Historical Data Timestamps | 0xED | 5 | r | | | | +| Alarm Type | 0x30 | 2 | r | | | | +| Collection Error | 0x30 | 1 | r | | | | +| Overrange (Lower Limit) | 0x30 | 1 | r | | | | +| Overrange (Upper Limit) | 0x30 | 1 | r | | | | +| No Data | 0x30 | 1 | r | | | | +| Temperature Below Threshold Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Below Threshold Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Exceeds Threshold Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Exceeds Threshold Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Between Thresholds Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Between Thresholds Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Outside Thresholds Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Outside Thresholds Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Alarm Channel | 0x31 | 2 | r | | 0 - 11 | | +| Current Threshold Alarm Info | 0x31 | 1 | r | | | | +| Alarm Type | 0x31 | 2 | r | | | | +| Collection Error | 0x31 | 1 | r | | | | +| Overrange (Lower Limit) | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Overrange (Upper Limit) | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| No Data | 0x31 | 1 | r | | | | +| Overrange Release | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Below Threshold Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Below Threshold Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Exceeds Threshold Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Exceeds Threshold Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current in-Range Thresholds Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current in-Range Thresholds Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Out-of-Range Thresholds Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Out-of-Range Thresholds Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Alarm Channel | 0x32 | 2 | r | | 0 - 11 | | +| Voltage Threshold Alarm Info | 0x32 | 1 | r | | | | +| Alarm Type | 0x32 | 2 | r | | | | +| Collection Error | 0x32 | 1 | r | | | | +| Overrange (Lower Limit) | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Overrange (Upper Limit) | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| No Data | 0x32 | 1 | r | | | | +| Overrange Release | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Below Threshold Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Below Threshold Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Exceeds Threshold Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Exceeds Threshold Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage in-Range Thresholds Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage in-Range Thresholds Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Out-of-Range Thresholds Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Out-of-Range Thresholds Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Alarm Channel | 0x33 | 2 | r | | 0 - 11 | | +| THDi Threshold Alarm Info | 0x33 | 1 | r | | | | +| Alarm Type | 0x33 | 2 | r | | | | +| Collection Error | 0x33 | 1 | r | | | | +| THDi Exceeds Threshold Alarm Released | 0x33 | 3 | r | | | | +| THDi | 0x33 | 3 | r | | | | +| THDi Exceeds Threshold Alarm | 0x33 | 3 | r | | | | +| THDi | 0x33 | 3 | r | | | | +| Alarm Channel | 0x34 | 2 | r | | 0 - 11 | | +| THDv Threshold Alarm Info | 0x34 | 1 | r | | | | +| Alarm Type | 0x34 | 2 | r | | | | +| Collection Error | 0x34 | 1 | r | | | | +| THDv Exceeds Threshold Alarm Released | 0x34 | 3 | r | | | | +| THDv | 0x34 | 3 | r | | | | +| THDv Exceeds Threshold Alarm | 0x34 | 3 | r | | | | +| THDv | 0x34 | 3 | r | | | | +| Alarm Type | 0x35 | 2 | r | | | | +| Collection Error | 0x35 | 1 | r | | | | +| Voltage Three-phase Unbalance Exceeds Threshold Alarm Released | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance Exceeds Threshold Alarm | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance | 0x35 | 3 | r | | | | +| Reset | 0xBF | 1 | w | | | | +| Reboot | 0xBE | 1 | w | | | | +| Stop Retrieval | 0x5D | 1 | w | | | | +| Stop Retrieval | 0x5D | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Retrieval (Time Period) | 0x5B | 6 | w | | | | +| Type | 0x5B | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Time Point | 0x5B | 5 | w | | | | +| Retrieval (Time Period) | 0x5C | 10 | w | | | | +| Type | 0x5C | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Start Time | 0x5C | 5 | w | | | | +| End Time | 0x5C | 5 | w | | | | +| Query Device Status | 0xB9 | 1 | w | | | | +| Time Synchronize | 0xB8 | 1 | w | | | | +| Time Synchronize | 0xB7 | 5 | w | | | | +| Timestamp | 0xB7 | 5 | w | | | | +| Network Reconnection | 0xB6 | 1 | w | | | | +| Clear Cumulative Energy Consumption | 0x5F | 2 | w | | | | +| Channel Number | 0x5F | 2 | w | 0 | 0 - 12 | | +| Clear Historical Data | 0x5E | 2 | w | | | | +| Data Type to Clear | 0x5E | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Query Data Storage Configuration | 0x57 | 1 | w | | | | + diff --git a/vendors/milesight-iot/cth-series/cth01/cth01-codec.json b/vendors/milesight-iot/cth-series/cth01/cth01-codec.json new file mode 100644 index 0000000..9f323e6 --- /dev/null +++ b/vendors/milesight-iot/cth-series/cth01/cth01-codec.json @@ -0,0 +1,7037 @@ +{ + "version": "1.0.0", + "object": [ + { + "id": "active_power1.group1_value", + "name": "Active Power a(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.group1.chan1", + "name": "Active Power1(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan2", + "active_power1.group1.chan3" + ] + }, + { + "id": "active_power1.group1.chan2", + "name": "Active Power2(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan1", + "active_power1.group1.chan3" + ] + }, + { + "id": "active_power1.group1.chan3", + "name": "Active Power3(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan1", + "active_power1.group1.chan2" + ] + }, + { + "id": "active_power1.group2_value", + "name": "Active Power b(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.group2.chan1", + "name": "Active Power4(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan2", + "active_power1.group2.chan3" + ] + }, + { + "id": "active_power1.group2.chan2", + "name": "Active Power5(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan1", + "active_power1.group2.chan3" + ] + }, + { + "id": "active_power1.group2.chan3", + "name": "Active Power6(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan1", + "active_power1.group2.chan2" + ] + }, + { + "id": "active_power1.mask1", + "name": "Active Power(Active Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power a" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power b" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.mask2", + "name": "Active Power(Active Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power a" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power b" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "active_power2.group1_value", + "name": "Active Power c(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.group1.chan1", + "name": "Active Power7(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan2", + "active_power2.group1.chan3" + ] + }, + { + "id": "active_power2.group1.chan2", + "name": "Active Power8(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan1", + "active_power2.group1.chan3" + ] + }, + { + "id": "active_power2.group1.chan3", + "name": "Active Power9(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan1", + "active_power2.group1.chan2" + ] + }, + { + "id": "active_power2.group2_value", + "name": "Active Power d(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.group2.chan1", + "name": "Active Power10(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan2", + "active_power2.group2.chan3" + ] + }, + { + "id": "active_power2.group2.chan2", + "name": "Active Power11(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan1", + "active_power2.group2.chan3" + ] + }, + { + "id": "active_power2.group2.chan3", + "name": "Active Power12(Active Power)", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan1", + "active_power2.group2.chan2" + ] + }, + { + "id": "active_power2.mask1", + "name": "Active Power(Active Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power c" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power d" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.mask2", + "name": "Active Power(Active Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power c" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power d" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "alarm_global_settings.interval", + "name": "Alarm Interval(Threshold Alarm Global Settings)", + "value": "5", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1440 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "alarm_global_settings.times", + "alarm_global_settings.release_enable" + ] + }, + { + "id": "alarm_global_settings.release_enable", + "name": "Threshold Released Report Enable(Threshold Alarm Global Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "alarm_global_settings.interval", + "alarm_global_settings.times" + ] + }, + { + "id": "alarm_global_settings.times", + "name": "Alarm Times(Threshold Alarm Global Settings)", + "value": "3", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1000 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "alarm_global_settings.interval", + "alarm_global_settings.release_enable" + ] + }, + { + "id": "apparent_energy1.group1_value", + "name": "Apparent Energy a(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.group1.chan1", + "name": "Apparent Energy1(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan2", + "apparent_energy1.group1.chan3" + ] + }, + { + "id": "apparent_energy1.group1.chan2", + "name": "Apparent Energy2(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan1", + "apparent_energy1.group1.chan3" + ] + }, + { + "id": "apparent_energy1.group1.chan3", + "name": "Apparent Energy3(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan1", + "apparent_energy1.group1.chan2" + ] + }, + { + "id": "apparent_energy1.group2_value", + "name": "Apparent Energy b(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.group2.chan1", + "name": "Apparent Energy4(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan2", + "apparent_energy1.group2.chan3" + ] + }, + { + "id": "apparent_energy1.group2.chan2", + "name": "Apparent Energy5(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan1", + "apparent_energy1.group2.chan3" + ] + }, + { + "id": "apparent_energy1.group2.chan3", + "name": "Apparent Energy6(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan1", + "apparent_energy1.group2.chan2" + ] + }, + { + "id": "apparent_energy1.mask1", + "name": "Apparent Energy(Apparent Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy a" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy b" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.mask2", + "name": "Apparent Energy(Apparent Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy a" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy b" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_energy2.group1_value", + "name": "Apparent Energy c(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.group1.chan1", + "name": "Apparent Energy7(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan2", + "apparent_energy2.group1.chan3" + ] + }, + { + "id": "apparent_energy2.group1.chan2", + "name": "Apparent Energy8(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan1", + "apparent_energy2.group1.chan3" + ] + }, + { + "id": "apparent_energy2.group1.chan3", + "name": "Apparent Energy9(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan1", + "apparent_energy2.group1.chan2" + ] + }, + { + "id": "apparent_energy2.group2_value", + "name": "Apparent Energy d(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.group2.chan1", + "name": "Apparent Energy10(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan2", + "apparent_energy2.group2.chan3" + ] + }, + { + "id": "apparent_energy2.group2.chan2", + "name": "Apparent Energy11(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan1", + "apparent_energy2.group2.chan3" + ] + }, + { + "id": "apparent_energy2.group2.chan3", + "name": "Apparent Energy12(Apparent Energy)", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan1", + "apparent_energy2.group2.chan2" + ] + }, + { + "id": "apparent_energy2.mask1", + "name": "Apparent Energy(Apparent Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy c" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy d" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.mask2", + "name": "Apparent Energy(Apparent Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy c" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy d" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_power1.group1_value", + "name": "Apparent Power a(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.group1.chan1", + "name": "Apparent Power1(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan2", + "apparent_power1.group1.chan3" + ] + }, + { + "id": "apparent_power1.group1.chan2", + "name": "Apparent Power2(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan1", + "apparent_power1.group1.chan3" + ] + }, + { + "id": "apparent_power1.group1.chan3", + "name": "Apparent Power3(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan1", + "apparent_power1.group1.chan2" + ] + }, + { + "id": "apparent_power1.group2_value", + "name": "Apparent Power b(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.group2.chan1", + "name": "Apparent Power4(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan2", + "apparent_power1.group2.chan3" + ] + }, + { + "id": "apparent_power1.group2.chan2", + "name": "Apparent Power5(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan1", + "apparent_power1.group2.chan3" + ] + }, + { + "id": "apparent_power1.group2.chan3", + "name": "Apparent Power6(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan1", + "apparent_power1.group2.chan2" + ] + }, + { + "id": "apparent_power1.mask1", + "name": "Apparent Power(Apparent Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power a" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power b" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.mask2", + "name": "Apparent Power(Apparent Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power a" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power b" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_power2.group1_value", + "name": "Apparent Power c(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.group1.chan1", + "name": "Apparent Power7(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan2", + "apparent_power2.group1.chan3" + ] + }, + { + "id": "apparent_power2.group1.chan2", + "name": "Apparent Power8(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan1", + "apparent_power2.group1.chan3" + ] + }, + { + "id": "apparent_power2.group1.chan3", + "name": "Apparent Power9(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan1", + "apparent_power2.group1.chan2" + ] + }, + { + "id": "apparent_power2.group2_value", + "name": "Apparent Power d(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.group2.chan1", + "name": "Apparent Power10(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan2", + "apparent_power2.group2.chan3" + ] + }, + { + "id": "apparent_power2.group2.chan2", + "name": "Apparent Power11(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan1", + "apparent_power2.group2.chan3" + ] + }, + { + "id": "apparent_power2.group2.chan3", + "name": "Apparent Power12(Apparent Power)", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan1", + "apparent_power2.group2.chan2" + ] + }, + { + "id": "apparent_power2.mask1", + "name": "Apparent Power(Apparent Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power c" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power d" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.mask2", + "name": "Apparent Power(Apparent Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power c" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power d" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "bluetooth_name.content", + "name": "Name(Bluetooth Name)", + "value": "", + "unit": "", + "access_mode": "RW", + "data_type": "TEXT", + "value_type": "STRING", + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "max_length": 13, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "bluetooth_name.length" + ] + }, + { + "id": "bluetooth_name.length", + "name": "Name Length(Bluetooth Name)", + "value": "13", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 13 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "bluetooth_name.content" + ] + }, + { + "id": "celsius_temperature", + "name": "Celsius Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS" + }, + { + "id": "clear_data.type", + "name": "Data Type to Clear(Clear Historical Data)", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_alarm.channel", + "name": "Alarm Channel(Current Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "current_alarm.info.exceed_range_alarm_deactivation.current", + "current_alarm.info.exceed_range_alarm_trigger.current", + "current_alarm.info.lower_range_alarm_deactivation.current", + "current_alarm.info.lower_range_alarm_trigger.current", + "current_alarm.info.lower_range_error.current", + "current_alarm.info.over_range_alarm_deactivation.current", + "current_alarm.info.over_range_alarm_trigger.current", + "current_alarm.info.over_range_error.current", + "current_alarm.info.over_range_release.current", + "current_alarm.info.type", + "current_alarm.info.within_range_alarm_deactivation.current", + "current_alarm.info.within_range_alarm_trigger.current" + ] + }, + { + "id": "current_alarm.info.exceed_range_alarm_deactivation.current", + "name": "Current(Current Out-of-Range Thresholds Alarm Released)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.exceed_range_alarm_trigger.current", + "name": "Current(Current Out-of-Range Thresholds Alarm)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_alarm_deactivation.current", + "name": "Current(Current Below Threshold Alarm Released)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_alarm_trigger.current", + "name": "Current(Current Below Threshold Alarm)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_error.current", + "name": "Current(Overrange (Lower Limit))", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_alarm_deactivation.current", + "name": "Current(Current Exceeds Threshold Alarm Released)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_alarm_trigger.current", + "name": "Current(Current Exceeds Threshold Alarm)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_error.current", + "name": "Current(Overrange (Upper Limit))", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_release.current", + "name": "Current(Overrange Release)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.type", + "name": "Alarm Type(Current Threshold Alarm Info)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 4, + "name": "Overrange Release" + }, + { + "value": 16, + "name": "Current Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Current Below Threshold Alarm" + }, + { + "value": 18, + "name": "Current Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Current Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Current in-Range Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Current in-Range Thresholds Alarm" + }, + { + "value": 22, + "name": "Current Out-of-Range Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Current Out-of-Range Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_alarm.info.within_range_alarm_deactivation.current", + "name": "Current(Current in-Range Thresholds Alarm Released)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.within_range_alarm_trigger.current", + "name": "Current(Current in-Range Thresholds Alarm)", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_interface1.type", + "name": "Circuit Type A(Group a)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface2.type", + "name": "Circuit Type B(Group b)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface3.type", + "name": "Circuit Type C(Group c)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface4.type", + "name": "Circuit Type D(Group d)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.command", + "name": "Sub-command(Data Storage Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Data Storage Enable" + }, + { + "value": 1, + "name": "Data Retransmission Enable" + }, + { + "value": 2, + "name": "Retransmission Interval" + }, + { + "value": 3, + "name": "Retrieval Interval" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.enable", + "name": "Data Storage Enable(Data Storage Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.retransmission_enable", + "name": "Data Retransmission Enable(Data Storage Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.retransmission_interval", + "name": "Retransmission Interval(Data Storage Settings)", + "value": "600", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 120, + 1200 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [] + }, + { + "id": "data_storage_settings.retrieval_interval", + "name": "Retrieval Interval(Data Storage Settings)", + "value": "120", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 120, + 1200 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [] + }, + { + "id": "daylight_saving_time.daylight_saving_time_offset", + "name": "DST Bias(Daylight Saving Time)", + "value": "60", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 120 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.enable", + "name": "Daylight Saving Time(Daylight Saving Time)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_hour_min", + "name": "Time(Daylight Saving Time)", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT16", + "values": [ + { + "value": 0, + "name": "00:00" + }, + { + "value": 60, + "name": "01:00" + }, + { + "value": 120, + "name": "02:00" + }, + { + "value": 180, + "name": "03:00" + }, + { + "value": 240, + "name": "04:00" + }, + { + "value": 300, + "name": "05:00" + }, + { + "value": 360, + "name": "06:00" + }, + { + "value": 420, + "name": "07:00" + }, + { + "value": 480, + "name": "08:00" + }, + { + "value": 540, + "name": "09:00" + }, + { + "value": 600, + "name": "10:00" + }, + { + "value": 660, + "name": "11:00" + }, + { + "value": 720, + "name": "12:00" + }, + { + "value": 780, + "name": "13:00" + }, + { + "value": 840, + "name": "14:00" + }, + { + "value": 900, + "name": "15:00" + }, + { + "value": 960, + "name": "16:00" + }, + { + "value": 1020, + "name": "17:00" + }, + { + "value": 1080, + "name": "18:00" + }, + { + "value": 1140, + "name": "19:00" + }, + { + "value": 1200, + "name": "20:00" + }, + { + "value": 1260, + "name": "21:00" + }, + { + "value": 1320, + "name": "22:00" + }, + { + "value": 1380, + "name": "23:00" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day" + ] + }, + { + "id": "daylight_saving_time.end_month", + "name": "Month(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Jan." + }, + { + "value": 2, + "name": "Feb." + }, + { + "value": 3, + "name": "Mar." + }, + { + "value": 4, + "name": "Apr." + }, + { + "value": 5, + "name": "May" + }, + { + "value": 6, + "name": "Jun." + }, + { + "value": 7, + "name": "Jul." + }, + { + "value": 8, + "name": "Aug." + }, + { + "value": 9, + "name": "Sep." + }, + { + "value": 10, + "name": "Oct." + }, + { + "value": 11, + "name": "Nov." + }, + { + "value": 12, + "name": "Dec." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_week_day", + "name": "Week(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Mon." + }, + { + "value": 2, + "name": "Tues." + }, + { + "value": 3, + "name": "Wed." + }, + { + "value": 4, + "name": "Thurs." + }, + { + "value": 5, + "name": "Fri." + }, + { + "value": 6, + "name": "Sat." + }, + { + "value": 7, + "name": "Sun." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_week_num", + "name": "Number of Week(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "1st" + }, + { + "value": 2, + "name": "2nd" + }, + { + "value": 3, + "name": "3rd" + }, + { + "value": 4, + "name": "4th" + }, + { + "value": 5, + "name": "last" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_hour_min", + "name": "Time(Daylight Saving Time)", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT16", + "values": [ + { + "value": 0, + "name": "00:00" + }, + { + "value": 60, + "name": "01:00" + }, + { + "value": 120, + "name": "02:00" + }, + { + "value": 180, + "name": "03:00" + }, + { + "value": 240, + "name": "04:00" + }, + { + "value": 300, + "name": "05:00" + }, + { + "value": 360, + "name": "06:00" + }, + { + "value": 420, + "name": "07:00" + }, + { + "value": 480, + "name": "08:00" + }, + { + "value": 540, + "name": "09:00" + }, + { + "value": 600, + "name": "10:00" + }, + { + "value": 660, + "name": "11:00" + }, + { + "value": 720, + "name": "12:00" + }, + { + "value": 780, + "name": "13:00" + }, + { + "value": 840, + "name": "14:00" + }, + { + "value": 900, + "name": "15:00" + }, + { + "value": 960, + "name": "16:00" + }, + { + "value": 1020, + "name": "17:00" + }, + { + "value": 1080, + "name": "18:00" + }, + { + "value": 1140, + "name": "19:00" + }, + { + "value": 1200, + "name": "20:00" + }, + { + "value": 1260, + "name": "21:00" + }, + { + "value": 1320, + "name": "22:00" + }, + { + "value": 1380, + "name": "23:00" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_month", + "name": "Month(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Jan." + }, + { + "value": 2, + "name": "Feb." + }, + { + "value": 3, + "name": "Mar." + }, + { + "value": 4, + "name": "Apr." + }, + { + "value": 5, + "name": "May" + }, + { + "value": 6, + "name": "Jun." + }, + { + "value": 7, + "name": "Jul." + }, + { + "value": 8, + "name": "Aug." + }, + { + "value": 9, + "name": "Sep." + }, + { + "value": 10, + "name": "Oct." + }, + { + "value": 11, + "name": "Nov." + }, + { + "value": 12, + "name": "Dec." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_week_day", + "name": "Week(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Mon." + }, + { + "value": 2, + "name": "Tues." + }, + { + "value": 3, + "name": "Wed." + }, + { + "value": 4, + "name": "Thurs." + }, + { + "value": 5, + "name": "Fri." + }, + { + "value": 6, + "name": "Sat." + }, + { + "value": 7, + "name": "Sun." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_week_num", + "name": "Number of Week(Daylight Saving Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "1st" + }, + { + "value": 2, + "name": "2nd" + }, + { + "value": 3, + "name": "3rd" + }, + { + "value": 4, + "name": "4th" + }, + { + "value": 5, + "name": "last" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "device_status", + "name": "Device Status", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Off" + }, + { + "value": 1, + "name": "Power On" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "fahrenheit_temperature", + "name": "Fahrenheit Temperature", + "value": "", + "unit": "℉", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -4, + 212 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 64, + "bacnet_unit_type": "UNITS_DEGREES_FAHRENHEIT" + }, + { + "id": "forward_active_energy1.group1_value", + "name": "Imported Active Energy a(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.group1.chan1", + "name": "Imported Active Energy1(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan2", + "forward_active_energy1.group1.chan3" + ] + }, + { + "id": "forward_active_energy1.group1.chan2", + "name": "Imported Active Energy2(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan1", + "forward_active_energy1.group1.chan3" + ] + }, + { + "id": "forward_active_energy1.group1.chan3", + "name": "Imported Active Energy3(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan1", + "forward_active_energy1.group1.chan2" + ] + }, + { + "id": "forward_active_energy1.group2_value", + "name": "Imported Active Energy b(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.group2.chan1", + "name": "Imported Active Energy4(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan2", + "forward_active_energy1.group2.chan3" + ] + }, + { + "id": "forward_active_energy1.group2.chan2", + "name": "Imported Active Energy5(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan1", + "forward_active_energy1.group2.chan3" + ] + }, + { + "id": "forward_active_energy1.group2.chan3", + "name": "Imported Active Energy6(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan1", + "forward_active_energy1.group2.chan2" + ] + }, + { + "id": "forward_active_energy1.mask1", + "name": "Imported Active Energy(Imported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy a" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy b" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.mask2", + "name": "Imported Active Energy(Imported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy a" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy b" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_active_energy2.group1_value", + "name": "Imported Active Energy c(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.group1.chan1", + "name": "Imported Active Energy7(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan2", + "forward_active_energy2.group1.chan3" + ] + }, + { + "id": "forward_active_energy2.group1.chan2", + "name": "Imported Active Energy8(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan1", + "forward_active_energy2.group1.chan3" + ] + }, + { + "id": "forward_active_energy2.group1.chan3", + "name": "Imported Active Energy9(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan1", + "forward_active_energy2.group1.chan2" + ] + }, + { + "id": "forward_active_energy2.group2_value", + "name": "Imported Active Energy d(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.group2.chan1", + "name": "Imported Active Energy10(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan2", + "forward_active_energy2.group2.chan3" + ] + }, + { + "id": "forward_active_energy2.group2.chan2", + "name": "Imported Active Energy11(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan1", + "forward_active_energy2.group2.chan3" + ] + }, + { + "id": "forward_active_energy2.group2.chan3", + "name": "Imported Active Energy12(Imported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan1", + "forward_active_energy2.group2.chan2" + ] + }, + { + "id": "forward_active_energy2.mask1", + "name": "Imported Active Energy(Imported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy c" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy d" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.mask2", + "name": "Imported Active Energy(Imported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy c" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy d" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_reactive_energy1.group1_value", + "name": "Imported Reactive Energy a(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan1", + "name": "Imported Reactive Energy1(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan2", + "forward_reactive_energy1.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan2", + "name": "Imported Reactive Energy2(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan1", + "forward_reactive_energy1.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan3", + "name": "Imported Reactive Energy3(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan1", + "forward_reactive_energy1.group1.chan2" + ] + }, + { + "id": "forward_reactive_energy1.group2_value", + "name": "Imported Reactive Energy b(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan1", + "name": "Imported Reactive Energy4(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan2", + "forward_reactive_energy1.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan2", + "name": "Imported Reactive Energy5(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan1", + "forward_reactive_energy1.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan3", + "name": "Imported Reactive Energy6(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan1", + "forward_reactive_energy1.group2.chan2" + ] + }, + { + "id": "forward_reactive_energy1.mask1", + "name": "Imported Reactive Energy(Imported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy a" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy b" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.mask2", + "name": "Imported Reactive Energy(Imported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy a" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy b" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_reactive_energy2.group1_value", + "name": "Imported Reactive Energy c(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan1", + "name": "Imported Reactive Energy7(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan2", + "forward_reactive_energy2.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan2", + "name": "Imported Reactive Energy8(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan1", + "forward_reactive_energy2.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan3", + "name": "Imported Reactive Energy9(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan1", + "forward_reactive_energy2.group1.chan2" + ] + }, + { + "id": "forward_reactive_energy2.group2_value", + "name": "Imported Reactive Energy d(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan1", + "name": "Imported Reactive Energy10(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan2", + "forward_reactive_energy2.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan2", + "name": "Imported Reactive Energy11(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan1", + "forward_reactive_energy2.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan3", + "name": "Imported Reactive Energy12(Imported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan1", + "forward_reactive_energy2.group2.chan2" + ] + }, + { + "id": "forward_reactive_energy2.mask1", + "name": "Imported Reactive Energy(Imported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy c" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy d" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.mask2", + "name": "Imported Reactive Energy(Imported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy c" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy d" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "historical_data_report.mode", + "name": "Historical Data Mode(Historical Data)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "target time" + }, + { + "value": 1, + "name": "historical time" + }, + { + "value": 2, + "name": "month time" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "historical_data_report.timestamp" + ] + }, + { + "id": "historical_data_report.timestamp", + "name": "Historical Data Timestamps(Historical Data)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "historical_data_report.mode" + ] + }, + { + "id": "history_type.type", + "name": "Historical Data Type(Historical Data Type)", + "value": "1", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "month energy" + }, + { + "value": 2, + "name": "month min" + }, + { + "value": 3, + "name": "month max" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "month_statistics_settings.day", + "name": "day(Monthly Statistics Time)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 28 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.hour", + "month_statistics_settings.minute" + ] + }, + { + "id": "month_statistics_settings.hour", + "name": "hour(Monthly Statistics Time)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 23 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.day", + "month_statistics_settings.minute" + ] + }, + { + "id": "month_statistics_settings.minute", + "name": "minute(Monthly Statistics Time)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 59 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.day", + "month_statistics_settings.hour" + ] + }, + { + "id": "oem_id", + "name": "OEM ID", + "value": "", + "unit": "", + "access_mode": "RW", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "power_factor.group1_value", + "name": "Power Factor a(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group1.chan1", + "name": "Power Factor1(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan2", + "power_factor.group1.chan3" + ] + }, + { + "id": "power_factor.group1.chan2", + "name": "Power Factor2(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan1", + "power_factor.group1.chan3" + ] + }, + { + "id": "power_factor.group1.chan3", + "name": "Power Factor3(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan1", + "power_factor.group1.chan2" + ] + }, + { + "id": "power_factor.group2_value", + "name": "Power Factorb(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group2.chan1", + "name": "Power Factor4(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan2", + "power_factor.group2.chan3" + ] + }, + { + "id": "power_factor.group2.chan2", + "name": "Power Factor5(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan1", + "power_factor.group2.chan3" + ] + }, + { + "id": "power_factor.group2.chan3", + "name": "Power Factor6(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan1", + "power_factor.group2.chan2" + ] + }, + { + "id": "power_factor.group3_value", + "name": "Power Factor c(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group3.chan1", + "name": "Power Factor7(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan2", + "power_factor.group3.chan3" + ] + }, + { + "id": "power_factor.group3.chan2", + "name": "Power Factor8(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan1", + "power_factor.group3.chan3" + ] + }, + { + "id": "power_factor.group3.chan3", + "name": "Power Factor9(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan1", + "power_factor.group3.chan2" + ] + }, + { + "id": "power_factor.group4_value", + "name": "Power Factor d(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group4.chan1", + "name": "Power Factor10(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan2", + "power_factor.group4.chan3" + ] + }, + { + "id": "power_factor.group4.chan2", + "name": "Power Factor11(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan1", + "power_factor.group4.chan3" + ] + }, + { + "id": "power_factor.group4.chan3", + "name": "Power Factor12(Power Factor)", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan1", + "power_factor.group4.chan2" + ] + }, + { + "id": "power_factor.mask1", + "name": "Power Factor(Power Factor)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask2", + "name": "Power Factor(Power Factor)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask3", + "name": "Power Factor(Power Factor)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask4", + "name": "Power Factor(Power Factor)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "product_sn", + "name": "SN", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 16, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "query_device_status", + "name": "Query Device Status", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "query_history_set", + "name": "Query Data Storage Configuration", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reactive_power1.group1_value", + "name": "Reactive Power a(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.group1.chan1", + "name": "Reactive Power1(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan2", + "reactive_power1.group1.chan3" + ] + }, + { + "id": "reactive_power1.group1.chan2", + "name": "Reactive Power2(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan1", + "reactive_power1.group1.chan3" + ] + }, + { + "id": "reactive_power1.group1.chan3", + "name": "Reactive Power3(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan1", + "reactive_power1.group1.chan2" + ] + }, + { + "id": "reactive_power1.group2_value", + "name": "Reactive Power b(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.group2.chan1", + "name": "Reactive Power4(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan2", + "reactive_power1.group2.chan3" + ] + }, + { + "id": "reactive_power1.group2.chan2", + "name": "Reactive Power5(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan1", + "reactive_power1.group2.chan3" + ] + }, + { + "id": "reactive_power1.group2.chan3", + "name": "Reactive Power6(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan1", + "reactive_power1.group2.chan2" + ] + }, + { + "id": "reactive_power1.mask1", + "name": "Reactive Power(Reactive Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power a" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power b" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.mask2", + "name": "Reactive Power(Reactive Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power a" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power b" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reactive_power2.group1_value", + "name": "Reactive Power c(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.group1.chan1", + "name": "Reactive Power7(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan2", + "reactive_power2.group1.chan3" + ] + }, + { + "id": "reactive_power2.group1.chan2", + "name": "Reactive Power8(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan1", + "reactive_power2.group1.chan3" + ] + }, + { + "id": "reactive_power2.group1.chan3", + "name": "Reactive Power9(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan1", + "reactive_power2.group1.chan2" + ] + }, + { + "id": "reactive_power2.group2_value", + "name": "Reactive Power d(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.group2.chan1", + "name": "Reactive Power10(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan2", + "reactive_power2.group2.chan3" + ] + }, + { + "id": "reactive_power2.group2.chan2", + "name": "Reactive Power11(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan1", + "reactive_power2.group2.chan3" + ] + }, + { + "id": "reactive_power2.group2.chan3", + "name": "Reactive Power12(Reactive Power)", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan1", + "reactive_power2.group2.chan2" + ] + }, + { + "id": "reactive_power2.mask1", + "name": "Reactive Power(Reactive Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power c" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power d" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.mask2", + "name": "Reactive Power(Reactive Power)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power c" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power d" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reboot", + "name": "Reboot", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reconnect", + "name": "Network Reconnection", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "report_enable.active_power", + "name": "Active Power(Report Parameters)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.apparent_energy", + "name": "Apparent Energy(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.apparent_power", + "name": "Apparent Power(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.current", + "name": "Current(RMS)(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.forward_active_energy", + "name": "Imported Active Energy(Report Parameters)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.forward_reactive_energy", + "name": "Imported Reactive Energy(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.power_factor", + "name": "Power Factor(Report Parameters)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reactive_power", + "name": "ReActive Power(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reverse_active_energy", + "name": "Exported Active Energy(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reverse_reactive_energy", + "name": "Exported Reactive Energy(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.temperature", + "name": "Temperature(Report Parameters)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.thdi", + "name": "THDi(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.thdv", + "name": "THDv(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.voltage", + "name": "Voltage(RMS)(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.voltage_unbalance", + "name": "Voltage Three-phase Unbalance(Report Parameters)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv" + ] + }, + { + "id": "reporting_interval.minutes_of_time", + "name": "Report Interval(Report Interval)", + "value": "10", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1440 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "reporting_interval.unit" + ] + }, + { + "id": "reporting_interval.seconds_of_time", + "name": "Report Interval(Report Interval)", + "value": "600", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 10, + 64800 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [ + "reporting_interval.unit" + ] + }, + { + "id": "reporting_interval.unit", + "name": "Report Interval Unit(Report Interval)", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "second" + }, + { + "value": 1, + "name": "min" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reset", + "name": "Reset", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reset_energy.channel", + "name": "Channel Number(Clear Cumulative Energy Consumption)", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 12 + ], + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "retrieve_historical_data_by_time_range.end_time", + "name": "End Time(Retrieval (Time Period))", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.type", + "retrieve_historical_data_by_time_range.start_time" + ] + }, + { + "id": "retrieve_historical_data_by_time_range.start_time", + "name": "Start Time(Retrieval (Time Period))", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.type", + "retrieve_historical_data_by_time_range.end_time" + ] + }, + { + "id": "retrieve_historical_data_by_time_range.type", + "name": "Type(Retrieval (Time Period))", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.start_time", + "retrieve_historical_data_by_time_range.end_time" + ] + }, + { + "id": "retrieve_historical_data_by_time.time", + "name": "Time Point(Retrieval (Time Period))", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time.type" + ] + }, + { + "id": "retrieve_historical_data_by_time.type", + "name": "Type(Retrieval (Time Period))", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time.time" + ] + }, + { + "id": "reverse_active_energy1.group1_value", + "name": "Exported Active Energy a(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.group1.chan1", + "name": "Exported Active Energy1(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan2", + "reverse_active_energy1.group1.chan3" + ] + }, + { + "id": "reverse_active_energy1.group1.chan2", + "name": "Exported Active Energy2(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan1", + "reverse_active_energy1.group1.chan3" + ] + }, + { + "id": "reverse_active_energy1.group1.chan3", + "name": "Exported Active Energy3(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan1", + "reverse_active_energy1.group1.chan2" + ] + }, + { + "id": "reverse_active_energy1.group2_value", + "name": "Exported Active Energy b(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.group2.chan1", + "name": "Exported Active Energy4(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan2", + "reverse_active_energy1.group2.chan3" + ] + }, + { + "id": "reverse_active_energy1.group2.chan2", + "name": "Exported Active Energy5(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan1", + "reverse_active_energy1.group2.chan3" + ] + }, + { + "id": "reverse_active_energy1.group2.chan3", + "name": "Exported Active Energy6(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan1", + "reverse_active_energy1.group2.chan2" + ] + }, + { + "id": "reverse_active_energy1.mask1", + "name": "Exported Active Energy(Exported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy a" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy b" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.mask2", + "name": "Exported Active Energy(Exported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy a" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy b" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_active_energy2.group1_value", + "name": "Exported Active Energy c(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.group1.chan1", + "name": "Exported Active Energy7(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan2", + "reverse_active_energy2.group1.chan3" + ] + }, + { + "id": "reverse_active_energy2.group1.chan2", + "name": "Exported Active Energy8(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan1", + "reverse_active_energy2.group1.chan3" + ] + }, + { + "id": "reverse_active_energy2.group1.chan3", + "name": "Exported Active Energy9(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan1", + "reverse_active_energy2.group1.chan2" + ] + }, + { + "id": "reverse_active_energy2.group2_value", + "name": "Exported Active Energy d(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.group2.chan1", + "name": "Exported Active Energy10(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan2", + "reverse_active_energy2.group2.chan3" + ] + }, + { + "id": "reverse_active_energy2.group2.chan2", + "name": "Exported Active Energy11(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan1", + "reverse_active_energy2.group2.chan3" + ] + }, + { + "id": "reverse_active_energy2.group2.chan3", + "name": "Exported Active Energy12(Exported Active Energy)", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan1", + "reverse_active_energy2.group2.chan2" + ] + }, + { + "id": "reverse_active_energy2.mask1", + "name": "Exported Active Energy(Exported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy c" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy d" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.mask2", + "name": "Exported Active Energy(Exported Active Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy c" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy d" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_reactive_energy1.group1_value", + "name": "Exported Reactive Energy a(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan1", + "name": "Exported Reactive Energy1(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan2", + "reverse_reactive_energy1.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan2", + "name": "Exported Reactive Energy2(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan1", + "reverse_reactive_energy1.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan3", + "name": "Exported Reactive Energy3(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan1", + "reverse_reactive_energy1.group1.chan2" + ] + }, + { + "id": "reverse_reactive_energy1.group2_value", + "name": "Exported Reactive Energy b(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan1", + "name": "Exported Reactive Energy4(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan2", + "reverse_reactive_energy1.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan2", + "name": "Exported Reactive Energy5(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan1", + "reverse_reactive_energy1.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan3", + "name": "Exported Reactive Energy6(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan1", + "reverse_reactive_energy1.group2.chan2" + ] + }, + { + "id": "reverse_reactive_energy1.mask1", + "name": "Exported Reactive Energy(Exported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy a" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy b" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.mask2", + "name": "Exported Reactive Energy(Exported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy a" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy b" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_reactive_energy2.group1_value", + "name": "Exported Reactive Energy c(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.mask2" + ] + }, + { + "id": "reverse_reactive_energy2.group1.chan1", + "name": "Exported Reactive Energy7(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan2", + "reverse_reactive_energy2.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group1.chan2", + "name": "Exported Reactive Energy8(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan1", + "reverse_reactive_energy2.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group1.chan3", + "name": "Exported Reactive Energy9(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan1", + "reverse_reactive_energy2.group1.chan2" + ] + }, + { + "id": "reverse_reactive_energy2.group2_value", + "name": "Exported Reactive Energy d(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.mask2" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan1", + "name": "Exported Reactive Energy10(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan2", + "reverse_reactive_energy2.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan2", + "name": "Exported Reactive Energy11(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan1", + "reverse_reactive_energy2.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan3", + "name": "Exported Reactive Energy12(Exported Reactive Energy)", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan1", + "reverse_reactive_energy2.group2.chan2" + ] + }, + { + "id": "reverse_reactive_energy2.mask1", + "name": "Exported Reactive Energy(Exported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy c" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy d" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_reactive_energy2.mask2" + ] + }, + { + "id": "reverse_reactive_energy2.mask2", + "name": "Exported Reactive Energy(Exported Reactive Energy)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy c" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy d" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "stop_historical_data_retrieval.type", + "name": "Stop Retrieval(Stop Retrieval)", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "synchronize_time", + "name": "Time Synchronize", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS" + }, + { + "id": "temperature_alarm_settings.celsius_threshold_max", + "name": "Celsius Value B(Temperature Threshold Alarm Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min" + ] + }, + { + "id": "temperature_alarm_settings.celsius_threshold_min", + "name": "Celsius Value A(Temperature Threshold Alarm Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.enable", + "name": "Threshold Alarm Enable(Temperature Threshold Alarm Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.fahrenheit_threshold_max", + "name": "Fahrenheit Value B(Temperature Threshold Alarm Settings)", + "value": "32", + "unit": "℉", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -4, + 212 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 64, + "bacnet_unit_type": "UNITS_DEGREES_FAHRENHEIT", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min" + ] + }, + { + "id": "temperature_alarm_settings.fahrenheit_threshold_min", + "name": "Fahrenheit Value A(Temperature Threshold Alarm Settings)", + "value": "32", + "unit": "℉", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -4, + 212 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 64, + "bacnet_unit_type": "UNITS_DEGREES_FAHRENHEIT", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.threshold_condition", + "name": "Threshold Mode(Temperature Threshold Alarm Settings)", + "value": "2", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "condition: xB" + }, + { + "value": 3, + "name": "condition: A≤x≤B" + }, + { + "value": 4, + "name": "condition: x
B" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_min", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.threshold_max", + "name": "Value B(Temperature Threshold Alarm Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min" + ] + }, + { + "id": "temperature_alarm_settings.threshold_min", + "name": "Value A(Temperature Threshold Alarm Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm.type", + "name": "Alarm Type(Temperature Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 16, + "name": "Temperature Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Temperature Below Threshold Alarm" + }, + { + "value": 18, + "name": "Temperature Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Temperature Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Temperature Between Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Temperature Between Thresholds Alarm" + }, + { + "value": 22, + "name": "Temperature Outside Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Temperature Outside Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "temperature_calibration_settings.calibration_value", + "name": "Calibration Value(Temperature Calibration Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -120, + 120 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_calibration_settings.enable" + ] + }, + { + "id": "temperature_calibration_settings.celsius_calibration_value", + "name": "Celsius Calibration Value(Temperature Calibration Settings)", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -120, + 120 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_calibration_settings.enable" + ] + }, + { + "id": "temperature_calibration_settings.enable", + "name": "Temperature Calibration(Temperature Calibration Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_calibration_settings.calibration_value" + ] + }, + { + "id": "temperature_calibration_settings.fahrenheit_calibration_value", + "name": "Fahrenheit Calibration Value(Temperature Calibration Settings)", + "value": "32", + "unit": "℉", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -184, + 248 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 64, + "bacnet_unit_type": "UNITS_DEGREES_FAHRENHEIT", + "reference": [ + "temperature_calibration_settings.enable" + ] + }, + { + "id": "temperature_unit", + "name": "Temperature Unit", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "℃" + }, + { + "value": 1, + "name": "℉" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "thdi_alarm.channel", + "name": "Alarm Channel(THDi Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "thdi_alarm.info.over_range_alarm_deactivation.thdi", + "thdi_alarm.info.over_range_alarm_trigger.thdi", + "thdi_alarm.info.type" + ] + }, + { + "id": "thdi_alarm.info.over_range_alarm_deactivation.thdi", + "name": "THDi(THDi Exceeds Threshold Alarm Released)", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdi_alarm.info.over_range_alarm_trigger.thdi", + "name": "THDi(THDi Exceeds Threshold Alarm)", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdi_alarm.info.type", + "name": "Alarm Type(THDi Threshold Alarm Info)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "THDi Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "THDi Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "thdv_alarm.channel", + "name": "Alarm Channel(THDv Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "thdv_alarm.info.over_range_alarm_deactivation.thdv", + "thdv_alarm.info.over_range_alarm_trigger.thdv", + "thdv_alarm.info.type" + ] + }, + { + "id": "thdv_alarm.info.over_range_alarm_deactivation.thdv", + "name": "THDv(THDv Exceeds Threshold Alarm Released)", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdv_alarm.info.over_range_alarm_trigger.thdv", + "name": "THDv(THDv Exceeds Threshold Alarm)", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdv_alarm.info.type", + "name": "Alarm Type(THDv Threshold Alarm Info)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "THDv Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "THDv Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "time_zone", + "name": "Time Zone", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "INT16", + "values": [ + { + "value": -720, + "name": "UTC-12(IDLW)" + }, + { + "value": -660, + "name": "UTC-11(SST)" + }, + { + "value": -600, + "name": "UTC-10(HST)" + }, + { + "value": -570, + "name": "UTC-9:30(MIT)" + }, + { + "value": -540, + "name": "UTC-9(AKST)" + }, + { + "value": -480, + "name": "UTC-8(PST)" + }, + { + "value": -420, + "name": "UTC-7(MST)" + }, + { + "value": -360, + "name": "UTC-6(CST)" + }, + { + "value": -300, + "name": "UTC-5(EST)" + }, + { + "value": -240, + "name": "UTC-4(AST)" + }, + { + "value": -210, + "name": "UTC-3:30(NST)" + }, + { + "value": -180, + "name": "UTC-3(BRT)" + }, + { + "value": -120, + "name": "UTC-2(FNT)" + }, + { + "value": -60, + "name": "UTC-1(CVT)" + }, + { + "value": 0, + "name": "UTC(WET)" + }, + { + "value": 60, + "name": "UTC+1(CET)" + }, + { + "value": 120, + "name": "UTC+2(EET)" + }, + { + "value": 180, + "name": "UTC+3(MSK)" + }, + { + "value": 210, + "name": "UTC+3:30(IRST)" + }, + { + "value": 240, + "name": "UTC+4(GST)" + }, + { + "value": 270, + "name": "UTC+4:30(AFT)" + }, + { + "value": 300, + "name": "UTC+5(PKT)" + }, + { + "value": 330, + "name": "UTC+5:30(IST)" + }, + { + "value": 345, + "name": "UTC+5:45(NPT)" + }, + { + "value": 360, + "name": "UTC+6(BHT)" + }, + { + "value": 390, + "name": "UTC+6:30(MMT)" + }, + { + "value": 420, + "name": "UTC+7(ICT)" + }, + { + "value": 480, + "name": "UTC+8(CT/CST)" + }, + { + "value": 540, + "name": "UTC+9(JST)" + }, + { + "value": 570, + "name": "UTC+9:30(ACST)" + }, + { + "value": 600, + "name": "UTC+10(AEST)" + }, + { + "value": 630, + "name": "UTC+10:30(LHST)" + }, + { + "value": 660, + "name": "UTC+11(VUT)" + }, + { + "value": 720, + "name": "UTC+12(NZST)" + }, + { + "value": 765, + "name": "UTC+12:45(CHAST)" + }, + { + "value": 780, + "name": "UTC+13(PHOT)" + }, + { + "value": 840, + "name": "UTC+14(LINT)" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES" + }, + { + "id": "tsl_version", + "name": "TSL Version", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "version.firmware_version", + "name": "Firmware Version(Product Version)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 12, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "version.hardware_version" + ] + }, + { + "id": "version.hardware_version", + "name": "Hardware Version(Product Version)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "version.firmware_version" + ] + }, + { + "id": "voltage_alarm.channel", + "name": "Alarm Channel(Voltage Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_alarm.info.exceed_range_alarm_deactivation.voltage", + "voltage_alarm.info.exceed_range_alarm_trigger.voltage", + "voltage_alarm.info.lower_range_alarm_deactivation.voltage", + "voltage_alarm.info.lower_range_alarm_trigger.voltage", + "voltage_alarm.info.lower_range_error.voltage", + "voltage_alarm.info.over_range_alarm_deactivation.voltage", + "voltage_alarm.info.over_range_alarm_trigger.voltage", + "voltage_alarm.info.over_range_error.voltage", + "voltage_alarm.info.over_range_release.voltage", + "voltage_alarm.info.type", + "voltage_alarm.info.within_range_alarm_deactivation.voltage", + "voltage_alarm.info.within_range_alarm_trigger.voltage" + ] + }, + { + "id": "voltage_alarm.info.exceed_range_alarm_deactivation.voltage", + "name": "Voltage(Voltage Out-of-Range Thresholds Alarm Released)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.exceed_range_alarm_trigger.voltage", + "name": "Voltage(Voltage Out-of-Range Thresholds Alarm)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_alarm_deactivation.voltage", + "name": "Voltage(Voltage Below Threshold Alarm Released)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_alarm_trigger.voltage", + "name": "Voltage(Voltage Below Threshold Alarm)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_error.voltage", + "name": "Voltage(Overrange (Lower Limit))", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_alarm_deactivation.voltage", + "name": "Voltage(Voltage Exceeds Threshold Alarm Released)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_alarm_trigger.voltage", + "name": "Voltage(Voltage Exceeds Threshold Alarm)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_error.voltage", + "name": "Voltage(Overrange (Upper Limit))", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_release.voltage", + "name": "Voltage(Overrange Release)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.type", + "name": "Alarm Type(Voltage Threshold Alarm Info)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 4, + "name": "Overrange Release" + }, + { + "value": 16, + "name": "Voltage Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Voltage Below Threshold Alarm" + }, + { + "value": 18, + "name": "Voltage Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Voltage Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Voltage in-Range Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Voltage in-Range Thresholds Alarm" + }, + { + "value": 22, + "name": "Voltage Out-of-Range Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Voltage Out-of-Range Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "voltage_alarm.info.within_range_alarm_deactivation.voltage", + "name": "Voltage(Voltage in-Range Thresholds Alarm Released)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.within_range_alarm_trigger.voltage", + "name": "Voltage(Voltage in-Range Thresholds Alarm)", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_interface", + "name": "Voltage Channel", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "four_wire" + }, + { + "value": 1, + "name": "three_wire" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "voltage_three_phase_imbalcance", + "name": "Voltage Three-phase Unbalance", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT" + }, + { + "id": "voltage_unbalance_alarm_settings.enable", + "name": "Threshold Alarm Enable(Voltage Three-phase Unbalance Threshold Alarm Settings)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_min", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_condition", + "name": "Threshold Mode(Voltage Three-phase Unbalance Threshold Alarm Settings)", + "value": "2", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 2, + "name": "condition: x>B" + }, + { + "value": 2, + "name": "condition: x>B" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_min", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_max", + "name": "Value B(Voltage Three-phase Unbalance Threshold Alarm Settings)", + "value": "3", + "unit": "%", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_min" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_min", + "name": "Value A(Voltage Three-phase Unbalance Threshold Alarm Settings)", + "value": "1", + "unit": "%", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm.type", + "name": "Alarm Type(Voltage Three-phase Unbalance Threshold Alarm)", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "Voltage Three-phase Unbalance Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Voltage Three-phase Unbalance Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + } + ] +} \ No newline at end of file diff --git a/vendors/milesight-iot/cth-series/cth01/cth01-decoder.js b/vendors/milesight-iot/cth-series/cth01/cth01-decoder.js new file mode 100644 index 0000000..9e15087 --- /dev/null +++ b/vendors/milesight-iot/cth-series/cth01/cth01-decoder.js @@ -0,0 +1,1501 @@ +/** + * Payload Decoder + * + * Copyright 2025 Milesight IoT + * + * @product CTH01 + */ + +/* eslint no-redeclare: "off" */ +/* eslint-disable */ +// Chirpstack v4 +function decodeUplink(input) { + var decoded = milesightDeviceDecode(input.bytes); + return { data: decoded }; +} + +// Chirpstack v3 +function Decode(fPort, bytes) { + return milesightDeviceDecode(bytes); +} + +// The Things Network +function Decoder(bytes, port) { + return milesightDeviceDecode(bytes); +} +/* eslint-enable */ + +function milesightDeviceDecode(bytes) { + var decoded = {}; + var result = {}; + var history = []; + var error_value_map = { + current: 0xFFFFFF / 100, + voltage: 0xFFFF / 100, + forward_active_energy: 0xFFFFFFFF / 1000, + reverse_active_energy: 0xFFFFFFFF / 1000, + forward_reactive_energy: 0xFFFFFFFF / 1000, + reverse_reactive_energy: 0xFFFFFFFF / 1000, + apparent_energy: 0xFFFFFFFF / 1000, + power_factor: 0xFF / 100, + active_power: -0.001, + reactive_power: -0.001, + apparent_power: -0.001, + thdi: 0xFFFF / 100, + thdv: 0xFFFF / 100, + voltage_three_phase_imbalcance: 0xFFFF / 100 + } + + var unknown_command = 0; + var counterObj = {}; + for (counterObj.i = 0; counterObj.i < bytes.length; ) { + var command_id = bytes[counterObj.i++]; + switch (command_id) { + case 0xff: + decoded.check_sequence_number_reply = decoded.check_sequence_number_reply || {}; + decoded.check_sequence_number_reply.sequence_number = readUInt8(bytes, counterObj, 1); + break; + case 0xfe: + decoded.check_order_reply = readOnlyCommand(bytes, counterObj, 1); + break; + case 0xef: + decoded.ans = decoded.ans || []; + var ans_item = {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + // 0:success, 1:unknow, 2:error order, 3:error passwd, 4:error read params, 5:error write params, 6:error read, 7:error write, 8:error read apply, 9:error write apply + ans_item.result = extractBits(bitOptions, 4, 8); + ans_item.length = extractBits(bitOptions, 0, 4); + ans_item.id = readCommand(bytes, counterObj, ans_item.length); + decoded.ans.push(ans_item); + break; + case 0xee: + decoded.all_configurations_request_by_device = readOnlyCommand(bytes, counterObj, 0); + break; + case 0xed: + if (history.length === 0) { + for (var k in decoded) { + if (decoded.hasOwnProperty(k)) { + result[k] = decoded[k]; + } + } + } + decoded = {}; + // skip type + readUInt8(bytes, counterObj, 1); + decoded.timestamp = readUInt32LE(bytes, counterObj, 4); + history.push(decoded); + break; + case 0xcf: + decoded.lorawan_configuration_settings = decoded.lorawan_configuration_settings || {}; + var lorawan_configuration_settings_command = readUInt8(bytes, counterObj, 1); + if (lorawan_configuration_settings_command == 0xd8) { + // 1:1.0.2, 2:1.0.3, 3:1.0.3, 4:1.0.4 + decoded.lorawan_configuration_settings.version = readUInt8(bytes, counterObj, 1); + } + break; + case 0xdf: + decoded.tsl_version = readProtocolVersion(readBytes(bytes, counterObj, 2)); + break; + case 0xde: + decoded.product_name = readString(bytes, counterObj, 32); + break; + case 0xdd: + decoded.product_pn = readString(bytes, counterObj, 32); + break; + case 0xdb: + decoded.product_sn = readHexString(bytes, counterObj, 8); + break; + case 0xda: + decoded.version = decoded.version || {}; + decoded.version.hardware_version = readHardwareVersion(readBytes(bytes, counterObj, 2)); + decoded.version.firmware_version = readFirmwareVersion(readBytes(bytes, counterObj, 6)); + break; + case 0xd9: + decoded.oem_id = readHexString(bytes, counterObj, 2); + break; + case 0xd8: + decoded.product_frequency_band = readString(bytes, counterObj, 16); + break; + case 0xd7: + decoded.device_info = readOnlyCommand(bytes, counterObj, 72); + break; + case 0x01: + decoded.temperature = readInt16LE(bytes, counterObj, 2) / 100; + break; + case 0x02: + decoded.voltage_three_phase_imbalcance = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage_three_phase_imbalcance); + break; + case 0x03: + decoded.thdi = []; + for (var i = 0; i < 12; i++) { + var thdi_item = {}; + thdi_item.value = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdi); + decoded.thdi.push(thdi_item); + } + break; + case 0x04: + decoded.thdv = []; + for (var i = 0; i < 3; i++) { + var thdv_item = {}; + thdv_item.value = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdv); + decoded.thdv.push(thdv_item); + } + break; + case 0x05: + decoded.current = []; + for (var i = 0; i < 12; i++) { + var current_item = {}; + current_item.value = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + decoded.current.push(current_item); + } + break; + case 0x06: + decoded.voltage = []; + for (var i = 0; i < 3; i++) { + var voltage_item = {}; + voltage_item.value = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + decoded.voltage.push(voltage_item); + } + break; + case 0x07: + decoded.power_factor = decoded.power_factor || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.power_factor.mask1 = extractBits(bitOptions, 0, 1); + decoded.power_factor.mask2 = extractBits(bitOptions, 1, 2); + decoded.power_factor.mask3 = extractBits(bitOptions, 2, 3); + decoded.power_factor.mask4 = extractBits(bitOptions, 3, 4); + if (decoded.power_factor.mask1 == 0x00) { + decoded.power_factor.group1_value = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask1 == 0x01) { + decoded.power_factor.group1 = decoded.power_factor.group1 || {}; + decoded.power_factor.group1.chan1 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group1.chan2 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group1.chan3 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask2 == 0x00) { + decoded.power_factor.group2_value = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask2 == 0x01) { + decoded.power_factor.group2 = decoded.power_factor.group2 || {}; + decoded.power_factor.group2.chan1 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group2.chan2 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group2.chan3 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask3 == 0x00) { + decoded.power_factor.group3_value = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask3 == 0x01) { + decoded.power_factor.group3 = decoded.power_factor.group3 || {}; + decoded.power_factor.group3.chan1 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group3.chan2 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group3.chan3 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask4 == 0x00) { + decoded.power_factor.group4_value = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + if (decoded.power_factor.mask4 == 0x01) { + decoded.power_factor.group4 = decoded.power_factor.group4 || {}; + decoded.power_factor.group4.chan1 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group4.chan2 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + decoded.power_factor.group4.chan3 = readWithErrorCheck(readUInt8(bytes, counterObj, 1) / 100, error_value_map.power_factor); + } + break; + case 0x08: + decoded.active_power1 = decoded.active_power1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.active_power1.mask1 = extractBits(bitOptions, 0, 1); + decoded.active_power1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.active_power1.mask1 == 0x00) { + decoded.active_power1.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power1.mask1 == 0x01) { + decoded.active_power1.group1 = decoded.active_power1.group1 || {}; + decoded.active_power1.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power1.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power1.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power1.mask2 == 0x00) { + decoded.active_power1.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power1.mask2 == 0x01) { + decoded.active_power1.group2 = decoded.active_power1.group2 || {}; + decoded.active_power1.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power1.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power1.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + break; + case 0x09: + decoded.active_power2 = decoded.active_power2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.active_power2.mask1 = extractBits(bitOptions, 0, 1); + decoded.active_power2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.active_power2.mask1 == 0x00) { + decoded.active_power2.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power2.mask1 == 0x01) { + decoded.active_power2.group1 = decoded.active_power2.group1 || {}; + decoded.active_power2.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power2.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power2.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power2.mask2 == 0x00) { + decoded.active_power2.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + if (decoded.active_power2.mask2 == 0x01) { + decoded.active_power2.group2 = decoded.active_power2.group2 || {}; + decoded.active_power2.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power2.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + decoded.active_power2.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.active_power); + } + break; + case 0x0a: + decoded.reactive_power1 = decoded.reactive_power1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reactive_power1.mask1 = extractBits(bitOptions, 0, 1); + decoded.reactive_power1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reactive_power1.mask1 == 0x00) { + decoded.reactive_power1.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power1.mask1 == 0x01) { + decoded.reactive_power1.group1 = decoded.reactive_power1.group1 || {}; + decoded.reactive_power1.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power1.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power1.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power1.mask2 == 0x00) { + decoded.reactive_power1.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power1.mask2 == 0x01) { + decoded.reactive_power1.group2 = decoded.reactive_power1.group2 || {}; + decoded.reactive_power1.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power1.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power1.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + break; + case 0x0b: + decoded.reactive_power2 = decoded.reactive_power2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reactive_power2.mask1 = extractBits(bitOptions, 0, 1); + decoded.reactive_power2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reactive_power2.mask1 == 0x00) { + decoded.reactive_power2.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power2.mask1 == 0x01) { + decoded.reactive_power2.group1 = decoded.reactive_power2.group1 || {}; + decoded.reactive_power2.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power2.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power2.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power2.mask2 == 0x00) { + decoded.reactive_power2.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + if (decoded.reactive_power2.mask2 == 0x01) { + decoded.reactive_power2.group2 = decoded.reactive_power2.group2 || {}; + decoded.reactive_power2.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power2.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + decoded.reactive_power2.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reactive_power); + } + break; + case 0x0c: + decoded.apparent_power1 = decoded.apparent_power1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.apparent_power1.mask1 = extractBits(bitOptions, 0, 1); + decoded.apparent_power1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.apparent_power1.mask1 == 0x00) { + decoded.apparent_power1.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power1.mask1 == 0x01) { + decoded.apparent_power1.group1 = decoded.apparent_power1.group1 || {}; + decoded.apparent_power1.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power1.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power1.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power1.mask2 == 0x00) { + decoded.apparent_power1.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power1.mask2 == 0x01) { + decoded.apparent_power1.group2 = decoded.apparent_power1.group2 || {}; + decoded.apparent_power1.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power1.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power1.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + break; + case 0x0d: + decoded.apparent_power2 = decoded.apparent_power2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.apparent_power2.mask1 = extractBits(bitOptions, 0, 1); + decoded.apparent_power2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.apparent_power2.mask1 == 0x00) { + decoded.apparent_power2.group1_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power2.mask1 == 0x01) { + decoded.apparent_power2.group1 = decoded.apparent_power2.group1 || {}; + decoded.apparent_power2.group1.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power2.group1.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power2.group1.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power2.mask2 == 0x00) { + decoded.apparent_power2.group2_value = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + if (decoded.apparent_power2.mask2 == 0x01) { + decoded.apparent_power2.group2 = decoded.apparent_power2.group2 || {}; + decoded.apparent_power2.group2.chan1 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power2.group2.chan2 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + decoded.apparent_power2.group2.chan3 = readWithErrorCheck(readInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_power); + } + break; + case 0x0e: + decoded.forward_active_energy1 = decoded.forward_active_energy1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.forward_active_energy1.mask1 = extractBits(bitOptions, 0, 1); + decoded.forward_active_energy1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.forward_active_energy1.mask1 == 0x00) { + decoded.forward_active_energy1.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy1.mask1 == 0x01) { + decoded.forward_active_energy1.group1 = decoded.forward_active_energy1.group1 || {}; + decoded.forward_active_energy1.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy1.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy1.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy1.mask2 == 0x00) { + decoded.forward_active_energy1.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy1.mask2 == 0x01) { + decoded.forward_active_energy1.group2 = decoded.forward_active_energy1.group2 || {}; + decoded.forward_active_energy1.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy1.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy1.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + break; + case 0x0f: + decoded.forward_active_energy2 = decoded.forward_active_energy2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.forward_active_energy2.mask1 = extractBits(bitOptions, 0, 1); + decoded.forward_active_energy2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.forward_active_energy2.mask1 == 0x00) { + decoded.forward_active_energy2.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy2.mask1 == 0x01) { + decoded.forward_active_energy2.group1 = decoded.forward_active_energy2.group1 || {}; + decoded.forward_active_energy2.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy2.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy2.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy2.mask2 == 0x00) { + decoded.forward_active_energy2.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + if (decoded.forward_active_energy2.mask2 == 0x01) { + decoded.forward_active_energy2.group2 = decoded.forward_active_energy2.group2 || {}; + decoded.forward_active_energy2.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy2.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + decoded.forward_active_energy2.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_active_energy); + } + break; + case 0x10: + decoded.reverse_active_energy1 = decoded.reverse_active_energy1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reverse_active_energy1.mask1 = extractBits(bitOptions, 0, 1); + decoded.reverse_active_energy1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reverse_active_energy1.mask1 == 0x00) { + decoded.reverse_active_energy1.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy1.mask1 == 0x01) { + decoded.reverse_active_energy1.group1 = decoded.reverse_active_energy1.group1 || {}; + decoded.reverse_active_energy1.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy1.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy1.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy1.mask2 == 0x00) { + decoded.reverse_active_energy1.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy1.mask2 == 0x01) { + decoded.reverse_active_energy1.group2 = decoded.reverse_active_energy1.group2 || {}; + decoded.reverse_active_energy1.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy1.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy1.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + break; + case 0x11: + decoded.reverse_active_energy2 = decoded.reverse_active_energy2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reverse_active_energy2.mask1 = extractBits(bitOptions, 0, 1); + decoded.reverse_active_energy2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reverse_active_energy2.mask1 == 0x00) { + decoded.reverse_active_energy2.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy2.mask1 == 0x01) { + decoded.reverse_active_energy2.group1 = decoded.reverse_active_energy2.group1 || {}; + decoded.reverse_active_energy2.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy2.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy2.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy2.mask2 == 0x00) { + decoded.reverse_active_energy2.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + if (decoded.reverse_active_energy2.mask2 == 0x01) { + decoded.reverse_active_energy2.group2 = decoded.reverse_active_energy2.group2 || {}; + decoded.reverse_active_energy2.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy2.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + decoded.reverse_active_energy2.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_active_energy); + } + break; + case 0x12: + decoded.forward_reactive_energy1 = decoded.forward_reactive_energy1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.forward_reactive_energy1.mask1 = extractBits(bitOptions, 0, 1); + decoded.forward_reactive_energy1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.forward_reactive_energy1.mask1 == 0x00) { + decoded.forward_reactive_energy1.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy1.mask1 == 0x01) { + decoded.forward_reactive_energy1.group1 = decoded.forward_reactive_energy1.group1 || {}; + decoded.forward_reactive_energy1.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy1.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy1.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy1.mask2 == 0x00) { + decoded.forward_reactive_energy1.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy1.mask2 == 0x01) { + decoded.forward_reactive_energy1.group2 = decoded.forward_reactive_energy1.group2 || {}; + decoded.forward_reactive_energy1.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy1.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy1.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + break; + case 0x13: + decoded.forward_reactive_energy2 = decoded.forward_reactive_energy2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.forward_reactive_energy2.mask1 = extractBits(bitOptions, 0, 1); + decoded.forward_reactive_energy2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.forward_reactive_energy2.mask1 == 0x00) { + decoded.forward_reactive_energy2.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy2.mask1 == 0x01) { + decoded.forward_reactive_energy2.group1 = decoded.forward_reactive_energy2.group1 || {}; + decoded.forward_reactive_energy2.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy2.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy2.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy2.mask2 == 0x00) { + decoded.forward_reactive_energy2.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + if (decoded.forward_reactive_energy2.mask2 == 0x01) { + decoded.forward_reactive_energy2.group2 = decoded.forward_reactive_energy2.group2 || {}; + decoded.forward_reactive_energy2.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy2.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + decoded.forward_reactive_energy2.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.forward_reactive_energy); + } + break; + case 0x14: + decoded.reverse_reactive_energy1 = decoded.reverse_reactive_energy1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reverse_reactive_energy1.mask1 = extractBits(bitOptions, 0, 1); + decoded.reverse_reactive_energy1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reverse_reactive_energy1.mask1 == 0x00) { + decoded.reverse_reactive_energy1.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy1.mask1 == 0x01) { + decoded.reverse_reactive_energy1.group1 = decoded.reverse_reactive_energy1.group1 || {}; + decoded.reverse_reactive_energy1.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy1.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy1.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy1.mask2 == 0x00) { + decoded.reverse_reactive_energy1.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy1.mask2 == 0x01) { + decoded.reverse_reactive_energy1.group2 = decoded.reverse_reactive_energy1.group2 || {}; + decoded.reverse_reactive_energy1.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy1.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy1.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + break; + case 0x15: + decoded.reverse_reactive_energy2 = decoded.reverse_reactive_energy2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.reverse_reactive_energy2.mask1 = extractBits(bitOptions, 0, 1); + decoded.reverse_reactive_energy2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.reverse_reactive_energy2.mask1 == 0x00) { + decoded.reverse_reactive_energy2.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy2.mask1 == 0x01) { + decoded.reverse_reactive_energy2.group1 = decoded.reverse_reactive_energy2.group1 || {}; + decoded.reverse_reactive_energy2.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy2.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy2.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy2.mask2 == 0x00) { + decoded.reverse_reactive_energy2.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + if (decoded.reverse_reactive_energy2.mask2 == 0x01) { + decoded.reverse_reactive_energy2.group2 = decoded.reverse_reactive_energy2.group2 || {}; + decoded.reverse_reactive_energy2.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy2.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + decoded.reverse_reactive_energy2.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.reverse_reactive_energy); + } + break; + case 0x16: + decoded.apparent_energy1 = decoded.apparent_energy1 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.apparent_energy1.mask1 = extractBits(bitOptions, 0, 1); + decoded.apparent_energy1.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.apparent_energy1.mask1 == 0x00) { + decoded.apparent_energy1.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy1.mask1 == 0x01) { + decoded.apparent_energy1.group1 = decoded.apparent_energy1.group1 || {}; + decoded.apparent_energy1.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy1.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy1.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy1.mask2 == 0x00) { + decoded.apparent_energy1.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy1.mask2 == 0x01) { + decoded.apparent_energy1.group2 = decoded.apparent_energy1.group2 || {}; + decoded.apparent_energy1.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy1.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy1.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + break; + case 0x17: + decoded.apparent_energy2 = decoded.apparent_energy2 || {}; + var bitOptions = readUInt8(bytes, counterObj, 1); + decoded.apparent_energy2.mask1 = extractBits(bitOptions, 0, 1); + decoded.apparent_energy2.mask2 = extractBits(bitOptions, 1, 2); + if (decoded.apparent_energy2.mask1 == 0x00) { + decoded.apparent_energy2.group1_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy2.mask1 == 0x01) { + decoded.apparent_energy2.group1 = decoded.apparent_energy2.group1 || {}; + decoded.apparent_energy2.group1.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy2.group1.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy2.group1.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy2.mask2 == 0x00) { + decoded.apparent_energy2.group2_value = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + if (decoded.apparent_energy2.mask2 == 0x01) { + decoded.apparent_energy2.group2 = decoded.apparent_energy2.group2 || {}; + decoded.apparent_energy2.group2.chan1 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy2.group2.chan2 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + decoded.apparent_energy2.group2.chan3 = readWithErrorCheck(readUInt32LE(bytes, counterObj, 4) / 1000, error_value_map.apparent_energy); + } + break; + case 0x40: + decoded.history_type = decoded.history_type || {}; + // 1:month energy, 2:month min, 3:month max + decoded.history_type.type = readUInt8(bytes, counterObj, 1); + break; + case 0x30: + decoded.event = decoded.event || []; + decoded.temperature_alarm = {}; + decoded.temperature_alarm.type = readUInt8(bytes, counterObj, 1); + if (decoded.temperature_alarm.type == 0x00) { + decoded.temperature_alarm.collection_error = decoded.temperature_alarm.collection_error || {}; + } + if (decoded.temperature_alarm.type == 0x01) { + decoded.temperature_alarm.lower_range_error = decoded.temperature_alarm.lower_range_error || {}; + } + if (decoded.temperature_alarm.type == 0x02) { + decoded.temperature_alarm.over_range_error = decoded.temperature_alarm.over_range_error || {}; + } + if (decoded.temperature_alarm.type == 0x03) { + decoded.temperature_alarm.no_data = decoded.temperature_alarm.no_data || {}; + } + if (decoded.temperature_alarm.type == 0x10) { + decoded.temperature_alarm.lower_range_alarm_deactivation = decoded.temperature_alarm.lower_range_alarm_deactivation || {}; + decoded.temperature_alarm.lower_range_alarm_deactivation.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.lower_range_alarm_deactivation.temperature; + } + if (decoded.temperature_alarm.type == 0x11) { + decoded.temperature_alarm.lower_range_alarm_trigger = decoded.temperature_alarm.lower_range_alarm_trigger || {}; + decoded.temperature_alarm.lower_range_alarm_trigger.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.lower_range_alarm_trigger.temperature; + } + if (decoded.temperature_alarm.type == 0x12) { + decoded.temperature_alarm.over_range_alarm_deactivation = decoded.temperature_alarm.over_range_alarm_deactivation || {}; + decoded.temperature_alarm.over_range_alarm_deactivation.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.over_range_alarm_deactivation.temperature; + } + if (decoded.temperature_alarm.type == 0x13) { + decoded.temperature_alarm.over_range_alarm_trigger = decoded.temperature_alarm.over_range_alarm_trigger || {}; + decoded.temperature_alarm.over_range_alarm_trigger.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.over_range_alarm_trigger.temperature; + } + if (decoded.temperature_alarm.type == 0x14) { + decoded.temperature_alarm.within_range_alarm_deactivation = decoded.temperature_alarm.within_range_alarm_deactivation || {}; + decoded.temperature_alarm.within_range_alarm_deactivation.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.within_range_alarm_deactivation.temperature; + } + if (decoded.temperature_alarm.type == 0x15) { + decoded.temperature_alarm.within_range_alarm_trigger = decoded.temperature_alarm.within_range_alarm_trigger || {}; + decoded.temperature_alarm.within_range_alarm_trigger.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.within_range_alarm_trigger.temperature; + } + if (decoded.temperature_alarm.type == 0x16) { + decoded.temperature_alarm.exceed_range_alarm_deactivation = decoded.temperature_alarm.exceed_range_alarm_deactivation || {}; + decoded.temperature_alarm.exceed_range_alarm_deactivation.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.exceed_range_alarm_deactivation.temperature; + } + if (decoded.temperature_alarm.type == 0x17) { + decoded.temperature_alarm.exceed_range_alarm_trigger = decoded.temperature_alarm.exceed_range_alarm_trigger || {}; + decoded.temperature_alarm.exceed_range_alarm_trigger.temperature = readWithErrorCheck(readInt16LE(bytes, counterObj, 2) / 100, error_value_map.temperature); + // decoded.temperature = decoded.temperature_alarm.exceed_range_alarm_trigger.temperature; + } + decoded.event.push(decoded.temperature_alarm); + break; + case 0x31: + decoded.event = decoded.event || []; + decoded.current_alarm = {}; + decoded.current_alarm.channel = readUInt8(bytes, counterObj, 1); + decoded.current_alarm.info = decoded.current_alarm.info || {}; + decoded.current_alarm.info.type = readUInt8(bytes, counterObj, 1); + if (decoded.current_alarm.info.type == 0x00) { + decoded.current_alarm.info.collection_error = decoded.current_alarm.info.collection_error || {}; + } + if (decoded.current_alarm.info.type == 0x01) { + decoded.current_alarm.info.lower_range_error = decoded.current_alarm.info.lower_range_error || {}; + decoded.current_alarm.info.lower_range_error.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.lower_range_error.current; + } + if (decoded.current_alarm.info.type == 0x02) { + decoded.current_alarm.info.over_range_error = decoded.current_alarm.info.over_range_error || {}; + decoded.current_alarm.info.over_range_error.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.over_range_error.current; + } + if (decoded.current_alarm.info.type == 0x03) { + decoded.current_alarm.info.no_data = decoded.current_alarm.info.no_data || {}; + } + if (decoded.current_alarm.info.type == 0x04) { + decoded.current_alarm.info.over_range_release = decoded.current_alarm.info.over_range_release || {}; + decoded.current_alarm.info.over_range_release.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.over_range_release.current; + } + if (decoded.current_alarm.info.type == 0x10) { + decoded.current_alarm.info.lower_range_alarm_deactivation = decoded.current_alarm.info.lower_range_alarm_deactivation || {}; + decoded.current_alarm.info.lower_range_alarm_deactivation.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.lower_range_alarm_deactivation.current; + } + if (decoded.current_alarm.info.type == 0x11) { + decoded.current_alarm.info.lower_range_alarm_trigger = decoded.current_alarm.info.lower_range_alarm_trigger || {}; + decoded.current_alarm.info.lower_range_alarm_trigger.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.lower_range_alarm_trigger.current; + } + if (decoded.current_alarm.info.type == 0x12) { + decoded.current_alarm.info.over_range_alarm_deactivation = decoded.current_alarm.info.over_range_alarm_deactivation || {}; + decoded.current_alarm.info.over_range_alarm_deactivation.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.over_range_alarm_deactivation.current; + } + if (decoded.current_alarm.info.type == 0x13) { + decoded.current_alarm.info.over_range_alarm_trigger = decoded.current_alarm.info.over_range_alarm_trigger || {}; + decoded.current_alarm.info.over_range_alarm_trigger.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.over_range_alarm_trigger.current; + } + if (decoded.current_alarm.info.type == 0x14) { + decoded.current_alarm.info.within_range_alarm_deactivation = decoded.current_alarm.info.within_range_alarm_deactivation || {}; + decoded.current_alarm.info.within_range_alarm_deactivation.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.within_range_alarm_deactivation.current; + } + if (decoded.current_alarm.info.type == 0x15) { + decoded.current_alarm.info.within_range_alarm_trigger = decoded.current_alarm.info.within_range_alarm_trigger || {}; + decoded.current_alarm.info.within_range_alarm_trigger.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.within_range_alarm_trigger.current; + } + if (decoded.current_alarm.info.type == 0x16) { + decoded.current_alarm.info.exceed_range_alarm_deactivation = decoded.current_alarm.info.exceed_range_alarm_deactivation || {}; + decoded.current_alarm.info.exceed_range_alarm_deactivation.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.exceed_range_alarm_deactivation.current; + } + if (decoded.current_alarm.info.type == 0x17) { + decoded.current_alarm.info.exceed_range_alarm_trigger = decoded.current_alarm.info.exceed_range_alarm_trigger || {}; + decoded.current_alarm.info.exceed_range_alarm_trigger.current = readWithErrorCheck(readUInt24LE(bytes, counterObj, 3) / 100, error_value_map.current); + // decoded.current = decoded.current_alarm.info.exceed_range_alarm_trigger.current; + } + decoded.event.push(decoded.current_alarm); + break; + case 0x32: + decoded.event = decoded.event || []; + decoded.voltage_alarm = {}; + decoded.voltage_alarm.channel = readUInt8(bytes, counterObj, 1); + decoded.voltage_alarm.info = decoded.voltage_alarm.info || {}; + decoded.voltage_alarm.info.type = readUInt8(bytes, counterObj, 1); + if (decoded.voltage_alarm.info.type == 0x00) { + decoded.voltage_alarm.info.collection_error = decoded.voltage_alarm.info.collection_error || {}; + } + if (decoded.voltage_alarm.info.type == 0x01) { + decoded.voltage_alarm.info.lower_range_error = decoded.voltage_alarm.info.lower_range_error || {}; + decoded.voltage_alarm.info.lower_range_error.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.lower_range_error.voltage; + } + if (decoded.voltage_alarm.info.type == 0x02) { + decoded.voltage_alarm.info.over_range_error = decoded.voltage_alarm.info.over_range_error || {}; + decoded.voltage_alarm.info.over_range_error.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.over_range_error.voltage; + } + if (decoded.voltage_alarm.info.type == 0x03) { + decoded.voltage_alarm.info.no_data = decoded.voltage_alarm.info.no_data || {}; + } + if (decoded.voltage_alarm.info.type == 0x04) { + decoded.voltage_alarm.info.over_range_release = decoded.voltage_alarm.info.over_range_release || {}; + decoded.voltage_alarm.info.over_range_release.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.over_range_release.voltage; + } + if (decoded.voltage_alarm.info.type == 0x10) { + decoded.voltage_alarm.info.lower_range_alarm_deactivation = decoded.voltage_alarm.info.lower_range_alarm_deactivation || {}; + decoded.voltage_alarm.info.lower_range_alarm_deactivation.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.lower_range_alarm_deactivation.voltage; + } + if (decoded.voltage_alarm.info.type == 0x11) { + decoded.voltage_alarm.info.lower_range_alarm_trigger = decoded.voltage_alarm.info.lower_range_alarm_trigger || {}; + decoded.voltage_alarm.info.lower_range_alarm_trigger.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.lower_range_alarm_trigger.voltage; + } + if (decoded.voltage_alarm.info.type == 0x12) { + decoded.voltage_alarm.info.over_range_alarm_deactivation = decoded.voltage_alarm.info.over_range_alarm_deactivation || {}; + decoded.voltage_alarm.info.over_range_alarm_deactivation.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.over_range_alarm_deactivation.voltage; + } + if (decoded.voltage_alarm.info.type == 0x13) { + decoded.voltage_alarm.info.over_range_alarm_trigger = decoded.voltage_alarm.info.over_range_alarm_trigger || {}; + decoded.voltage_alarm.info.over_range_alarm_trigger.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.over_range_alarm_trigger.voltage; + } + if (decoded.voltage_alarm.info.type == 0x14) { + decoded.voltage_alarm.info.within_range_alarm_deactivation = decoded.voltage_alarm.info.within_range_alarm_deactivation || {}; + decoded.voltage_alarm.info.within_range_alarm_deactivation.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.within_range_alarm_deactivation.voltage; + } + if (decoded.voltage_alarm.info.type == 0x15) { + decoded.voltage_alarm.info.within_range_alarm_trigger = decoded.voltage_alarm.info.within_range_alarm_trigger || {}; + decoded.voltage_alarm.info.within_range_alarm_trigger.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.within_range_alarm_trigger.voltage; + } + if (decoded.voltage_alarm.info.type == 0x16) { + decoded.voltage_alarm.info.exceed_range_alarm_deactivation = decoded.voltage_alarm.info.exceed_range_alarm_deactivation || {}; + decoded.voltage_alarm.info.exceed_range_alarm_deactivation.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.exceed_range_alarm_deactivation.voltage; + } + if (decoded.voltage_alarm.info.type == 0x17) { + decoded.voltage_alarm.info.exceed_range_alarm_trigger = decoded.voltage_alarm.info.exceed_range_alarm_trigger || {}; + decoded.voltage_alarm.info.exceed_range_alarm_trigger.voltage = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage); + // decoded.voltage = decoded.voltage_alarm.info.exceed_range_alarm_trigger.voltage; + } + decoded.event.push(decoded.voltage_alarm); + break; + case 0x33: + decoded.event = decoded.event || []; + decoded.thdi_alarm = {}; + decoded.thdi_alarm.channel = readUInt8(bytes, counterObj, 1); + decoded.thdi_alarm.info = decoded.thdi_alarm.info || {}; + decoded.thdi_alarm.info.type = readUInt8(bytes, counterObj, 1); + if (decoded.thdi_alarm.info.type == 0x00) { + decoded.thdi_alarm.info.collection_error = decoded.thdi_alarm.info.collection_error || {}; + } + if (decoded.thdi_alarm.info.type == 0x12) { + decoded.thdi_alarm.info.over_range_alarm_deactivation = decoded.thdi_alarm.info.over_range_alarm_deactivation || {}; + decoded.thdi_alarm.info.over_range_alarm_deactivation.thdi = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdi); + // decoded.thdi = decoded.thdi_alarm.info.over_range_alarm_deactivation.thdi; + } + if (decoded.thdi_alarm.info.type == 0x13) { + decoded.thdi_alarm.info.over_range_alarm_trigger = decoded.thdi_alarm.info.over_range_alarm_trigger || {}; + decoded.thdi_alarm.info.over_range_alarm_trigger.thdi = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdi); + // decoded.thdi = decoded.thdi_alarm.info.over_range_alarm_trigger.thdi; + } + decoded.event.push(decoded.thdi_alarm); + break; + case 0x34: + decoded.event = decoded.event || []; + decoded.thdv_alarm = {}; + decoded.thdv_alarm.channel = readUInt8(bytes, counterObj, 1); + decoded.thdv_alarm.info = decoded.thdv_alarm.info || {}; + decoded.thdv_alarm.info.type = readUInt8(bytes, counterObj, 1); + if (decoded.thdv_alarm.info.type == 0x00) { + decoded.thdv_alarm.info.collection_error = decoded.thdv_alarm.info.collection_error || {}; + } + if (decoded.thdv_alarm.info.type == 0x12) { + decoded.thdv_alarm.info.over_range_alarm_deactivation = decoded.thdv_alarm.info.over_range_alarm_deactivation || {}; + decoded.thdv_alarm.info.over_range_alarm_deactivation.thdv = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdv); + // decoded.thdv = decoded.thdv_alarm.info.over_range_alarm_deactivation.thdv; + } + if (decoded.thdv_alarm.info.type == 0x13) { + decoded.thdv_alarm.info.over_range_alarm_trigger = decoded.thdv_alarm.info.over_range_alarm_trigger || {}; + decoded.thdv_alarm.info.over_range_alarm_trigger.thdv = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.thdv); + // decoded.thdv = decoded.thdv_alarm.info.over_range_alarm_trigger.thdv; + } + decoded.event.push(decoded.thdv_alarm); + break; + case 0x35: + decoded.event = decoded.event || []; + decoded.voltage_unbalance_alarm = {}; + decoded.voltage_unbalance_alarm.type = readUInt8(bytes, counterObj, 1); + if (decoded.voltage_unbalance_alarm.type == 0x00) { + decoded.voltage_unbalance_alarm.collection_error = decoded.voltage_unbalance_alarm.collection_error || {}; + } + if (decoded.voltage_unbalance_alarm.type == 0x12) { + decoded.voltage_unbalance_alarm.over_range_alarm_deactivation = decoded.voltage_unbalance_alarm.over_range_alarm_deactivation || {}; + decoded.voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage_unbalance); + // decoded.voltage_three_phase_imbalcance = decoded.voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance; + } + if (decoded.voltage_unbalance_alarm.type == 0x13) { + decoded.voltage_unbalance_alarm.over_range_alarm_trigger = decoded.voltage_unbalance_alarm.over_range_alarm_trigger || {}; + decoded.voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance = readWithErrorCheck(readUInt16LE(bytes, counterObj, 2) / 100, error_value_map.voltage_unbalance); + // decoded.voltage_three_phase_imbalcance = decoded.voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance; + } + decoded.event.push(decoded.voltage_unbalance_alarm); + break; + case 0x36: + decoded.power_loss_alarm = readOnlyCommand(bytes, counterObj, 0); + break; + case 0x60: + decoded.collection_interval = decoded.collection_interval || {}; + // 0:second, 1:min + decoded.collection_interval.unit = readUInt8(bytes, counterObj, 1); + if (decoded.collection_interval.unit == 0x00) { + decoded.collection_interval.seconds_of_time = readUInt16LE(bytes, counterObj, 2); + } + if (decoded.collection_interval.unit == 0x01) { + decoded.collection_interval.minutes_of_time = readUInt16LE(bytes, counterObj, 2); + } + break; + case 0x61: + decoded.reporting_interval = decoded.reporting_interval || {}; + // 0:second, 1:min + decoded.reporting_interval.unit = readUInt8(bytes, counterObj, 1); + if (decoded.reporting_interval.unit == 0x00) { + decoded.reporting_interval.seconds_of_time = readUInt16LE(bytes, counterObj, 2); + } + if (decoded.reporting_interval.unit == 0x01) { + decoded.reporting_interval.minutes_of_time = readUInt16LE(bytes, counterObj, 2); + } + break; + case 0xc8: + // 0:Power Off, 1:Power On + decoded.device_status = readUInt8(bytes, counterObj, 1); + break; + case 0x63: + // 0:℃, 1:℉ + decoded.temperature_unit = readUInt8(bytes, counterObj, 1); + break; + case 0x64: + decoded.bluetooth_name = decoded.bluetooth_name || {}; + decoded.bluetooth_name.length = readUInt8(bytes, counterObj, 1); + decoded.bluetooth_name.content = readString(bytes, counterObj, decoded.bluetooth_name.length); + break; + case 0xc5: + decoded.data_storage_settings = decoded.data_storage_settings || {}; + var data_storage_settings_command = readUInt8(bytes, counterObj, 1); + if (data_storage_settings_command == 0x00) { + // 0:disable, 1:enable + decoded.data_storage_settings.enable = readUInt8(bytes, counterObj, 1); + } + if (data_storage_settings_command == 0x01) { + // 0:disable, 1:enable + decoded.data_storage_settings.retransmission_enable = readUInt8(bytes, counterObj, 1); + } + if (data_storage_settings_command == 0x02) { + decoded.data_storage_settings.retransmission_interval = readUInt16LE(bytes, counterObj, 2); + } + if (data_storage_settings_command == 0x03) { + decoded.data_storage_settings.retrieval_interval = readUInt16LE(bytes, counterObj, 2); + } + break; + case 0x66: + // 0:four_wire, 1:three_wire + decoded.voltage_interface = readUInt8(bytes, counterObj, 1); + break; + case 0x67: + decoded.current_interface1 = decoded.current_interface1 || {}; + // 0:one_phase, 1:three_phase + decoded.current_interface1.type = readUInt8(bytes, counterObj, 1); + decoded.current_interface1.config = []; + for (var i = 0; i < 3; i++) { + var config_item = {}; + // 0:forward, 1:reserse + config_item.direction = readUInt8(bytes, counterObj, 1); + config_item.range = readUInt16LE(bytes, counterObj, 2); + decoded.current_interface1.config.push(config_item); + } + break; + case 0x68: + decoded.current_interface2 = decoded.current_interface2 || {}; + // 0:one_phase, 1:three_phase + decoded.current_interface2.type = readUInt8(bytes, counterObj, 1); + decoded.current_interface2.config = []; + for (var i = 0; i < 3; i++) { + var config_item = {}; + // 0:forward, 1:reserse + config_item.direction = readUInt8(bytes, counterObj, 1); + config_item.range = readUInt16LE(bytes, counterObj, 2); + decoded.current_interface2.config.push(config_item); + } + break; + case 0x69: + decoded.current_interface3 = decoded.current_interface3 || {}; + // 0:one_phase, 1:three_phase + decoded.current_interface3.type = readUInt8(bytes, counterObj, 1); + decoded.current_interface3.config = []; + for (var i = 0; i < 3; i++) { + var config_item = {}; + // 0:forward, 1:reserse + config_item.direction = readUInt8(bytes, counterObj, 1); + config_item.range = readUInt16LE(bytes, counterObj, 2); + decoded.current_interface3.config.push(config_item); + } + break; + case 0x6a: + decoded.current_interface4 = decoded.current_interface4 || {}; + // 0:one_phase, 1:three_phase + decoded.current_interface4.type = readUInt8(bytes, counterObj, 1); + decoded.current_interface4.config = []; + for (var i = 0; i < 3; i++) { + var config_item = {}; + // 0:forward, 1:reserse + config_item.direction = readUInt8(bytes, counterObj, 1); + config_item.range = readUInt16LE(bytes, counterObj, 2); + decoded.current_interface4.config.push(config_item); + } + break; + case 0x6b: + decoded.temperature_calibration_settings = decoded.temperature_calibration_settings || {}; + // 0:disable, 1:enable + decoded.temperature_calibration_settings.enable = readUInt8(bytes, counterObj, 1); + decoded.temperature_calibration_settings.calibration_value = readInt16LE(bytes, counterObj, 2) / 100; + break; + case 0xc7: + decoded.time_zone = readInt16LE(bytes, counterObj, 2); + break; + case 0xc6: + decoded.daylight_saving_time = decoded.daylight_saving_time || {}; + // 0:disable, 1:enable + decoded.daylight_saving_time.enable = readUInt8(bytes, counterObj, 1); + decoded.daylight_saving_time.daylight_saving_time_offset = readUInt8(bytes, counterObj, 1); + // 1:Jan., 2:Feb., 3:Mar., 4:Apr., 5:May, 6:Jun., 7:Jul., 8:Aug., 9:Sep., 10:Oct., 11:Nov., 12:Dec. + decoded.daylight_saving_time.start_month = readUInt8(bytes, counterObj, 1); + var bitOptions = readUInt8(bytes, counterObj, 1); + // 1:1st, 2: 2nd, 3: 3rd, 4: 4th, 5: last + decoded.daylight_saving_time.start_week_num = extractBits(bitOptions, 4, 8); + // 1:Mon., 2:Tues., 3:Wed., 4:Thurs., 5:Fri., 6:Sat., 7:Sun. + decoded.daylight_saving_time.start_week_day = extractBits(bitOptions, 0, 4); + decoded.daylight_saving_time.start_hour_min = readUInt16LE(bytes, counterObj, 2); + // 1:Jan., 2:Feb., 3:Mar., 4:Apr., 5:May, 6:Jun., 7:Jul., 8:Aug., 9:Sep., 10:Oct., 11:Nov., 12:Dec. + decoded.daylight_saving_time.end_month = readUInt8(bytes, counterObj, 1); + var bitOptions = readUInt8(bytes, counterObj, 1); + // 1:1st, 2: 2nd, 3: 3rd, 4: 4th, 5: last + decoded.daylight_saving_time.end_week_num = extractBits(bitOptions, 4, 8); + // 1:Mon., 2:Tues., 3:Wed., 4:Thurs., 5:Fri., 6:Sat., 7:Sun. + decoded.daylight_saving_time.end_week_day = extractBits(bitOptions, 0, 4); + decoded.daylight_saving_time.end_hour_min = readUInt16LE(bytes, counterObj, 2); + break; + case 0x76: + decoded.temperature_alarm_settings = decoded.temperature_alarm_settings || {}; + // 0:disable, 1:enable + decoded.temperature_alarm_settings.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + decoded.temperature_alarm_settings.threshold_condition = readUInt8(bytes, counterObj, 1); + decoded.temperature_alarm_settings.threshold_min = readInt16LE(bytes, counterObj, 2) / 100; + decoded.temperature_alarm_settings.threshold_max = readInt16LE(bytes, counterObj, 2) / 100; + break; + case 0x77: + decoded.current_alarm_settings = decoded.current_alarm_settings || []; + var channel = readUInt8(bytes, counterObj, 1); + var current_alarm_settings_item = pickArrayItem(decoded.current_alarm_settings, channel, 'channel'); + current_alarm_settings_item.channel = channel; + insertArrayItem(decoded.current_alarm_settings, current_alarm_settings_item, 'channel'); + // 0:disable, 1:enable + current_alarm_settings_item.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + current_alarm_settings_item.threshold_condition = readUInt8(bytes, counterObj, 1); + current_alarm_settings_item.threshold_min = readInt16LE(bytes, counterObj, 2); + current_alarm_settings_item.threshold_max = readInt16LE(bytes, counterObj, 2); + break; + case 0x78: + decoded.voltage_alarm_settings = decoded.voltage_alarm_settings || []; + var channel = readUInt8(bytes, counterObj, 1); + var voltage_alarm_settings_item = pickArrayItem(decoded.voltage_alarm_settings, channel, 'channel'); + voltage_alarm_settings_item.channel = channel; + insertArrayItem(decoded.voltage_alarm_settings, voltage_alarm_settings_item, 'channel'); + // 0:disable, 1:enable + voltage_alarm_settings_item.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + voltage_alarm_settings_item.threshold_condition = readUInt8(bytes, counterObj, 1); + voltage_alarm_settings_item.threshold_min = readInt16LE(bytes, counterObj, 2); + voltage_alarm_settings_item.threshold_max = readInt16LE(bytes, counterObj, 2); + break; + case 0x79: + decoded.thdi_alarm_settings = decoded.thdi_alarm_settings || []; + var channel = readUInt8(bytes, counterObj, 1); + var thdi_alarm_settings_item = pickArrayItem(decoded.thdi_alarm_settings, channel, 'channel'); + thdi_alarm_settings_item.channel = channel; + insertArrayItem(decoded.thdi_alarm_settings, thdi_alarm_settings_item, 'channel'); + // 0:disable, 1:enable + thdi_alarm_settings_item.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 2:condition: x>B + thdi_alarm_settings_item.threshold_condition = readUInt8(bytes, counterObj, 1); + thdi_alarm_settings_item.threshold_min = readInt16LE(bytes, counterObj, 2); + thdi_alarm_settings_item.threshold_max = readInt16LE(bytes, counterObj, 2); + break; + case 0x7a: + decoded.thdv_alarm_settings = decoded.thdv_alarm_settings || []; + var channel = readUInt8(bytes, counterObj, 1); + var thdv_alarm_settings_item = pickArrayItem(decoded.thdv_alarm_settings, channel, 'channel'); + thdv_alarm_settings_item.channel = channel; + insertArrayItem(decoded.thdv_alarm_settings, thdv_alarm_settings_item, 'channel'); + // 0:disable, 1:enable + thdv_alarm_settings_item.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 2:condition: x>B + thdv_alarm_settings_item.threshold_condition = readUInt8(bytes, counterObj, 1); + thdv_alarm_settings_item.threshold_min = readInt16LE(bytes, counterObj, 2); + thdv_alarm_settings_item.threshold_max = readInt16LE(bytes, counterObj, 2); + break; + case 0x7b: + decoded.voltage_unbalance_alarm_settings = decoded.voltage_unbalance_alarm_settings || {}; + // 0:disable, 1:enable + decoded.voltage_unbalance_alarm_settings.enable = readUInt8(bytes, counterObj, 1); + // 0:disable, 2:condition: x>B + decoded.voltage_unbalance_alarm_settings.threshold_condition = readUInt8(bytes, counterObj, 1); + decoded.voltage_unbalance_alarm_settings.threshold_min = readInt16LE(bytes, counterObj, 2); + decoded.voltage_unbalance_alarm_settings.threshold_max = readInt16LE(bytes, counterObj, 2); + break; + case 0x7c: + decoded.alarm_global_settings = decoded.alarm_global_settings || {}; + decoded.alarm_global_settings.interval = readUInt16LE(bytes, counterObj, 2); + decoded.alarm_global_settings.times = readUInt16LE(bytes, counterObj, 2); + // 0:disable, 1:enable + decoded.alarm_global_settings.release_enable = readUInt8(bytes, counterObj, 1); + break; + case 0x6d: + decoded.month_statistics_settings = decoded.month_statistics_settings || {}; + decoded.month_statistics_settings.day = readUInt8(bytes, counterObj, 1); + decoded.month_statistics_settings.hour = readUInt8(bytes, counterObj, 1); + decoded.month_statistics_settings.minute = readUInt8(bytes, counterObj, 1); + break; + case 0x6c: + decoded.report_enable = decoded.report_enable || {}; + var bitOptions = readUInt16LE(bytes, counterObj, 2); + decoded.report_enable.temperature = extractBits(bitOptions, 0, 1); + decoded.report_enable.current = extractBits(bitOptions, 1, 2); + decoded.report_enable.voltage = extractBits(bitOptions, 2, 3); + decoded.report_enable.power_factor = extractBits(bitOptions, 3, 4); + decoded.report_enable.active_power = extractBits(bitOptions, 4, 5); + decoded.report_enable.reactive_power = extractBits(bitOptions, 5, 6); + decoded.report_enable.apparent_power = extractBits(bitOptions, 6, 7); + decoded.report_enable.forward_active_energy = extractBits(bitOptions, 7, 8); + decoded.report_enable.reverse_active_energy = extractBits(bitOptions, 8, 9); + decoded.report_enable.forward_reactive_energy = extractBits(bitOptions, 9, 10); + decoded.report_enable.reverse_reactive_energy = extractBits(bitOptions, 10, 11); + decoded.report_enable.apparent_energy = extractBits(bitOptions, 11, 12); + decoded.report_enable.thdi = extractBits(bitOptions, 12, 13); + decoded.report_enable.thdv = extractBits(bitOptions, 13, 14); + decoded.report_enable.voltage_unbalance = extractBits(bitOptions, 14, 15); + break; + case 0xbf: + decoded.reset = readOnlyCommand(bytes, counterObj, 0); + break; + case 0xbe: + decoded.reboot = readOnlyCommand(bytes, counterObj, 0); + break; + case 0x5d: + decoded.stop_historical_data_retrieval = decoded.stop_historical_data_retrieval || {}; + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + decoded.stop_historical_data_retrieval.type = readUInt8(bytes, counterObj, 1); + break; + case 0x5b: + decoded.retrieve_historical_data_by_time = decoded.retrieve_historical_data_by_time || {}; + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + decoded.retrieve_historical_data_by_time.type = readUInt8(bytes, counterObj, 1); + decoded.retrieve_historical_data_by_time.time = readUInt32LE(bytes, counterObj, 4); + break; + case 0x5c: + decoded.retrieve_historical_data_by_time_range = decoded.retrieve_historical_data_by_time_range || {}; + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + decoded.retrieve_historical_data_by_time_range.type = readUInt8(bytes, counterObj, 1); + decoded.retrieve_historical_data_by_time_range.start_time = readUInt32LE(bytes, counterObj, 4); + decoded.retrieve_historical_data_by_time_range.end_time = readUInt32LE(bytes, counterObj, 4); + break; + case 0xb9: + decoded.query_device_status = readOnlyCommand(bytes, counterObj, 0); + break; + case 0xb8: + decoded.synchronize_time = readOnlyCommand(bytes, counterObj, 0); + break; + case 0xb7: + decoded.set_time = decoded.set_time || {}; + decoded.set_time.timestamp = readUInt32LE(bytes, counterObj, 4); + break; + case 0xb6: + decoded.reconnect = readOnlyCommand(bytes, counterObj, 0); + break; + case 0x5f: + decoded.reset_energy = decoded.reset_energy || {}; + decoded.reset_energy.channel = readUInt8(bytes, counterObj, 1); + break; + case 0x5e: + decoded.clear_data = decoded.clear_data || {}; + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + decoded.clear_data.type = readUInt8(bytes, counterObj, 1); + break; + case 0x57: + decoded.query_history_set = readOnlyCommand(bytes, counterObj, 0); + break; + } + if (unknown_command) { + throw new Error('unknown command: ' + command_id); + } + } + + if (Object.keys(history).length > 0) { + result.history = history; + } else { + for (var k2 in decoded) { + if (decoded.hasOwnProperty(k2)) { + result[k2] = decoded[k2]; + } + } + } + + return result; +} + +function readOnlyCommand(bytes) { + return 1; +} + +function readUnknownDataType(allBytes, counterObj, end) { + throw new Error('Unknown data type encountered. Please Contact Developer.'); +} + +function readBytes(allBytes, counterObj, end) { + var bytes = allBytes.slice(counterObj.i, counterObj.i + end); + counterObj.i += end; + return bytes; +} + +function readProtocolVersion(bytes) { + var major = bytes[0] & 0xff; + var minor = bytes[1] & 0xff; + return 'v' + major + '.' + minor; +} + +function readHardwareVersion(bytes) { + var major = bytes[0] & 0xff; + var minor = bytes[1] & 0xff; + return 'v' + major + '.' + minor; +} + +function readFirmwareVersion(bytes) { + var major = bytes[0] & 0xff; + var minor = bytes[1] & 0xff; + var release = bytes[2] & 0xff; + var alpha = bytes[3] & 0xff; + var unit_test = bytes[4] & 0xff; + var test = bytes[5] & 0xff; + + var version = 'v' + major + '.' + minor; + if (release !== 0) version += '-r' + release; + if (alpha !== 0) version += '-a' + alpha; + if (unit_test !== 0) version += '-u' + unit_test; + if (test !== 0) version += '-t' + test; + return version; +} + +/* eslint-disable */ +function readUInt8(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + return bytes[0] & 0xff; +} + +function readInt8(allBytes, counterObj, end) { + var ref = readUInt8(allBytes, counterObj, end); + return ref > 0x7f ? ref - 0x100 : ref; +} + +function readUInt16LE(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + var value = (bytes[1] << 8) + bytes[0]; + return value & 0xffff; +} + +function readInt16LE(allBytes, counterObj, end) { + var ref = readUInt16LE(allBytes, counterObj, end); + return ref > 0x7fff ? ref - 0x10000 : ref; +} + +function readWithErrorCheck(value, errorValue) { + if (value == errorValue) { + return 'error'; + } + return value; +} + +function readUInt24LE(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); // 3 bytes expected + var value = (bytes[2] << 16) + (bytes[1] << 8) + bytes[0]; + return value & 0xffffff; +} + +function readInt24LE(allBytes, counterObj, end) { + var ref = readUInt24LE(allBytes, counterObj, end); + return ref > 0x7fffff ? ref - 0x1000000 : ref; +} + +function readUInt32LE(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + var value = (bytes[3] << 24) + (bytes[2] << 16) + (bytes[1] << 8) + bytes[0]; + return (value & 0xffffffff) >>> 0; +} + +function readInt32LE(allBytes, counterObj, end) { + var ref = readUInt32LE(allBytes, counterObj, end); + return ref > 0x7fffffff ? ref - 0x100000000 : ref; +} + +function readFloat16LE(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + var bits = (bytes[1] << 8) | bytes[0]; + var sign = bits >>> 15 === 0 ? 1.0 : -1.0; + var e = (bits >>> 10) & 0x1f; + var m = e === 0 ? (bits & 0x3ff) << 1 : (bits & 0x3ff) | 0x400; + var f = sign * m * Math.pow(2, e - 25); + + var n = Number(f.toFixed(2)); + return n; +} + +function readFloatLE(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + var bits = (bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | bytes[0]; + var sign = bits >>> 31 === 0 ? 1.0 : -1.0; + var e = (bits >>> 23) & 0xff; + var m = e === 0 ? (bits & 0x7fffff) << 1 : (bits & 0x7fffff) | 0x800000; + var f = sign * m * Math.pow(2, e - 150); + return f; +} + +function readString(allBytes, counterObj, end) { + var str = ""; + var bytes = readBytes(allBytes, counterObj, end); + var i = 0; + var byte1, byte2, byte3, byte4; + while (i < bytes.length) { + byte1 = bytes[i++]; + if (byte1 <= 0x7f) { + str += String.fromCharCode(byte1); + } else if (byte1 <= 0xdf) { + byte2 = bytes[i++]; + str += String.fromCharCode(((byte1 & 0x1f) << 6) | (byte2 & 0x3f)); + } else if (byte1 <= 0xef) { + byte2 = bytes[i++]; + byte3 = bytes[i++]; + str += String.fromCharCode(((byte1 & 0x0f) << 12) | ((byte2 & 0x3f) << 6) | (byte3 & 0x3f)); + } else if (byte1 <= 0xf7) { + byte2 = bytes[i++]; + byte3 = bytes[i++]; + byte4 = bytes[i++]; + var codepoint = ((byte1 & 0x07) << 18) | ((byte2 & 0x3f) << 12) | ((byte3 & 0x3f) << 6) | (byte4 & 0x3f); + codepoint -= 0x10000; + str += String.fromCharCode((codepoint >> 10) + 0xd800); + str += String.fromCharCode((codepoint & 0x3ff) + 0xdc00); + } + } + return str.replace(/\u0000+$/g, ''); +} + +function readHexString(allBytes, counterObj, end) { + var temp = []; + var bytes = readBytes(allBytes, counterObj, end); + for (var idx = 0; idx < bytes.length; idx++) { + temp.push(("0" + (bytes[idx] & 0xff).toString(16)).slice(-2)); + } + return temp.join("").replace(/\u0000+$/g, ''); +} + +function readHexStringLE(allBytes, counterObj, end) { + var temp = []; + var bytes = readBytes(allBytes, counterObj, end); + for (var idx = bytes.length - 1; idx >= 0; idx--) { + temp.push(("0" + (bytes[idx] & 0xff).toString(16)).slice(-2)); + } + return temp.join("").replace(/\u0000+$/g, ''); +} + +function extractBits(byte, startBit, endBit) { + if (byte < 0 || byte > 0xffff) { + throw new Error("byte must be in range 0..65535"); + } + if (startBit >= endBit) { + throw new Error("invalid bit range"); + } + + var width = endBit - startBit; + var mask = (1 << width) - 1; + return (byte >>> startBit) & mask; +} + +function pickArrayItem(array, index, idName) { + for (var i = 0; i < array.length; i++) { + if (array[i][idName] === index) { + return array[i]; + } + } + + return {}; +} + +function insertArrayItem(array, item, idName) { + for (var i = 0; i < array.length; i++) { + if (array[i][idName] === item[idName]) { + array[i] = item; + return; + } + } + array.push(item); +} + +function readCommand(allBytes, counterObj, end) { + var bytes = readBytes(allBytes, counterObj, end); + var cmd = bytes + .map(function(b) { + var hex = b.toString(16); + return hex.length === 1 ? '0' + hex : hex; + }) + .join('') + .toLowerCase(); + + var map = cmdMap(); + for (var key in map) { + var xxs = []; + var isMatch = false; + if (key.length !== cmd.length) { + continue; + } + for (var i = 0; i < key.length; i += 2) { + var hexString = key.slice(i, i + 2); + var cmdString = cmd.slice(i, i + 2); + if (hexString === cmdString || hexString === 'xx') { + if (hexString === 'xx') { + xxs.push('.' + parseInt(cmdString, 16)); + } + isMatch = true; + continue; + } else { + isMatch = false; + break; + } + } + if (isMatch) { + var propertyId = map[key]; + if (propertyId.indexOf('._item') === -1) { + return propertyId; + } + var j = 0; + var result = propertyId.replace(/\._item/g, function() { + return xxs[j++]; + }); + return result; + } + } + return null; +} + +function cmdMap() { + return { + "10": "reverse_active_energy1", + "11": "reverse_active_energy2", + "12": "forward_reactive_energy1", + "13": "forward_reactive_energy2", + "14": "reverse_reactive_energy1", + "15": "reverse_reactive_energy2", + "16": "apparent_energy1", + "17": "apparent_energy2", + "30": "temperature_alarm", + "31": "current_alarm", + "32": "voltage_alarm", + "33": "thdi_alarm", + "34": "thdv_alarm", + "35": "voltage_unbalance_alarm", + "36": "power_loss_alarm", + "40": "history_type", + "57": "query_history_set", + "60": "collection_interval", + "61": "reporting_interval", + "63": "temperature_unit", + "64": "bluetooth_name", + "66": "voltage_interface", + "67": "current_interface1", + "68": "current_interface2", + "69": "current_interface3", + "76": "temperature_alarm_settings", + "77": "current_alarm_settings", + "78": "voltage_alarm_settings", + "79": "thdi_alarm_settings", + "ff": "request_check_sequence_number", + "fe": "request_check_order", + "ef": "request_command_queries", + "ee": "request_query_all_configurations", + "ed": "historical_data_report", + "cf": "lorawan_configuration_settings", + "cfd8": "lorawan_configuration_settings.version", + "df": "tsl_version", + "de": "product_name", + "dd": "product_pn", + "db": "product_sn", + "da": "version", + "d9": "oem_id", + "d8": "product_frequency_band", + "d7": "device_info", + "01": "temperature", + "02": "voltage_three_phase_imbalcance", + "03": "thdi", + "03xx": "thdi._item", + "04": "thdv", + "04xx": "thdv._item", + "05": "current", + "05xx": "current._item", + "06": "voltage", + "06xx": "voltage._item", + "07": "power_factor", + "08": "active_power1", + "09": "active_power2", + "0a": "reactive_power1", + "0b": "reactive_power2", + "0c": "apparent_power1", + "0d": "apparent_power2", + "0e": "forward_active_energy1", + "0f": "forward_active_energy2", + "c8": "device_status", + "c5": "data_storage_settings", + "c500": "data_storage_settings.enable", + "c501": "data_storage_settings.retransmission_enable", + "c502": "data_storage_settings.retransmission_interval", + "c503": "data_storage_settings.retrieval_interval", + "undefinedxx": "current_interface4.config._item", + "6a": "current_interface4", + "6b": "temperature_calibration_settings", + "c7": "time_zone", + "c6": "daylight_saving_time", + "77xx": "current_alarm_settings._item", + "78xx": "voltage_alarm_settings._item", + "79xx": "thdi_alarm_settings._item", + "7a": "thdv_alarm_settings", + "7axx": "thdv_alarm_settings._item", + "7b": "voltage_unbalance_alarm_settings", + "7c": "alarm_global_settings", + "6d": "month_statistics_settings", + "6c": "report_enable", + "bf": "reset", + "be": "reboot", + "5d": "stop_historical_data_retrieval", + "5b": "retrieve_historical_data_by_time", + "5c": "retrieve_historical_data_by_time_range", + "b9": "query_device_status", + "b8": "synchronize_time", + "b7": "set_time", + "b6": "reconnect", + "5f": "reset_energy", + "5e": "clear_data" + }; +} \ No newline at end of file diff --git a/vendors/milesight-iot/cth-series/cth01/cth01-encoder.js b/vendors/milesight-iot/cth-series/cth01/cth01-encoder.js new file mode 100644 index 0000000..2c8a13f --- /dev/null +++ b/vendors/milesight-iot/cth-series/cth01/cth01-encoder.js @@ -0,0 +1,2388 @@ +/** + * Payload Encoder + * + * Copyright 2025 Milesight IoT + * + * @product CTH01 + */ + +/* eslint no-redeclare: "off" */ +/* eslint-disable */ +// Chirpstack v4 +function encodeDownlink(input) { + var encoded = milesightDeviceEncode(input.data); + return { bytes: encoded }; +} + +// Chirpstack v3 +function Encode(fPort, obj) { + return milesightDeviceEncode(obj); +} + +// The Things Network +function Encoder(obj, port) { + return milesightDeviceEncode(obj); +} +/* eslint-enable */ + +function milesightDeviceEncode(payload) { + var encoded = []; + var error_value_map = { + current: [0xFF, 0xFF, 0xFF], + voltage: [0xFF, 0xFF], + forward_active_energy: [0xFF, 0xFF, 0xFF, 0xFF], + reverse_active_energy: [0xFF, 0xFF, 0xFF, 0xFF], + forward_reactive_energy: [0xFF, 0xFF, 0xFF, 0xFF], + reverse_reactive_energy: [0xFF, 0xFF, 0xFF, 0xFF], + apparent_energy: [0xFF, 0xFF, 0xFF, 0xFF], + power_factor: [0xFF], + active_power: [0xFF, 0xFF, 0xFF, 0xFF], + reactive_power: [0xFF, 0xFF, 0xFF, 0xFF], + apparent_power: [0xFF, 0xFF, 0xFF, 0xFF], + thdi: [0xFF, 0xFF], + thdv: [0xFF, 0xFF], + voltage_three_phase_imbalcance: [0xFF, 0xFF] + } + //0xff + if ('request_check_sequence_number' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xff); + if (payload.request_check_sequence_number.sequence_number < 0 || payload.request_check_sequence_number.sequence_number > 255) { + throw new Error('request_check_sequence_number.sequence_number must be between 0 and 255'); + } + buffer.writeUInt8(payload.request_check_sequence_number.sequence_number); + encoded = encoded.concat(buffer.toBytes()); + } + //0xfe + if ('request_check_order' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xfe); + if (payload.request_check_order.order < 0 || payload.request_check_order.order > 255) { + throw new Error('request_check_order.order must be between 0 and 255'); + } + buffer.writeUInt8(payload.request_check_order.order); + encoded = encoded.concat(buffer.toBytes()); + } + //0xef + if ('req' in payload) { + var buffer = new Buffer(); + var reqList = payload.req; + for (var idx = 0; idx < reqList.length; idx++) { + var req_command = reqList[idx]; + var pureNumber = []; + var formateStrParts = []; + + req_command.split('.').forEach(function(part) { + if (/^[0-9]+$/.test(part)) { + // padStart ES5 兼容 + var hex = Number(part).toString(16); + while (hex.length < 2) { hex = '0' + hex; } + pureNumber.push(hex); + console.log(pureNumber); + formateStrParts.push('_item'); + } else { + formateStrParts.push(part); + } + }); + + var formateStr = formateStrParts.join('.'); + var hexString = cmdMap()[formateStr]; + + if (hexString && hexString.indexOf('xx') !== -1) { + var i = 0; + hexString = hexString.replace(/xx/g, function() { + return pureNumber[i++]; + }); + } + + if (hexString) { + var length = hexString.length / 2; + buffer.writeUInt8(0xef); + buffer.writeUInt8(length); + buffer.writeHexString(hexString, length, true); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0xee + if ('request_query_all_configurations' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xee); + encoded = encoded.concat(buffer.toBytes()); + } + //0xed + if ('history' in payload) { + for (var i = 0; i < payload.history.length; i++) { + var buffer = new Buffer(); + var history = payload.history[i]; + buffer.writeUInt8(0xed); + // 0:target time, 1:historical time + buffer.writeUInt8(1); + buffer.writeUInt32LE(history.timestamp); + var reset = {}; + for (var k in history) { + if (history.hasOwnProperty(k) && k !== "timestamp") { + reset[k] = history[k]; + } + } + + encoded = encoded.concat(buffer.toBytes()); + encoded = encoded.concat(milesightDeviceEncode(reset)); + } + } + //0xcf + if ('lorawan_configuration_settings' in payload) { + var buffer = new Buffer(); + if (isValid(payload.lorawan_configuration_settings.version)) { + buffer.writeUInt8(0xcf); + // 1:1.0.2, 2:1.0.3, 3:1.0.3, 4:1.0.4 + buffer.writeUInt8(0xd8); + // 1:1.0.2, 2:1.0.3, 3:1.0.3, 4:1.0.4 + buffer.writeUInt8(payload.lorawan_configuration_settings.version); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0xde + if ('product_name' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xde); + buffer.writeString(payload.product_name, 32); + encoded = encoded.concat(buffer.toBytes()); + } + //0xdd + if ('product_pn' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xdd); + buffer.writeString(payload.product_pn, 32); + encoded = encoded.concat(buffer.toBytes()); + } + //0xdb + if ('product_sn' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xdb); + buffer.writeHexString(payload.product_sn, 8); + encoded = encoded.concat(buffer.toBytes()); + } + //0xd9 + if ('oem_id' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xd9); + buffer.writeHexString(payload.oem_id, 2); + encoded = encoded.concat(buffer.toBytes()); + } + //0xd8 + if ('product_frequency_band' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xd8); + buffer.writeString(payload.product_frequency_band, 16); + encoded = encoded.concat(buffer.toBytes()); + } + //0xd7 + if ('device_info' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xd7); + encoded = encoded.concat(buffer.toBytes()); + } + //0x01 + if ('temperature' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x01); + if (payload.temperature < -20 || payload.temperature > 100) { + throw new Error('temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature * 100); + encoded = encoded.concat(buffer.toBytes()); + } + //0x02 + if ('voltage_three_phase_imbalcance' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x02); + if (payload.voltage_three_phase_imbalcance === 'error') { + buffer.writeBytes(error_value_map.voltage_three_phase_imbalcance); + } else { + if (payload.voltage_three_phase_imbalcance < 0 || payload.voltage_three_phase_imbalcance > 100) { + throw new Error('voltage_three_phase_imbalcance must be between 0 and 100'); + } + buffer.writeUInt16LE(payload.voltage_three_phase_imbalcance * 100); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x03 + if ('thdi' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x03); + for (var i = 0; i < payload.thdi.length; i++) { + var thdi_item = payload.thdi[i]; + if (thdi_item.value === 'error') { + buffer.writeBytes(error_value_map.thdi); + } else { + if (thdi_item.value < 0 || thdi_item.value > 100) { + throw new Error('value must be between 0 and 100'); + } + buffer.writeUInt16LE(thdi_item.value * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x04 + if ('thdv' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x04); + for (var i = 0; i < payload.thdv.length; i++) { + var thdv_item = payload.thdv[i]; + if (thdv_item.value === 'error') { + buffer.writeBytes(error_value_map.thdv); + } else { + if (thdv_item.value < 0 || thdv_item.value > 100) { + throw new Error('value must be between 0 and 100'); + } + buffer.writeUInt16LE(thdv_item.value * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x05 + if ('current' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x05); + for (var i = 0; i < payload.current.length; i++) { + var current_item = payload.current[i]; + if (current_item.value === 'error') { + buffer.writeBytes(error_value_map.current); + } else { + if (current_item.value < 0 || current_item.value > 4000) { + throw new Error('value must be between 0 and 4000'); + } + buffer.writeUInt24LE(current_item.value * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x06 + if ('voltage' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x06); + for (var i = 0; i < payload.voltage.length; i++) { + var voltage_item = payload.voltage[i]; + if (voltage_item.value === 'error') { + buffer.writeBytes(error_value_map.voltage); + } else { + if (voltage_item.value < 0 || voltage_item.value > 500) { + throw new Error('value must be between 0 and 500'); + } + buffer.writeUInt16LE(voltage_item.value * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x07 + if ('power_factor' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x07); + var bitOptions = 0; + bitOptions |= payload.power_factor.mask1 << 0; + + bitOptions |= payload.power_factor.mask2 << 1; + + bitOptions |= payload.power_factor.mask3 << 2; + + bitOptions |= payload.power_factor.mask4 << 3; + buffer.writeUInt8(bitOptions); + + if (payload.power_factor.mask1 == 0x00) { + if (payload.power_factor.group1_value === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group1_value < 0 || payload.power_factor.group1_value > 100) { + throw new Error('power_factor.group1_value must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group1_value * 100); + } + } + if (payload.power_factor.mask1 == 0x01) { + if (payload.power_factor.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group1.chan1 < 0 || payload.power_factor.group1.chan1 > 100) { + throw new Error('power_factor.group1.chan1 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group1.chan1 * 100); + } + if (payload.power_factor.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group1.chan2 < 0 || payload.power_factor.group1.chan2 > 100) { + throw new Error('power_factor.group1.chan2 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group1.chan2 * 100); + } + if (payload.power_factor.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group1.chan3 < 0 || payload.power_factor.group1.chan3 > 100) { + throw new Error('power_factor.group1.chan3 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group1.chan3 * 100); + } + } + if (payload.power_factor.mask2 == 0x00) { + if (payload.power_factor.group2_value === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group2_value < 0 || payload.power_factor.group2_value > 100) { + throw new Error('power_factor.group2_value must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group2_value * 100); + } + } + if (payload.power_factor.mask2 == 0x01) { + if (payload.power_factor.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group2.chan1 < 0 || payload.power_factor.group2.chan1 > 100) { + throw new Error('power_factor.group2.chan1 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group2.chan1 * 100); + } + if (payload.power_factor.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group2.chan2 < 0 || payload.power_factor.group2.chan2 > 100) { + throw new Error('power_factor.group2.chan2 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group2.chan2 * 100); + } + if (payload.power_factor.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group2.chan3 < 0 || payload.power_factor.group2.chan3 > 100) { + throw new Error('power_factor.group2.chan3 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group2.chan3 * 100); + } + } + if (payload.power_factor.mask3 == 0x00) { + if (payload.power_factor.group3_value === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group3_value < 0 || payload.power_factor.group3_value > 100) { + throw new Error('power_factor.group3_value must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group3_value * 100); + } + } + if (payload.power_factor.mask3 == 0x01) { + if (payload.power_factor.group3.chan1 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group3.chan1 < 0 || payload.power_factor.group3.chan1 > 100) { + throw new Error('power_factor.group3.chan1 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group3.chan1 * 100); + } + if (payload.power_factor.group3.chan2 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group3.chan2 < 0 || payload.power_factor.group3.chan2 > 100) { + throw new Error('power_factor.group3.chan2 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group3.chan2 * 100); + } + if (payload.power_factor.group3.chan3 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group3.chan3 < 0 || payload.power_factor.group3.chan3 > 100) { + throw new Error('power_factor.group3.chan3 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group3.chan3 * 100); + } + } + if (payload.power_factor.mask4 == 0x00) { + if (payload.power_factor.group4_value === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group4_value < 0 || payload.power_factor.group4_value > 100) { + throw new Error('power_factor.group4_value must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group4_value * 100); + } + } + if (payload.power_factor.mask4 == 0x01) { + if (payload.power_factor.group4.chan1 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group4.chan1 < 0 || payload.power_factor.group4.chan1 > 100) { + throw new Error('power_factor.group4.chan1 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group4.chan1 * 100); + } + if (payload.power_factor.group4.chan2 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group4.chan2 < 0 || payload.power_factor.group4.chan2 > 100) { + throw new Error('power_factor.group4.chan2 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group4.chan2 * 100); + } + if (payload.power_factor.group4.chan3 === 'error') { + buffer.writeBytes(error_value_map.power_factor); + } else { + if (payload.power_factor.group4.chan3 < 0 || payload.power_factor.group4.chan3 > 100) { + throw new Error('power_factor.group4.chan3 must be between 0 and 100'); + } + buffer.writeUInt8(payload.power_factor.group4.chan3 * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x08 + if ('active_power1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x08); + var bitOptions = 0; + bitOptions |= payload.active_power1.mask1 << 0; + + bitOptions |= payload.active_power1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.active_power1.mask1 == 0x00) { + if (payload.active_power1.group1_value === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group1_value * 1000); + } + } + if (payload.active_power1.mask1 == 0x01) { + if (payload.active_power1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group1.chan1 * 1000); + } + if (payload.active_power1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group1.chan2 * 1000); + } + if (payload.active_power1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group1.chan3 * 1000); + } + } + if (payload.active_power1.mask2 == 0x00) { + if (payload.active_power1.group2_value === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group2_value * 1000); + } + } + if (payload.active_power1.mask2 == 0x01) { + if (payload.active_power1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group2.chan1 * 1000); + } + if (payload.active_power1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group2.chan2 * 1000); + } + if (payload.active_power1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x09 + if ('active_power2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x09); + var bitOptions = 0; + bitOptions |= payload.active_power2.mask1 << 0; + + bitOptions |= payload.active_power2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.active_power2.mask1 == 0x00) { + if (payload.active_power2.group1_value === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group1_value * 1000); + } + } + if (payload.active_power2.mask1 == 0x01) { + if (payload.active_power2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group1.chan1 * 1000); + } + if (payload.active_power2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group1.chan2 * 1000); + } + if (payload.active_power2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group1.chan3 * 1000); + } + } + if (payload.active_power2.mask2 == 0x00) { + if (payload.active_power2.group2_value === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group2_value * 1000); + } + } + if (payload.active_power2.mask2 == 0x01) { + if (payload.active_power2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group2.chan1 * 1000); + } + if (payload.active_power2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group2.chan2 * 1000); + } + if (payload.active_power2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.active_power); + } else { + buffer.writeInt32LE(payload.active_power2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0a + if ('reactive_power1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0a); + var bitOptions = 0; + bitOptions |= payload.reactive_power1.mask1 << 0; + + bitOptions |= payload.reactive_power1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reactive_power1.mask1 == 0x00) { + if (payload.reactive_power1.group1_value === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group1_value * 1000); + } + } + if (payload.reactive_power1.mask1 == 0x01) { + if (payload.reactive_power1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group1.chan1 * 1000); + } + if (payload.reactive_power1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group1.chan2 * 1000); + } + if (payload.reactive_power1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group1.chan3 * 1000); + } + } + if (payload.reactive_power1.mask2 == 0x00) { + if (payload.reactive_power1.group2_value === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group2_value * 1000); + } + } + if (payload.reactive_power1.mask2 == 0x01) { + if (payload.reactive_power1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group2.chan1 * 1000); + } + if (payload.reactive_power1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group2.chan2 * 1000); + } + if (payload.reactive_power1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0b + if ('reactive_power2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0b); + var bitOptions = 0; + bitOptions |= payload.reactive_power2.mask1 << 0; + + bitOptions |= payload.reactive_power2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reactive_power2.mask1 == 0x00) { + if (payload.reactive_power2.group1_value === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group1_value * 1000); + } + } + if (payload.reactive_power2.mask1 == 0x01) { + if (payload.reactive_power2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group1.chan1 * 1000); + } + if (payload.reactive_power2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group1.chan2 * 1000); + } + if (payload.reactive_power2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group1.chan3 * 1000); + } + } + if (payload.reactive_power2.mask2 == 0x00) { + if (payload.reactive_power2.group2_value === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group2_value * 1000); + } + } + if (payload.reactive_power2.mask2 == 0x01) { + if (payload.reactive_power2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group2.chan1 * 1000); + } + if (payload.reactive_power2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group2.chan2 * 1000); + } + if (payload.reactive_power2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reactive_power); + } else { + buffer.writeInt32LE(payload.reactive_power2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0c + if ('apparent_power1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0c); + var bitOptions = 0; + bitOptions |= payload.apparent_power1.mask1 << 0; + + bitOptions |= payload.apparent_power1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.apparent_power1.mask1 == 0x00) { + if (payload.apparent_power1.group1_value === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group1_value * 1000); + } + } + if (payload.apparent_power1.mask1 == 0x01) { + if (payload.apparent_power1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group1.chan1 * 1000); + } + if (payload.apparent_power1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group1.chan2 * 1000); + } + if (payload.apparent_power1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group1.chan3 * 1000); + } + } + if (payload.apparent_power1.mask2 == 0x00) { + if (payload.apparent_power1.group2_value === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group2_value * 1000); + } + } + if (payload.apparent_power1.mask2 == 0x01) { + if (payload.apparent_power1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group2.chan1 * 1000); + } + if (payload.apparent_power1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group2.chan2 * 1000); + } + if (payload.apparent_power1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0d + if ('apparent_power2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0d); + var bitOptions = 0; + bitOptions |= payload.apparent_power2.mask1 << 0; + + bitOptions |= payload.apparent_power2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.apparent_power2.mask1 == 0x00) { + if (payload.apparent_power2.group1_value === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group1_value * 1000); + } + } + if (payload.apparent_power2.mask1 == 0x01) { + if (payload.apparent_power2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group1.chan1 * 1000); + } + if (payload.apparent_power2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group1.chan2 * 1000); + } + if (payload.apparent_power2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group1.chan3 * 1000); + } + } + if (payload.apparent_power2.mask2 == 0x00) { + if (payload.apparent_power2.group2_value === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group2_value * 1000); + } + } + if (payload.apparent_power2.mask2 == 0x01) { + if (payload.apparent_power2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group2.chan1 * 1000); + } + if (payload.apparent_power2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group2.chan2 * 1000); + } + if (payload.apparent_power2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_power); + } else { + buffer.writeInt32LE(payload.apparent_power2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0e + if ('forward_active_energy1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0e); + var bitOptions = 0; + bitOptions |= payload.forward_active_energy1.mask1 << 0; + + bitOptions |= payload.forward_active_energy1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.forward_active_energy1.mask1 == 0x00) { + if (payload.forward_active_energy1.group1_value === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group1_value * 1000); + } + } + if (payload.forward_active_energy1.mask1 == 0x01) { + if (payload.forward_active_energy1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group1.chan1 * 1000); + } + if (payload.forward_active_energy1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group1.chan2 * 1000); + } + if (payload.forward_active_energy1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group1.chan3 * 1000); + } + } + if (payload.forward_active_energy1.mask2 == 0x00) { + if (payload.forward_active_energy1.group2_value === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group2_value * 1000); + } + } + if (payload.forward_active_energy1.mask2 == 0x01) { + if (payload.forward_active_energy1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group2.chan1 * 1000); + } + if (payload.forward_active_energy1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group2.chan2 * 1000); + } + if (payload.forward_active_energy1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x0f + if ('forward_active_energy2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x0f); + var bitOptions = 0; + bitOptions |= payload.forward_active_energy2.mask1 << 0; + + bitOptions |= payload.forward_active_energy2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.forward_active_energy2.mask1 == 0x00) { + if (payload.forward_active_energy2.group1_value === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group1_value * 1000); + } + } + if (payload.forward_active_energy2.mask1 == 0x01) { + if (payload.forward_active_energy2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group1.chan1 * 1000); + } + if (payload.forward_active_energy2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group1.chan2 * 1000); + } + if (payload.forward_active_energy2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group1.chan3 * 1000); + } + } + if (payload.forward_active_energy2.mask2 == 0x00) { + if (payload.forward_active_energy2.group2_value === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group2_value * 1000); + } + } + if (payload.forward_active_energy2.mask2 == 0x01) { + if (payload.forward_active_energy2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group2.chan1 * 1000); + } + if (payload.forward_active_energy2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group2.chan2 * 1000); + } + if (payload.forward_active_energy2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_active_energy); + } else { + buffer.writeUInt32LE(payload.forward_active_energy2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x10 + if ('reverse_active_energy1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x10); + var bitOptions = 0; + bitOptions |= payload.reverse_active_energy1.mask1 << 0; + + bitOptions |= payload.reverse_active_energy1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reverse_active_energy1.mask1 == 0x00) { + if (payload.reverse_active_energy1.group1_value === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group1_value * 1000); + } + } + if (payload.reverse_active_energy1.mask1 == 0x01) { + if (payload.reverse_active_energy1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group1.chan1 * 1000); + } + if (payload.reverse_active_energy1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group1.chan2 * 1000); + } + if (payload.reverse_active_energy1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group1.chan3 * 1000); + } + } + if (payload.reverse_active_energy1.mask2 == 0x00) { + if (payload.reverse_active_energy1.group2_value === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group2_value * 1000); + } + } + if (payload.reverse_active_energy1.mask2 == 0x01) { + if (payload.reverse_active_energy1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group2.chan1 * 1000); + } + if (payload.reverse_active_energy1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group2.chan2 * 1000); + } + if (payload.reverse_active_energy1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x11 + if ('reverse_active_energy2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x11); + var bitOptions = 0; + bitOptions |= payload.reverse_active_energy2.mask1 << 0; + + bitOptions |= payload.reverse_active_energy2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reverse_active_energy2.mask1 == 0x00) { + if (payload.reverse_active_energy2.group1_value === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group1_value * 1000); + } + } + if (payload.reverse_active_energy2.mask1 == 0x01) { + if (payload.reverse_active_energy2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group1.chan1 * 1000); + } + if (payload.reverse_active_energy2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group1.chan2 * 1000); + } + if (payload.reverse_active_energy2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group1.chan3 * 1000); + } + } + if (payload.reverse_active_energy2.mask2 == 0x00) { + if (payload.reverse_active_energy2.group2_value === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group2_value * 1000); + } + } + if (payload.reverse_active_energy2.mask2 == 0x01) { + if (payload.reverse_active_energy2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group2.chan1 * 1000); + } + if (payload.reverse_active_energy2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group2.chan2 * 1000); + } + if (payload.reverse_active_energy2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_active_energy); + } else { + buffer.writeUInt32LE(payload.reverse_active_energy2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x12 + if ('forward_reactive_energy1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x12); + var bitOptions = 0; + bitOptions |= payload.forward_reactive_energy1.mask1 << 0; + + bitOptions |= payload.forward_reactive_energy1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.forward_reactive_energy1.mask1 == 0x00) { + if (payload.forward_reactive_energy1.group1_value === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group1_value * 1000); + } + } + if (payload.forward_reactive_energy1.mask1 == 0x01) { + if (payload.forward_reactive_energy1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group1.chan1 * 1000); + } + if (payload.forward_reactive_energy1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group1.chan2 * 1000); + } + if (payload.forward_reactive_energy1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group1.chan3 * 1000); + } + } + if (payload.forward_reactive_energy1.mask2 == 0x00) { + if (payload.forward_reactive_energy1.group2_value === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group2_value * 1000); + } + } + if (payload.forward_reactive_energy1.mask2 == 0x01) { + if (payload.forward_reactive_energy1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group2.chan1 * 1000); + } + if (payload.forward_reactive_energy1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group2.chan2 * 1000); + } + if (payload.forward_reactive_energy1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x13 + if ('forward_reactive_energy2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x13); + var bitOptions = 0; + bitOptions |= payload.forward_reactive_energy2.mask1 << 0; + + bitOptions |= payload.forward_reactive_energy2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.forward_reactive_energy2.mask1 == 0x00) { + if (payload.forward_reactive_energy2.group1_value === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group1_value * 1000); + } + } + if (payload.forward_reactive_energy2.mask1 == 0x01) { + if (payload.forward_reactive_energy2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group1.chan1 * 1000); + } + if (payload.forward_reactive_energy2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group1.chan2 * 1000); + } + if (payload.forward_reactive_energy2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group1.chan3 * 1000); + } + } + if (payload.forward_reactive_energy2.mask2 == 0x00) { + if (payload.forward_reactive_energy2.group2_value === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group2_value * 1000); + } + } + if (payload.forward_reactive_energy2.mask2 == 0x01) { + if (payload.forward_reactive_energy2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group2.chan1 * 1000); + } + if (payload.forward_reactive_energy2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group2.chan2 * 1000); + } + if (payload.forward_reactive_energy2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.forward_reactive_energy); + } else { + buffer.writeUInt32LE(payload.forward_reactive_energy2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x14 + if ('reverse_reactive_energy1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x14); + var bitOptions = 0; + bitOptions |= payload.reverse_reactive_energy1.mask1 << 0; + + bitOptions |= payload.reverse_reactive_energy1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reverse_reactive_energy1.mask1 == 0x00) { + if (payload.reverse_reactive_energy1.group1_value === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group1_value * 1000); + } + } + if (payload.reverse_reactive_energy1.mask1 == 0x01) { + if (payload.reverse_reactive_energy1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group1.chan1 * 1000); + } + if (payload.reverse_reactive_energy1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group1.chan2 * 1000); + } + if (payload.reverse_reactive_energy1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group1.chan3 * 1000); + } + } + if (payload.reverse_reactive_energy1.mask2 == 0x00) { + if (payload.reverse_reactive_energy1.group2_value === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group2_value * 1000); + } + } + if (payload.reverse_reactive_energy1.mask2 == 0x01) { + if (payload.reverse_reactive_energy1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group2.chan1 * 1000); + } + if (payload.reverse_reactive_energy1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group2.chan2 * 1000); + } + if (payload.reverse_reactive_energy1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x15 + if ('reverse_reactive_energy2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x15); + var bitOptions = 0; + bitOptions |= payload.reverse_reactive_energy2.mask1 << 0; + + bitOptions |= payload.reverse_reactive_energy2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.reverse_reactive_energy2.mask1 == 0x00) { + if (payload.reverse_reactive_energy2.group1_value === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group1_value * 1000); + } + } + if (payload.reverse_reactive_energy2.mask1 == 0x01) { + if (payload.reverse_reactive_energy2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group1.chan1 * 1000); + } + if (payload.reverse_reactive_energy2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group1.chan2 * 1000); + } + if (payload.reverse_reactive_energy2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group1.chan3 * 1000); + } + } + if (payload.reverse_reactive_energy2.mask2 == 0x00) { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group2_value * 1000); + } + if (payload.reverse_reactive_energy2.mask2 == 0x01) { + if (payload.reverse_reactive_energy2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group2.chan1 * 1000); + } + if (payload.reverse_reactive_energy2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group2.chan2 * 1000); + } + if (payload.reverse_reactive_energy2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.reverse_reactive_energy); + } else { + buffer.writeUInt32LE(payload.reverse_reactive_energy2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x16 + if ('apparent_energy1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x16); + var bitOptions = 0; + bitOptions |= payload.apparent_energy1.mask1 << 0; + + bitOptions |= payload.apparent_energy1.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.apparent_energy1.mask1 == 0x00) { + if (payload.apparent_energy1.group1_value === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group1_value * 1000); + } + } + if (payload.apparent_energy1.mask1 == 0x01) { + if (payload.apparent_energy1.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group1.chan1 * 1000); + } + if (payload.apparent_energy1.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group1.chan2 * 1000); + } + if (payload.apparent_energy1.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group1.chan3 * 1000); + } + } + if (payload.apparent_energy1.mask2 == 0x00) { + if (payload.apparent_energy1.group2_value === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group2_value * 1000); + } + } + if (payload.apparent_energy1.mask2 == 0x01) { + if (payload.apparent_energy1.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group2.chan1 * 1000); + } + if (payload.apparent_energy1.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group2.chan2 * 1000); + } + if (payload.apparent_energy1.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy1.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x17 + if ('apparent_energy2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x17); + var bitOptions = 0; + bitOptions |= payload.apparent_energy2.mask1 << 0; + + bitOptions |= payload.apparent_energy2.mask2 << 1; + buffer.writeUInt8(bitOptions); + + if (payload.apparent_energy2.mask1 == 0x00) { + if (payload.apparent_energy2.group1_value === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group1_value * 1000); + } + } + if (payload.apparent_energy2.mask1 == 0x01) { + if (payload.apparent_energy2.group1.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group1.chan1 * 1000); + } + if (payload.apparent_energy2.group1.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group1.chan2 * 1000); + } + if (payload.apparent_energy2.group1.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group1.chan3 * 1000); + } + } + if (payload.apparent_energy2.mask2 == 0x00) { + if (payload.apparent_energy2.group2_value === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group2_value * 1000); + } + } + if (payload.apparent_energy2.mask2 == 0x01) { + if (payload.apparent_energy2.group2.chan1 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group2.chan1 * 1000); + } + if (payload.apparent_energy2.group2.chan2 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group2.chan2 * 1000); + } + if (payload.apparent_energy2.group2.chan3 === 'error') { + buffer.writeBytes(error_value_map.apparent_energy); + } else { + buffer.writeUInt32LE(payload.apparent_energy2.group2.chan3 * 1000); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x40 + if ('history_type' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x40); + // 1:month energy, 2:month min, 3:month max + buffer.writeUInt8(payload.history_type.type); + encoded = encoded.concat(buffer.toBytes()); + } + //0x30 + if ('temperature_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x30); + buffer.writeUInt8(payload.temperature_alarm.type); + if (payload.temperature_alarm.type == 0x00) { + } + if (payload.temperature_alarm.type == 0x01) { + } + if (payload.temperature_alarm.type == 0x02) { + } + if (payload.temperature_alarm.type == 0x03) { + } + if (payload.temperature_alarm.type == 0x10) { + if (payload.temperature_alarm.lower_range_alarm_deactivation.temperature < -20 || payload.temperature_alarm.lower_range_alarm_deactivation.temperature > 100) { + throw new Error('temperature_alarm.lower_range_alarm_deactivation.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.lower_range_alarm_deactivation.temperature * 100); + } + if (payload.temperature_alarm.type == 0x11) { + if (payload.temperature_alarm.lower_range_alarm_trigger.temperature < -20 || payload.temperature_alarm.lower_range_alarm_trigger.temperature > 100) { + throw new Error('temperature_alarm.lower_range_alarm_trigger.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.lower_range_alarm_trigger.temperature * 100); + } + if (payload.temperature_alarm.type == 0x12) { + if (payload.temperature_alarm.over_range_alarm_deactivation.temperature < -20 || payload.temperature_alarm.over_range_alarm_deactivation.temperature > 100) { + throw new Error('temperature_alarm.over_range_alarm_deactivation.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.over_range_alarm_deactivation.temperature * 100); + } + if (payload.temperature_alarm.type == 0x13) { + if (payload.temperature_alarm.over_range_alarm_trigger.temperature < -20 || payload.temperature_alarm.over_range_alarm_trigger.temperature > 100) { + throw new Error('temperature_alarm.over_range_alarm_trigger.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.over_range_alarm_trigger.temperature * 100); + } + if (payload.temperature_alarm.type == 0x14) { + if (payload.temperature_alarm.within_range_alarm_deactivation.temperature < -20 || payload.temperature_alarm.within_range_alarm_deactivation.temperature > 100) { + throw new Error('temperature_alarm.within_range_alarm_deactivation.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.within_range_alarm_deactivation.temperature * 100); + } + if (payload.temperature_alarm.type == 0x15) { + if (payload.temperature_alarm.within_range_alarm_trigger.temperature < -20 || payload.temperature_alarm.within_range_alarm_trigger.temperature > 100) { + throw new Error('temperature_alarm.within_range_alarm_trigger.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.within_range_alarm_trigger.temperature * 100); + } + if (payload.temperature_alarm.type == 0x16) { + if (payload.temperature_alarm.exceed_range_alarm_deactivation.temperature < -20 || payload.temperature_alarm.exceed_range_alarm_deactivation.temperature > 100) { + throw new Error('temperature_alarm.exceed_range_alarm_deactivation.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.exceed_range_alarm_deactivation.temperature * 100); + } + if (payload.temperature_alarm.type == 0x17) { + if (payload.temperature_alarm.exceed_range_alarm_trigger.temperature < -20 || payload.temperature_alarm.exceed_range_alarm_trigger.temperature > 100) { + throw new Error('temperature_alarm.exceed_range_alarm_trigger.temperature must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm.exceed_range_alarm_trigger.temperature * 100); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x31 + if ('current_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x31); + if (payload.current_alarm.channel < 0 || payload.current_alarm.channel > 11) { + throw new Error('current_alarm.channel must be between 0 and 11'); + } + buffer.writeUInt8(payload.current_alarm.channel); + buffer.writeUInt8(payload.current_alarm.info.type); + if (payload.current_alarm.info.type == 0x00) { + } + if (payload.current_alarm.info.type == 0x01) { + buffer.writeUInt24LE(payload.current_alarm.info.lower_range_error.current * 100); + } + if (payload.current_alarm.info.type == 0x02) { + buffer.writeUInt24LE(payload.current_alarm.info.over_range_error.current * 100); + } + if (payload.current_alarm.info.type == 0x03) { + } + if (payload.current_alarm.info.type == 0x04) { + buffer.writeUInt24LE(payload.current_alarm.info.over_range_release.current * 100); + } + if (payload.current_alarm.info.type == 0x10) { + buffer.writeUInt24LE(payload.current_alarm.info.lower_range_alarm_deactivation.current * 100); + } + if (payload.current_alarm.info.type == 0x11) { + buffer.writeUInt24LE(payload.current_alarm.info.lower_range_alarm_trigger.current * 100); + } + if (payload.current_alarm.info.type == 0x12) { + buffer.writeUInt24LE(payload.current_alarm.info.over_range_alarm_deactivation.current * 100); + } + if (payload.current_alarm.info.type == 0x13) { + buffer.writeUInt24LE(payload.current_alarm.info.over_range_alarm_trigger.current * 100); + } + if (payload.current_alarm.info.type == 0x14) { + buffer.writeUInt24LE(payload.current_alarm.info.within_range_alarm_deactivation.current * 100); + } + if (payload.current_alarm.info.type == 0x15) { + buffer.writeUInt24LE(payload.current_alarm.info.within_range_alarm_trigger.current * 100); + } + if (payload.current_alarm.info.type == 0x16) { + buffer.writeUInt24LE(payload.current_alarm.info.exceed_range_alarm_deactivation.current * 100); + } + if (payload.current_alarm.info.type == 0x17) { + buffer.writeUInt24LE(payload.current_alarm.info.exceed_range_alarm_trigger.current * 100); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x32 + if ('voltage_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x32); + if (payload.voltage_alarm.channel < 0 || payload.voltage_alarm.channel > 11) { + throw new Error('voltage_alarm.channel must be between 0 and 11'); + } + buffer.writeUInt8(payload.voltage_alarm.channel); + buffer.writeUInt8(payload.voltage_alarm.info.type); + if (payload.voltage_alarm.info.type == 0x00) { + } + if (payload.voltage_alarm.info.type == 0x01) { + buffer.writeUInt16LE(payload.voltage_alarm.info.lower_range_error.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x02) { + buffer.writeUInt16LE(payload.voltage_alarm.info.over_range_error.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x03) { + } + if (payload.voltage_alarm.info.type == 0x04) { + buffer.writeUInt16LE(payload.voltage_alarm.info.over_range_release.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x10) { + buffer.writeUInt16LE(payload.voltage_alarm.info.lower_range_alarm_deactivation.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x11) { + buffer.writeUInt16LE(payload.voltage_alarm.info.lower_range_alarm_trigger.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x12) { + buffer.writeUInt16LE(payload.voltage_alarm.info.over_range_alarm_deactivation.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x13) { + buffer.writeUInt16LE(payload.voltage_alarm.info.over_range_alarm_trigger.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x14) { + buffer.writeUInt16LE(payload.voltage_alarm.info.within_range_alarm_deactivation.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x15) { + buffer.writeUInt16LE(payload.voltage_alarm.info.within_range_alarm_trigger.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x16) { + buffer.writeUInt16LE(payload.voltage_alarm.info.exceed_range_alarm_deactivation.voltage * 100); + } + if (payload.voltage_alarm.info.type == 0x17) { + buffer.writeUInt16LE(payload.voltage_alarm.info.exceed_range_alarm_trigger.voltage * 100); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x33 + if ('thdi_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x33); + if (payload.thdi_alarm.channel < 0 || payload.thdi_alarm.channel > 11) { + throw new Error('thdi_alarm.channel must be between 0 and 11'); + } + buffer.writeUInt8(payload.thdi_alarm.channel); + buffer.writeUInt8(payload.thdi_alarm.info.type); + if (payload.thdi_alarm.info.type == 0x00) { + } + if (payload.thdi_alarm.info.type == 0x12) { + if (payload.thdi_alarm.info.over_range_alarm_deactivation.thdi === 'error') { + buffer.writeBytes(error_value_map.thdi); + } else { + buffer.writeUInt16LE(payload.thdi_alarm.info.over_range_alarm_deactivation.thdi * 100); + } + } + if (payload.thdi_alarm.info.type == 0x13) { + if (payload.thdi_alarm.info.over_range_alarm_trigger.thdi === 'error') { + buffer.writeBytes(error_value_map.thdi); + } else { + buffer.writeUInt16LE(payload.thdi_alarm.info.over_range_alarm_trigger.thdi * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x34 + if ('thdv_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x34); + if (payload.thdv_alarm.channel < 0 || payload.thdv_alarm.channel > 11) { + throw new Error('thdv_alarm.channel must be between 0 and 11'); + } + buffer.writeUInt8(payload.thdv_alarm.channel); + buffer.writeUInt8(payload.thdv_alarm.info.type); + if (payload.thdv_alarm.info.type == 0x00) { + } + if (payload.thdv_alarm.info.type == 0x12) { + if (payload.thdv_alarm.info.over_range_alarm_deactivation.thdv === 'error') { + buffer.writeBytes(error_value_map.thdv); + } else { + buffer.writeUInt16LE(payload.thdv_alarm.info.over_range_alarm_deactivation.thdv * 100); + } + } + if (payload.thdv_alarm.info.type == 0x13) { + if (payload.thdv_alarm.info.over_range_alarm_trigger.thdv === 'error') { + buffer.writeBytes(error_value_map.thdv); + } else { + buffer.writeUInt16LE(payload.thdv_alarm.info.over_range_alarm_trigger.thdv * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x35 + if ('voltage_unbalance_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x35); + buffer.writeUInt8(payload.voltage_unbalance_alarm.type); + if (payload.voltage_unbalance_alarm.type == 0x00) { + } + if (payload.voltage_unbalance_alarm.type == 0x12) { + if (payload.voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance === 'error') { + buffer.writeBytes(error_value_map.voltage_three_phase_imbalcance); + } else { + buffer.writeUInt16LE(payload.voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance * 100); + } + } + if (payload.voltage_unbalance_alarm.type == 0x13) { + if (payload.voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance === 'error') { + buffer.writeBytes(error_value_map.voltage_three_phase_imbalcance); + } else { + buffer.writeUInt16LE(payload.voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance * 100); + } + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x36 + if ('power_loss_alarm' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x36); + encoded = encoded.concat(buffer.toBytes()); + } + //0x60 + if ('collection_interval' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x60); + // 0:second, 1:min + buffer.writeUInt8(payload.collection_interval.unit); + if (payload.collection_interval.unit == 0x00) { + if (payload.collection_interval.seconds_of_time < 10 || payload.collection_interval.seconds_of_time > 64800) { + throw new Error('collection_interval.seconds_of_time must be between 10 and 64800'); + } + buffer.writeUInt16LE(payload.collection_interval.seconds_of_time); + } + if (payload.collection_interval.unit == 0x01) { + if (payload.collection_interval.minutes_of_time < 1 || payload.collection_interval.minutes_of_time > 1440) { + throw new Error('collection_interval.minutes_of_time must be between 1 and 1440'); + } + buffer.writeUInt16LE(payload.collection_interval.minutes_of_time); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x61 + if ('reporting_interval' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x61); + // 0:second, 1:min + buffer.writeUInt8(payload.reporting_interval.unit); + if (payload.reporting_interval.unit == 0x00) { + if (payload.reporting_interval.seconds_of_time < 10 || payload.reporting_interval.seconds_of_time > 64800) { + throw new Error('reporting_interval.seconds_of_time must be between 10 and 64800'); + } + buffer.writeUInt16LE(payload.reporting_interval.seconds_of_time); + } + if (payload.reporting_interval.unit == 0x01) { + if (payload.reporting_interval.minutes_of_time < 1 || payload.reporting_interval.minutes_of_time > 1440) { + throw new Error('reporting_interval.minutes_of_time must be between 1 and 1440'); + } + buffer.writeUInt16LE(payload.reporting_interval.minutes_of_time); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0xc8 + if ('device_status' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xc8); + // 0:Power Off, 1:Power On + buffer.writeUInt8(payload.device_status); + encoded = encoded.concat(buffer.toBytes()); + } + //0x63 + if ('temperature_unit' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x63); + // 0:℃, 1:℉ + buffer.writeUInt8(payload.temperature_unit); + encoded = encoded.concat(buffer.toBytes()); + } + //0x64 + if ('bluetooth_name' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x64); + if (payload.bluetooth_name.length < 1 || payload.bluetooth_name.length > 13) { + throw new Error('bluetooth_name.length must be between 1 and 13'); + } + buffer.writeUInt8(payload.bluetooth_name.length); + buffer.writeString(payload.bluetooth_name.content, payload.bluetooth_name.length, true); + encoded = encoded.concat(buffer.toBytes()); + } + //0xc5 + if ('data_storage_settings' in payload) { + var buffer = new Buffer(); + if (isValid(payload.data_storage_settings.enable)) { + buffer.writeUInt8(0xc5); + // 0:disable, 1:enable + buffer.writeUInt8(0x00); + // 0:disable, 1:enable + buffer.writeUInt8(payload.data_storage_settings.enable); + } + if (isValid(payload.data_storage_settings.retransmission_enable)) { + buffer.writeUInt8(0xc5); + // 0:disable, 1:enable + buffer.writeUInt8(0x01); + // 0:disable, 1:enable + buffer.writeUInt8(payload.data_storage_settings.retransmission_enable); + } + if (isValid(payload.data_storage_settings.retransmission_interval)) { + buffer.writeUInt8(0xc5); + buffer.writeUInt8(0x02); + if (payload.data_storage_settings.retransmission_interval < 30 || payload.data_storage_settings.retransmission_interval > 1200) { + throw new Error('data_storage_settings.retransmission_interval must be between 30 and 1200'); + } + buffer.writeUInt16LE(payload.data_storage_settings.retransmission_interval); + } + if (isValid(payload.data_storage_settings.retrieval_interval)) { + buffer.writeUInt8(0xc5); + buffer.writeUInt8(0x03); + if (payload.data_storage_settings.retrieval_interval < 30 || payload.data_storage_settings.retrieval_interval > 1200) { + throw new Error('data_storage_settings.retrieval_interval must be between 30 and 1200'); + } + buffer.writeUInt16LE(payload.data_storage_settings.retrieval_interval); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x66 + if ('voltage_interface' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x66); + // 0:four_wire, 1:three_wire + buffer.writeUInt8(payload.voltage_interface); + encoded = encoded.concat(buffer.toBytes()); + } + //0x67 + if ('current_interface1' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x67); + // 0:one_phase, 1:three_phase + buffer.writeUInt8(payload.current_interface1.type); + for (var i = 0; i < payload.current_interface1.config.length; i++) { + var config_item = payload.current_interface1.config[i]; + // 0:forward, 1:reserse + buffer.writeUInt8(config_item.direction); + buffer.writeUInt16LE(config_item.range); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x68 + if ('current_interface2' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x68); + // 0:one_phase, 1:three_phase + buffer.writeUInt8(payload.current_interface2.type); + for (var i = 0; i < payload.current_interface2.config.length; i++) { + var config_item = payload.current_interface2.config[i]; + // 0:forward, 1:reserse + buffer.writeUInt8(config_item.direction); + buffer.writeUInt16LE(config_item.range); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x69 + if ('current_interface3' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x69); + // 0:one_phase, 1:three_phase + buffer.writeUInt8(payload.current_interface3.type); + for (var i = 0; i < payload.current_interface3.config.length; i++) { + var config_item = payload.current_interface3.config[i]; + // 0:forward, 1:reserse + buffer.writeUInt8(config_item.direction); + buffer.writeUInt16LE(config_item.range); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x6a + if ('current_interface4' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x6a); + // 0:one_phase, 1:three_phase + buffer.writeUInt8(payload.current_interface4.type); + for (var i = 0; i < payload.current_interface4.config.length; i++) { + var config_item = payload.current_interface4.config[i]; + // 0:forward, 1:reserse + buffer.writeUInt8(config_item.direction); + buffer.writeUInt16LE(config_item.range); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x6b + if ('temperature_calibration_settings' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x6b); + // 0:disable, 1:enable + buffer.writeUInt8(payload.temperature_calibration_settings.enable); + if (payload.temperature_calibration_settings.calibration_value < -120 || payload.temperature_calibration_settings.calibration_value > 120) { + throw new Error('temperature_calibration_settings.calibration_value must be between -120 and 120'); + } + buffer.writeInt16LE(payload.temperature_calibration_settings.calibration_value * 100); + encoded = encoded.concat(buffer.toBytes()); + } + //0xc7 + if ('time_zone' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xc7); + buffer.writeInt16LE(payload.time_zone); + encoded = encoded.concat(buffer.toBytes()); + } + //0xc6 + if ('daylight_saving_time' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xc6); + // 0:disable, 1:enable + buffer.writeUInt8(payload.daylight_saving_time.enable); + if (payload.daylight_saving_time.daylight_saving_time_offset < 0 || payload.daylight_saving_time.daylight_saving_time_offset > 120) { + throw new Error('daylight_saving_time.daylight_saving_time_offset must be between 0 and 120'); + } + buffer.writeUInt8(payload.daylight_saving_time.daylight_saving_time_offset); + // 1:Jan., 2:Feb., 3:Mar., 4:Apr., 5:May, 6:Jun., 7:Jul., 8:Aug., 9:Sep., 10:Oct., 11:Nov., 12:Dec. + buffer.writeUInt8(payload.daylight_saving_time.start_month); + var bitOptions = 0; + // 1:1st, 2: 2nd, 3: 3rd, 4: 4th, 5: last + bitOptions |= payload.daylight_saving_time.start_week_num << 4; + + // 1:Mon., 2:Tues., 3:Wed., 4:Thurs., 5:Fri., 6:Sat., 7:Sun. + bitOptions |= payload.daylight_saving_time.start_week_day << 0; + buffer.writeUInt8(bitOptions); + + buffer.writeUInt16LE(payload.daylight_saving_time.start_hour_min); + // 1:Jan., 2:Feb., 3:Mar., 4:Apr., 5:May, 6:Jun., 7:Jul., 8:Aug., 9:Sep., 10:Oct., 11:Nov., 12:Dec. + buffer.writeUInt8(payload.daylight_saving_time.end_month); + var bitOptions = 0; + // 1:1st, 2: 2nd, 3: 3rd, 4: 4th, 5: last + bitOptions |= payload.daylight_saving_time.end_week_num << 4; + + // 1:Mon., 2:Tues., 3:Wed., 4:Thurs., 5:Fri., 6:Sat., 7:Sun. + bitOptions |= payload.daylight_saving_time.end_week_day << 0; + buffer.writeUInt8(bitOptions); + + buffer.writeUInt16LE(payload.daylight_saving_time.end_hour_min); + encoded = encoded.concat(buffer.toBytes()); + } + //0x76 + if ('temperature_alarm_settings' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x76); + // 0:disable, 1:enable + buffer.writeUInt8(payload.temperature_alarm_settings.enable); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + buffer.writeUInt8(payload.temperature_alarm_settings.threshold_condition); + if (payload.temperature_alarm_settings.threshold_min < -20 || payload.temperature_alarm_settings.threshold_min > 100) { + throw new Error('temperature_alarm_settings.threshold_min must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm_settings.threshold_min * 100); + if (payload.temperature_alarm_settings.threshold_max < -20 || payload.temperature_alarm_settings.threshold_max > 100) { + throw new Error('temperature_alarm_settings.threshold_max must be between -20 and 100'); + } + buffer.writeInt16LE(payload.temperature_alarm_settings.threshold_max * 100); + encoded = encoded.concat(buffer.toBytes()); + } + //0x77 + if ('current_alarm_settings' in payload) { + var buffer = new Buffer(); + for (var current_alarm_settings_id = 0; current_alarm_settings_id < (payload.current_alarm_settings && payload.current_alarm_settings.length); current_alarm_settings_id++) { + var current_alarm_settings_item = payload.current_alarm_settings[current_alarm_settings_id]; + var current_alarm_settings_item_id = current_alarm_settings_item.channel; + buffer.writeUInt8(0x77); + buffer.writeUInt8(current_alarm_settings_item_id); + // 0:disable, 1:enable + buffer.writeUInt8(current_alarm_settings_item.enable); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + buffer.writeUInt8(current_alarm_settings_item.threshold_condition); + if (current_alarm_settings_item.threshold_min < 0 || current_alarm_settings_item.threshold_min > 4000) { + throw new Error('threshold_min must be between 0 and 4000'); + } + buffer.writeInt16LE(current_alarm_settings_item.threshold_min); + if (current_alarm_settings_item.threshold_max < 0 || current_alarm_settings_item.threshold_max > 4000) { + throw new Error('threshold_max must be between 0 and 4000'); + } + buffer.writeInt16LE(current_alarm_settings_item.threshold_max); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x78 + if ('voltage_alarm_settings' in payload) { + var buffer = new Buffer(); + for (var voltage_alarm_settings_id = 0; voltage_alarm_settings_id < (payload.voltage_alarm_settings && payload.voltage_alarm_settings.length); voltage_alarm_settings_id++) { + var voltage_alarm_settings_item = payload.voltage_alarm_settings[voltage_alarm_settings_id]; + var voltage_alarm_settings_item_id = voltage_alarm_settings_item.channel; + buffer.writeUInt8(0x78); + buffer.writeUInt8(voltage_alarm_settings_item_id); + // 0:disable, 1:enable + buffer.writeUInt8(voltage_alarm_settings_item.enable); + // 0:disable, 1:condition: xB, 3:condition: A≤x≤B, 4:condition: xB + buffer.writeUInt8(voltage_alarm_settings_item.threshold_condition); + if (voltage_alarm_settings_item.threshold_min < 0 || voltage_alarm_settings_item.threshold_min > 500) { + throw new Error('threshold_min must be between 0 and 500'); + } + buffer.writeInt16LE(voltage_alarm_settings_item.threshold_min); + if (voltage_alarm_settings_item.threshold_max < 0 || voltage_alarm_settings_item.threshold_max > 500) { + throw new Error('threshold_max must be between 0 and 500'); + } + buffer.writeInt16LE(voltage_alarm_settings_item.threshold_max); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x79 + if ('thdi_alarm_settings' in payload) { + var buffer = new Buffer(); + for (var thdi_alarm_settings_id = 0; thdi_alarm_settings_id < (payload.thdi_alarm_settings && payload.thdi_alarm_settings.length); thdi_alarm_settings_id++) { + var thdi_alarm_settings_item = payload.thdi_alarm_settings[thdi_alarm_settings_id]; + var thdi_alarm_settings_item_id = thdi_alarm_settings_item.channel; + buffer.writeUInt8(0x79); + buffer.writeUInt8(thdi_alarm_settings_item_id); + // 0:disable, 1:enable + buffer.writeUInt8(thdi_alarm_settings_item.enable); + // 0:disable, 2:condition: x>B + buffer.writeUInt8(thdi_alarm_settings_item.threshold_condition); + if (thdi_alarm_settings_item.threshold_min < 0 || thdi_alarm_settings_item.threshold_min > 100) { + throw new Error('threshold_min must be between 0 and 100'); + } + buffer.writeInt16LE(thdi_alarm_settings_item.threshold_min); + if (thdi_alarm_settings_item.threshold_max < 1 || thdi_alarm_settings_item.threshold_max > 100) { + throw new Error('threshold_max must be between 1 and 100'); + } + buffer.writeInt16LE(thdi_alarm_settings_item.threshold_max); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x7a + if ('thdv_alarm_settings' in payload) { + var buffer = new Buffer(); + for (var thdv_alarm_settings_id = 0; thdv_alarm_settings_id < (payload.thdv_alarm_settings && payload.thdv_alarm_settings.length); thdv_alarm_settings_id++) { + var thdv_alarm_settings_item = payload.thdv_alarm_settings[thdv_alarm_settings_id]; + var thdv_alarm_settings_item_id = thdv_alarm_settings_item.channel; + buffer.writeUInt8(0x7a); + buffer.writeUInt8(thdv_alarm_settings_item_id); + // 0:disable, 1:enable + buffer.writeUInt8(thdv_alarm_settings_item.enable); + // 0:disable, 2:condition: x>B + buffer.writeUInt8(thdv_alarm_settings_item.threshold_condition); + if (thdv_alarm_settings_item.threshold_min < 0 || thdv_alarm_settings_item.threshold_min > 100) { + throw new Error('threshold_min must be between 0 and 100'); + } + buffer.writeInt16LE(thdv_alarm_settings_item.threshold_min); + if (thdv_alarm_settings_item.threshold_max < 1 || thdv_alarm_settings_item.threshold_max > 100) { + throw new Error('threshold_max must be between 1 and 100'); + } + buffer.writeInt16LE(thdv_alarm_settings_item.threshold_max); + } + encoded = encoded.concat(buffer.toBytes()); + } + //0x7b + if ('voltage_unbalance_alarm_settings' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x7b); + // 0:disable, 1:enable + buffer.writeUInt8(payload.voltage_unbalance_alarm_settings.enable); + // 0:disable, 2:condition: x>B + buffer.writeUInt8(payload.voltage_unbalance_alarm_settings.threshold_condition); + if (payload.voltage_unbalance_alarm_settings.threshold_min < 0 || payload.voltage_unbalance_alarm_settings.threshold_min > 100) { + throw new Error('voltage_unbalance_alarm_settings.threshold_min must be between 0 and 100'); + } + buffer.writeInt16LE(payload.voltage_unbalance_alarm_settings.threshold_min); + if (payload.voltage_unbalance_alarm_settings.threshold_max < 1 || payload.voltage_unbalance_alarm_settings.threshold_max > 100) { + throw new Error('voltage_unbalance_alarm_settings.threshold_max must be between 1 and 100'); + } + buffer.writeInt16LE(payload.voltage_unbalance_alarm_settings.threshold_max); + encoded = encoded.concat(buffer.toBytes()); + } + //0x7c + if ('alarm_global_settings' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x7c); + if (payload.alarm_global_settings.interval < 1 || payload.alarm_global_settings.interval > 1440) { + throw new Error('alarm_global_settings.interval must be between 1 and 1440'); + } + buffer.writeUInt16LE(payload.alarm_global_settings.interval); + if (payload.alarm_global_settings.times < 1 || payload.alarm_global_settings.times > 1000) { + throw new Error('alarm_global_settings.times must be between 1 and 1000'); + } + buffer.writeUInt16LE(payload.alarm_global_settings.times); + // 0:disable, 1:enable + buffer.writeUInt8(payload.alarm_global_settings.release_enable); + encoded = encoded.concat(buffer.toBytes()); + } + //0x6d + if ('month_statistics_settings' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x6d); + if (payload.month_statistics_settings.day < 1 || payload.month_statistics_settings.day > 28) { + throw new Error('month_statistics_settings.day must be between 1 and 28'); + } + buffer.writeUInt8(payload.month_statistics_settings.day); + if (payload.month_statistics_settings.hour < 0 || payload.month_statistics_settings.hour > 23) { + throw new Error('month_statistics_settings.hour must be between 0 and 23'); + } + buffer.writeUInt8(payload.month_statistics_settings.hour); + if (payload.month_statistics_settings.minute < 0 || payload.month_statistics_settings.minute > 59) { + throw new Error('month_statistics_settings.minute must be between 0 and 59'); + } + buffer.writeUInt8(payload.month_statistics_settings.minute); + encoded = encoded.concat(buffer.toBytes()); + } + //0x6c + if ('report_enable' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x6c); + var bitOptions = 0; + bitOptions |= payload.report_enable.temperature << 0; + + bitOptions |= payload.report_enable.current << 1; + + bitOptions |= payload.report_enable.voltage << 2; + + bitOptions |= payload.report_enable.power_factor << 3; + + bitOptions |= payload.report_enable.active_power << 4; + + bitOptions |= payload.report_enable.reactive_power << 5; + + bitOptions |= payload.report_enable.apparent_power << 6; + + bitOptions |= payload.report_enable.forward_active_energy << 7; + + bitOptions |= payload.report_enable.reverse_active_energy << 8; + + bitOptions |= payload.report_enable.forward_reactive_energy << 9; + + bitOptions |= payload.report_enable.reverse_reactive_energy << 10; + + bitOptions |= payload.report_enable.apparent_energy << 11; + + bitOptions |= payload.report_enable.thdi << 12; + + bitOptions |= payload.report_enable.thdv << 13; + + bitOptions |= payload.report_enable.voltage_unbalance << 14; + buffer.writeUInt16LE(bitOptions); + + encoded = encoded.concat(buffer.toBytes()); + } + //0xbf + if ('reset' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xbf); + encoded = encoded.concat(buffer.toBytes()); + } + //0xbe + if ('reboot' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xbe); + encoded = encoded.concat(buffer.toBytes()); + } + //0x5d + if ('stop_historical_data_retrieval' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x5d); + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + buffer.writeUInt8(payload.stop_historical_data_retrieval.type); + encoded = encoded.concat(buffer.toBytes()); + } + //0x5b + if ('retrieve_historical_data_by_time' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x5b); + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + buffer.writeUInt8(payload.retrieve_historical_data_by_time.type); + buffer.writeUInt32LE(payload.retrieve_historical_data_by_time.time); + encoded = encoded.concat(buffer.toBytes()); + } + //0x5c + if ('retrieve_historical_data_by_time_range' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x5c); + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + buffer.writeUInt8(payload.retrieve_historical_data_by_time_range.type); + buffer.writeUInt32LE(payload.retrieve_historical_data_by_time_range.start_time); + buffer.writeUInt32LE(payload.retrieve_historical_data_by_time_range.end_time); + encoded = encoded.concat(buffer.toBytes()); + } + //0xb9 + if ('query_device_status' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xb9); + encoded = encoded.concat(buffer.toBytes()); + } + //0xb8 + if ('synchronize_time' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xb8); + encoded = encoded.concat(buffer.toBytes()); + } + //0xb7 + if ('set_time' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xb7); + buffer.writeUInt32LE(payload.set_time.timestamp); + encoded = encoded.concat(buffer.toBytes()); + } + //0xb6 + if ('reconnect' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0xb6); + encoded = encoded.concat(buffer.toBytes()); + } + //0x5f + if ('reset_energy' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x5f); + if (payload.reset_energy.channel < 0 || payload.reset_energy.channel > 12) { + throw new Error('reset_energy.channel must be between 0 and 12'); + } + buffer.writeUInt8(payload.reset_energy.channel); + encoded = encoded.concat(buffer.toBytes()); + } + //0x5e + if ('clear_data' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x5e); + // 0:alarm data, 1:period data, 2:month energy data, 3:month min_max data + buffer.writeUInt8(payload.clear_data.type); + encoded = encoded.concat(buffer.toBytes()); + } + //0x57 + if ('query_history_set' in payload) { + var buffer = new Buffer(); + buffer.writeUInt8(0x57); + encoded = encoded.concat(buffer.toBytes()); + } + return encoded; +} + +function Buffer() { + this.buffer = new Array(); +} + +Buffer.prototype._write = function(value, byteLength, isLittleEndian) { + value = Math.round(value); + var offset = 0; + for (var index = 0; index < byteLength; index++) { + offset = isLittleEndian ? index << 3 : (byteLength - 1 - index) << 3; + this.buffer.push((value >> offset) & 0xff); + } +}; + +Buffer.prototype.writeUInt8 = function(value) { + this._write(value, 1, true); +}; + +Buffer.prototype.writeInt8 = function(value) { + this._write(value < 0 ? value + 0x100 : value, 1, true); +}; + +Buffer.prototype.writeUInt16LE = function(value) { + this._write(value, 2, true); +}; + +Buffer.prototype.writeInt16LE = function(value) { + this._write(value < 0 ? value + 0x10000 : value, 2, true); +}; + +Buffer.prototype.writeUInt24LE = function(value) { + this._write(value, 3, true); +}; + +Buffer.prototype.writeInt24LE = function(value) { + this._write(value < 0 ? value + 0x1000000 : value, 3, true); +}; + +Buffer.prototype.writeUInt32LE = function(value) { + this._write(value, 4, true); +}; + +Buffer.prototype.writeInt32LE = function(value) { + this._write(value < 0 ? value + 0x100000000 : value, 4, true); +}; + +Buffer.prototype.writeBytes = function(bytes, length, mustEqual) { + if (mustEqual === undefined) mustEqual = false; + if (length < bytes.length) { + throw new Error('bytes length is greater than length'); + } + if (mustEqual && bytes.length != length) { + throw new Error('bytes length is not equal to length'); + } + + for (var i = 0; i < bytes.length; i++) { + this.buffer.push(bytes[i]); + } + + if (length > bytes.length) { + for (var i = bytes.length; i < length; i++) { + this.buffer.push(0); + } + } +}; + +Buffer.prototype.writeHexString = function(hexString, length, mustEqual) { + if (mustEqual === undefined) mustEqual = false; + var bytes = []; + for (var i = 0; i < hexString.length; i += 2) { + bytes.push(parseInt(hexString.substr(i, 2), 16)); + } + if (mustEqual && bytes.length != length) { + throw new Error('hex string length is not equal to length'); + } + this.writeBytes(bytes, length); +}; + +Buffer.prototype.writeString = function(str, length, mustEqual) { + if (mustEqual === undefined) mustEqual = false; + var bytes = encodeUtf8(str); + if (mustEqual && bytes.length != length) { + throw new Error('string length is not equal to length'); + } + this.writeBytes(bytes, length); +}; + +Buffer.prototype.writeUnknownDataType = function(val) { + throw new Error('Unknown data type encountered. Please Contact Developer.'); +}; + +Buffer.prototype.writeHexStringReverse = function(hexString, length, mustEqual) { + if (mustEqual === undefined) mustEqual = false; + var bytes = []; + for (var i = hexString.length - 2; i >= 0; i -= 2) { + bytes.push(parseInt(hexString.substr(i, 2), 16)); + } + if (mustEqual && bytes.length != length) { + throw new Error('hex string length is not equal to length'); + } + this.writeBytes(bytes, length); +}; + +Buffer.prototype.toBytes = function() { + return this.buffer; +}; + +function encodeUtf8(str) { + var byteArray = []; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 0x80) { + byteArray.push(charCode); + } else if (charCode < 0x800) { + byteArray.push(0xc0 | (charCode >> 6)); + byteArray.push(0x80 | (charCode & 0x3f)); + } else if (charCode < 0x10000) { + byteArray.push(0xe0 | (charCode >> 12)); + byteArray.push(0x80 | ((charCode >> 6) & 0x3f)); + byteArray.push(0x80 | (charCode & 0x3f)); + } else if (charCode < 0x200000) { + byteArray.push(0xf0 | (charCode >> 18)); + byteArray.push(0x80 | ((charCode >> 12) & 0x3f)); + byteArray.push(0x80 | ((charCode >> 6) & 0x3f)); + byteArray.push(0x80 | (charCode & 0x3f)); + } + } + return byteArray; +} + +function isValid(value) { + return value !== undefined && value !== null && value !== ''; +} + + +function cmdMap() { + return { + "request_check_sequence_number": "ff", + "request_check_order": "fe", + "request_command_queries": "ef", + "request_query_all_configurations": "ee", + "historical_data_report": "ed", + "lorawan_configuration_settings": "cf", + "lorawan_configuration_settings.version": "cfd8", + "tsl_version": "df", + "product_name": "de", + "product_pn": "dd", + "product_sn": "db", + "version": "da", + "oem_id": "d9", + "product_frequency_band": "d8", + "device_info": "d7", + "temperature": "01", + "voltage_three_phase_imbalcance": "02", + "thdi": "03", + "thdi._item": "03xx", + "thdv": "04", + "thdv._item": "04xx", + "current": "05", + "current._item": "05xx", + "voltage": "06", + "voltage._item": "06xx", + "power_factor": "07", + "active_power1": "08", + "active_power2": "09", + "reactive_power1": "0a", + "reactive_power2": "0b", + "apparent_power1": "0c", + "apparent_power2": "0d", + "forward_active_energy1": "0e", + "forward_active_energy2": "0f", + "reverse_active_energy1": "10", + "reverse_active_energy2": "11", + "forward_reactive_energy1": "12", + "forward_reactive_energy2": "13", + "reverse_reactive_energy1": "14", + "reverse_reactive_energy2": "15", + "apparent_energy1": "16", + "apparent_energy2": "17", + "history_type": "40", + "temperature_alarm": "30", + "current_alarm": "31", + "voltage_alarm": "32", + "thdi_alarm": "33", + "thdv_alarm": "34", + "voltage_unbalance_alarm": "35", + "power_loss_alarm": "36", + "collection_interval": "60", + "reporting_interval": "61", + "device_status": "c8", + "temperature_unit": "63", + "bluetooth_name": "64", + "data_storage_settings": "c5", + "data_storage_settings.enable": "c500", + "data_storage_settings.retransmission_enable": "c501", + "data_storage_settings.retransmission_interval": "c502", + "data_storage_settings.retrieval_interval": "c503", + "voltage_interface": "66", + "current_interface1": "67", + "current_interface1.config._item": "undefinedxx", + "current_interface2": "68", + "current_interface2.config._item": "undefinedxx", + "current_interface3": "69", + "current_interface3.config._item": "undefinedxx", + "current_interface4": "6a", + "current_interface4.config._item": "undefinedxx", + "temperature_calibration_settings": "6b", + "time_zone": "c7", + "daylight_saving_time": "c6", + "temperature_alarm_settings": "76", + "current_alarm_settings": "77", + "current_alarm_settings._item": "77xx", + "voltage_alarm_settings": "78", + "voltage_alarm_settings._item": "78xx", + "thdi_alarm_settings": "79", + "thdi_alarm_settings._item": "79xx", + "thdv_alarm_settings": "7a", + "thdv_alarm_settings._item": "7axx", + "voltage_unbalance_alarm_settings": "7b", + "alarm_global_settings": "7c", + "month_statistics_settings": "6d", + "report_enable": "6c", + "reset": "bf", + "reboot": "be", + "stop_historical_data_retrieval": "5d", + "retrieve_historical_data_by_time": "5b", + "retrieve_historical_data_by_time_range": "5c", + "query_device_status": "b9", + "synchronize_time": "b8", + "set_time": "b7", + "reconnect": "b6", + "reset_energy": "5f", + "clear_data": "5e", + "query_history_set": "57" + }; +} \ No newline at end of file diff --git a/vendors/milesight-iot/devices.json b/vendors/milesight-iot/devices.json index f5a908e..7ac04bb 100644 --- a/vendors/milesight-iot/devices.json +++ b/vendors/milesight-iot/devices.json @@ -1793,6 +1793,34 @@ "decoder_script": "vendors/milesight-iot/wt-series/wt401/wt401-decoder.js", "encoder_script": "vendors/milesight-iot/wt-series/wt401/wt401-encoder.js", "ipso_version": "v2" + }, + { + "id": "cth01", + "name": "CTH01", + "description": "Intelligent power monitoring terminal", + "catalog": "cth", + "sn": "6637", + "pn": ["000"], + "deveui": "24e124637", + "device_profile": ["ClassC-OTAA"], + "codec": "vendors/milesight-iot/cth-series/cth01/cth01-codec.json", + "decoder_script": "vendors/milesight-iot/cth-series/cth01/cth01-decoder.js", + "encoder_script": "vendors/milesight-iot/cth-series/cth01/cth01-encoder.js", + "ipso_version": "v2" + }, + { + "id": "cth01_compress", + "name": "CTH01 Compress", + "description": "Intelligent power monitoring terminal", + "catalog": "cth", + "sn": "6637", + "pn": ["000"], + "deveui": "24e124637", + "device_profile": ["ClassC-OTAA"], + "codec": "vendors/milesight-iot/cth-series/cth01-compress/cth01-compress-codec.json", + "decoder_script": "vendors/milesight-iot/cth-series/cth01-compress/cth01-compress-decoder.js", + "encoder_script": "vendors/milesight-iot/cth-series/cth01-compress/cth01-compress-encoder.js", + "ipso_version": "v2" } ] } From bf8566302136f8bd9160b91a5e8d62dc1b7ce7da Mon Sep 17 00:00:00 2001 From: yaowc Date: Mon, 30 Mar 2026 13:40:08 +0800 Subject: [PATCH 2/2] chore: update version --- version.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.json b/version.json index a2288fd..ede36b1 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { - "date": "2026-03-13", - "version": "1.5.31", + "date": "2026-03-30", + "version": "1.5.32", "vendors": "vendors.json", "link": "https://github.com/Milesight-IoT/codec/archive/refs/heads/release.zip" }

`_v&{)tb*hxkw82T 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 W)xRB|QWOUPKZ2:1.0.3
3:1.0.3
4:1.0.4 | +| TSL Version | 0xDF | 3 | r | | | | +| Product Name | 0xDE | 33 | rw | | | | +| PN | 0xDD | 33 | rw | | | | +| SN | 0xDB | 9 | r | | | | +| Product Version | 0xDA | 9 | r | | | | +| Hardware Version | 0xDA | 3 | r | | | | +| Firmware Version | 0xDA | 7 | r | | | | +| OEM ID | 0xD9 | 3 | rw | | | | +| Product Region | 0xD8 | 17 | r | | | | +| Device Information | 0xD7 | M | r | | | | +| Temperature | 0x01 | 3 | r | | -20 - 100 | | +| Voltage Three-phase Unbalance | 0x02 | 3 | r | | 0 - 100 | | +| THDi | 0x03 | 25 | r | | | | +| THDi | 0x03 | 3 | r | | | | +| THDi | 0x03 | 3 | r | 0 | 0 - 100 | | +| THDv | 0x04 | 7 | r | | | | +| THDv | 0x04 | 3 | r | | | | +| THDv | 0x04 | 3 | r | 0 | 0 - 100 | | +| Current(RMS) | 0x05 | 37 | r | | | | +| Current(RMS) | 0x05 | 4 | r | | | | +| Current(RMS) | 0x05 | 4 | r | 0 | 0 - 4000 | | +| Voltage(RMS) | 0x06 | 7 | r | | | | +| Voltage(RMS) | 0x06 | 3 | r | | | | +| Voltage(RMS) | 0x06 | 3 | r | 0 | 0 - 500 | | +| Power Factor | 0x07 | 1 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor | 0x07 | 2 | r | | | | +| Power Factor a | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor1 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor2 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor3 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factorb | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor4 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor5 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor6 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor c | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor7 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor8 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor9 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor d | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor | 0x07 | 4 | r | | | | +| Power Factor10 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor11 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Power Factor12 | 0x07 | 2 | r | 0 | 0 - 100 | | +| Active Power | 0x08 | 1 | r | | | | +| Active Power | 0x08 | 2 | r | | | | +| Active Power | 0x08 | 2 | r | | | | +| Active Power a | 0x08 | 5 | r | 0 | | | +| Active Power | 0x08 | 9 | r | | | | +| Active Power1 | 0x08 | 5 | r | 0 | | | +| Active Power2 | 0x08 | 5 | r | 0 | | | +| Active Power3 | 0x08 | 5 | r | 0 | | | +| Active Power b | 0x08 | 5 | r | 0 | | | +| Active Power | 0x08 | 9 | r | | | | +| Active Power4 | 0x08 | 5 | r | 0 | | | +| Active Power5 | 0x08 | 5 | r | 0 | | | +| Active Power6 | 0x08 | 5 | r | 0 | | | +| Active Power | 0x09 | 1 | r | | | | +| Active Power | 0x09 | 2 | r | | | | +| Active Power | 0x09 | 2 | r | | | | +| Active Power c | 0x09 | 5 | r | 0 | | | +| Active Power | 0x09 | 9 | r | | | | +| Active Power7 | 0x09 | 5 | r | 0 | | | +| Active Power8 | 0x09 | 5 | r | 0 | | | +| Active Power9 | 0x09 | 5 | r | 0 | | | +| Active Power d | 0x09 | 5 | r | 0 | | | +| Active Power | 0x09 | 9 | r | | | | +| Active Power10 | 0x09 | 5 | r | 0 | | | +| Active Power11 | 0x09 | 5 | r | 0 | | | +| Active Power12 | 0x09 | 5 | r | 0 | | | +| Reactive Power | 0x0A | 1 | r | | | | +| Reactive Power | 0x0A | 2 | r | | | | +| Reactive Power | 0x0A | 2 | r | | | | +| Reactive Power a | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0A | 9 | r | | | | +| Reactive Power1 | 0x0A | 5 | r | 0 | | | +| Reactive Power2 | 0x0A | 5 | r | 0 | | | +| Reactive Power3 | 0x0A | 5 | r | 0 | | | +| Reactive Power b | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0A | 9 | r | | | | +| Reactive Power4 | 0x0A | 5 | r | 0 | | | +| Reactive Power5 | 0x0A | 5 | r | 0 | | | +| Reactive Power6 | 0x0A | 5 | r | 0 | | | +| Reactive Power | 0x0B | 1 | r | | | | +| Reactive Power | 0x0B | 2 | r | | | | +| Reactive Power | 0x0B | 2 | r | | | | +| Reactive Power c | 0x0B | 5 | r | 0 | | | +| Reactive Power | 0x0B | 9 | r | | | | +| Reactive Power7 | 0x0B | 5 | r | 0 | | | +| Reactive Power8 | 0x0B | 5 | r | 0 | | | +| Reactive Power9 | 0x0B | 5 | r | 0 | | | +| Reactive Power d | 0x0B | 5 | r | 0 | | | +| Reactive Power | 0x0B | 9 | r | | | | +| Reactive Power10 | 0x0B | 5 | r | 0 | | | +| Reactive Power11 | 0x0B | 5 | r | 0 | | | +| Reactive Power12 | 0x0B | 5 | r | 0 | | | +| Apparent Power | 0x0C | 1 | r | | | | +| Apparent Power | 0x0C | 2 | r | | | | +| Apparent Power | 0x0C | 2 | r | | | | +| Apparent Power a | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0C | 9 | r | | | | +| Apparent Power1 | 0x0C | 5 | r | 0 | | | +| Apparent Power2 | 0x0C | 5 | r | 0 | | | +| Apparent Power3 | 0x0C | 5 | r | 0 | | | +| Apparent Power b | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0C | 9 | r | | | | +| Apparent Power4 | 0x0C | 5 | r | 0 | | | +| Apparent Power5 | 0x0C | 5 | r | 0 | | | +| Apparent Power6 | 0x0C | 5 | r | 0 | | | +| Apparent Power | 0x0D | 1 | r | | | | +| Apparent Power | 0x0D | 2 | r | | | | +| Apparent Power | 0x0D | 2 | r | | | | +| Apparent Power c | 0x0D | 5 | r | 0 | | | +| Apparent Power | 0x0D | 9 | r | | | | +| Apparent Power7 | 0x0D | 5 | r | 0 | | | +| Apparent Power8 | 0x0D | 5 | r | 0 | | | +| Apparent Power9 | 0x0D | 5 | r | 0 | | | +| Apparent Power d | 0x0D | 5 | r | 0 | | | +| Apparent Power | 0x0D | 9 | r | | | | +| Apparent Power10 | 0x0D | 5 | r | 0 | | | +| Apparent Power11 | 0x0D | 5 | r | 0 | | | +| Apparent Power12 | 0x0D | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 1 | r | | | | +| Imported Active Energy | 0x0E | 2 | r | | | | +| Imported Active Energy | 0x0E | 2 | r | | | | +| Imported Active Energy a | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 9 | r | | | | +| Imported Active Energy1 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy2 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy3 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy b | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0E | 9 | r | | | | +| Imported Active Energy4 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy5 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy6 | 0x0E | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 1 | r | | | | +| Imported Active Energy | 0x0F | 2 | r | | | | +| Imported Active Energy | 0x0F | 2 | r | | | | +| Imported Active Energy c | 0x0F | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 9 | r | | | | +| Imported Active Energy7 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy8 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy9 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy d | 0x0F | 5 | r | 0 | | | +| Imported Active Energy | 0x0F | 9 | r | | | | +| Imported Active Energy10 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy11 | 0x0F | 5 | r | 0 | | | +| Imported Active Energy12 | 0x0F | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 1 | r | | | | +| Exported Active Energy | 0x10 | 2 | r | | | | +| Exported Active Energy | 0x10 | 2 | r | | | | +| Exported Active Energy a | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 9 | r | | | | +| Exported Active Energy1 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy2 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy3 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy b | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x10 | 9 | r | | | | +| Exported Active Energy4 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy5 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy6 | 0x10 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 1 | r | | | | +| Exported Active Energy | 0x11 | 2 | r | | | | +| Exported Active Energy | 0x11 | 2 | r | | | | +| Exported Active Energy c | 0x11 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 9 | r | | | | +| Exported Active Energy7 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy8 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy9 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy d | 0x11 | 5 | r | 0 | | | +| Exported Active Energy | 0x11 | 9 | r | | | | +| Exported Active Energy10 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy11 | 0x11 | 5 | r | 0 | | | +| Exported Active Energy12 | 0x11 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 1 | r | | | | +| Imported Reactive Energy | 0x12 | 2 | r | | | | +| Imported Reactive Energy | 0x12 | 2 | r | | | | +| Imported Reactive Energy a | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 9 | r | | | | +| Imported Reactive Energy1 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy2 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy3 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy b | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x12 | 9 | r | | | | +| Imported Reactive Energy4 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy5 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy6 | 0x12 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 1 | r | | | | +| Imported Reactive Energy | 0x13 | 2 | r | | | | +| Imported Reactive Energy | 0x13 | 2 | r | | | | +| Imported Reactive Energy c | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 9 | r | | | | +| Imported Reactive Energy7 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy8 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy9 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy d | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy | 0x13 | 9 | r | | | | +| Imported Reactive Energy10 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy11 | 0x13 | 5 | r | 0 | | | +| Imported Reactive Energy12 | 0x13 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 1 | r | | | | +| Exported Reactive Energy | 0x14 | 2 | r | | | | +| Exported Reactive Energy | 0x14 | 2 | r | | | | +| Exported Reactive Energy a | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 9 | r | | | | +| Exported Reactive Energy1 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy2 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy3 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy b | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x14 | 9 | r | | | | +| Exported Reactive Energy4 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy5 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy6 | 0x14 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x15 | 1 | r | | | | +| Exported Reactive Energy | 0x15 | 2 | r | | | | +| Exported Reactive Energy | 0x15 | 2 | r | | | | +| Exported Reactive Energy | 0x15 | 9 | r | | | | +| Exported Reactive Energy7 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy8 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy9 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy d | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy | 0x15 | 9 | r | | | | +| Exported Reactive Energy10 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy11 | 0x15 | 5 | r | 0 | | | +| Exported Reactive Energy12 | 0x15 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 1 | r | | | | +| Apparent Energy | 0x16 | 2 | r | | | | +| Apparent Energy | 0x16 | 2 | r | | | | +| Apparent Energy a | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 9 | r | | | | +| Apparent Energy1 | 0x16 | 5 | r | 0 | | | +| Apparent Energy2 | 0x16 | 5 | r | 0 | | | +| Apparent Energy3 | 0x16 | 5 | r | 0 | | | +| Apparent Energy b | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x16 | 9 | r | | | | +| Apparent Energy4 | 0x16 | 5 | r | 0 | | | +| Apparent Energy5 | 0x16 | 5 | r | 0 | | | +| Apparent Energy6 | 0x16 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 1 | r | | | | +| Apparent Energy | 0x17 | 2 | r | | | | +| Apparent Energy | 0x17 | 2 | r | | | | +| Apparent Energy c | 0x17 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 9 | r | | | | +| Apparent Energy7 | 0x17 | 5 | r | 0 | | | +| Apparent Energy8 | 0x17 | 5 | r | 0 | | | +| Apparent Energy9 | 0x17 | 5 | r | 0 | | | +| Apparent Energy d | 0x17 | 5 | r | 0 | | | +| Apparent Energy | 0x17 | 9 | r | | | | +| Apparent Energy10 | 0x17 | 5 | r | 0 | | | +| Apparent Energy11 | 0x17 | 5 | r | 0 | | | +| Apparent Energy12 | 0x17 | 5 | r | 0 | | | +| Historical Data Type | 0x40 | 2 | r | | | | +| Historical Data Type | 0x40 | 2 | r | 1 | | 1:month energy
2:month min
3:month max | +| Collecting Interval | 0x60 | 1 | rw | | | | +| Collecting Interval Unit | 0x60 | 2 | rw | 0 | | 0:second
1:min | +| Collecting Interval | 0x60 | 3 | rw | 30 | 10 - 64800 | | +| Collecting Interval | 0x60 | 3 | rw | 1 | 1 - 1440 | | +| Report Interval | 0x61 | 1 | rw | | | | +| Report Interval Unit | 0x61 | 2 | rw | 1 | | 0:second
1:min | +| Report Interval | 0x61 | 3 | rw | 30 | 10 - 64800 | | +| Report Interval | 0x61 | 3 | rw | 1 | 1 - 1440 | | +| Device Status | 0xC8 | 2 | rw | 0 | | 0:Power Off
1:Power On | +| Temperature Unit | 0x63 | 2 | rw | 0 | | 0:℃
1:℉ | +| Bluetooth Name | 0x64 | 1 | rw | | | | +| Name Length | 0x64 | 2 | rw | 13 | 1 - 13 | | +| Name | 0x64 | 1 | rw | | | | +| Data Storage Settings | 0xC5 | 1 | rw | | | | +| Sub-command | 0xC5 | 2 | rw | 0 | | | +| Data Storage Enable | 0xC5 | 2 | rw | 0 | | 0:disable
1:enable | +| Data Retransmission Enable | 0xC5 | 2 | rw | 0 | | 0:disable
1:enable | +| Retransmission Interval | 0xC5 | 3 | rw | 600 | 30 - 1200 | | +| Retrieval Interval | 0xC5 | 3 | rw | 60 | 30 - 1200 | | +| Voltage Channel | 0x66 | 2 | rw | 0 | | 0:four_wire
1:three_wire | +| Group a | 0x67 | 1 | rw | | | | +| Circuit Type | 0x67 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x67 | 10 | rw | | | | +| Current Channel Configuration | 0x67 | 4 | rw | | | | +| Current Direction | 0x67 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x67 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group b | 0x68 | 1 | rw | | | | +| Circuit Type | 0x68 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x68 | 10 | rw | | | | +| Current Channel Configuration | 0x68 | 4 | rw | | | | +| Current Direction | 0x68 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x68 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group c | 0x69 | 1 | rw | | | | +| Circuit Type | 0x69 | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x69 | 10 | rw | | | | +| Current Channel Configuration | 0x69 | 4 | rw | | | | +| Current Direction | 0x69 | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x69 | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Group d | 0x6A | 1 | rw | | | | +| Circuit Type | 0x6A | 2 | rw | 0 | | 0:one_phase
1:three_phase | +| Current Channel Configuration | 0x6A | 10 | rw | | | | +| Current Channel Configuration | 0x6A | 4 | rw | | | | +| Current Direction | 0x6A | 2 | rw | 0 | | 0:forward
1:reserse | +| Channel Range | 0x6A | 3 | rw | 0 | | 0:NONE
1:100A
2:300A
3:500A
4:1000A
5:4000A | +| Temperature Calibration Settings | 0x6B | 4 | rw | | | | +| Temperature Calibration | 0x6B | 2 | rw | 0 | | 0:disable
1:enable | +| Calibration Value | 0x6B | 3 | rw | 0 | -120 - 120 | | +| Time Zone | 0xC7 | 3 | rw | 0 | | -720:UTC-12(IDLW)
-660:UTC-11(SST)
-600:UTC-10(HST)
-570:UTC-9:30(MIT)
-540:UTC-9(AKST)
-480:UTC-8(PST)
-420:UTC-7(MST)
-360:UTC-6(CST)
-300:UTC-5(EST)
-240:UTC-4(AST)
-210:UTC-3:30(NST)
-180:UTC-3(BRT)
-120:UTC-2(FNT)
-60:UTC-1(CVT)
0:UTC(WET)
60:UTC+1(CET)
120:UTC+2(EET)
180:UTC+3(MSK)
210:UTC+3:30(IRST)
240:UTC+4(GST)
270:UTC+4:30(AFT)
300:UTC+5(PKT)
330:UTC+5:30(IST)
345:UTC+5:45(NPT)
360:UTC+6(BHT)
390:UTC+6:30(MMT)
420:UTC+7(ICT)
480:UTC+8(CT/CST)
540:UTC+9(JST)
570:UTC+9:30(ACST)
600:UTC+10(AEST)
630:UTC+10:30(LHST)
660:UTC+11(VUT)
720:UTC+12(NZST)
765:UTC+12:45(CHAST)
780:UTC+13(PHOT)
840:UTC+14(LINT) | +| Daylight Saving Time | 0xC6 | M | rw | | | | +| Daylight Saving Time | 0xC6 | 2 | rw | 0 | | 0:disable
1:enable | +| DST Bias | 0xC6 | 2 | rw | 60 | 0 - 120 | | +| Month | 0xC6 | 2 | rw | 1 | | 1:Jan.
2:Feb.
3:Mar.
4:Apr.
5:May
6:Jun.
7:Jul.
8:Aug.
9:Sep.
10:Oct.
11:Nov.
12:Dec. | +| Number of Week | 0xC6 | 2 | rw | 1 | | 1:1st
2: 2nd
3: 3rd
4: 4th
5: last | +| Week | 0xC6 | 2 | rw | 1 | | 1:Mon.
2:Tues.
3:Wed.
4:Thurs.
5:Fri.
6:Sat.
7:Sun. | +| Time | 0xC6 | 3 | rw | 0 | | 0:00:00
60:01:00
120:02:00
180:03:00
240:04:00
300:05:00
360:06:00
420:07:00
480:08:00
540:09:00
600:10:00
660:11:00
720:12:00
780:13:00
840:14:00
900:15:00
960:16:00
1020:17:00
1080:18:00
1140:19:00
1200:20:00
1260:21:00
1320:22:00
1380:23:00 | +| Month | 0xC6 | 2 | rw | 1 | | 1:Jan.
2:Feb.
3:Mar.
4:Apr.
5:May
6:Jun.
7:Jul.
8:Aug.
9:Sep.
10:Oct.
11:Nov.
12:Dec. | +| Number of Week | 0xC6 | 2 | rw | 1 | | 1:1st
2: 2nd
3: 3rd
4: 4th
5: last | +| Week | 0xC6 | 2 | rw | 1 | | 1:Mon.
2:Tues.
3:Wed.
4:Thurs.
5:Fri.
6:Sat.
7:Sun. | +| Time | 0xC6 | 3 | rw | 0 | | 0:00:00
60:01:00
120:02:00
180:03:00
240:04:00
300:05:00
360:06:00
420:07:00
480:08:00
540:09:00
600:10:00
660:11:00
720:12:00
780:13:00
840:14:00
900:15:00
960:16:00
1020:17:00
1080:18:00
1140:19:00
1200:20:00
1260:21:00
1320:22:00
1380:23:00 | +| Temperature Threshold Alarm Settings | 0x76 | 7 | rw | | | | +| Threshold Alarm Enable | 0x76 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x76 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x76 | 3 | rw | 0 | -20 - 100 | | +| Value B | 0x76 | 3 | rw | 0 | -20 - 100 | | +| Current Threshold Alarm Settings | 0x77 | 1 | rw | | | | +| Current Threshold Alarm | 0x77 | 8 | rw | | | | +| Threshold Alarm Channel | 0x77 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x77 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x77 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x77 | 3 | rw | 0 | 0 - 4000 | | +| Value B | 0x77 | 3 | rw | 0 | 0 - 4000 | | +| Voltage Threshold Alarm Settings | 0x78 | 1 | rw | | | | +| Voltage Threshold Alarm | 0x78 | 8 | rw | | | | +| Threshold Alarm Channel | 0x78 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x78 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x78 | 2 | rw | 0 | | 0:disable
1:condition: x2:condition: x>B
3:condition: A≤x≤B
4:condition: x
B | +| Value A | 0x78 | 3 | rw | 0 | 0 - 500 | | +| Value B | 0x78 | 3 | rw | 0 | 0 - 500 | | +| THDi Threshold Alarm Settings | 0x79 | 8 | rw | | | | +| THDi Threshold Alarm | 0x79 | 8 | rw | | | | +| Threshold Alarm Channel | 0x79 | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x79 | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x79 | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x79 | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x79 | 3 | rw | 8 | 1 - 100 | | +| THDv Threshold Alarm Settings | 0x7A | 8 | rw | | | | +| THDv Threshold Alarm | 0x7A | 8 | rw | | | | +| Threshold Alarm Channel | 0x7A | 2 | rw | 0 | | | +| Threshold Alarm Enable | 0x7A | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x7A | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x7A | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x7A | 3 | rw | 5 | 1 - 100 | | +| Voltage Three-phase Unbalance Threshold Alarm Settings | 0x7B | 7 | rw | | | | +| Threshold Alarm Enable | 0x7B | 2 | rw | 0 | | 0:disable
1:enable | +| Threshold Mode | 0x7B | 2 | rw | 0 | | 0:disable
2:condition: x>B | +| Value A | 0x7B | 3 | rw | 0 | 0 - 100 | | +| Value B | 0x7B | 3 | rw | 3 | 1 - 100 | | +| Threshold Alarm Global Settings | 0x7C | 1 | rw | | | | +| Alarm Interval | 0x7C | 3 | rw | 5 | 1 - 1440 | | +| Alarm Times | 0x7C | 3 | rw | 3 | 1 - 1000 | | +| Threshold Released Report Enable | 0x7C | 2 | rw | 0 | | 0:disable
1:enable | +| Monthly Statistics Time | 0x6D | 1 | rw | | | | +| day | 0x6D | 2 | rw | 1 | 1 - 28 | | +| hour | 0x6D | 2 | rw | 0 | 0 - 23 | | +| minute | 0x6D | 2 | rw | 0 | 0 - 59 | | +| Report Parameters | 0x6C | 3 | rw | | | | +| Temperature | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Current(RMS) | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Voltage(RMS) | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Power Factor | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Active Power | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| ReActive Power | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Apparent Power | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Imported Active Energy | 0x6C | 3 | rw | 1 | | 0:disable
1:enable | +| Exported Active Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Imported Reactive Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Exported Reactive Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Apparent Energy | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| THDi | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| THDv | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | +| Voltage Three-phase Unbalance | 0x6C | 3 | rw | 0 | | 0:disable
1:enable | + +### Event + +| CHANNEL | ID | LENGTH | READ/WRITE | DEFAULT | RANGE | ENUM | +| :------ | :--: | :----: | :--------: | :-----: | :---: | :--: | +| Sequence Number Check Response | 0xFF | 2 | r | | | | +| Order Check Response | 0xFE | 2 | r | | | | +| Command Response | 0xEF | 1 | r | | | | +| Request to Push All Configurations | 0xEE | 1 | r | | | | +| Historical Data | 0xED | 6 | r | | | | +| Temperature Threshold Alarm | 0x30 | 1 | r | | | | +| Current Threshold Alarm | 0x31 | 1 | r | | | | +| Voltage Threshold Alarm | 0x32 | 1 | r | | | | +| THDi Threshold Alarm | 0x33 | 1 | r | | | | +| THDv Threshold Alarm | 0x34 | 1 | r | | | | +| Voltage Three-phase Unbalance Threshold Alarm | 0x35 | 1 | r | | | | +| Power Failure Alarm | 0x36 | 1 | r | | | | + +### Service + +| CHANNEL | ID | LENGTH | READ/WRITE | DEFAULT | RANGE | ENUM | +| :------ | :--: | :----: | :--------: | :-----: | :---: | :--: | +| Sequence Number Check | 0xFF | 2 | w | | | | +| Sequence Number | 0xFF | 2 | w | 0 | 0 - 255 | | +| Sequence Number | 0xFF | 2 | r | 0 | 0 - 255 | | +| Order Check | 0xFE | 2 | w | | | | +| Order | 0xFE | 2 | w | 0 | 0 - 255 | | +| Command Queries | 0xEF | 1 | w | | | | +| Query Information | 0xEF | 2 | w | | | | +| Command Length | 0xEF | 2 | w | 1 | 1 - 15 | | +| The command that was queried | 0xEF | 1 | w | | | | +| Answer Result | 0xEF | 2 | r | 0 | | 0:success
1:unknow
2:error order
3:error passwd
4:error read params
5:error write params
6:error read
7:error write
8:error read apply
9:error write apply | +| Command Length | 0xEF | 2 | r | 1 | 1 - 15 | | +| Answered Commands | 0xEF | 1 | r | | | | +| Request to Query All Configurations | 0xEE | 1 | w | | | | +| Historical Data Mode | 0xED | 2 | r | | | 0:target time
1:historical time | +| Historical Data Timestamps | 0xED | 5 | r | | | | +| Alarm Type | 0x30 | 2 | r | | | | +| Collection Error | 0x30 | 1 | r | | | | +| Overrange (Lower Limit) | 0x30 | 1 | r | | | | +| Overrange (Upper Limit) | 0x30 | 1 | r | | | | +| No Data | 0x30 | 1 | r | | | | +| Temperature Below Threshold Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Below Threshold Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Exceeds Threshold Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Exceeds Threshold Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Between Thresholds Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Between Thresholds Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Outside Thresholds Alarm Released | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Temperature Outside Thresholds Alarm | 0x30 | 3 | r | | | | +| Temperature | 0x30 | 3 | r | | -20 - 100 | | +| Alarm Channel | 0x31 | 2 | r | | 0 - 11 | | +| Current Threshold Alarm Info | 0x31 | 1 | r | | | | +| Alarm Type | 0x31 | 2 | r | | | | +| Collection Error | 0x31 | 1 | r | | | | +| Overrange (Lower Limit) | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Overrange (Upper Limit) | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| No Data | 0x31 | 1 | r | | | | +| Overrange Release | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Below Threshold Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Below Threshold Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Exceeds Threshold Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Exceeds Threshold Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current in-Range Thresholds Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current in-Range Thresholds Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Out-of-Range Thresholds Alarm Released | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Current Out-of-Range Thresholds Alarm | 0x31 | 4 | r | | | | +| Current | 0x31 | 4 | r | | | | +| Alarm Channel | 0x32 | 2 | r | | 0 - 11 | | +| Voltage Threshold Alarm Info | 0x32 | 1 | r | | | | +| Alarm Type | 0x32 | 2 | r | | | | +| Collection Error | 0x32 | 1 | r | | | | +| Overrange (Lower Limit) | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Overrange (Upper Limit) | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| No Data | 0x32 | 1 | r | | | | +| Overrange Release | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Below Threshold Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Below Threshold Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Exceeds Threshold Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Exceeds Threshold Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage in-Range Thresholds Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage in-Range Thresholds Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Out-of-Range Thresholds Alarm Released | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Voltage Out-of-Range Thresholds Alarm | 0x32 | 3 | r | | | | +| Voltage | 0x32 | 3 | r | | | | +| Alarm Channel | 0x33 | 2 | r | | 0 - 11 | | +| THDi Threshold Alarm Info | 0x33 | 1 | r | | | | +| Alarm Type | 0x33 | 2 | r | | | | +| Collection Error | 0x33 | 1 | r | | | | +| THDi Exceeds Threshold Alarm Released | 0x33 | 3 | r | | | | +| THDi | 0x33 | 3 | r | | | | +| THDi Exceeds Threshold Alarm | 0x33 | 3 | r | | | | +| THDi | 0x33 | 3 | r | | | | +| Alarm Channel | 0x34 | 2 | r | | 0 - 11 | | +| THDv Threshold Alarm Info | 0x34 | 1 | r | | | | +| Alarm Type | 0x34 | 2 | r | | | | +| Collection Error | 0x34 | 1 | r | | | | +| THDv Exceeds Threshold Alarm Released | 0x34 | 3 | r | | | | +| THDv | 0x34 | 3 | r | | | | +| THDv Exceeds Threshold Alarm | 0x34 | 3 | r | | | | +| THDv | 0x34 | 3 | r | | | | +| Alarm Type | 0x35 | 2 | r | | | | +| Collection Error | 0x35 | 1 | r | | | | +| Voltage Three-phase Unbalance Exceeds Threshold Alarm Released | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance Exceeds Threshold Alarm | 0x35 | 3 | r | | | | +| Voltage Three-phase Unbalance | 0x35 | 3 | r | | | | +| Reset | 0xBF | 1 | w | | | | +| Reboot | 0xBE | 1 | w | | | | +| Stop Retrieval | 0x5D | 1 | w | | | | +| Stop Retrieval | 0x5D | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Retrieval (Time Period) | 0x5B | 6 | w | | | | +| Type | 0x5B | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Time Point | 0x5B | 5 | w | | | | +| Retrieval (Time Period) | 0x5C | 10 | w | | | | +| Type | 0x5C | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Start Time | 0x5C | 5 | w | | | | +| End Time | 0x5C | 5 | w | | | | +| Query Device Status | 0xB9 | 1 | w | | | | +| Time Synchronize | 0xB8 | 1 | w | | | | +| Time Synchronize | 0xB7 | 5 | w | | | | +| Timestamp | 0xB7 | 5 | w | | | | +| Network Reconnection | 0xB6 | 1 | w | | | | +| Clear Cumulative Energy Consumption | 0x5F | 2 | w | | | | +| Channel Number | 0x5F | 2 | w | 0 | 0 - 12 | | +| Clear Historical Data | 0x5E | 2 | w | | | | +| Data Type to Clear | 0x5E | 2 | w | 0 | | 0:alarm data
1:period data
2:month energy data
3:month min_max data | +| Query Data Storage Configuration | 0x57 | 1 | w | | | | + diff --git a/vendors/milesight-iot/cth-series/cth01-compress/cth01-codec.json b/vendors/milesight-iot/cth-series/cth01-compress/cth01-codec.json new file mode 100644 index 0000000..24a82b8 --- /dev/null +++ b/vendors/milesight-iot/cth-series/cth01-compress/cth01-codec.json @@ -0,0 +1,7030 @@ +{ + "version": "1.0.0", + "object": [ + { + "id": "active_power1.group1_value", + "name": "Active Power a", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.group1.chan1", + "name": "Active Power1", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan2", + "active_power1.group1.chan3" + ] + }, + { + "id": "active_power1.group1.chan2", + "name": "Active Power2", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan1", + "active_power1.group1.chan3" + ] + }, + { + "id": "active_power1.group1.chan3", + "name": "Active Power3", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group1.chan1", + "active_power1.group1.chan2" + ] + }, + { + "id": "active_power1.group2_value", + "name": "Active Power b", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.group2.chan1", + "name": "Active Power4", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan2", + "active_power1.group2.chan3" + ] + }, + { + "id": "active_power1.group2.chan2", + "name": "Active Power5", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan1", + "active_power1.group2.chan3" + ] + }, + { + "id": "active_power1.group2.chan3", + "name": "Active Power6", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power1.group2.chan1", + "active_power1.group2.chan2" + ] + }, + { + "id": "active_power1.mask1", + "name": "Active Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power a" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power b" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "active_power1.mask2" + ] + }, + { + "id": "active_power1.mask2", + "name": "Active Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power a" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power b" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "active_power2.group1_value", + "name": "Active Power c", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.group1.chan1", + "name": "Active Power7", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan2", + "active_power2.group1.chan3" + ] + }, + { + "id": "active_power2.group1.chan2", + "name": "Active Power8", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan1", + "active_power2.group1.chan3" + ] + }, + { + "id": "active_power2.group1.chan3", + "name": "Active Power9", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group1.chan1", + "active_power2.group1.chan2" + ] + }, + { + "id": "active_power2.group2_value", + "name": "Active Power d", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.group2.chan1", + "name": "Active Power10", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan2", + "active_power2.group2.chan3" + ] + }, + { + "id": "active_power2.group2.chan2", + "name": "Active Power11", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan1", + "active_power2.group2.chan3" + ] + }, + { + "id": "active_power2.group2.chan3", + "name": "Active Power12", + "value": "0", + "unit": "kW", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 48, + "bacnet_unit_type": "UNITS_KILOWATTS", + "reference": [ + "active_power2.group2.chan1", + "active_power2.group2.chan2" + ] + }, + { + "id": "active_power2.mask1", + "name": "Active Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power c" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power d" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "active_power2.mask2" + ] + }, + { + "id": "active_power2.mask2", + "name": "Active Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Active Power c" + }, + { + "value": 1, + "name": "Active Power" + }, + { + "value": 0, + "name": "Active Power d" + }, + { + "value": 1, + "name": "Active Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "alarm_global_settings.interval", + "name": "Alarm Interval", + "value": "5", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1440 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "alarm_global_settings.times", + "alarm_global_settings.release_enable" + ] + }, + { + "id": "alarm_global_settings.release_enable", + "name": "Threshold Released Report Enable", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "alarm_global_settings.interval", + "alarm_global_settings.times" + ] + }, + { + "id": "alarm_global_settings.times", + "name": "Alarm Times", + "value": "3", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1000 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "alarm_global_settings.interval", + "alarm_global_settings.release_enable" + ] + }, + { + "id": "apparent_energy1.group1_value", + "name": "Apparent Energy a", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.group1.chan1", + "name": "Apparent Energy1", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan2", + "apparent_energy1.group1.chan3" + ] + }, + { + "id": "apparent_energy1.group1.chan2", + "name": "Apparent Energy2", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan1", + "apparent_energy1.group1.chan3" + ] + }, + { + "id": "apparent_energy1.group1.chan3", + "name": "Apparent Energy3", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group1.chan1", + "apparent_energy1.group1.chan2" + ] + }, + { + "id": "apparent_energy1.group2_value", + "name": "Apparent Energy b", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.group2.chan1", + "name": "Apparent Energy4", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan2", + "apparent_energy1.group2.chan3" + ] + }, + { + "id": "apparent_energy1.group2.chan2", + "name": "Apparent Energy5", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan1", + "apparent_energy1.group2.chan3" + ] + }, + { + "id": "apparent_energy1.group2.chan3", + "name": "Apparent Energy6", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy1.group2.chan1", + "apparent_energy1.group2.chan2" + ] + }, + { + "id": "apparent_energy1.mask1", + "name": "Apparent Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy a" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy b" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_energy1.mask2" + ] + }, + { + "id": "apparent_energy1.mask2", + "name": "Apparent Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy a" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy b" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_energy2.group1_value", + "name": "Apparent Energy c", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.group1.chan1", + "name": "Apparent Energy7", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan2", + "apparent_energy2.group1.chan3" + ] + }, + { + "id": "apparent_energy2.group1.chan2", + "name": "Apparent Energy8", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan1", + "apparent_energy2.group1.chan3" + ] + }, + { + "id": "apparent_energy2.group1.chan3", + "name": "Apparent Energy9", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group1.chan1", + "apparent_energy2.group1.chan2" + ] + }, + { + "id": "apparent_energy2.group2_value", + "name": "Apparent Energy d", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.group2.chan1", + "name": "Apparent Energy10", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan2", + "apparent_energy2.group2.chan3" + ] + }, + { + "id": "apparent_energy2.group2.chan2", + "name": "Apparent Energy11", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan1", + "apparent_energy2.group2.chan3" + ] + }, + { + "id": "apparent_energy2.group2.chan3", + "name": "Apparent Energy12", + "value": "0", + "unit": "kVAh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 240, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS", + "reference": [ + "apparent_energy2.group2.chan1", + "apparent_energy2.group2.chan2" + ] + }, + { + "id": "apparent_energy2.mask1", + "name": "Apparent Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy c" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy d" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_energy2.mask2" + ] + }, + { + "id": "apparent_energy2.mask2", + "name": "Apparent Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Energy c" + }, + { + "value": 1, + "name": "Apparent Energy" + }, + { + "value": 0, + "name": "Apparent Energy d" + }, + { + "value": 1, + "name": "Apparent Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_power1.group1_value", + "name": "Apparent Power a", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.group1.chan1", + "name": "Apparent Power1", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan2", + "apparent_power1.group1.chan3" + ] + }, + { + "id": "apparent_power1.group1.chan2", + "name": "Apparent Power2", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan1", + "apparent_power1.group1.chan3" + ] + }, + { + "id": "apparent_power1.group1.chan3", + "name": "Apparent Power3", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group1.chan1", + "apparent_power1.group1.chan2" + ] + }, + { + "id": "apparent_power1.group2_value", + "name": "Apparent Power b", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.group2.chan1", + "name": "Apparent Power4", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan2", + "apparent_power1.group2.chan3" + ] + }, + { + "id": "apparent_power1.group2.chan2", + "name": "Apparent Power5", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan1", + "apparent_power1.group2.chan3" + ] + }, + { + "id": "apparent_power1.group2.chan3", + "name": "Apparent Power6", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power1.group2.chan1", + "apparent_power1.group2.chan2" + ] + }, + { + "id": "apparent_power1.mask1", + "name": "Apparent Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power a" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power b" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_power1.mask2" + ] + }, + { + "id": "apparent_power1.mask2", + "name": "Apparent Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power a" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power b" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "apparent_power2.group1_value", + "name": "Apparent Power c", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.group1.chan1", + "name": "Apparent Power7", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan2", + "apparent_power2.group1.chan3" + ] + }, + { + "id": "apparent_power2.group1.chan2", + "name": "Apparent Power8", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan1", + "apparent_power2.group1.chan3" + ] + }, + { + "id": "apparent_power2.group1.chan3", + "name": "Apparent Power9", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group1.chan1", + "apparent_power2.group1.chan2" + ] + }, + { + "id": "apparent_power2.group2_value", + "name": "Apparent Power d", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.group2.chan1", + "name": "Apparent Power10", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan2", + "apparent_power2.group2.chan3" + ] + }, + { + "id": "apparent_power2.group2.chan2", + "name": "Apparent Power11", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan1", + "apparent_power2.group2.chan3" + ] + }, + { + "id": "apparent_power2.group2.chan3", + "name": "Apparent Power12", + "value": "0", + "unit": "kVA", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 9, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES", + "reference": [ + "apparent_power2.group2.chan1", + "apparent_power2.group2.chan2" + ] + }, + { + "id": "apparent_power2.mask1", + "name": "Apparent Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power c" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power d" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "apparent_power2.mask2" + ] + }, + { + "id": "apparent_power2.mask2", + "name": "Apparent Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Apparent Power c" + }, + { + "value": 1, + "name": "Apparent Power" + }, + { + "value": 0, + "name": "Apparent Power d" + }, + { + "value": 1, + "name": "Apparent Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "bluetooth_name.content", + "name": "Name", + "value": "", + "unit": "", + "access_mode": "RW", + "data_type": "TEXT", + "value_type": "STRING", + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "max_length": 13, + "reference": [ + "bluetooth_name.length" + ] + }, + { + "id": "bluetooth_name.length", + "name": "Name Length", + "value": "13", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 13 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "bluetooth_name.content" + ] + }, + { + "id": "clear_data.type", + "name": "Data Type to Clear", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_alarm.channel", + "name": "Alarm Channel", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "current_alarm.info.exceed_range_alarm_deactivation.current", + "current_alarm.info.exceed_range_alarm_trigger.current", + "current_alarm.info.lower_range_alarm_deactivation.current", + "current_alarm.info.lower_range_alarm_trigger.current", + "current_alarm.info.lower_range_error.current", + "current_alarm.info.over_range_alarm_deactivation.current", + "current_alarm.info.over_range_alarm_trigger.current", + "current_alarm.info.over_range_error.current", + "current_alarm.info.over_range_release.current", + "current_alarm.info.type", + "current_alarm.info.within_range_alarm_deactivation.current", + "current_alarm.info.within_range_alarm_trigger.current" + ] + }, + { + "id": "current_alarm.info.exceed_range_alarm_deactivation.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.exceed_range_alarm_trigger.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_alarm_deactivation.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_alarm_trigger.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.lower_range_error.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_alarm_deactivation.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_alarm_trigger.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_error.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.over_range_release.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 4, + "name": "Overrange Release" + }, + { + "value": 16, + "name": "Current Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Current Below Threshold Alarm" + }, + { + "value": 18, + "name": "Current Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Current Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Current in-Range Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Current in-Range Thresholds Alarm" + }, + { + "value": 22, + "name": "Current Out-of-Range Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Current Out-of-Range Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_alarm.info.within_range_alarm_deactivation.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_alarm.info.within_range_alarm_trigger.current", + "name": "Current", + "value": "", + "unit": "a", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 67, + "bacnet_unit_type": "UNITS_YEARS", + "reference": [] + }, + { + "id": "current_interface1.type", + "name": "Circuit Type", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface2.type", + "name": "Circuit Type", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface3.type", + "name": "Circuit Type", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "current_interface4.type", + "name": "Circuit Type", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "one_phase" + }, + { + "value": 1, + "name": "three_phase" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.command", + "name": "Sub-command", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Data Storage Enable" + }, + { + "value": 1, + "name": "Data Retransmission Enable" + }, + { + "value": 2, + "name": "Retransmission Interval" + }, + { + "value": 3, + "name": "Retrieval Interval" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.enable", + "name": "Data Storage Enable", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.retransmission_enable", + "name": "Data Retransmission Enable", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "data_storage_settings.retransmission_interval", + "name": "Retransmission Interval", + "value": "600", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 30, + 1200 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [] + }, + { + "id": "data_storage_settings.retrieval_interval", + "name": "Retrieval Interval", + "value": "60", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 30, + 1200 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [] + }, + { + "id": "daylight_saving_time.daylight_saving_time_offset", + "name": "DST Bias", + "value": "60", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 120 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.enable", + "name": "Daylight Saving Time", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_hour_min", + "name": "Time", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT16", + "values": [ + { + "value": 0, + "name": "00:00" + }, + { + "value": 60, + "name": "01:00" + }, + { + "value": 120, + "name": "02:00" + }, + { + "value": 180, + "name": "03:00" + }, + { + "value": 240, + "name": "04:00" + }, + { + "value": 300, + "name": "05:00" + }, + { + "value": 360, + "name": "06:00" + }, + { + "value": 420, + "name": "07:00" + }, + { + "value": 480, + "name": "08:00" + }, + { + "value": 540, + "name": "09:00" + }, + { + "value": 600, + "name": "10:00" + }, + { + "value": 660, + "name": "11:00" + }, + { + "value": 720, + "name": "12:00" + }, + { + "value": 780, + "name": "13:00" + }, + { + "value": 840, + "name": "14:00" + }, + { + "value": 900, + "name": "15:00" + }, + { + "value": 960, + "name": "16:00" + }, + { + "value": 1020, + "name": "17:00" + }, + { + "value": 1080, + "name": "18:00" + }, + { + "value": 1140, + "name": "19:00" + }, + { + "value": 1200, + "name": "20:00" + }, + { + "value": 1260, + "name": "21:00" + }, + { + "value": 1320, + "name": "22:00" + }, + { + "value": 1380, + "name": "23:00" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day" + ] + }, + { + "id": "daylight_saving_time.end_month", + "name": "Month", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Jan." + }, + { + "value": 2, + "name": "Feb." + }, + { + "value": 3, + "name": "Mar." + }, + { + "value": 4, + "name": "Apr." + }, + { + "value": 5, + "name": "May" + }, + { + "value": 6, + "name": "Jun." + }, + { + "value": 7, + "name": "Jul." + }, + { + "value": 8, + "name": "Aug." + }, + { + "value": 9, + "name": "Sep." + }, + { + "value": 10, + "name": "Oct." + }, + { + "value": 11, + "name": "Nov." + }, + { + "value": 12, + "name": "Dec." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_week_day", + "name": "Week", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Mon." + }, + { + "value": 2, + "name": "Tues." + }, + { + "value": 3, + "name": "Wed." + }, + { + "value": 4, + "name": "Thurs." + }, + { + "value": 5, + "name": "Fri." + }, + { + "value": 6, + "name": "Sat." + }, + { + "value": 7, + "name": "Sun." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.end_week_num", + "name": "Number of Week", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "1st" + }, + { + "value": 2, + "name": "2nd" + }, + { + "value": 3, + "name": "3rd" + }, + { + "value": 4, + "name": "4th" + }, + { + "value": 5, + "name": "last" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_hour_min", + "name": "Time", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT16", + "values": [ + { + "value": 0, + "name": "00:00" + }, + { + "value": 60, + "name": "01:00" + }, + { + "value": 120, + "name": "02:00" + }, + { + "value": 180, + "name": "03:00" + }, + { + "value": 240, + "name": "04:00" + }, + { + "value": 300, + "name": "05:00" + }, + { + "value": 360, + "name": "06:00" + }, + { + "value": 420, + "name": "07:00" + }, + { + "value": 480, + "name": "08:00" + }, + { + "value": 540, + "name": "09:00" + }, + { + "value": 600, + "name": "10:00" + }, + { + "value": 660, + "name": "11:00" + }, + { + "value": 720, + "name": "12:00" + }, + { + "value": 780, + "name": "13:00" + }, + { + "value": 840, + "name": "14:00" + }, + { + "value": 900, + "name": "15:00" + }, + { + "value": 960, + "name": "16:00" + }, + { + "value": 1020, + "name": "17:00" + }, + { + "value": 1080, + "name": "18:00" + }, + { + "value": 1140, + "name": "19:00" + }, + { + "value": 1200, + "name": "20:00" + }, + { + "value": 1260, + "name": "21:00" + }, + { + "value": 1320, + "name": "22:00" + }, + { + "value": 1380, + "name": "23:00" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_month", + "name": "Month", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Jan." + }, + { + "value": 2, + "name": "Feb." + }, + { + "value": 3, + "name": "Mar." + }, + { + "value": 4, + "name": "Apr." + }, + { + "value": 5, + "name": "May" + }, + { + "value": 6, + "name": "Jun." + }, + { + "value": 7, + "name": "Jul." + }, + { + "value": 8, + "name": "Aug." + }, + { + "value": 9, + "name": "Sep." + }, + { + "value": 10, + "name": "Oct." + }, + { + "value": 11, + "name": "Nov." + }, + { + "value": 12, + "name": "Dec." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_week_day", + "name": "Week", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "Mon." + }, + { + "value": 2, + "name": "Tues." + }, + { + "value": 3, + "name": "Wed." + }, + { + "value": 4, + "name": "Thurs." + }, + { + "value": 5, + "name": "Fri." + }, + { + "value": 6, + "name": "Sat." + }, + { + "value": 7, + "name": "Sun." + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_num", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "daylight_saving_time.start_week_num", + "name": "Number of Week", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "1st" + }, + { + "value": 2, + "name": "2nd" + }, + { + "value": 3, + "name": "3rd" + }, + { + "value": 4, + "name": "4th" + }, + { + "value": 5, + "name": "last" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "daylight_saving_time.enable", + "daylight_saving_time.daylight_saving_time_offset", + "daylight_saving_time.start_month", + "daylight_saving_time.start_week_day", + "daylight_saving_time.start_hour_min", + "daylight_saving_time.end_month", + "daylight_saving_time.end_week_num", + "daylight_saving_time.end_week_day", + "daylight_saving_time.end_hour_min" + ] + }, + { + "id": "forward_active_energy1.group1_value", + "name": "Imported Active Energy a", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.group1.chan1", + "name": "Imported Active Energy1", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan2", + "forward_active_energy1.group1.chan3" + ] + }, + { + "id": "forward_active_energy1.group1.chan2", + "name": "Imported Active Energy2", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan1", + "forward_active_energy1.group1.chan3" + ] + }, + { + "id": "forward_active_energy1.group1.chan3", + "name": "Imported Active Energy3", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group1.chan1", + "forward_active_energy1.group1.chan2" + ] + }, + { + "id": "forward_active_energy1.group2_value", + "name": "Imported Active Energy b", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.group2.chan1", + "name": "Imported Active Energy4", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan2", + "forward_active_energy1.group2.chan3" + ] + }, + { + "id": "forward_active_energy1.group2.chan2", + "name": "Imported Active Energy5", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan1", + "forward_active_energy1.group2.chan3" + ] + }, + { + "id": "forward_active_energy1.group2.chan3", + "name": "Imported Active Energy6", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy1.group2.chan1", + "forward_active_energy1.group2.chan2" + ] + }, + { + "id": "forward_active_energy1.mask1", + "name": "Imported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy a" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy b" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_active_energy1.mask2" + ] + }, + { + "id": "forward_active_energy1.mask2", + "name": "Imported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy a" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy b" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_active_energy2.group1_value", + "name": "Imported Active Energy c", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.group1.chan1", + "name": "Imported Active Energy7", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan2", + "forward_active_energy2.group1.chan3" + ] + }, + { + "id": "forward_active_energy2.group1.chan2", + "name": "Imported Active Energy8", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan1", + "forward_active_energy2.group1.chan3" + ] + }, + { + "id": "forward_active_energy2.group1.chan3", + "name": "Imported Active Energy9", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group1.chan1", + "forward_active_energy2.group1.chan2" + ] + }, + { + "id": "forward_active_energy2.group2_value", + "name": "Imported Active Energy d", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.group2.chan1", + "name": "Imported Active Energy10", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan2", + "forward_active_energy2.group2.chan3" + ] + }, + { + "id": "forward_active_energy2.group2.chan2", + "name": "Imported Active Energy11", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan1", + "forward_active_energy2.group2.chan3" + ] + }, + { + "id": "forward_active_energy2.group2.chan3", + "name": "Imported Active Energy12", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "forward_active_energy2.group2.chan1", + "forward_active_energy2.group2.chan2" + ] + }, + { + "id": "forward_active_energy2.mask1", + "name": "Imported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy c" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy d" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_active_energy2.mask2" + ] + }, + { + "id": "forward_active_energy2.mask2", + "name": "Imported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Active Energy c" + }, + { + "value": 1, + "name": "Imported Active Energy" + }, + { + "value": 0, + "name": "Imported Active Energy d" + }, + { + "value": 1, + "name": "Imported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_reactive_energy1.group1_value", + "name": "Imported Reactive Energy a", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan1", + "name": "Imported Reactive Energy1", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan2", + "forward_reactive_energy1.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan2", + "name": "Imported Reactive Energy2", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan1", + "forward_reactive_energy1.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group1.chan3", + "name": "Imported Reactive Energy3", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group1.chan1", + "forward_reactive_energy1.group1.chan2" + ] + }, + { + "id": "forward_reactive_energy1.group2_value", + "name": "Imported Reactive Energy b", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan1", + "name": "Imported Reactive Energy4", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan2", + "forward_reactive_energy1.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan2", + "name": "Imported Reactive Energy5", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan1", + "forward_reactive_energy1.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy1.group2.chan3", + "name": "Imported Reactive Energy6", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy1.group2.chan1", + "forward_reactive_energy1.group2.chan2" + ] + }, + { + "id": "forward_reactive_energy1.mask1", + "name": "Imported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy a" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy b" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_reactive_energy1.mask2" + ] + }, + { + "id": "forward_reactive_energy1.mask2", + "name": "Imported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy a" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy b" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "forward_reactive_energy2.group1_value", + "name": "Imported Reactive Energy c", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan1", + "name": "Imported Reactive Energy7", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan2", + "forward_reactive_energy2.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan2", + "name": "Imported Reactive Energy8", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan1", + "forward_reactive_energy2.group1.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group1.chan3", + "name": "Imported Reactive Energy9", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group1.chan1", + "forward_reactive_energy2.group1.chan2" + ] + }, + { + "id": "forward_reactive_energy2.group2_value", + "name": "Imported Reactive Energy d", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan1", + "name": "Imported Reactive Energy10", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan2", + "forward_reactive_energy2.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan2", + "name": "Imported Reactive Energy11", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan1", + "forward_reactive_energy2.group2.chan3" + ] + }, + { + "id": "forward_reactive_energy2.group2.chan3", + "name": "Imported Reactive Energy12", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "forward_reactive_energy2.group2.chan1", + "forward_reactive_energy2.group2.chan2" + ] + }, + { + "id": "forward_reactive_energy2.mask1", + "name": "Imported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy c" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy d" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "forward_reactive_energy2.mask2" + ] + }, + { + "id": "forward_reactive_energy2.mask2", + "name": "Imported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Imported Reactive Energy c" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + }, + { + "value": 0, + "name": "Imported Reactive Energy d" + }, + { + "value": 1, + "name": "Imported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "historical_data_report.mode", + "name": "Historical Data Mode", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "target time" + }, + { + "value": 1, + "name": "historical time" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "historical_data_report.timestamp" + ] + }, + { + "id": "historical_data_report.timestamp", + "name": "Historical Data Timestamps", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "historical_data_report.mode" + ] + }, + { + "id": "history_type.type", + "name": "Historical Data Type", + "value": "1", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 1, + "name": "month energy" + }, + { + "value": 2, + "name": "month min" + }, + { + "value": 3, + "name": "month max" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "month_statistics_settings.day", + "name": "day", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 28 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.hour", + "month_statistics_settings.minute" + ] + }, + { + "id": "month_statistics_settings.hour", + "name": "hour", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 23 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.day", + "month_statistics_settings.minute" + ] + }, + { + "id": "month_statistics_settings.minute", + "name": "minute", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 59 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "month_statistics_settings.day", + "month_statistics_settings.hour" + ] + }, + { + "id": "oem_id", + "name": "OEM ID", + "value": "", + "unit": "", + "access_mode": "RW", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "power_factor.group1_value", + "name": "Power Factor a", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group1.chan1", + "name": "Power Factor1", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan2", + "power_factor.group1.chan3" + ] + }, + { + "id": "power_factor.group1.chan2", + "name": "Power Factor2", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan1", + "power_factor.group1.chan3" + ] + }, + { + "id": "power_factor.group1.chan3", + "name": "Power Factor3", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group1.chan1", + "power_factor.group1.chan2" + ] + }, + { + "id": "power_factor.group2_value", + "name": "Power Factorb", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group2.chan1", + "name": "Power Factor4", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan2", + "power_factor.group2.chan3" + ] + }, + { + "id": "power_factor.group2.chan2", + "name": "Power Factor5", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan1", + "power_factor.group2.chan3" + ] + }, + { + "id": "power_factor.group2.chan3", + "name": "Power Factor6", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group2.chan1", + "power_factor.group2.chan2" + ] + }, + { + "id": "power_factor.group3_value", + "name": "Power Factor c", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group3.chan1", + "name": "Power Factor7", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan2", + "power_factor.group3.chan3" + ] + }, + { + "id": "power_factor.group3.chan2", + "name": "Power Factor8", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan1", + "power_factor.group3.chan3" + ] + }, + { + "id": "power_factor.group3.chan3", + "name": "Power Factor9", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group3.chan1", + "power_factor.group3.chan2" + ] + }, + { + "id": "power_factor.group4_value", + "name": "Power Factor d", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.group4.chan1", + "name": "Power Factor10", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan2", + "power_factor.group4.chan3" + ] + }, + { + "id": "power_factor.group4.chan2", + "name": "Power Factor11", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan1", + "power_factor.group4.chan3" + ] + }, + { + "id": "power_factor.group4.chan3", + "name": "Power Factor12", + "value": "0", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.group4.chan1", + "power_factor.group4.chan2" + ] + }, + { + "id": "power_factor.mask1", + "name": "Power Factor", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask2", + "name": "Power Factor", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask3", + "name": "Power Factor", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "power_factor.mask4" + ] + }, + { + "id": "power_factor.mask4", + "name": "Power Factor", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Power Factor a" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factorb" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor c" + }, + { + "value": 1, + "name": "Power Factor" + }, + { + "value": 0, + "name": "Power Factor d" + }, + { + "value": 1, + "name": "Power Factor" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "product_sn", + "name": "SN", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 16, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "query_device_status", + "name": "Query Device Status", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "query_history_set", + "name": "Query Data Storage Configuration", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reactive_power1.group1_value", + "name": "Reactive Power a", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.group1.chan1", + "name": "Reactive Power1", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan2", + "reactive_power1.group1.chan3" + ] + }, + { + "id": "reactive_power1.group1.chan2", + "name": "Reactive Power2", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan1", + "reactive_power1.group1.chan3" + ] + }, + { + "id": "reactive_power1.group1.chan3", + "name": "Reactive Power3", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group1.chan1", + "reactive_power1.group1.chan2" + ] + }, + { + "id": "reactive_power1.group2_value", + "name": "Reactive Power b", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.group2.chan1", + "name": "Reactive Power4", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan2", + "reactive_power1.group2.chan3" + ] + }, + { + "id": "reactive_power1.group2.chan2", + "name": "Reactive Power5", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan1", + "reactive_power1.group2.chan3" + ] + }, + { + "id": "reactive_power1.group2.chan3", + "name": "Reactive Power6", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power1.group2.chan1", + "reactive_power1.group2.chan2" + ] + }, + { + "id": "reactive_power1.mask1", + "name": "Reactive Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power a" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power b" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reactive_power1.mask2" + ] + }, + { + "id": "reactive_power1.mask2", + "name": "Reactive Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power a" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power b" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reactive_power2.group1_value", + "name": "Reactive Power c", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.group1.chan1", + "name": "Reactive Power7", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan2", + "reactive_power2.group1.chan3" + ] + }, + { + "id": "reactive_power2.group1.chan2", + "name": "Reactive Power8", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan1", + "reactive_power2.group1.chan3" + ] + }, + { + "id": "reactive_power2.group1.chan3", + "name": "Reactive Power9", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group1.chan1", + "reactive_power2.group1.chan2" + ] + }, + { + "id": "reactive_power2.group2_value", + "name": "Reactive Power d", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.group2.chan1", + "name": "Reactive Power10", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan2", + "reactive_power2.group2.chan3" + ] + }, + { + "id": "reactive_power2.group2.chan2", + "name": "Reactive Power11", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan1", + "reactive_power2.group2.chan3" + ] + }, + { + "id": "reactive_power2.group2.chan3", + "name": "Reactive Power12", + "value": "0", + "unit": "kvar", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 12, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERES_REACTIVE", + "reference": [ + "reactive_power2.group2.chan1", + "reactive_power2.group2.chan2" + ] + }, + { + "id": "reactive_power2.mask1", + "name": "Reactive Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power c" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power d" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reactive_power2.mask2" + ] + }, + { + "id": "reactive_power2.mask2", + "name": "Reactive Power", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Reactive Power c" + }, + { + "value": 1, + "name": "Reactive Power" + }, + { + "value": 0, + "name": "Reactive Power d" + }, + { + "value": 1, + "name": "Reactive Power" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reboot", + "name": "Reboot", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reconnect", + "name": "Network Reconnection", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "report_enable.active_power", + "name": "Active Power", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.apparent_energy", + "name": "Apparent Energy", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.apparent_power", + "name": "Apparent Power", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.current", + "name": "Current(RMS)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.forward_active_energy", + "name": "Imported Active Energy", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.forward_reactive_energy", + "name": "Imported Reactive Energy", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.power_factor", + "name": "Power Factor", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reactive_power", + "name": "ReActive Power", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reverse_active_energy", + "name": "Exported Active Energy", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.reverse_reactive_energy", + "name": "Exported Reactive Energy", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.temperature", + "name": "Temperature", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.thdi", + "name": "THDi", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.thdv", + "name": "THDv", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.voltage", + "name": "Voltage(RMS)", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv", + "report_enable.voltage_unbalance" + ] + }, + { + "id": "report_enable.voltage_unbalance", + "name": "Voltage Three-phase Unbalance", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "report_enable.temperature", + "report_enable.current", + "report_enable.voltage", + "report_enable.power_factor", + "report_enable.active_power", + "report_enable.reactive_power", + "report_enable.apparent_power", + "report_enable.forward_active_energy", + "report_enable.reverse_active_energy", + "report_enable.forward_reactive_energy", + "report_enable.reverse_reactive_energy", + "report_enable.apparent_energy", + "report_enable.thdi", + "report_enable.thdv" + ] + }, + { + "id": "reporting_interval.minutes_of_time", + "name": "Report Interval", + "value": "1", + "unit": "min", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 1, + 1440 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES", + "reference": [ + "reporting_interval.unit" + ] + }, + { + "id": "reporting_interval.seconds_of_time", + "name": "Report Interval", + "value": "30", + "unit": "s", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT16", + "range": [ + 10, + 64800 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 73, + "bacnet_unit_type": "UNITS_SECONDS", + "reference": [ + "reporting_interval.unit" + ] + }, + { + "id": "reporting_interval.unit", + "name": "Report Interval Unit", + "value": "1", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "second" + }, + { + "value": 1, + "name": "min" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "request_query_all_configurations", + "name": "Request to Query All Configurations", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reset", + "name": "Reset", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "reset_energy.channel", + "name": "Channel Number", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 12 + ], + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "retrieve_historical_data_by_time_range.end_time", + "name": "End Time", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.type", + "retrieve_historical_data_by_time_range.start_time" + ] + }, + { + "id": "retrieve_historical_data_by_time_range.start_time", + "name": "Start Time", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.type", + "retrieve_historical_data_by_time_range.end_time" + ] + }, + { + "id": "retrieve_historical_data_by_time_range.type", + "name": "Type", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time_range.start_time", + "retrieve_historical_data_by_time_range.end_time" + ] + }, + { + "id": "retrieve_historical_data_by_time.time", + "name": "Time Point", + "value": "", + "unit": "", + "access_mode": "W", + "data_type": "NUMBER", + "value_type": "UINT8", + "bacnet_type": "analog_output_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time.type" + ] + }, + { + "id": "retrieve_historical_data_by_time.type", + "name": "Type", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "retrieve_historical_data_by_time.time" + ] + }, + { + "id": "reverse_active_energy1.group1_value", + "name": "Exported Active Energy a", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.group1.chan1", + "name": "Exported Active Energy1", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan2", + "reverse_active_energy1.group1.chan3" + ] + }, + { + "id": "reverse_active_energy1.group1.chan2", + "name": "Exported Active Energy2", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan1", + "reverse_active_energy1.group1.chan3" + ] + }, + { + "id": "reverse_active_energy1.group1.chan3", + "name": "Exported Active Energy3", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group1.chan1", + "reverse_active_energy1.group1.chan2" + ] + }, + { + "id": "reverse_active_energy1.group2_value", + "name": "Exported Active Energy b", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.group2.chan1", + "name": "Exported Active Energy4", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan2", + "reverse_active_energy1.group2.chan3" + ] + }, + { + "id": "reverse_active_energy1.group2.chan2", + "name": "Exported Active Energy5", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan1", + "reverse_active_energy1.group2.chan3" + ] + }, + { + "id": "reverse_active_energy1.group2.chan3", + "name": "Exported Active Energy6", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy1.group2.chan1", + "reverse_active_energy1.group2.chan2" + ] + }, + { + "id": "reverse_active_energy1.mask1", + "name": "Exported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy a" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy b" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_active_energy1.mask2" + ] + }, + { + "id": "reverse_active_energy1.mask2", + "name": "Exported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy a" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy b" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_active_energy2.group1_value", + "name": "Exported Active Energy c", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.group1.chan1", + "name": "Exported Active Energy7", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan2", + "reverse_active_energy2.group1.chan3" + ] + }, + { + "id": "reverse_active_energy2.group1.chan2", + "name": "Exported Active Energy8", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan1", + "reverse_active_energy2.group1.chan3" + ] + }, + { + "id": "reverse_active_energy2.group1.chan3", + "name": "Exported Active Energy9", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group1.chan1", + "reverse_active_energy2.group1.chan2" + ] + }, + { + "id": "reverse_active_energy2.group2_value", + "name": "Exported Active Energy d", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.group2.chan1", + "name": "Exported Active Energy10", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan2", + "reverse_active_energy2.group2.chan3" + ] + }, + { + "id": "reverse_active_energy2.group2.chan2", + "name": "Exported Active Energy11", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan1", + "reverse_active_energy2.group2.chan3" + ] + }, + { + "id": "reverse_active_energy2.group2.chan3", + "name": "Exported Active Energy12", + "value": "0", + "unit": "kWh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 19, + "bacnet_unit_type": "UNITS_KILOWATT_HOURS", + "reference": [ + "reverse_active_energy2.group2.chan1", + "reverse_active_energy2.group2.chan2" + ] + }, + { + "id": "reverse_active_energy2.mask1", + "name": "Exported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy c" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy d" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_active_energy2.mask2" + ] + }, + { + "id": "reverse_active_energy2.mask2", + "name": "Exported Active Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Active Energy c" + }, + { + "value": 1, + "name": "Exported Active Energy" + }, + { + "value": 0, + "name": "Exported Active Energy d" + }, + { + "value": 1, + "name": "Exported Active Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_reactive_energy1.group1_value", + "name": "Exported Reactive Energy a", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan1", + "name": "Exported Reactive Energy1", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan2", + "reverse_reactive_energy1.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan2", + "name": "Exported Reactive Energy2", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan1", + "reverse_reactive_energy1.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group1.chan3", + "name": "Exported Reactive Energy3", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group1.chan1", + "reverse_reactive_energy1.group1.chan2" + ] + }, + { + "id": "reverse_reactive_energy1.group2_value", + "name": "Exported Reactive Energy b", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan1", + "name": "Exported Reactive Energy4", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan2", + "reverse_reactive_energy1.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan2", + "name": "Exported Reactive Energy5", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan1", + "reverse_reactive_energy1.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy1.group2.chan3", + "name": "Exported Reactive Energy6", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy1.group2.chan1", + "reverse_reactive_energy1.group2.chan2" + ] + }, + { + "id": "reverse_reactive_energy1.mask1", + "name": "Exported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy a" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy b" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_reactive_energy1.mask2" + ] + }, + { + "id": "reverse_reactive_energy1.mask2", + "name": "Exported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy a" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy b" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "reverse_reactive_energy2.group1.chan1", + "name": "Exported Reactive Energy7", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan2", + "reverse_reactive_energy2.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group1.chan2", + "name": "Exported Reactive Energy8", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan1", + "reverse_reactive_energy2.group1.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group1.chan3", + "name": "Exported Reactive Energy9", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group1.chan1", + "reverse_reactive_energy2.group1.chan2" + ] + }, + { + "id": "reverse_reactive_energy2.group2_value", + "name": "Exported Reactive Energy d", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.mask2" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan1", + "name": "Exported Reactive Energy10", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan2", + "reverse_reactive_energy2.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan2", + "name": "Exported Reactive Energy11", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan1", + "reverse_reactive_energy2.group2.chan3" + ] + }, + { + "id": "reverse_reactive_energy2.group2.chan3", + "name": "Exported Reactive Energy12", + "value": "0", + "unit": "kVArh", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 243, + "bacnet_unit_type": "UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE", + "reference": [ + "reverse_reactive_energy2.group2.chan1", + "reverse_reactive_energy2.group2.chan2" + ] + }, + { + "id": "reverse_reactive_energy2.mask1", + "name": "Exported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy c" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy d" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "reverse_reactive_energy2.mask2" + ] + }, + { + "id": "reverse_reactive_energy2.mask2", + "name": "Exported Reactive Energy", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Exported Reactive Energy c" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + }, + { + "value": 0, + "name": "Exported Reactive Energy d" + }, + { + "value": 1, + "name": "Exported Reactive Energy" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "stop_historical_data_retrieval.type", + "name": "Stop Retrieval", + "value": "0", + "unit": "", + "access_mode": "W", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "alarm data" + }, + { + "value": 1, + "name": "period data" + }, + { + "value": 2, + "name": "month energy data" + }, + { + "value": 3, + "name": "month min_max data" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "synchronize_time", + "name": "Time Synchronize", + "access_mode": "W", + "data_type": "BOOL", + "value_type": "UINT8", + "unit": "", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "bacnet_type": "binary_output_object", + "value": "", + "values": [ + { + "value": 0, + "name": "no" + }, + { + "value": 1, + "name": "yes" + } + ] + }, + { + "id": "temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS" + }, + { + "id": "temperature_alarm_settings.enable", + "name": "Threshold Alarm Enable", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.threshold_condition", + "name": "Threshold Mode", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "condition: xB" + }, + { + "value": 3, + "name": "condition: A≤x≤B" + }, + { + "value": 4, + "name": "condition: x
B" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_min", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm_settings.threshold_max", + "name": "Value B", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_min" + ] + }, + { + "id": "temperature_alarm_settings.threshold_min", + "name": "Value A", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_alarm_settings.enable", + "temperature_alarm_settings.threshold_condition", + "temperature_alarm_settings.threshold_max" + ] + }, + { + "id": "temperature_alarm.exceed_range_alarm_deactivation.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.exceed_range_alarm_trigger.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.lower_range_alarm_deactivation.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.lower_range_alarm_trigger.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.over_range_alarm_deactivation.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.over_range_alarm_trigger.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 16, + "name": "Temperature Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Temperature Below Threshold Alarm" + }, + { + "value": 18, + "name": "Temperature Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Temperature Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Temperature Between Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Temperature Between Thresholds Alarm" + }, + { + "value": 22, + "name": "Temperature Outside Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Temperature Outside Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "temperature_alarm.within_range_alarm_deactivation.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_alarm.within_range_alarm_trigger.temperature", + "name": "Temperature", + "value": "", + "unit": "°C", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -20, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [] + }, + { + "id": "temperature_calibration_settings.calibration_value", + "name": "Calibration Value", + "value": "0", + "unit": "°C", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + -120, + 120 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 62, + "bacnet_unit_type": "UNITS_DEGREES_CELSIUS", + "reference": [ + "temperature_calibration_settings.enable" + ] + }, + { + "id": "temperature_calibration_settings.enable", + "name": "Temperature Calibration", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "temperature_calibration_settings.calibration_value" + ] + }, + { + "id": "temperature_unit", + "name": "Temperature Unit", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "℃" + }, + { + "value": 1, + "name": "℉" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "thdi_alarm.channel", + "name": "Alarm Channel", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "thdi_alarm.info.over_range_alarm_deactivation.thdi", + "thdi_alarm.info.over_range_alarm_trigger.thdi", + "thdi_alarm.info.type" + ] + }, + { + "id": "thdi_alarm.info.over_range_alarm_deactivation.thdi", + "name": "THDi", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdi_alarm.info.over_range_alarm_trigger.thdi", + "name": "THDi", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdi_alarm.info.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "THDi Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "THDi Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "thdv_alarm.channel", + "name": "Alarm Channel", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "thdv_alarm.info.over_range_alarm_deactivation.thdv", + "thdv_alarm.info.over_range_alarm_trigger.thdv", + "thdv_alarm.info.type" + ] + }, + { + "id": "thdv_alarm.info.over_range_alarm_deactivation.thdv", + "name": "THDv", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdv_alarm.info.over_range_alarm_trigger.thdv", + "name": "THDv", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "thdv_alarm.info.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "THDv Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "THDv Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "time_zone", + "name": "Time Zone", + "value": "0", + "unit": "min", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "INT16", + "values": [ + { + "value": -720, + "name": "UTC-12(IDLW)" + }, + { + "value": -660, + "name": "UTC-11(SST)" + }, + { + "value": -600, + "name": "UTC-10(HST)" + }, + { + "value": -570, + "name": "UTC-9:30(MIT)" + }, + { + "value": -540, + "name": "UTC-9(AKST)" + }, + { + "value": -480, + "name": "UTC-8(PST)" + }, + { + "value": -420, + "name": "UTC-7(MST)" + }, + { + "value": -360, + "name": "UTC-6(CST)" + }, + { + "value": -300, + "name": "UTC-5(EST)" + }, + { + "value": -240, + "name": "UTC-4(AST)" + }, + { + "value": -210, + "name": "UTC-3:30(NST)" + }, + { + "value": -180, + "name": "UTC-3(BRT)" + }, + { + "value": -120, + "name": "UTC-2(FNT)" + }, + { + "value": -60, + "name": "UTC-1(CVT)" + }, + { + "value": 0, + "name": "UTC(WET)" + }, + { + "value": 60, + "name": "UTC+1(CET)" + }, + { + "value": 120, + "name": "UTC+2(EET)" + }, + { + "value": 180, + "name": "UTC+3(MSK)" + }, + { + "value": 210, + "name": "UTC+3:30(IRST)" + }, + { + "value": 240, + "name": "UTC+4(GST)" + }, + { + "value": 270, + "name": "UTC+4:30(AFT)" + }, + { + "value": 300, + "name": "UTC+5(PKT)" + }, + { + "value": 330, + "name": "UTC+5:30(IST)" + }, + { + "value": 345, + "name": "UTC+5:45(NPT)" + }, + { + "value": 360, + "name": "UTC+6(BHT)" + }, + { + "value": 390, + "name": "UTC+6:30(MMT)" + }, + { + "value": 420, + "name": "UTC+7(ICT)" + }, + { + "value": 480, + "name": "UTC+8(CT/CST)" + }, + { + "value": 540, + "name": "UTC+9(JST)" + }, + { + "value": 570, + "name": "UTC+9:30(ACST)" + }, + { + "value": 600, + "name": "UTC+10(AEST)" + }, + { + "value": 630, + "name": "UTC+10:30(LHST)" + }, + { + "value": 660, + "name": "UTC+11(VUT)" + }, + { + "value": 720, + "name": "UTC+12(NZST)" + }, + { + "value": 765, + "name": "UTC+12:45(CHAST)" + }, + { + "value": 780, + "name": "UTC+13(PHOT)" + }, + { + "value": 840, + "name": "UTC+14(LINT)" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 72, + "bacnet_unit_type": "UNITS_MINUTES" + }, + { + "id": "tsl_version", + "name": "TSL Version", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "version.firmware_version", + "name": "Firmware Version", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 12, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "version.hardware_version" + ] + }, + { + "id": "version.hardware_version", + "name": "Hardware Version", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "TEXT", + "value_type": "STRING", + "max_length": 4, + "bacnet_type": "character_string_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "version.firmware_version" + ] + }, + { + "id": "voltage_alarm.channel", + "name": "Alarm Channel", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 11 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_alarm.info.exceed_range_alarm_deactivation.voltage", + "voltage_alarm.info.exceed_range_alarm_trigger.voltage", + "voltage_alarm.info.lower_range_alarm_deactivation.voltage", + "voltage_alarm.info.lower_range_alarm_trigger.voltage", + "voltage_alarm.info.lower_range_error.voltage", + "voltage_alarm.info.over_range_alarm_deactivation.voltage", + "voltage_alarm.info.over_range_alarm_trigger.voltage", + "voltage_alarm.info.over_range_error.voltage", + "voltage_alarm.info.over_range_release.voltage", + "voltage_alarm.info.type", + "voltage_alarm.info.within_range_alarm_deactivation.voltage", + "voltage_alarm.info.within_range_alarm_trigger.voltage" + ] + }, + { + "id": "voltage_alarm.info.exceed_range_alarm_deactivation.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.exceed_range_alarm_trigger.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_alarm_deactivation.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_alarm_trigger.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.lower_range_error.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_alarm_deactivation.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_alarm_trigger.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_error.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.over_range_release.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 1, + "name": "Overrange (Lower Limit)" + }, + { + "value": 2, + "name": "Overrange (Upper Limit)" + }, + { + "value": 3, + "name": "No Data" + }, + { + "value": 4, + "name": "Overrange Release" + }, + { + "value": 16, + "name": "Voltage Below Threshold Alarm Released" + }, + { + "value": 17, + "name": "Voltage Below Threshold Alarm" + }, + { + "value": 18, + "name": "Voltage Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Voltage Exceeds Threshold Alarm" + }, + { + "value": 20, + "name": "Voltage in-Range Thresholds Alarm Released" + }, + { + "value": 21, + "name": "Voltage in-Range Thresholds Alarm" + }, + { + "value": 22, + "name": "Voltage Out-of-Range Thresholds Alarm Released" + }, + { + "value": 23, + "name": "Voltage Out-of-Range Thresholds Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + }, + { + "id": "voltage_alarm.info.within_range_alarm_deactivation.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_alarm.info.within_range_alarm_trigger.voltage", + "name": "Voltage", + "value": "", + "unit": "V", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 5, + "bacnet_unit_type": "UNITS_VOLTS", + "reference": [] + }, + { + "id": "voltage_interface", + "name": "Voltage Channel", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "four_wire" + }, + { + "value": 1, + "name": "three_wire" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS" + }, + { + "id": "voltage_three_phase_imbalcance", + "name": "Voltage Three-phase Unbalance", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT" + }, + { + "id": "voltage_unbalance_alarm_settings.enable", + "name": "Threshold Alarm Enable", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "BOOL", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 1, + "name": "enable" + } + ], + "bacnet_type": "binary_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_min", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_condition", + "name": "Threshold Mode", + "value": "0", + "unit": "", + "access_mode": "RW", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "disable" + }, + { + "value": 2, + "name": "condition: x>B" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_min", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_max", + "name": "Value B", + "value": "3", + "unit": "%", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 1, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_min" + ] + }, + { + "id": "voltage_unbalance_alarm_settings.threshold_min", + "name": "Value A", + "value": "0", + "unit": "%", + "access_mode": "RW", + "data_type": "NUMBER", + "value_type": "UINT8", + "range": [ + 0, + 100 + ], + "bacnet_type": "analog_value_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [ + "voltage_unbalance_alarm_settings.enable", + "voltage_unbalance_alarm_settings.threshold_condition", + "voltage_unbalance_alarm_settings.threshold_max" + ] + }, + { + "id": "voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance", + "name": "Voltage Three-phase Unbalance", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance", + "name": "Voltage Three-phase Unbalance", + "value": "", + "unit": "%", + "access_mode": "R", + "data_type": "NUMBER", + "value_type": "FLOAT", + "bacnet_type": "analog_input_object", + "bacnet_unit_type_id": 98, + "bacnet_unit_type": "UNITS_PERCENT", + "reference": [] + }, + { + "id": "voltage_unbalance_alarm.type", + "name": "Alarm Type", + "value": "", + "unit": "", + "access_mode": "R", + "data_type": "ENUM", + "value_type": "UINT8", + "values": [ + { + "value": 0, + "name": "Collection Error" + }, + { + "value": 18, + "name": "Voltage Three-phase Unbalance Exceeds Threshold Alarm Released" + }, + { + "value": 19, + "name": "Voltage Three-phase Unbalance Exceeds Threshold Alarm" + } + ], + "bacnet_type": "multistate_value_object", + "bacnet_unit_type_id": 95, + "bacnet_unit_type": "UNITS_NO_UNITS", + "reference": [] + } + ] +} \ No newline at end of file diff --git a/vendors/milesight-iot/cth-series/cth01-compress/cth01-decoder.js b/vendors/milesight-iot/cth-series/cth01-compress/cth01-decoder.js new file mode 100644 index 0000000..b2cba7c --- /dev/null +++ b/vendors/milesight-iot/cth-series/cth01-compress/cth01-decoder.js @@ -0,0 +1,69 @@ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(b){var a=0;return function(){return ah;h++)f={},f.value=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.thdi),a.thdi.push(f);break;case 4:a.thdv= +[];for(h=0;3>h;h++)f={},f.value=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.thdv),a.thdv.push(f);break;case 5:a.current=[];for(h=0;12>h;h++)f={},f.value=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current),a.current.push(f);break;case 6:a.voltage=[];for(h=0;3>h;h++)f={},f.value=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage),a.voltage.push(f);break;case 7:a.power_factor=parseMaskBasedData(b,c,4,readUInt8,1,100,"power_factor",e);break;case 8:a.active_power1=parseMaskBasedData(b,c,2,readInt32LE, +4,1E3,"active_power",e);break;case 9:a.active_power2=parseMaskBasedData(b,c,2,readInt32LE,4,1E3,"active_power",e);break;case 10:a.reactive_power1=parseMaskBasedData(b,c,2,readInt32LE,4,1E3,"reactive_power",e);break;case 11:a.reactive_power2=parseMaskBasedData(b,c,2,readInt32LE,4,1E3,"reactive_power",e);break;case 12:a.apparent_power1=parseMaskBasedData(b,c,2,readInt32LE,4,1E3,"apparent_power",e);break;case 13:a.apparent_power2=parseMaskBasedData(b,c,2,readInt32LE,4,1E3,"apparent_power",e);break;case 14:a.forward_active_energy1= +parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"forward_active_energy",e);break;case 15:a.forward_active_energy2=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"forward_active_energy",e);break;case 16:a.reverse_active_energy1=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"reverse_active_energy",e);break;case 17:a.reverse_active_energy2=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"reverse_active_energy",e);break;case 18:a.forward_reactive_energy1=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"forward_reactive_energy", +e);break;case 19:a.forward_reactive_energy2=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"forward_reactive_energy",e);break;case 20:a.reverse_reactive_energy1=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"reverse_reactive_energy",e);break;case 21:a.reverse_reactive_energy2=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"reverse_reactive_energy",e);break;case 22:a.apparent_energy1=parseMaskBasedData(b,c,2,readUInt32LE,4,1E3,"apparent_energy",e);break;case 23:a.apparent_energy2=parseMaskBasedData(b,c,2, +readUInt32LE,4,1E3,"apparent_energy",e);break;case 64:a.history_type=a.history_type||{};a.history_type.type=readUInt8(b,c,1);break;case 48:a.event=a.event||[];a.temperature_alarm={};a.temperature_alarm.type=readUInt8(b,c,1);0==a.temperature_alarm.type&&(a.temperature_alarm.collection_error=a.temperature_alarm.collection_error||{});1==a.temperature_alarm.type&&(a.temperature_alarm.lower_range_error=a.temperature_alarm.lower_range_error||{});2==a.temperature_alarm.type&&(a.temperature_alarm.over_range_error= +a.temperature_alarm.over_range_error||{});3==a.temperature_alarm.type&&(a.temperature_alarm.no_data=a.temperature_alarm.no_data||{});16==a.temperature_alarm.type&&(a.temperature_alarm.lower_range_alarm_deactivation=a.temperature_alarm.lower_range_alarm_deactivation||{},a.temperature_alarm.lower_range_alarm_deactivation.temperature=readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));17==a.temperature_alarm.type&&(a.temperature_alarm.lower_range_alarm_trigger=a.temperature_alarm.lower_range_alarm_trigger|| +{},a.temperature_alarm.lower_range_alarm_trigger.temperature=readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));18==a.temperature_alarm.type&&(a.temperature_alarm.over_range_alarm_deactivation=a.temperature_alarm.over_range_alarm_deactivation||{},a.temperature_alarm.over_range_alarm_deactivation.temperature=readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));19==a.temperature_alarm.type&&(a.temperature_alarm.over_range_alarm_trigger=a.temperature_alarm.over_range_alarm_trigger||{},a.temperature_alarm.over_range_alarm_trigger.temperature= +readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));20==a.temperature_alarm.type&&(a.temperature_alarm.within_range_alarm_deactivation=a.temperature_alarm.within_range_alarm_deactivation||{},a.temperature_alarm.within_range_alarm_deactivation.temperature=readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));21==a.temperature_alarm.type&&(a.temperature_alarm.within_range_alarm_trigger=a.temperature_alarm.within_range_alarm_trigger||{},a.temperature_alarm.within_range_alarm_trigger.temperature= +readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));22==a.temperature_alarm.type&&(a.temperature_alarm.exceed_range_alarm_deactivation=a.temperature_alarm.exceed_range_alarm_deactivation||{},a.temperature_alarm.exceed_range_alarm_deactivation.temperature=readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));23==a.temperature_alarm.type&&(a.temperature_alarm.exceed_range_alarm_trigger=a.temperature_alarm.exceed_range_alarm_trigger||{},a.temperature_alarm.exceed_range_alarm_trigger.temperature= +readWithErrorCheck(readInt16LE(b,c,2)/100,e.temperature));a.event.push(a.temperature_alarm);break;case 49:a.event=a.event||[];a.current_alarm={};a.current_alarm.channel=readUInt8(b,c,1);a.current_alarm.info=a.current_alarm.info||{};a.current_alarm.info.type=readUInt8(b,c,1);0==a.current_alarm.info.type&&(a.current_alarm.info.collection_error=a.current_alarm.info.collection_error||{});1==a.current_alarm.info.type&&(a.current_alarm.info.lower_range_error=a.current_alarm.info.lower_range_error||{},a.current_alarm.info.lower_range_error.current= +readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));2==a.current_alarm.info.type&&(a.current_alarm.info.over_range_error=a.current_alarm.info.over_range_error||{},a.current_alarm.info.over_range_error.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));3==a.current_alarm.info.type&&(a.current_alarm.info.no_data=a.current_alarm.info.no_data||{});4==a.current_alarm.info.type&&(a.current_alarm.info.over_range_release=a.current_alarm.info.over_range_release||{},a.current_alarm.info.over_range_release.current= +readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));16==a.current_alarm.info.type&&(a.current_alarm.info.lower_range_alarm_deactivation=a.current_alarm.info.lower_range_alarm_deactivation||{},a.current_alarm.info.lower_range_alarm_deactivation.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));17==a.current_alarm.info.type&&(a.current_alarm.info.lower_range_alarm_trigger=a.current_alarm.info.lower_range_alarm_trigger||{},a.current_alarm.info.lower_range_alarm_trigger.current=readWithErrorCheck(readUInt24LE(b, +c,3)/100,e.current));18==a.current_alarm.info.type&&(a.current_alarm.info.over_range_alarm_deactivation=a.current_alarm.info.over_range_alarm_deactivation||{},a.current_alarm.info.over_range_alarm_deactivation.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));19==a.current_alarm.info.type&&(a.current_alarm.info.over_range_alarm_trigger=a.current_alarm.info.over_range_alarm_trigger||{},a.current_alarm.info.over_range_alarm_trigger.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current)); +20==a.current_alarm.info.type&&(a.current_alarm.info.within_range_alarm_deactivation=a.current_alarm.info.within_range_alarm_deactivation||{},a.current_alarm.info.within_range_alarm_deactivation.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));21==a.current_alarm.info.type&&(a.current_alarm.info.within_range_alarm_trigger=a.current_alarm.info.within_range_alarm_trigger||{},a.current_alarm.info.within_range_alarm_trigger.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current)); +22==a.current_alarm.info.type&&(a.current_alarm.info.exceed_range_alarm_deactivation=a.current_alarm.info.exceed_range_alarm_deactivation||{},a.current_alarm.info.exceed_range_alarm_deactivation.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current));23==a.current_alarm.info.type&&(a.current_alarm.info.exceed_range_alarm_trigger=a.current_alarm.info.exceed_range_alarm_trigger||{},a.current_alarm.info.exceed_range_alarm_trigger.current=readWithErrorCheck(readUInt24LE(b,c,3)/100,e.current)); +a.event.push(a.current_alarm);break;case 50:a.event=a.event||[];a.voltage_alarm={};a.voltage_alarm.channel=readUInt8(b,c,1);a.voltage_alarm.info=a.voltage_alarm.info||{};a.voltage_alarm.info.type=readUInt8(b,c,1);0==a.voltage_alarm.info.type&&(a.voltage_alarm.info.collection_error=a.voltage_alarm.info.collection_error||{});1==a.voltage_alarm.info.type&&(a.voltage_alarm.info.lower_range_error=a.voltage_alarm.info.lower_range_error||{},a.voltage_alarm.info.lower_range_error.voltage=readWithErrorCheck(readUInt16LE(b, +c,2)/100,e.voltage));2==a.voltage_alarm.info.type&&(a.voltage_alarm.info.over_range_error=a.voltage_alarm.info.over_range_error||{},a.voltage_alarm.info.over_range_error.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage));3==a.voltage_alarm.info.type&&(a.voltage_alarm.info.no_data=a.voltage_alarm.info.no_data||{});4==a.voltage_alarm.info.type&&(a.voltage_alarm.info.over_range_release=a.voltage_alarm.info.over_range_release||{},a.voltage_alarm.info.over_range_release.voltage=readWithErrorCheck(readUInt16LE(b, +c,2)/100,e.voltage));16==a.voltage_alarm.info.type&&(a.voltage_alarm.info.lower_range_alarm_deactivation=a.voltage_alarm.info.lower_range_alarm_deactivation||{},a.voltage_alarm.info.lower_range_alarm_deactivation.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage));17==a.voltage_alarm.info.type&&(a.voltage_alarm.info.lower_range_alarm_trigger=a.voltage_alarm.info.lower_range_alarm_trigger||{},a.voltage_alarm.info.lower_range_alarm_trigger.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100, +e.voltage));18==a.voltage_alarm.info.type&&(a.voltage_alarm.info.over_range_alarm_deactivation=a.voltage_alarm.info.over_range_alarm_deactivation||{},a.voltage_alarm.info.over_range_alarm_deactivation.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage));19==a.voltage_alarm.info.type&&(a.voltage_alarm.info.over_range_alarm_trigger=a.voltage_alarm.info.over_range_alarm_trigger||{},a.voltage_alarm.info.over_range_alarm_trigger.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage)); +20==a.voltage_alarm.info.type&&(a.voltage_alarm.info.within_range_alarm_deactivation=a.voltage_alarm.info.within_range_alarm_deactivation||{},a.voltage_alarm.info.within_range_alarm_deactivation.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage));21==a.voltage_alarm.info.type&&(a.voltage_alarm.info.within_range_alarm_trigger=a.voltage_alarm.info.within_range_alarm_trigger||{},a.voltage_alarm.info.within_range_alarm_trigger.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage)); +22==a.voltage_alarm.info.type&&(a.voltage_alarm.info.exceed_range_alarm_deactivation=a.voltage_alarm.info.exceed_range_alarm_deactivation||{},a.voltage_alarm.info.exceed_range_alarm_deactivation.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage));23==a.voltage_alarm.info.type&&(a.voltage_alarm.info.exceed_range_alarm_trigger=a.voltage_alarm.info.exceed_range_alarm_trigger||{},a.voltage_alarm.info.exceed_range_alarm_trigger.voltage=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage)); +a.event.push(a.voltage_alarm);break;case 51:a.event=a.event||[];a.thdi_alarm={};a.thdi_alarm.channel=readUInt8(b,c,1);a.thdi_alarm.info=a.thdi_alarm.info||{};a.thdi_alarm.info.type=readUInt8(b,c,1);0==a.thdi_alarm.info.type&&(a.thdi_alarm.info.collection_error=a.thdi_alarm.info.collection_error||{});18==a.thdi_alarm.info.type&&(a.thdi_alarm.info.over_range_alarm_deactivation=a.thdi_alarm.info.over_range_alarm_deactivation||{},a.thdi_alarm.info.over_range_alarm_deactivation.thdi=readWithErrorCheck(readUInt16LE(b, +c,2)/100,e.thdi));19==a.thdi_alarm.info.type&&(a.thdi_alarm.info.over_range_alarm_trigger=a.thdi_alarm.info.over_range_alarm_trigger||{},a.thdi_alarm.info.over_range_alarm_trigger.thdi=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.thdi));a.event.push(a.thdi_alarm);break;case 52:a.event=a.event||[];a.thdv_alarm={};a.thdv_alarm.channel=readUInt8(b,c,1);a.thdv_alarm.info=a.thdv_alarm.info||{};a.thdv_alarm.info.type=readUInt8(b,c,1);0==a.thdv_alarm.info.type&&(a.thdv_alarm.info.collection_error=a.thdv_alarm.info.collection_error|| +{});18==a.thdv_alarm.info.type&&(a.thdv_alarm.info.over_range_alarm_deactivation=a.thdv_alarm.info.over_range_alarm_deactivation||{},a.thdv_alarm.info.over_range_alarm_deactivation.thdv=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.thdv));19==a.thdv_alarm.info.type&&(a.thdv_alarm.info.over_range_alarm_trigger=a.thdv_alarm.info.over_range_alarm_trigger||{},a.thdv_alarm.info.over_range_alarm_trigger.thdv=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.thdv));a.event.push(a.thdv_alarm);break;case 53:a.event= +a.event||[];a.voltage_unbalance_alarm={};a.voltage_unbalance_alarm.type=readUInt8(b,c,1);0==a.voltage_unbalance_alarm.type&&(a.voltage_unbalance_alarm.collection_error=a.voltage_unbalance_alarm.collection_error||{});18==a.voltage_unbalance_alarm.type&&(a.voltage_unbalance_alarm.over_range_alarm_deactivation=a.voltage_unbalance_alarm.over_range_alarm_deactivation||{},a.voltage_unbalance_alarm.over_range_alarm_deactivation.voltage_unbalance=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage_unbalance)); +19==a.voltage_unbalance_alarm.type&&(a.voltage_unbalance_alarm.over_range_alarm_trigger=a.voltage_unbalance_alarm.over_range_alarm_trigger||{},a.voltage_unbalance_alarm.over_range_alarm_trigger.voltage_unbalance=readWithErrorCheck(readUInt16LE(b,c,2)/100,e.voltage_unbalance));a.event.push(a.voltage_unbalance_alarm);break;case 54:a.power_loss_alarm=readOnlyCommand(b,c,0);break;case 96:a.collection_interval=a.collection_interval||{};a.collection_interval.unit=readUInt8(b,c,1);0==a.collection_interval.unit&& +(a.collection_interval.seconds_of_time=readUInt16LE(b,c,2));1==a.collection_interval.unit&&(a.collection_interval.minutes_of_time=readUInt16LE(b,c,2));break;case 97:a.reporting_interval=a.reporting_interval||{};a.reporting_interval.unit=readUInt8(b,c,1);0==a.reporting_interval.unit&&(a.reporting_interval.seconds_of_time=readUInt16LE(b,c,2));1==a.reporting_interval.unit&&(a.reporting_interval.minutes_of_time=readUInt16LE(b,c,2));break;case 200:a.device_status=readUInt8(b,c,1);break;case 99:a.temperature_unit= +readUInt8(b,c,1);break;case 100:a.bluetooth_name=a.bluetooth_name||{};a.bluetooth_name.length=readUInt8(b,c,1);a.bluetooth_name.content=readString(b,c,a.bluetooth_name.length);break;case 197:a.data_storage_settings=a.data_storage_settings||{};h=readUInt8(b,c,1);0==h&&(a.data_storage_settings.enable=readUInt8(b,c,1));1==h&&(a.data_storage_settings.retransmission_enable=readUInt8(b,c,1));2==h&&(a.data_storage_settings.retransmission_interval=readUInt16LE(b,c,2));3==h&&(a.data_storage_settings.retrieval_interval= +readUInt16LE(b,c,2));break;case 102:a.voltage_interface=readUInt8(b,c,1);break;case 103:a.current_interface1=a.current_interface1||{};a.current_interface1.type=readUInt8(b,c,1);a.current_interface1.config=[];for(h=0;3>h;h++)f={},f.direction=readUInt8(b,c,1),f.range=readUInt16LE(b,c,2),a.current_interface1.config.push(f);break;case 104:a.current_interface2=a.current_interface2||{};a.current_interface2.type=readUInt8(b,c,1);a.current_interface2.config=[];for(h=0;3>h;h++)f={},f.direction=readUInt8(b, +c,1),f.range=readUInt16LE(b,c,2),a.current_interface2.config.push(f);break;case 105:a.current_interface3=a.current_interface3||{};a.current_interface3.type=readUInt8(b,c,1);a.current_interface3.config=[];for(h=0;3>h;h++)f={},f.direction=readUInt8(b,c,1),f.range=readUInt16LE(b,c,2),a.current_interface3.config.push(f);break;case 106:a.current_interface4=a.current_interface4||{};a.current_interface4.type=readUInt8(b,c,1);a.current_interface4.config=[];for(h=0;3>h;h++)f={},f.direction=readUInt8(b,c,1), +f.range=readUInt16LE(b,c,2),a.current_interface4.config.push(f);break;case 107:a.temperature_calibration_settings=a.temperature_calibration_settings||{};a.temperature_calibration_settings.enable=readUInt8(b,c,1);a.temperature_calibration_settings.calibration_value=readInt16LE(b,c,2)/100;break;case 199:a.time_zone=readInt16LE(b,c,2);break;case 198:a.daylight_saving_time=a.daylight_saving_time||{};a.daylight_saving_time.enable=readUInt8(b,c,1);a.daylight_saving_time.daylight_saving_time_offset=readUInt8(b, +c,1);a.daylight_saving_time.start_month=readUInt8(b,c,1);f=readUInt8(b,c,1);a.daylight_saving_time.start_week_num=extractBits(f,4,8);a.daylight_saving_time.start_week_day=extractBits(f,0,4);a.daylight_saving_time.start_hour_min=readUInt16LE(b,c,2);a.daylight_saving_time.end_month=readUInt8(b,c,1);f=readUInt8(b,c,1);a.daylight_saving_time.end_week_num=extractBits(f,4,8);a.daylight_saving_time.end_week_day=extractBits(f,0,4);a.daylight_saving_time.end_hour_min=readUInt16LE(b,c,2);break;case 118:a.temperature_alarm_settings= +a.temperature_alarm_settings||{};a.temperature_alarm_settings.enable=readUInt8(b,c,1);a.temperature_alarm_settings.threshold_condition=readUInt8(b,c,1);a.temperature_alarm_settings.threshold_min=readInt16LE(b,c,2)/100;a.temperature_alarm_settings.threshold_max=readInt16LE(b,c,2)/100;break;case 119:a.current_alarm_settings=a.current_alarm_settings||[];h=readUInt8(b,c,1);f=pickArrayItem(a.current_alarm_settings,h,"channel");f.channel=h;insertArrayItem(a.current_alarm_settings,f,"channel");f.enable= +readUInt8(b,c,1);f.threshold_condition=readUInt8(b,c,1);f.threshold_min=readInt16LE(b,c,2);f.threshold_max=readInt16LE(b,c,2);break;case 120:a.voltage_alarm_settings=a.voltage_alarm_settings||[];h=readUInt8(b,c,1);f=pickArrayItem(a.voltage_alarm_settings,h,"channel");f.channel=h;insertArrayItem(a.voltage_alarm_settings,f,"channel");f.enable=readUInt8(b,c,1);f.threshold_condition=readUInt8(b,c,1);f.threshold_min=readInt16LE(b,c,2);f.threshold_max=readInt16LE(b,c,2);break;case 121:a.thdi_alarm_settings= +a.thdi_alarm_settings||[];h=readUInt8(b,c,1);f=pickArrayItem(a.thdi_alarm_settings,h,"channel");f.channel=h;insertArrayItem(a.thdi_alarm_settings,f,"channel");f.enable=readUInt8(b,c,1);f.threshold_condition=readUInt8(b,c,1);f.threshold_min=readInt16LE(b,c,2);f.threshold_max=readInt16LE(b,c,2);break;case 122:a.thdv_alarm_settings=a.thdv_alarm_settings||[];h=readUInt8(b,c,1);f=pickArrayItem(a.thdv_alarm_settings,h,"channel");f.channel=h;insertArrayItem(a.thdv_alarm_settings,f,"channel");f.enable=readUInt8(b, +c,1);f.threshold_condition=readUInt8(b,c,1);f.threshold_min=readInt16LE(b,c,2);f.threshold_max=readInt16LE(b,c,2);break;case 123:a.voltage_unbalance_alarm_settings=a.voltage_unbalance_alarm_settings||{};a.voltage_unbalance_alarm_settings.enable=readUInt8(b,c,1);a.voltage_unbalance_alarm_settings.threshold_condition=readUInt8(b,c,1);a.voltage_unbalance_alarm_settings.threshold_min=readInt16LE(b,c,2);a.voltage_unbalance_alarm_settings.threshold_max=readInt16LE(b,c,2);break;case 124:a.alarm_global_settings= +a.alarm_global_settings||{};a.alarm_global_settings.interval=readUInt16LE(b,c,2);a.alarm_global_settings.times=readUInt16LE(b,c,2);a.alarm_global_settings.release_enable=readUInt8(b,c,1);break;case 109:a.month_statistics_settings=a.month_statistics_settings||{};a.month_statistics_settings.day=readUInt8(b,c,1);a.month_statistics_settings.hour=readUInt8(b,c,1);a.month_statistics_settings.minute=readUInt8(b,c,1);break;case 108:a.report_enable=a.report_enable||{};f=readUInt16LE(b,c,2);a.report_enable.temperature= +extractBits(f,0,1);a.report_enable.current=extractBits(f,1,2);a.report_enable.voltage=extractBits(f,2,3);a.report_enable.power_factor=extractBits(f,3,4);a.report_enable.active_power=extractBits(f,4,5);a.report_enable.reactive_power=extractBits(f,5,6);a.report_enable.apparent_power=extractBits(f,6,7);a.report_enable.forward_active_energy=extractBits(f,7,8);a.report_enable.reverse_active_energy=extractBits(f,8,9);a.report_enable.forward_reactive_energy=extractBits(f,9,10);a.report_enable.reverse_reactive_energy= +extractBits(f,10,11);a.report_enable.apparent_energy=extractBits(f,11,12);a.report_enable.thdi=extractBits(f,12,13);a.report_enable.thdv=extractBits(f,13,14);a.report_enable.voltage_unbalance=extractBits(f,14,15);break;case 191:a.reset=readOnlyCommand(b,c,0);break;case 190:a.reboot=readOnlyCommand(b,c,0);break;case 93:a.stop_historical_data_retrieval=a.stop_historical_data_retrieval||{};a.stop_historical_data_retrieval.type=readUInt8(b,c,1);break;case 91:a.retrieve_historical_data_by_time=a.retrieve_historical_data_by_time|| +{};a.retrieve_historical_data_by_time.type=readUInt8(b,c,1);a.retrieve_historical_data_by_time.time=readUInt32LE(b,c,4);break;case 92:a.retrieve_historical_data_by_time_range=a.retrieve_historical_data_by_time_range||{};a.retrieve_historical_data_by_time_range.type=readUInt8(b,c,1);a.retrieve_historical_data_by_time_range.start_time=readUInt32LE(b,c,4);a.retrieve_historical_data_by_time_range.end_time=readUInt32LE(b,c,4);break;case 185:a.query_device_status=readOnlyCommand(b,c,0);break;case 184:a.synchronize_time= +readOnlyCommand(b,c,0);break;case 183:a.set_time=a.set_time||{};a.set_time.timestamp=readUInt32LE(b,c,4);break;case 182:a.reconnect=readOnlyCommand(b,c,0);break;case 95:a.reset_energy=a.reset_energy||{};a.reset_energy.channel=readUInt8(b,c,1);break;case 94:a.clear_data=a.clear_data||{};a.clear_data.type=readUInt8(b,c,1);break;case 87:a.query_history_set=readOnlyCommand(b,c,0)}if(0=m;m++)k["group"+l]["chan"+m]=readWithErrorCheck(g(b,a,e)/c,f[h])}return k}function readUInt24LE(b,a,d){b=readBytes(b,a,d);return(b[2]<<16)+(b[1]<<8)+b[0]&16777215} +function readInt24LE(b,a,d){b=readUInt24LE(b,a,d);return 8388607>>0}function readInt32LE(b,a,d){b=readUInt32LE(b,a,d);return 2147483647>>10&31;return Number(((0===b>>>15?1:-1)*(0===a?(b&1023)<<1:b&1023|1024)*Math.pow(2,a-25)).toFixed(2))} +function readFloatLE(b,a,d){b=readBytes(b,a,d);b=b[3]<<24|b[2]<<16|b[1]<<8|b[0];a=b>>>23&255;return(0===b>>>31?1:-1)*(0===a?(b&8388607)<<1:b&8388607|8388608)*Math.pow(2,a-150)} +function readString(b,a,d){var g="";b=readBytes(b,a,d);a=0;for(var e,c,h;a=d?g+=String.fromCharCode(d):223>=d?(e=b[a++],g+=String.fromCharCode((d&31)<<6|e&63)):239>=d?(e=b[a++],c=b[a++],g+=String.fromCharCode((d&15)<<12|(e&63)<<6|c&63)):247>=d&&(e=b[a++],c=b[a++],h=b[a++],d=(d&7)<<18|(e&63)<<12|(c&63)<<6|h&63,d-=65536,g+=String.fromCharCode((d>>10)+55296),g+=String.fromCharCode((d&1023)+56320));return g.replace(/\u0000+$/g,"")} +function readHexString(b,a,d){var g=[];b=readBytes(b,a,d);for(a=0;ab||65535=d)throw Error("invalid bit range");return b>>>a&(1<a.request_check_sequence_number.sequence_number||255a.request_check_order.order||255 +p.length;)p="0"+p;z.push(p);console.log(z);A.push("_item")}else A.push(p)});var q=A.join(".");if((q=cmdMap()[q])&&-1!==q.indexOf("xx")){var g=0;q=q.replace(/xx/g,function(){return z[g++]})}if(q){var D=q.length/2;b.writeUInt8(239);b.writeUInt8(D);b.writeHexString(q,D,!0)}}c=c.concat(b.toBytes())}"request_query_all_configurations"in a&&(b=new Buffer,b.writeUInt8(238),c=c.concat(b.toBytes()));if("history"in a)for(g=0;ga.temperature||100a.voltage_three_phase_imbalcance||100h.value||100h.value||100h.value||4E3f.value||500a.temperature_alarm.lower_range_alarm_deactivation.temperature|| +100a.temperature_alarm.lower_range_alarm_trigger.temperature||100a.temperature_alarm.over_range_alarm_deactivation.temperature||100a.temperature_alarm.over_range_alarm_trigger.temperature|| +100a.temperature_alarm.within_range_alarm_deactivation.temperature||100a.temperature_alarm.within_range_alarm_trigger.temperature||100a.temperature_alarm.exceed_range_alarm_deactivation.temperature|| +100a.temperature_alarm.exceed_range_alarm_trigger.temperature||100a.current_alarm.channel||11a.voltage_alarm.channel||11a.thdi_alarm.channel|| +11a.thdv_alarm.channel||11a.collection_interval.seconds_of_time||64800a.collection_interval.minutes_of_time||1440a.reporting_interval.seconds_of_time|| +64800a.reporting_interval.minutes_of_time||1440a.bluetooth_name.length||13a.data_storage_settings.retransmission_interval||1200a.data_storage_settings.retrieval_interval||1200a.temperature_calibration_settings.calibration_value||120a.daylight_saving_time.daylight_saving_time_offset||120a.temperature_alarm_settings.threshold_min||100a.temperature_alarm_settings.threshold_max||100e.threshold_min||4E3e.threshold_max||4E3e.threshold_min||500e.threshold_max||500e.threshold_min||100e.threshold_max||100e.threshold_min||100e.threshold_max||100a.voltage_unbalance_alarm_settings.threshold_min||100a.voltage_unbalance_alarm_settings.threshold_max||100a.alarm_global_settings.interval||1440a.alarm_global_settings.times||1E3a.month_statistics_settings.day||28a.month_statistics_settings.hour||23a.month_statistics_settings.minute||59a.reset_energy.channel|| +12m.max))throw Error(a+".group"+f+"_value must be between "+m.min+" and "+m.max);e.call(n,k*l)}if(1==c["mask"+f])for(var r=1;3>=r;r++)if(k=c["group"+f]["chan"+r],"error"===k)n.writeBytes(v);else{if(m&&(km.max))throw Error(a+".group"+f+".chan"+ +r+" must be between "+m.min+" and "+m.max);e.call(n,k*l)}}return n}function Buffer(){this.buffer=[]}Buffer.prototype._write=function(a,c,f){a=Math.round(a);for(var d,e=0;e>d&255)};Buffer.prototype.writeUInt8=function(a){this._write(a,1,!0)};Buffer.prototype.writeInt8=function(a){this._write(0>a?a+256:a,1,!0)};Buffer.prototype.writeUInt16LE=function(a){this._write(a,2,!0)};Buffer.prototype.writeInt16LE=function(a){this._write(0>a?a+65536:a,2,!0)}; +Buffer.prototype.writeUInt24LE=function(a){this._write(a,3,!0)};Buffer.prototype.writeInt24LE=function(a){this._write(0>a?a+16777216:a,3,!0)};Buffer.prototype.writeUInt32LE=function(a){this._write(a,4,!0)};Buffer.prototype.writeInt32LE=function(a){this._write(0>a?a+4294967296:a,4,!0)}; +Buffer.prototype.writeBytes=function(a,c,f){void 0===f&&(f=!1);if(ca.length)for(f=a.length;fd?c.push(d):2048>d?(c.push(192|d>>6),c.push(128|d&63)):65536>d?(c.push(224|d>>12),c.push(128|d>>6&63),c.push(128|d&63)):2097152>d&&(c.push(240|d>>18),c.push(128|d>>12&63),c.push(128|d>>6&63),c.push(128|d&63))}return c}function isValid(a){return void 0!==a&&null!==a&&""!==a} +function cmdMap(){return{request_check_sequence_number:"ff",request_check_order:"fe",request_command_queries:"ef",request_query_all_configurations:"ee",historical_data_report:"ed",lorawan_configuration_settings:"cf","lorawan_configuration_settings.version":"cfd8",tsl_version:"df",product_name:"de",product_pn:"dd",product_sn:"db",version:"da",oem_id:"d9",product_frequency_band:"d8",device_info:"d7",temperature:"01",voltage_three_phase_imbalcance:"02",thdi:"03","thdi._item":"03xx",thdv:"04","thdv._item":"04xx", +current:"05","current._item":"05xx",voltage:"06","voltage._item":"06xx",power_factor:"07",active_power1:"08",active_power2:"09",reactive_power1:"0a",reactive_power2:"0b",apparent_power1:"0c",apparent_power2:"0d",forward_active_energy1:"0e",forward_active_energy2:"0f",reverse_active_energy1:"10",reverse_active_energy2:"11",forward_reactive_energy1:"12",forward_reactive_energy2:"13",reverse_reactive_energy1:"14",reverse_reactive_energy2:"15",apparent_energy1:"16",apparent_energy2:"17",history_type:"40", +temperature_alarm:"30",current_alarm:"31",voltage_alarm:"32",thdi_alarm:"33",thdv_alarm:"34",voltage_unbalance_alarm:"35",power_loss_alarm:"36",collection_interval:"60",reporting_interval:"61",device_status:"c8",temperature_unit:"63",bluetooth_name:"64",data_storage_settings:"c5","data_storage_settings.enable":"c500","data_storage_settings.retransmission_enable":"c501","data_storage_settings.retransmission_interval":"c502","data_storage_settings.retrieval_interval":"c503",voltage_interface:"66",current_interface1:"67", +"current_interface1.config._item":"undefinedxx",current_interface2:"68","current_interface2.config._item":"undefinedxx",current_interface3:"69","current_interface3.config._item":"undefinedxx",current_interface4:"6a","current_interface4.config._item":"undefinedxx",temperature_calibration_settings:"6b",time_zone:"c7",daylight_saving_time:"c6",temperature_alarm_settings:"76",current_alarm_settings:"77","current_alarm_settings._item":"77xx",voltage_alarm_settings:"78","voltage_alarm_settings._item":"78xx", +thdi_alarm_settings:"79","thdi_alarm_settings._item":"79xx",thdv_alarm_settings:"7a","thdv_alarm_settings._item":"7axx",voltage_unbalance_alarm_settings:"7b",alarm_global_settings:"7c",month_statistics_settings:"6d",report_enable:"6c",reset:"bf",reboot:"be",stop_historical_data_retrieval:"5d",retrieve_historical_data_by_time:"5b",retrieve_historical_data_by_time_range:"5c",query_device_status:"b9",synchronize_time:"b8",set_time:"b7",reconnect:"b6",reset_energy:"5f",clear_data:"5e",query_history_set:"57"}} +; diff --git a/vendors/milesight-iot/cth-series/cth01/CTH01.png b/vendors/milesight-iot/cth-series/cth01/CTH01.png new file mode 100644 index 0000000000000000000000000000000000000000..3f140ed2e47071c0e01f35e10f6a902924baf800 GIT binary patch literal 79173 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 z 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