From 34a94a3615869d04c192d2909a72483c1c174b41 Mon Sep 17 00:00:00 2001 From: Harald Rietman Date: Fri, 30 Jun 2017 21:32:10 +0200 Subject: [PATCH] Added xiaomi plug, changed xiaomi gateway into configurator --- .../xiaomi-configurator.html | 8 +- .../xiaomi-configurator.js | 4 +- node-red-contrib-xiaomi-ht/icons/temp.png | Bin 4804 -> 0 bytes node-red-contrib-xiaomi-ht/xiaomi-ht.html | 2 +- .../icons/outlet-icon.png | Bin 0 -> 16281 bytes .../xiaomi-socket.html | 88 ++++++++++++++ .../xiaomi-socket.js | 107 ++++++++++++++++++ package.json | 1 + 8 files changed, 203 insertions(+), 7 deletions(-) rename node-red-contrib-xiaomi-gateway/xiaomi-gateway.html => node-red-contrib-xiaomi-configurator/xiaomi-configurator.html (94%) rename node-red-contrib-xiaomi-gateway/xiaomi-gateway.js => node-red-contrib-xiaomi-configurator/xiaomi-configurator.js (61%) delete mode 100644 node-red-contrib-xiaomi-ht/icons/temp.png create mode 100644 node-red-contrib-xiaomi-socket/icons/outlet-icon.png create mode 100644 node-red-contrib-xiaomi-socket/xiaomi-socket.html create mode 100644 node-red-contrib-xiaomi-socket/xiaomi-socket.js diff --git a/node-red-contrib-xiaomi-gateway/xiaomi-gateway.html b/node-red-contrib-xiaomi-configurator/xiaomi-configurator.html similarity index 94% rename from node-red-contrib-xiaomi-gateway/xiaomi-gateway.html rename to node-red-contrib-xiaomi-configurator/xiaomi-configurator.html index 0ea9b93..e578dc7 100644 --- a/node-red-contrib-xiaomi-gateway/xiaomi-gateway.html +++ b/node-red-contrib-xiaomi-configurator/xiaomi-configurator.html @@ -1,12 +1,12 @@ - - diff --git a/node-red-contrib-xiaomi-gateway/xiaomi-gateway.js b/node-red-contrib-xiaomi-configurator/xiaomi-configurator.js similarity index 61% rename from node-red-contrib-xiaomi-gateway/xiaomi-gateway.js rename to node-red-contrib-xiaomi-configurator/xiaomi-configurator.js index e6838e7..c13db4f 100644 --- a/node-red-contrib-xiaomi-gateway/xiaomi-gateway.js +++ b/node-red-contrib-xiaomi-configurator/xiaomi-configurator.js @@ -1,6 +1,6 @@ module.exports = function(RED) { - function RemoteServerNode(n) { + function XiaomiConfiguratorNode(n) { RED.nodes.createNode(this, n); this.name = n.name; this.deviceList = n.deviceList || []; @@ -8,6 +8,6 @@ module.exports = function(RED) { var node = this; } - RED.nodes.registerType("xiaomi-gateway", RemoteServerNode); + RED.nodes.registerType("xiaomi-configurator", XiaomiConfiguratorNode); } diff --git a/node-red-contrib-xiaomi-ht/icons/temp.png b/node-red-contrib-xiaomi-ht/icons/temp.png deleted file mode 100644 index 5979561d296863bf943b43a7bc270a34c839f252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4804 zcmZvgcRZWx`^T+DDQfiCL{p-wl1A+jl$NMaTC?`38WDT1(sR(7QL6+sidwaIa2l~k zsnA4AYu4V4{nK;K_xt^==k>au`@XOHbB*`)yq<9x&5u4U>)MFsBsHK;wYmvqks{Z5ZeyiJfg3U+7| z#Ksj3dbxu2`4sFeH_&X*_$ZyO5IExq1CVb1p>o{hW`pxK!aWx2}ToojD3CP^o**fUZ;bbGWbjxSeZgY1sn` zV?%7*5mevKp4KwxXL8rd>=~gBTczx**v&;$V{INi1{OWZwIpR{e*`b)h-LEEA*yjH zUtL9wr;AdeU2b+wCD>L*ieJHIZ3odB_A*Zxdf_16q&VZWu#ix=R5Zz5c7%N!KRx>xrd`+ z*bP*dQ(SraL>B}gyfP_u3JafV-np?AG`e4$`=W(alFzUtHA)fQHXES;H`E;8vVq7gY~*PgXo-(;ms0W)Z4RY^p$tah z{Zm-lXxT-KNsA@nNaf;^fp znaqoR$F!_Wy!RTREbc}D$ciPDk5%Qe=nf-%^Y`HzUdN%k&oQPbgQN`I2Ulkwyb3^4yk@JA z-geoDA1i;xF3^8k3-AaWoH@L52o6Ec`P}(5E^~F|`y^tan(j=P9oCdunMG4|Rr=$# ze#V55`vr3p?UB38bCB=2$$36LT=xNxi~Izh=C;VRlK%-i@>>pr=3}>?o@$cwY2JR#slc3`nU08TcqyrPb0Z3$%_v-ghjzkZ$ z!`AEmNL6;OjDg0LwB5B5AGXy*DZlAigZ+FZz2^aoBR^Y1ITb>+6sy}dW#0I7XVj`V zu%;1B@2b?qPuF{>>)Lbmk|38Nr&%m{5_RlTqky`cA#QR%ie0Qq1kV%g<=xu^7ZMYSkyU3!XlhEv8NnQ2a$|uX?m`4BtOcS!32}1}w(1`{j+_MZMPI7$;&FKChayy8+3* z1%k^#b4I;yu-F&t^DJh&pQZ2uy_fxRIQhBEm5ULD1HHY&R|2>X4LV9M_LiL(U`;va z9T%vY0W4xk>o+asDflPi-*$+OfDHzrF#TSs_{P-)roGX=wqbfKWH6zD;(j7e-TwRU zyOPxTBMT}lPMXAV-9VbtYmtEgVr4H)H3AIoaKa{hj~b;oa1t{O<%xGiy!Aux=}Roh z6$tzYS+6ub>W=WD!R3yFQPQql;t86l3~t{v61UaJ&#)7rF0S zZAW4yQ`jamBXj62-^nU4ZQc5$K@`sDxrPZ})XR9T_f{pQ?6lq!hMX=BmM9A;cC`JH zgwaRUxdx?W*IGf7jk#($eC;g~=F8coP`35ki>=~g>c}}GJf?UMQ#U@DB4U>v6BX!$ zbsXG@Uz?A4uRFKv^u@JEZ^P-?HDZjpP)4bDo$lO?&sH;2D;ki*0mEiqXHZZ;j+v-u zARzEyPVPjKQ`WZa8dvwcwlcGHQmJrxnsKBLs7OU5Fd)oQ)bmiI!f$Rjt6Wp3uj7H= zobTF;ivFi*C<9y?@f>&xBH5yw4k3@SOO?#N0eiOetSZRlp2T;0$bM1dz=i6#J)s-Wa|5IGrw-{J>tLseE&|)`5#{Qe7iZS6H5sKrtieue zgnHDR${;ZPITZ5+D;U9V!Y^aF_Z}!`1dlKWH^ETt%lAR12UXNzy-EF??KXyXr7iY) zr2Pxgy#nJ4ipwjljnrD$GzAzNU)Y=NacbB#alN_gvEu?r&a;Sb52^7U8%e5CiX0D4 zE!``rl9c?0x2oiaPKl)zC{dJub8ytk4!mk-*o<5AOaYJyW3M@b|5=BxZP6Gtkxmoq zttc>LKPWT=MsVk+_i)%QZNEWUoE-UCwLO|hpF}yz!d>_&CGb`}q4jJouhj*AJN;~H zYcChc>I1P`0$ymi#M)EwJhNxkwg{aDTwAN>7z2K!pI<(!D9PctHDt2uAQ^*|7OHT1 zM844dI(n@7tBib#+$m>=9iynv%_oAPi5w9S71Aeg_~8i;_tm6vv_#J9`hJ?j340@z zGPM%Bx;2wETlwU+VAQ?Q$BdWuVkhVa8yIvi>ktbLV`DvviYO|*-jIa=$K2u9s&-G9 z*ZX*l2U^qxlN>DBU484%gix~R;zW~oDP>WGr&uarqIpc}F$AT8+3Zm*!C`lZPRC9& z{D-%bj-N3St4j;myEa6%U*O+WspQ{!*lilBMH)s2Q-n*}5w&)Z=!7U)uOFGt5n$MG-F{(R0y^I{7jQ8z<>ybS?1k9p!I?>xw~!8tX0DZuY;FsIu3?= zDEnEKmX#Uxe$uBa!SN0fWel((eH33jpo#h6$@G=(F3%If@}G!^dA)*xlVpKs0#$3B zVn=w>wO5O5U&XiL?>u$s#+#XpY1^m7C`pR{!5WQ`>iyRFT~zJ2Biq@p zJuKg<8>6LXXssxCS%X87puQ(`T-;oQW^x%z8ho4aciT_tlsP-j?X581VFS zpxbso!YgNhIg}?Xc=@=O>CNm;D#SSx0y?uyGKoIUR3zrum`V*(jI+5t)NlIGB6_sQ zORi|>ER|*>ORI&M&xK?d^ZY#oBt*+IA+uaHm9OYZGL0rD+mNcf_N>O^kJa-QLTfVI zjav9b4A;(@&F-xZb*eMlhCJds2{G|AZ;6AK#nho%Zbrr;I6G~jP71^?qVkF3xLs00 z|GEQpmCJn(w@$8&GV@V#n%*o3oKydB3QFjF?TZA7bk&5a@D-|p0%$Z=p{Bt%yMw@a zs7IL_#n9lh_a24FVfdVEP!7}TfSK;S8SJZ*-#@C#`BE#f z9a;bl4r|!j$ReofG@wYe`aaAR44HOfPzxsO9~?e9?`35mcK8Qe$b%=;y&A6Sd>a{J zJI^{(XgLzU4@6uJ_DJ|3yT_Xbn}YdfKP@k6)PDnO-1MjX*ou$QB<&#*Ho3(Ix zTXh}wS~%e~1X+TQML6xiFtBEhwS|aJqaEeE&;#k!x`|-CTn#V^50}XS6 zSA-7v$00d8`!I9XB_MNbhV*;Rf;Bt)FK;xt`e%`%JZ#=kc-_yhgy@}$|qski6m zH*38PMQqqK|EQQr3%Mit1boNT*nzL_9_`ZGBnnTJw-y{Z+`Q=J`hst?!Ub4F zwkvj-#cpX*dvHg>c&@c%VdLc79+4e1*&{Y_lxNnrM}^~qKDNJwog8mkuF=HF_#i<^TG_v; z((AQqtuYJk;itW?JUeEBJdCH@u6IF~C4#qS7qi9IxpbNIlkb`;HcOamPqVpKmNJwg zyhT0R=W)?9eiF>IDY1*)V4G#_w~936?3t9#Z=GeH_5hs1B$u2XRz0&SH;3=Kv@fc~ zY{Fvu@YYB0hyt(VO2|rD$P2DXlFJNtz?~fA8rq1uk9uV zzLsTQ<)?(&ZH~@hI!qp#-{+#;yBTJwkjRZ8%(EDL;c<4gXzAJaAXQm}Zv7BR<&M5v z0&{-6!UDLVuS7LIY|t&@ZEmacbZsm})fJow8$dE?$05mP2{yTw`vKAc=#I;w$cu`A z(H4vvkW3BNW?%IfY6XY$6{U)og+Y+VN7`Nd5JO)=`=mEDV^i$ zA3p4|#pxT?l3Skc?#`P(a@TWxCEu3Mt~`uGFFaVDA_W#jd8alhUgiJBuxr#=)kzx} zMAvGTs9M;D^W}q{9oy&7g-XvPi)4GVWm|u4@?qMy)DC*n##H^=D@8iYZ@wc*oo%$3 zpr`I8YA^UIueD;bxHh%#j1DpGU*H00r-hLNOV2Km`s(5fOFWi;T`eK*>S|Qnv5xpJ D5#=rbLlZkAQxv9@*Ma~GuiFAlzs_J7E%l)(RDakdhq)R0#KirYDw0=ZZ~ENqlQ$Uq=az|q8v zPgz3pe};eb1Su_?o$dKpS>4>+Sll>S>>SNm*}-5iD;ozZ2M6;92eXrht+Sy!v#k@= ze+&8lKo z*;&|F|5x_MP=WtY`4k-?rXQOBBVUMJ;J-NkAKL%u5n%m~^8d@2|Mv91s2{EhAq%kn z@3aXa%k|M|0sw-`G7_TS-J$lfQGU~?s~%kJc-?bm`|f=y<%cCr#6%P=_$!T22>d%z zNobH_fhon|KNKHs<@|jP=@I!e5l$RZU|@mCPf6xDtr=l9w)_?LfPJ^FM-rcL~OBU9-@MYt9angC%YIWVa z(?YmyR;c}Mu5MUUN(PW9qJLo=z)r267M>PgcK!QPQM@Ln;;M8w+-$w9Y~!V` zo1$I(be-BA)j?LT`wd@;KgC7;gvjHxHe}ZOv7cN|8vG|lwI*`P?Ldh;^KL^B(f^7m zselI!w!A3cP?O#?RuMpwSTc`QBo!mW2^fi|%W*eK?=!JuI2H7|&ob5e+gN4raK7ID zH(rXYw$Q>QwA0ShHWhLjB=XarIqqgQ*l|K-N(UrJT2aIDROQO#j`U@B2^Cuz61BhA z5}<=9jgpTg9iqEks@TFkB$)o_3SA0IeIU3&bq2pHXzqY|_V;k90{**y7K*=$I46L* zmY!?Q)oH!(RVNiBK515O+%NMzh&l^s!&e+)&?@w|vGZk&v4*644sovaAZK+HlvJ34 zk(UmpMSH@tS#7GiX($zBKK_}^N#)+|cA?kcdbU!olPXXP*GXr&aeI3UUellYHeZYv z)2vlhYvz>VibiTVIYE+b(`>W(=Gxx*T3J7}g5a}X#Wdd0?s{fft=IXF{$OmFd%3A_ zX4?LYpxE22H7CrB5k$OSv|MXETtFoiGhw|nBjpraXI>>sv?4Tl2kWBtghVvo2PA z(I{f)?fDsPoaC$~r>3SRDE}NyO+-P1Mfx_f`P~AStIx9RXwQ1{^Yd%6eD0TH6YOGL zTE8`sLZY1EcoInpYpb-Ir_cd;@b^aupWaS2m=SChaW+t+%(m|#yKOEfl4r%~W)wur zqE^HQQyA1Psh!$+3pM)i!sg^f)tcvDSS8Y?MOLe~uAfe)4gL5Y)MH{}c>sC6tFKkyBM$&Jr9-&|qN@|K2n5KS15?a2@P5GH*p)T&m*He~GDpx%^^(*+N* zoX|bw1)VI;5}}LCG$PrV(+m?0xlyVyMiM!zg18bq|%uGJHceIRAE%hvfv zv+M$n>%5+~Wp}5$FJv4(ChqQ!D&wiFerYFh$zPPiuIK7Vxds2otN?*_QiOU~wEw=R zsU2H>n{p@eq~#KK8M2mko)tAVF%pVp=iVnUHX$8pCupwDQ9vVGZL%qG>V=C2uw1eC zcCr(!joe{Se{ zRlTDCA8{yEwSRbcNF?$CHRlJgC--`}8Wu+KBiE=mo6P=QN|X8cav;3fwG+di6!HX{ zimpli-X`+Zsm{3QOkRX9CiD-z_OyJu24Wlyn#VrCF;4tD076<`y`by1&J{l-CcoIq zcGsC!V+HQQ9HySw7?6m1;Doc2hHx_>QPZ5HNT(~qzUSu=jJ5o*lPN5QJav)+^}ktAAMH3rHKMq> zmX#u#xP~J~5a{-F^onmMlZsO*Vvdkucwp^p&Wt59KCBv$#L@hI{!D$fLseKfO-f9x z^4ya3C8#|E0TLhvEjk5`j(!=8=sxNyEkYQB3x!g^q>SQKyNNeTSsJ^os~%w#Jq3Up zoR8*0Nzu@rnT{@?cVlOu`XL2OlPu5Ze9tRnVTT|naIg{1{^$>gNLst72+P2-CL&t2 zj+id;Q{J#{JDC?l_NhGJF)%(pe(3ErpvId%%6@K){$V;YD zW1P1~MG^!bAMLC>XQl}b*hSa+tU<*qnW2B<2aq~zP8$-iz$?{E)p3k)bZLr{H@f## z9BZJBv|RqC;B3e!s4Jpe?ZQ+{v0T{|+8}?s;u3~VYAvUrAn&Lc+E=lkbBd!J#i_{% zij%cNhx~w3Y$X%&4(6c6htG#n|K;LSF*I*4Oul5KfK4e4Bx_}KHph>=?@1uze)_|wf1g&af{J{kl>j?>u#aTb zUfd*Aj4k8_996AYP(D8z7>_Uyeh~+^Amdst0>yL5q zZ$`(=?SJzr>cq5HbFwBE@?P?=abM7}l3@~tIWBi`*>d^OdVE=DI<6OT&+KU4ow0!~+bas4TxY?vgQ zF2%+!{Pn4M?pHBLP83nig35XH`(EMB*TVh|4!QC^<8BNn-|)IOX!%vSjU4$izu8DV z31Q8yOkxThi{jaR~ALRqvmT^q9HmUPM=vJUgV^Im&kHyAR|Fa8UyFiQlT za0>=Bl>b>`#~eYH2Y5yS!B2b(UQ;vvw%| z=+G;Z!E|TMuf0+3kQ>oCrq42MwJYU_zMMyPn0ueB`L$eotlhAsX#I;5-+e3oco3es zqa7{IfLHz3M8-=;ib$M<2=ntw)TUkK*aeurtor4~$ouKss9jG}*5e&?-pqa)`BdZ> zRa8c_G}TP?kJE3)et zGhYgI)vR7Ea2-LCMVGl1We6>WS$*E+AwB;)w?gvEw1mbc+`7IYtmMOm@Fn12k#a<; z+z$&V5Mz9M>)L+TTP&L@NK8S#{pMCkn!DW+^|ZMgx>1T}y4qU9;G`3UE{5PqcwlEl z;@9P1C^CsB6-iw~b}H?#YmVGz*l8vA(0&*tJlQF8_}lV9bcLHWj_Zb4&qRDW9Qv&D ziG4EApL$xFj4C_VQSgkn=Sq!sMmV&`IxX-)4|=ZNF|rm8=n~!(cPwz$d5N{PsxkG4 z32qgBMEppLfjxzQo6&t=2jfAMZyE;iY*pG1PsVTbjyp!4gy>0Q_=qoL%vIP0$^B9n z#_{of)lT^OhwX3ps&#b8@ISLdzR8lscK+QObuTIxisk36ncG`|~tLaA9itJ}+`~ zU!=UJD{0gkHWx$2G<(AiH_`I;q0kQkg@>6XRha$FE}v(VGCMkMoVvG3=kp7H+rnF+%ezB(m(4_ra@BVdSC478YJSP~ra0$29+nfh8cS3mz zAme>?Hs>E47QnJ%kNE9Aiepl$3ec#P>Ln-W_$;j@w{KvX7_AH?YS5mv`^_MMFM4l$ znnUA~U{N?M^d+As4;Pbe@o83hzm$#|UcNjYqKv+-8+D={_7oC}ue3nC#9GX>IK(Th z)n#^#64l=wRNg+Uikuv_-L(2|zcTVAT{5>X6s#6{1ec}m^lHUxbU-Z?J1%*R@nhI& zCWAIsdg&OReUyz-4InLY;r&!7ZFgPx$F zcjGGtzx&SU$rNs|7RI0zVa$zK_-}mPKUBQ3*S`>8hcxXEh3?ufI#`$>6}?2Y-|hyY zu>7jLw3azp-tvOYk2OF$#!BCT=TKx$VA9B#6Mzn9Brx0PU3&ZpVm*rwo1mv_f@BpC zlwdCV1(Q!!^PGaXqEX-Tjxi%tlZU){SHD2TNLhy9hCzx|4E;`~soFttgaw?yOVX^( z<6D>#5Ev$4Ks>sYN@U}!;tNH<_j*L8ktGJG1V=Nj%*$fqZC=L|M*OTuE&RptZMVk( z|631}B;pf?nKF(A%gp7~g}p>= zFaN_e(%?$YWTge?D1HGNay0=|u6ml~brOpB$rzhrLZLE}3Yt(^saRaGT|2$b$|AlB zLfb)8|C&Pm{INxM?$Em=F`{MhGn8rFmR83LiX49(=7o-HW_v>_qOH=c8-{xwASdQB zVZy^WU*w2WFg`>qC6*SQD@MEEVOAV96A1Fr5t+;JP)8Ku3?{^2#YOYsqJ1QPliQRKEgBt9B?8)gUD~d2T?%! zo4z}Bw(5stR~dw_*0y&0X-byIJG9n0Mep?0ZPyWw<4-X-qDpx&Yd+S5)@A;nXnUil z9Pa2(8=jnsKBStk>N0EmTV#^_^zXiolGCy;UI=B`!whXPYq zC6jSl05MN3ZI)FGwzvs*4ykzw7(sQvCuHb`*zPp<9nHrHp2Acv4V6mMRaU2hCHt%} zgy|4X0CA1Pnpt6$=kic6FetNEjCr4G*1^TlarZgYoV}IsN&{n#6+{pNLqky*(l8@j z-R<-K0ok%c)=Rxrq3#_LPLihF`I%b=G4prHg##;NQZSMZG6l?Rp@wjA<)f z%((KiF{M_^D!nlC_v-R;8Fix2oe@D(d=>ndL`JnNt~$HTH~t9a&Ljb$!pX5b)Ozev z*Ax|;@sXhB2$%pIzJ`APp4?fOyCZhrHeF^TCN(9Ak?WSxX@$qygB^0g@Qy0tESvt4QUnC?K++gEd z57wZ1hJmIt)`Gj1R72cFjIVP)%nu7iG~^Rr4DQkdGq5^Sn6SumvxN@^dZ%6q(bYdQ0x^k$zCQBh$Eh@Och z47pF9KEb6MRF23Ae33tKfP=*|(L#wnWw|RG(9%8f56{TVf70D`L4hWA%|?M3(!>`- z+qT6)rGM5oCAyKmM%IF8wT2oDKZ;`rvb!7=r%v6%qSe)_cqCu~X8P+w$E3e2z2Pj9 zQVB%CRG+@Jd)MfpA34R?m>WgyrqjGQt7lAOFKe>JsYc`YAJ1c$C|S(T%xwNWIOWRo zmrJB{VXhWQ;K>=GSIoVfff}Ha%8(%9^fe#?!kn%VPmDyTi(W{j7?&7=QCx$%5LByW zqKk?*+`jlr&E-N9l|P;N{G*6V4x27@3UI^)z~QKHHaKnt0ZdbPOj1S3D44<*|D6-X zc{WXtq|_+ca2ye$Ay=Z9Ec544{lwan^6}C7As#}PISd%d{VbAV>_=p!C>)oe7W^HK z1B7JPglwcvQHP(N1iNf1Cx|Zi_#wG<^wMN*B!}S#Biag|$OaS4G9keB_$$9%qGXMn zlL#yQ@k6R}qA|9{+^@HKu!4m#&ITcUnzKOd6v?4dQUl zwwRMafV~!QG$dNSvvyD;;l%h`#kWu{P4WW`_4iOuzjL)QjfBI)Ck+4ls7m*dR^r#I zk_-qfDY2Iwchy4A_^;L5t*BSROqb#{j)p|-K{ay;aqG0{c3uLH%0CjRT8^|GYR9bn z3+2#tLa`*3@t&Ew!1(R(ZN9xkl023KS~YHq!7t0L`|h~yHA44*^u;$3by&1h!xbE^j0WOIx_&WpXP}d+> zSnr2Icx9J=0a1nxF5%en@{y>8rfoLqkrrKftXIqwD_upmW5H?0=7yy_xIW8sx> zP4)D&KDP$nO>y;xW0Lmb7oJO>gvn03zW%#Q+eBN>gOVGho0xFl@Hik`OCB|EZAsPp zTi--T+q$x3APGdUVTwoOY&RN|1KVaJMSIslLyzQfzba9ki0D;9qRR(y)pfAU7ToC} zT2;zXBOL+}vTeobDoIK1AcQs1@OczJ&(1Ak8867;YrBwWWIVVID)I zoO1%CS~J|Z%1RBGF`4|FoL>&YF%qBzn1;_2qhkI^p%ci(B&)osvvU$EZ|oMwQ&WlD zv2sA%idmF-KK!`BPk2UkO^i%as5uWK(bqh4d zvKsg6-bt*FH?wwerZPSKeov%<$fg0^7WYoe;%m6^St*>)y}PN1e+-f`w052X=151(=JeU#2+^%b~t7mP@BiTAx6%KaDe;Moxi?sv}R1jrdXOffe+lz})%c3RVZMg$>3 zec-J8{@1BD^WZXvS=LVP@XUxPsFVi?lomi6+h^vpg;vH8^8e|tODNSpCwJ2WX2Ns) z2*$*uBPT?^IGp~pDFwr&3DjO^EB9I}DWIoHma>?L&uIN+UQXx{_^wT)Th=7jiRvYZYQMi%R7yyFc-#579|t!Y07l4 z*ir6r(5(g(AHEt5Zw+g7X82qaX$r(vT4wIxDvV$TMyaD>$95H9G9GrOga$d@(Ui`~ zY->$(cR%gPN(LfH&Nt0_X{wx!NG>;q#nFega7C*9^v=-4W?BU^x~~U^Ed3@1_3V+3 z=QLrcmn%+n8u<8-*s7NlJ8As0=99SYS8CKaTXrV0Xmfrdcj;?u$zVVFLA z6%spZE)T*|4@_BmVF>y5_B~!q_TQ^1FgQFQuW63r*w_SrM1?E%_RHeuI4!JD$`IdR zK9;|Spl#&J5yzD)SZ}}hmRo%&(2l0HWws6On&XdzY7EEeum#2|Igc;fmrIv3Y`Jnr zkDhtgzrSI%6y!mNkr?o9N}NOe-Ej_A^-i%>!CVRI*mg(@G>#boc0wy!+HlmybPxhY zVWh3!r+l6t7~S!OpOwomvK~9zD>Z#>7|&|68`Bq-V?h z@50lsn|p6HPgyaj*QI~lmHk0Lr8{ZtxWu$?_}Z^b9UFkngAuolxKvqF*Pe&f^r=_A zqpt1!agmscWf=x$@&|I`Zqk3rX$o`~AkLR$J5n+tt;n&T5{5M3&%-aC?^*(@jXD>w z(&OB@4?F4Uf<5%HCjwNQCA->(4*GP7j3YmiP1YCZwpM9^+TURRtr0Ty--*aB^#}a5 zVBV{6(^JVOVHE{lI0#nlsl>Rnq&Tk>E|z$aw`~ULb%i2ydoJptANj~No6&J!k0`oC z7)`gSMI3|Rm5ysBkcymHOoN-<+S+Vcx{hYjFWlmXy~k*p+b`|}R@w(fut1t-ziV&A z$5Op0+)OYl9y=87gqVaP{Km~$^?DK6TChZeKwsD_+DWQF!R9%E>6FbxIEy;AJ0LH! z_#qcx!eOgPS&Jgg<;wBmbUOplB`ZTYLp@ue2oes;;E5qPLvW=b}AvTqnPpUUs zh#sfwWfC=uopz|KQe$Z@ov2 z`e^@MzJOBe<|vqpIvU6u+;)?eN}qR5v&pG91>>u~D2KIYQ_H^_m54}b2;cos{~idx z-$M~`71O(XmjOkKixZmpe6+T>!{i+6!Mn0WlT&gc1e}*p2eOt#y`SbO5<)Yu-G99q zK<^&%m&%)!v-0$V78MXoM)SLB=rk7)@-Q!bkKP-|6d$HIDMjg?HALv*vVq&oGU)=t zZ#G4uwNAW&oF4A3WNmuYc%rQ!QSOJ$u|5 zaB(k0Id+fN9zYJ>5LftR2~NC+lB_DzqGRda#P1AyARbY07=e3aDWN-&yV}0Ii%e#{ zDK8oOX6@GG-X|!B)U|^r&$!b~h)g0@C59`dYkgF%FLG?*NPFqRN(X#f-!`BGvLz!k zhIedd0D+oAS!poe!VQ{`Ftik0ID4m^m%_bOw)eqCv5*i6jQr0@=ItdZ^3{KXJM@NA zP~;#R_TPTp>B?x{zsyAyGSj^hL~1vrP(R6nT|unncw&zdED|T?0&=g9!niw z;>;Uy?L)vS2tcQcag?ec<9NEE+<#Q7YVenFlBKB=Ni>#qzckFIV9w8V9Cx}h%n=>7 zI%W=npW?zzlfWS`4mtP}{akzqMPs69ygw%`+OWOtpo!kVh|`nDT*{bblvvFhM!pG$ z)+=T{O#)UmHc@T)GptdBQ23i?h_^}LhR!a1cmmRO?#QG%69Q(cCLkqXjbV#=(d=Nt=jI1GBy$z3EI`M!8QqV!VsI_xRz2vu?T4+dHl zSkB3W;LU4B^w+!KS1=sRHNIB}L(NUfU?|DWL!^7*^WiOL&Nr4WWS~RSHSfxhVV$lm zmI%FqmtQiRSeEHOJPvt}r0xawt{f7bo(VQ5I#GKruKU&LqVLFzWpWXtjJKlWjTp6z zBKL5UKE;y11mURe=ZR1tcn!*)V4G`A-N=DUk(JVjzuh)kul+akB$VBfS?7{j#&j8iHX_dq@*{~A91J{m@O! zUq-I5_7OlUEvMgRQP%|=0>5K-R_qQ23FSkA++roQav)!Hqmi;=7Pdd4FA6LAUUrMs zl7*B>m9N8aCa|zEuir$8n=NkkeG1fpOSYRdo4j1tXAMPLDkVKl2CZAGu2^V67yYZ> zV%md(L*PU;(GLFPk#lK-N>YZI?&k`WEEp<|bbdSyHYVwqKZ&WKcuEE|Y-qCXm6*qF4Zu5Mtb(_T$zF!7nzYFX}|E3*oveX?L zUdP~rQ_AA+){L<3C?+A1l9%MhBR?49FnQ~N!8mmP%)iP`D7H%-2v4#@6#4*l2;~({ zAvRZ^x6^P4t^#nb6E7w?+ID=St>h9|MH@V^ryk@Frcx;Sz&1Q6ANJz-%Q1&D|fGE2-8e>itwjH%_Z(TAY!a13Fn<2T1SWWCuBy zWS0~nth@e;Yaa<4^TZy46XDv3SvcKu&p-00H#qb`*c9tV094xaBq*mntnlkHmmTk38p#@YZ4WkBK_{R5V@h}}($yqbF$ zRfJ5+REt9HTE|{6rtiVYhlYPXcFMLyLtjLRd?yG^d&DZJ@-Ybt+_RhxGr|J6-2S&+ z3?SY-=d265``28g5AQeR_t3YKdi3HKB2hK*}aM$~5qbpz$NV&F#Hj zLV6jH(-7u!y!s7GC~EiZ-bB%?x4$OCCs3h!A}QJtRe1OxPUR{hMeS558gU<9CLtU7 z4OP1}8z#{x1RQOVe_W440{eaJ0VU@6aLKs9K4KYUd`>9s6}aW8GT)Uvzj@QvMYu)F z4DW8?6gFbK+M&nj0S^!RQ;TvEFwZwa9RsruYp}9WVk|t|T>oH`MA+F`9sfo5Do4ik zXGz>5w)0`Kv&CLwE#~FtI32tU8A9l1`u3?}(WE%811u0*VtU0*Q`&{nth!H|Jp4I6 zj5GHpUdHDnD6Y5|qS)G~RrvbBESE6g_kbt|9M5d(9}#q)6h``s?7zcw=*eaA&SrT4 zA>tEQC^^O?$-{?9YxTxIvm;-913=Vw9Z!RTrq-*Cj!*zRc_;o#Nk>$$*g-7{H9n+X z4p(|5OhpS8eZ=^{>KQ&T*<$D#t-+#(NA;QYs)g>iKGFPIUUW7d4pO7OKx<2_>lwXi z2ue;VJ;=<;ROlxgC2ctmzF>3#-qnEUWxrU@A(F-J3situi_g@QNOW-NaR;}BZReeu zM+}`%QX_0d35+9srz(6jIbEga2sB|0uG}YAlu0-_X0=>QhS*)PDMY@hr=vXPf1k!S zVhMTZrDpb|z95FlXA-xz8g3(AREAF%{Cgj`V?i<8ac$O{Zdc!!BCg+48%HMkKzrdP z{V->YyTgU9C83^AtNGmWk%o3C>=HA$Bq+D9s5lg(hXEXJOT7h#dhTj|A?VLiu%Q=l z4S|(^U`&iKBOzK*mGI-XT_aFoA)$pDi9sw~XBH=LL~p$zL*fNaXBQ2oW$8I#ju8Bq zU>4_~NJLfyK%0_K*xcZ`UQ7qJ1;((?3D|CoXX1uUaiDRXZFpTor!nuR)Y@Uj>E19# z$JWxu~f*bp7}NYXFotg-H}!Y19jwRwLA@1p^2_#vI5Fz3U5;&o%|rLIi)_$ zl$~m>UMfanuS^Q^*Oo?M`G8P(L)-Zb>~E<0_$_-T^i6mddJEIWsnvF5T7k2N4BPbyWj1e zTDd)QADClXM3Yopq9REiXOj7#?Hs71xP*c!WimV!tGxOTbr4)Tbw2Vw zB2?fXhBjl8d$ST?wak_FY4z;riAqUYtY=pkcI$=YuVw6d0QD}Lo$yMve0QbJtK}oyb6Xx&i zg`{ z>SueXr>S4ApTj_B1Y@mjbN-j|wS=HDm~zq_d;7^vzd~qGWyNH9-}hkJ)HI!T(i^!? z{E&dOJpl$07ABzm=iw2(`QzI{^C*)+F<&ug0w_Ry6;rOV?NiZ@%CX++Qvsp}bQ_ty zGIv!V8qvU}lxBozkigZy9a8(+^`H6JQhgLPkfv;qY zM6GZt?Rx&k(u_gyAu=7*a+K-gWoYQ~;CHG-!q~>AG+KCf|A|iihBK2=a%hjhnjBWl zqWOyW<(H3TU=swWAgoFpNxp{tb!j5cM%q)~csehQFJumcTNTJ3f;;vQw8WPlp1nKD zv?&ifrsFzerlI5LTQIUr_`^f+jp`s>Yr;y4GY)1y{yLXm-qwE5I!8wYK=G%+HOFI@ zq$Js~j~Wks-HL`P5pNEr*4UtmAMVRM=y$}n5>pwVS- z{OZVI_)26jNfPqZ+-2RS#ZbnWbk*VXBRqs$+nb`n+wbj3KVKl#b9ciBTI61M zs9?eqe5poGH4TVcPj(&qd2WMjvg$CO95>P19dSY&m->w~fC!yNG|mW!$15zft3<`s z>H$7MOi=(_W7A9*N8|+5xZ-(ORv13>vvXQvLP8ye80Sag)b2!@~w4beoSIR#BiLWndMU+WJHlB z61_K06`}6;$_OjFm;P-Shzd0j3$I80^-$F>h=EJ%o3BOg4dtf+se4VEne70pFpI%h zI!SNy!RG$c+TJCx0&W+gVd61FUuAH{m6n7V=44+1cT&|aqnnQI>Z!jtNo6y)60S)q ziW0QR_4JeT;-Mo4baBSM&yzfxVy>E@V}Blbh86e!DYyQ`Hnn%&lj^Mg_#;I}fE|b= z$XiSFAS62`i)qHxnk%wAcjoRm^Erd60ZshVkIx9zhl;Dw*ul&mxZN@G z@>qDYKL3n9D^^NBMddYq6xn!>01Ka?Hg4#4<1=|cmD_9~7N5FMO;C@_s+RGH?bx&6 z@q)%h_{*s$k5BTRS0btS4+^nOEV61dXzIo*y0xIPk!2@58hOL&V%tKF{nZOvkO>58 z0KEwYcs*cwMU9AlUffXqu+pV*(g$+NNsLbXS^tzJ5H83QbTPZop32|W_ z1x=C&?)(`*i5q^En@w8n@lyo)SUT1nY+`2#et#D<^p~`~s`^EsZCb5V6*$YZ#uq1= zMc2XR%HZcy8^T^Uu7TV^=Y-X3G|7(YJHofLnzcG^w8OWEE9PJ=$Ugt?H(Ua@Sr7jF zy)ch^jQ2;%;=N|H(abH-LD|D6y7kpFWWZkaO|kUaxW+BRy)*XqQ-7Pil?Wf0nVX|E z22^9x?fP(jt?xKi<_E1(@|Qg9Q_x-kv)9i(>Y=Z|lbub2=%}IZTwVbycu#c(H%n@a z2fr<;&&KbbG}GN^z^E_76ehUuybYOtq=ENRN!(AVwd7V&S=b}_MYzMT97sCPB&*e= z{6cXJ(;IkxkptgCVdqK1EK)c5FJG9=5=33`CH98yA=D3^Jt-;cdYVvMLSu1BuRM-W@j(qv*gHZn~>DOEtz$%^;|x@=*!Q^pnWFIzhUHu8qwR2C(3 z^KtO8(!S{ChbRKH_1F>s!iHU`8G*-`Qa`G_chPrBv?tuT%aDv`cWSf3s){#uYSN02 z2-;hglp4%mlng1Y81JJob@Gmrv4hr{Y-3+@^PV=cYfS}TYE$rn%Rtz4xlmZL{;=YU zCJcr^VYhzy0RK2kZ`oUrD{X7|de6MR0j!%kFN)gWY%0Pw7dUdYzt=#PZH^ z2KCr`((@!DYK77_Fy#?u(I@oceXy~EC6^Lm9$kD2Nn^2}_vkQ7iKJIWR47T>5T81t z7jZWXOe){pBAWz9O_4JUcbhPP`tWvc<@6B9h*$uQP7u5b1q9^+dilYB#ZU6WgAA#4 zKJ5{NDkVQ+WwDCn5B@@Mt&2)hD!lzRJwr&gvt+dVb!U&&?+H^@ z9^PX23JNmtBdjG*)7QOxtKj)04!V01`Pcnz*RVzqo`oonG?l8L=^WVEV$tI(e*XBm|X~e4HjP=8m;crfY3LuVPiTDA96ZBZVpQRT%^ErGJ|`6A;x!5rpC@DIL=2Yy%BOL&o!^twsodHY#@JOIVZkSC7y7|NdWRf|FC$Fp3p)so zum1)Siyl#o`hF-9liS_wB~iS8au2NaO5j;{?Tg)J$7gzWKBV?vV{h=d3Ahdb>Af{W zO;w@tZyxi?cts_+$TJ!^Rk0Nq7bg2coiPK_Co7=&DS(ryy{N;1LwmK^J#2&TD~eqH+SHtanM5H!^+60Vs{tuji2CAm)xGbTk_AJ zuQ!&|9yZ1j`&ITEd7{WIiFCo*58R}5#$y4YZ_T^uN1bRHb!pX+WaJDSx5H1*H)~(@ zTDV{EnOX7l?-Yq!$Vu6*IDe=y-DEj(Lw|tX@eKXvYG}>ilA| z(iPKZsER|kaztZoh`{#|SL&K|f01c{PeiL4V^pID7z}jBP1sK7dNmd1|9W3r1+<}J zYd+7h&%t1pz!pU~mdCSkTp&Xo%7%p_y9{rRx7-nNC7oD1CMyW=VI=*~;|qaDtLJVG zaJAlkQS&^uxx~I`h+iyA%=jrqgfX#KiieK#eRGvJZ$}*PJfGx{%x*N-M}HQ z;xc{}QBvm56A3+iI;vT9XQ|+G)l_vMQS+)jv1LcG8;dN0c~y8>-EsXjeGxW!gY^!h zF!>EXh3G1K?VXy|8Z}^D(L;Em<@Rt%!+iPiaXGdyn)vdkaCk&_;Bz(PpDkbLehSY( zVXmp0KGgGpD`!;gH~hu#+HwwM2c}t@J6k>or0rCdgRp_KZ}IlpVTM#n^m5f?U)g|s0iMdp1~W` z&j@-FE8P~eV^X^j>Q`ieVb4DDx_ooqvws*8`lD=0!wLMn2`yG=VoF-cd4IiHKYD<( zZ+A4}giHIqOXty_O62w|R=xbG<-<5i$Q#NXZZEf+De;F#RFJ9fKF3m8h{W2h`#h}E z!BK~pPR5w0fr2mQYC6*w-}Sv7FXLZ9dPtOMe_7#W6M+}|~X+Li>n%EM9DIgCBIqaPeq-5&fJNx#yLBE^egDsAb!uj z5U$dy-%oAfIU_(yUzN#RSd$$4Oqwf$N1v!C_bpBD`{v>Va9I}rA3=r3>)qnPw9`f? zyzs!|6Ils$Dqqt8f7S#T(&9>gn#o+~9deNxZeApA;psCSRCACI#RE9bp7BQhC5%C; zrRI#fxwot1?;QjVKB755UaeINsEEM6{JTUWkImK>>_`+_&MQV#b0eI+;}&=DoY$HW z)A-}Yy?=RXADr2d0u2&GG4Ulk0@0=LD-Cb%jCBWxuA^esNb>gkV{3)NhGH5b(R*0i`~Lu%L#e7-MaM)} zQHhWa_{D&~oL|Hjq(CHgW6Z~WA+DW3uMQ&}K#7Xeq>w+N_OVqS_ z-2G&d3)oaB^2VHVqsB3c%4iR#FD5^0qD;+ULPfG#j(#kPd$tR!VHQKRBlf;4{n|%= zx99_(c;VpMq9$qVO(*6@v7*-S8M3?Oeu@M|NR}I2q}(arIT}6!tR&y@#@=8Vr$v8K zOYaQO`*bVq+t;)Y9y=qL!A1xIB?GT=XXqnbx8b zqv};H#=UzWYDd31jyYlVFxSfQ7>}+svox~795Sme8pE?rJ=F%f|3Zz6>D6X%!`|5; z|Eh#EyNsofE=dc#S##US>-|_bkcy^ceNB5LXM27@M~S{8Lv=?KsT+H~KI_>j{$!Yu zK;X>B$-<{DJ*lM8R0;hJEM!Q#0N@{Mb^sffkHk*#P<}-tfoQwxqMBIEGB6?jbpF5B<}uPMvU`jWTw+C@xDVOk#wjXpxpam?v=M3$x`lU90wEbmT%nc3vUcHC7#)hu7 zu-m=AVOJ1MF8h?a?y{&G7JG9PwzUebYeEB6aRG~KnWf;A4YSzdJk6@DvJs?Dwz17J z*~dc4JiJ4#7 z`@1vEYq72yQz;X2njk3pB?rh)oDytJbFzU95ZHGfyR7SoK?(R-gjR&q2Sl-s9DlSy z(W?WxMzt>sk1V|$;On_>lQCQ(q-=$cu0qu?2xs9a;OE)g%>N!5A**WaibG5$0$t9} z3p!2yY!aP^xd#GIKsp$JI&U(<6JZy0mR1wATxi{FxUI0WZu||sQC~D@foYG@S&AU! z`T?~+pU&Y}ngTqn!^C#&y@@?0)BNiZk`%eWi@b}?3A02CH}(e#d_5wknLaD>iFqpb zOJlK6v&QUqq?{31Nrb0%VK_+B*i#H#_A;`rka7i{L(NUh+@>vvf}&zAb~|Eg4-K`U z%zeNPihXxCb|?0hT^N%3U!SH)Et{taWywmn_OqV}b%M(Us4NphChmHe5nHiI0}3xj zA3YY9CbxG4jyIu%bN3!o0gp(Pql=xXJf^*^*H`Ye{uAO8Ca(S@JlhrZ{%*nw3?I1s#u=t zL;|BknlQ@w&beBL)VjV;dyxRO$Zzm~BzkC)gKvu={_cbasSbXm!#Ch+L*Yy(`JC9; ztTIN6M#(c5+w@`E$$xs)ZuYk@p&0dk5f1+-j9T=m^rQCHBGLG|(AvF7d~tNpZx76K z*-b>8zRI5fYFs`J6vc56Zjj4aSpFR+XCunNg4|>*;J`LV36K}pwLzkDvo)GWvAIM_?mjW8m%N2nWO2ow#>m8wNehYU&ELMH*L1n1!(+(%>!a`Y}B2We8*t7;D^ z3q2ek@hm0g=KC35wfO0W^ItS~=`U7?7qUpO|=O|C0)-^ivhm zA_g`BfP3uO7s)E5XZIsN1%9u`Zo^!q$~gMBp5|QIwEFb9FB)#Ou}y(B&hsHaDPZse zp;Tf4Lsu+3?Li(_?m(BAVUaf1%OS1R>mERn0fTBLy(qd zgy8-{VBXO{jLxp<&ccSR+ocW*%x z2KlYFikrP)+?JDQrcz5gEZ{U}uZVK_y?`O + RED.nodes.registerType('xiaomi-plug', { + category: 'function', + color: '#a6bbcf', + defaults: { + gateway: {value:"", type:"xiaomi-configurator"}, + name: {value: ""}, + sid: {value: "", required: true}, + onmsg: {value: ""}, + offmsg: {value: ""}, + output: {value: "0"} + }, + inputs: 1, + outputs: 2, + outputLabels: ["Status","Control"], + icon: "outlet-icon.png", + label: function () { + return this.name || "xiaomi-plug"; + }, + oneditprepare: function() { + var node = this; + + // Get the config node id from the select box: + var configNodeID = $('#node-input-gateway').val(); + // Get the config node using the ID: + var configNode = RED.nodes.node(configNodeID); + + $("#node-input-output").change(function () { + if ($(this).val() == "2") { + $(".node-input-msg").show(); + } else { + $(".node-input-msg").hide(); + } + }); + + $("#node-input-gateway").change(function () { + + }); + + for (key in configNode.deviceList) { + var device = configNode.deviceList[key]; + if (device.model === "plug") { + $('#node-input-sid').append(''); + } + } + $('#node-input-sid').val(node.sid); + }, + oneditsave: function() { + var node = this; + node.sid = $("#node-input-sid").val(); + } + }); + + + + + diff --git a/node-red-contrib-xiaomi-socket/xiaomi-socket.js b/node-red-contrib-xiaomi-socket/xiaomi-socket.js new file mode 100644 index 0000000..d12424e --- /dev/null +++ b/node-red-contrib-xiaomi-socket/xiaomi-socket.js @@ -0,0 +1,107 @@ +module.exports = function(RED) { + "use strict"; + var mustache = require("mustache"); + var crypto = require("crypto"); + + function XiaomiPlugNode(config) { + RED.nodes.createNode(this, config); + this.gateway = RED.nodes.getNode(config.gateway); + this.sid = config.sid; + this.output = config.output; + this.onmsg = config.onmsg; + this.offmsg = config.offmsg; + + var node = this; + var currentToken = ""; + var state = ""; + + node.status({fill:"yellow", shape:"ring", text:"no key"}); + + if (this.gateway) { + node.on('input', function(msg) { + // var payload = JSON.parse(msg); + var payload = msg.payload; + + if (payload.cmd == "heartbeat" && payload.model == "gateway") { + var key = "c7utmdo2acpzai5b"; + var token = payload.token; + + if (token) { + var cipher = crypto.createCipheriv('aes128', key, (new Buffer("17996d093d28ddb3ba695a2e6f58562e", "hex"))); + var encoded_string = cipher.update(token, 'utf8', 'hex'); + + encoded_string += cipher.final('hex'); + currentToken = encoded_string.substring(0,32); + if (state == "") { + node.status({fill:"yellow", shape:"dot", text:"unknown state"}); + } + } + } + if (payload == 'on') { + var cmd = + { "cmd":"write", + "sid": node.sid, + "model": "plug", + "data": JSON.stringify({"status":"on", "key": currentToken }) + } + msg.payload = JSON.stringify(cmd); + node.send([[],[msg]]); + + } else if (payload == "off") { + var cmd = + { "cmd":"write", + "sid": node.sid, + "model": "plug", + "data": JSON.stringify({"status":"off", "key": currentToken }) + } + msg.payload = JSON.stringify(cmd); + node.send([[],[msg]]); + + } else if (payload.sid == node.sid && payload.model == "plug") { + var data = JSON.parse(payload.data) + + if (currentToken == "") { + node.status({fill:"yellow", shape:"dot", text:"no key"}); + } else if (data.status && data.status == "on") { + node.status({fill:"green", shape:"dot", text:"on"}); + state = "on"; + } else if (data.status && data.status == "off") { + node.status({fill:"red", shape:"dot", text:"off"}); + state = "off"; + } + + if (node.output == "0") { + msg.payload = payload; + node.send([msg]); + } else if (node.output == "1") { + var status = null; + + if (data.status) { + status = {"payload": data.status}; + } + node.send([status]); + } else if (node.output == "2") { + var status = null; + + if (data.status === 'on') { + status = {"payload": mustache.render(node.onmsg, data)} + } else { + status = {"payload": mustache.render(node.offmsg, data)} + } + node.send([status]); + } + } + }); + + node.on("close", function() { + }); + + } else { + // no gateway configured + } + + } + + RED.nodes.registerType("xiaomi-plug", XiaomiPlugNode); + +} diff --git a/package.json b/package.json index a406e14..a4ca203 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "homepage": "https://gitlab.com/h-rietman/xiaomi-devices-node-red#README", "dependencies": { + "cryptojs": "^2.5.3", "mustache": "^2.3.0" } }