From 011ab550cf105a6c6721b1f582cd2283935cf058 Mon Sep 17 00:00:00 2001 From: manalejandro Date: Sun, 1 Jul 2018 13:57:22 +0200 Subject: [PATCH] initial commit --- README.md | 21 ++++++++ index.js | 59 +++++++++++++++++++++ package.json | 30 +++++++++++ public/assets/css/.gitignore | 0 public/assets/images/lb130-off.jpg | Bin 0 -> 3858 bytes public/assets/images/lb130.jpg | Bin 0 -> 5359 bytes public/assets/js/main.js | 41 +++++++++++++++ public/index.html | 79 +++++++++++++++++++++++++++++ screen.png | Bin 0 -> 40077 bytes 9 files changed, 230 insertions(+) create mode 100644 README.md create mode 100644 index.js create mode 100644 package.json create mode 100644 public/assets/css/.gitignore create mode 100644 public/assets/images/lb130-off.jpg create mode 100644 public/assets/images/lb130.jpg create mode 100644 public/assets/js/main.js create mode 100644 public/index.html create mode 100644 screen.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..bf92ab8 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# TP-Link Bulb Web + +## Install + + $ npm install + or + $ yarn + +## Start + + You can provide the listening port and bulb ip address, if not are defaults + + $ npm start 3000 10.0.0.130 + or + $ yarn start 3000 10.0.0.130 + +![](screen.png) + +## License + +MIT \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..0117385 --- /dev/null +++ b/index.js @@ -0,0 +1,59 @@ +'use strict' + +const TPLSmartDevice = require('tplink-lightbulb'), + express = require('express'), + app = express(), + morgan = require('morgan'), + rfs = require('rotating-file-stream'), + colorsys = require('colorsys'), + accessLogStream = rfs('access.log', { interval: '1d', path: __dirname + '/logs' }), + router = express.Router(), + ip = process.argv[3] || '10.0.0.130', + bulb = new TPLSmartDevice(ip) + +app.use(morgan('combined', { stream: accessLogStream })) + .use('/api', router) + .use(express.static(__dirname + '/public')) + .listen(process.argv[2] || 3000) + +router.use('/on/:brightness', (req, res, next) => { + bulb.power(true, 0, { brightness: parseInt(req.params.brightness) }) + .then(r => res.json(r)) + .catch(console.error) +}) + .use('/on', (req, res, next) => { + bulb.power(true, 0, { brightness: 100 }) + .then(r => res.json(r)) + .catch(console.error) + }) + .use('/off', (req, res, next) => { + bulb.power(false, 0) + .then(r => res.json(r)) + .catch(console.error) + }) + .use('/color/hex/:color', (req, res, next) => { + let color = colorsys.hexToHsl(req.params.color) + bulb.power(true, 0, { + hue: color.h, + saturation: color.s, + brightness: color.l, + color_temp: 0 + }) + .then(r => res.json(r)) + .catch(console.error) + }) + .use('/color/chsb/:colortemp/:hue/:saturation/:brightness', (req, res, next) => { + bulb.power(true, 0, { + color_temp: parseInt(req.params.colortemp), + hue: parseInt(req.params.hue), + saturation: parseInt(req.params.saturation), + brightness: parseInt(req.params.brightness) + }) + .then(r => res.json(r)) + .catch(console.error) + }) + .use('/info', (req, res, next) => { + bulb.info() + .then(r => res.json(r.light_state)) + .catch(console.error) + }) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5b51521 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "tplink-bulb-web", + "version": "1.0.0", + "private": true, + "readme": "README.md", + "description": "TP-Link Bulb Web", + "main": "index.js", + "scripts": { + "install": "cp node_modules/jquery/dist/jquery.min.js public/assets/js/ && cp node_modules/bootstrap/dist/js/bootstrap.min.js public/assets/js/ && cp node_modules/bootstrap/dist/css/bootstrap.min.css public/assets/css/ && cp node_modules/bootstrap/dist/css/bootstrap.min.css.map public/assets/css/", + "start": "node index.js" + }, + "repository": { + "type": "git", + "url": "git+https://gitlab.com/manalejandro/tplink-bulb-web" + }, + "bugs": { + "url": "https://gitlab.com/manalejandro/tplink-bulb-web/issues" + }, + "author": "manalejandro@gmail.com", + "license": "MIT", + "dependencies": { + "bootstrap": "3.3.7", + "colorsys": "^1.0.21", + "express": "^4.16.3", + "jquery": "^3.3.1", + "morgan": "^1.9.0", + "rotating-file-stream": "^1.3.6", + "tplink-lightbulb": "^1.4.2" + } +} diff --git a/public/assets/css/.gitignore b/public/assets/css/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/public/assets/images/lb130-off.jpg b/public/assets/images/lb130-off.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49efac54e671363c89604ad01be7ed9dfceeb9f3 GIT binary patch literal 3858 zcmYk8cQ_kb_{S4LY>CmTkp_(wd)8>p+9g)S-jph$=0#(K)~*q|T3SM_TD29ean-01 zN>QUa#H>*j z{|AVYiW*EoLkpxkn+4GPSpse?YUR_sGr-3IjH6RA#+EYno!RLoBm;h1vE_9`PlT(1 zjkK!h6v+0t>orD)E$i)WXaHK}4V$rwa>%>S*cd z^)Tr@F8(VmrPX&<wFbe`P;q za_M>!=+dzX0Eo=1Cf$X-1E`)?E&u@ls6dny|F3u;#qZjoUTTHbLgMY+dXHd+etbL^X6ToT%QZB5oRBO*>n5 zn^qEKr?w)5859|qRL6~NQ(Fl}6{;74zuBXB?v;x>&R+LXyVJ|+fgN?dqmm(Z zn10G_Kr+?pEfl_+KOP)#Rqajnju+RaB9k*YZN^6IUYSp4&q0~Fb##tI$$%;G(UxbU z^(pxYse?0CJZ)@??noUgI4qFiT^4%xbVr)g)N1XKEN} z_6?t1?C1wS#*_Fm3TcNO_~3kSC>((<%mXg@Cs*P7gZ_@2shBTPQ0-l^#jytTJ0oz)7y2 zi<_5uGP392X}sD^(u;enRuXJ67ZAMiy??KLYUMKdx|#?UaP!618`b!b#SE_j~CuM;kzza4?Sp!4P(9BJmW&1P|b8fxQ9N@ zJ$}X|J!%>7=FO=K7qy;C9cJ`+k#xidQyqM4d{T^XfxO7xpNU!wxA2b%lcG#o zwyRC4b%bril(;vvW~7Ak+4~Qy1sF;RcxDnHB zErO{9%dXzwy|yFW8LZtiZ}8XnhwAF5mJ={~Pjp81s6}5=Ynl;x#{uK<{lIsc2|4Gv zn2sgXET_g3$oE0}I=%8Ks`3u|Z$u5O?#&Y2%xjJNX>*CfkB;zuA{)BY8^J*)D%17@ zSChP~9W2K(d5LKj3_f{u5x4F4?*}@WuM|o>sg`>vDlxg(D3rT%b`j*69Fesze;f*zRtUN?(@gtCcdd!V;-klY%RGf zEE_}DmSh-);Cx4bxG>ce@#u*6tP!24eb(2_~otdpDx>)LN9L%m{AWuF*X!y?`pDLT0}H{6`Rk z00HOLNGYm!0L{bu&&;!rmneJ&9x04LRViqw=79kgN0tV1oHLEi6M+?o^ z*NmM$9q+v<`5TIDkNescZkrAkw%$U>+fD4n8g`{BG^<7vUYJBaD50T>>Z*RBh@p#e ze@&mW(2phMzdKS@i<&O&RJeTH#JG%IZsPEYkeH*u-EP`e^>aNv_!?uq-Q9eOYjKKK z+%_4)uAytI;5cQF&0nv(e=hlPkuSl8#JQgIY$u`&!Urw_b{I^T?;$nwr>znyHp~{E z^%t~a(|*#6LosnHj$6MhWy z_6+Da@P;$aLmEDxS_rGIO2 zYM(0#CP<&W#mlY)|B%QbES~{T)`nc9=AfPR^umXZ{@RD~Rw%Z3PX;v%ho)KEb_A?z?RcV>@e07Ut?ygnB`2(K$IYH!eDo7G^Dz8_la}WJ_?4-3&7BX}L0+E_gJYyDK^e?L=`3b%#0p*8@UifLzILcT2sTgN|Q} zbdO8wgb*1Qo24`!>e4a)qnSUV`O{MU5zTpr`CBtim?#MR+&Ra(w|AEQ(+uQDoX5o2 z9~D7&B2270X@p&9BJ1u5i0-<0#^6Na$v&Uy+CrKw1&~ukRk!#soE6>`=}OAp zbFsuIN`a$S^Rd*TRVoS@H+LcRz&)eN@W{Y)CoB1^{@dTfu2t-9M%nF*9$-22OV-`2 zWxEmeBM60G{qx+n^E&c}QB7%Gh*OE(xTu>fQJ>VGFh7fK@b-G`8_p?eFZt288tKzN zqPL`oou&-liB@V0l-%G69-)vq*@E2c;nJ}>1Mst`X#K)&G3z`L#?jgv?L2+L4`L)^ z=Y%IPS=`~yE`x!|f3ffP;Xu!w+V`GRis?toPI|?9zQyafgq%$6_Fb?jY%UNA?{&_q z_9t`}b*;^VPHnxRQ!37tM1hc3UO@WGWy(KfuxZS!x`r3S_VyRH3lg$Fsgp8{OvGy(u6+_(VX&cw%=F;5!!Ox8=e`U!ho{7RW%83y)!RQ7oSc6j z-^Cyi>F8SgD9Tgfv8ZQ*F5qBjOxSYGUZ9OAWk`AdC z;Zz{C%hnuPR_kW~diiFtLq)Y9mBQT4btSXNkC!4B+!C(SWLRtbd`NAMU$ug9+Uzoq z@XoFb8&9l{ms{_nu%beF0mnI;ijzHd&G)O5zAW0iUvXuli8O}@biYHo*96nq_p8v= zGv%6ZXK$;zGNi4A*mVEss{eQiR4rk~m>lKEd zwB9ITYcKzLcSz6YZ<2g=9UeC~E#@i6j%HJY=${!ra{3Sx+RwZBlpmkQEY^SUTRXgn z-$^IGY=onX`*hHjKH7avPj=mQYdh_giddfhFPujdhkgWv0Te0&97rcVAADhhw7 zn&=!!*8hvavFPOkj6Zo<|HpGwj}7CZ85>_SW|K`LE|24uoe+r@w20-v%5Z=rP32)?$_z!@Dz#H5MqQ3wV{~M%#LH1w#b-!6n3skLABh{{P8!7l4ioPzW#r63_t%=?H*y1lQew`Wu2Iz?;}Na|ZNb%Tp#p4Ijb>CR7=K!~W1UDG~=>RH#y;V3PA>+3cTbv3JUIp<5p4~cAi(Mfrj0`Qmfkm=$G zQR6D-?0duMmkp`B9>=(t4$*jU$sy|Mq*vha#K}a)&zzT;{dS0#{wmB4gKs}y1Nx0s z!u=mE8GGMtcDb$R1vA*|#viulk55d#isIPeG7S{O*#)Jy6>ws%It3JG4LNod9(Ou4 zcHH_dI4EOUT-lG0E17SIblW-;SA4&#$W*+1T7Fg4NDZx>exY%u)9uw`)k0cw*Ds$5XnSvU}pvr>!kRTOnFc_BI=bL?W4|{uqAAXoC;jwr9*>O`CgLMXwFCaD!>)ny?p%fwwyY^FSUDz6Z`2 zpSUh|Ji|gb*&b*VqnBZ`pj8YDrLo^oeqO2Pz)~LAcd~?}8j79FOEHjsf*0T5>u8)b zP71VeH*QZb2{8=G0!dXD5iL}&Uv%Wd(5Zv2!HEGE1CW!ZYe3tT%}L7}==vOM2WgON zP4#&Res2tqAKSi|!|&gPt2HZ91#cdGJ%M*`{n&sC4EROu0^=*@(Vv=4xQmUkEzrp5 z!v@Egz+ELk)Ww1D|IdTc?%oc%4Vj+e7{74LClq*Atn}+ zkl~mHDIj-&H_zO=7ZLUmTWxscM=h+lf4);q6${D)NvI($%{o?#PLJuIih|BrJ7zQ-jryqR_xy;DGC&N_U# z85{>vXYi{uaZ0(B{u@kP`ab!5sJ~&SO8xK+J5%kd?(vYvR@%fwPd)I5AGI^8b5O+R zdD*2vYrvO1+yZ{8t?13I(<%8 zlU-@pmu2?|{qS9#3BmE$*9+^k?4gy?vMx9gA!3(vDVItHW%EGG-NXJRdb-6fF zwkak>ve1T<1UnJg6=UWpWi!!guWwHJ zis-bm7PXFXFVTS(>~_*8XzAv*B5;d~XC713qc4sYfAH$qp!3q|8gM3ZAsTrN&?pTz zIBHvRN;+$~&#ZnMX7$lixDohAPp)hPuNO4sYM)Yu{1m*>joQS6@{2bZhBKKC){H*( zSK3?Jd|iHIk4uBANM8-lwIW)(;MG~OH9ozA()c*J2dt3Xcp6)Y3{A;<122`2ill7=siwGR;4CG@#^+hCM??X<<=@$;wTwapbb)ya#x`pna(>0w#FYM7o@%N=8rgwTFl|vNJ^rVK`?Wcv!zfnRFFQwxmzO((TXWc+ z_|2;h+{4{4V$(;h*PH`R3+;3G1 z;x#+r(jD>9a`B_ta>U%X&DhKB@rew|8@FgQ6PKB@IlKnYZZ(Y{b%rvPCaCju4gZMm zieYUrOr~5CMuP|cxGA@s_1_7JCAkzDKq=c*rEYtFO0v(yDNxn(qY~%q+Ya3X7Uq8+ znMG2ydyFSZ9m+Gvc=@6_1dReTysD?UDy#qj7S%fVjp= zw!`90Jizx%0D6gJZyUFOW8a|JO!7(NWI2}tY%7so)XdWFZxPu({tMx-RnPyHoqN}O*& zBRb&3kT@~+v8HYNDDiwy7Uo$T3NBLa<*z_3a7-wnr3Q`t#8BR3X-NA8hZYldJCON; zk|EL-@r)DTM&--$MSJ-dO4vSzN!<4JqbD~LqLLc&a}pv9K0!QeY-2I)W~QjPC0W>v z9)C-L53KGISCKa8ic*#JBL}HF6={D9;a0uSX})kJaYzZyCRy6L_(ez~zj9?u>7mL@ z`Shc%5GcT#md({29KXXzLSErZf#KBI2nTT5e4}wyDuz2d9qNEtUeRC;hmn<1&m-~yu!-|7GYXLnaZfJ>=(EKXpidHEG6eF&ENrHjA4L)B zkA9I#u(2muIsSNCbE2iLX1NsAP+`T*f?0GW+S#(`*WS0XjoFgiKv4QUtVdjyv>P&w z$SZ63oI4^#LJ-2D>wKlOI^&log`&8_yz{y6=}F-0>FycEQwG)Bn}PE4)9cvg=@gZ% zr{-=OK@S_@h!+GM1gK+#unt%iY%G?M3?PJGs8SFxh`crY1vE4)j?59}+D#yo{qbPH zud6WM8&*hX1vV|3;}C2wbB-`voe!D13ilAJ*+8OCNvS2i-@C>{35 zdtLenlhzM*1LwZAR9Bcc4{^A<-HCJUDmhDRVLOsTL+Grsq?vIz`0#792s~v(^A10#(5w?fBsty@6!0^x444 zG?j``y2;~M@ouc9YXlG6i_y2D^gt^bo^T#Fsc6%ifX0=14(2;yitu^L(!589(l{Q4 zMP*8 zIR&m+2FMlo?31HO8Y1swUsa|B{VB)mnhwx5OZ$QLy(UiG4|eg&O9ELv4$_0 zry>aXMW9LnXhTu=@wwNP2Koqzs!XVATWF9hL4s#;!zxJTbBX<^DKEay2~k{5Dw44H zjwIyOZS-WLqzMCo_fxXgh4wz4L)(~E}W-q#h;yI2OreVn^9r@ zdGqTYdL0qz+%y5R_T3~}ri|`qAtDc4eYE+64O0Mb98Qoc8w1O(*@z+HsqbyKT=6vaws373HcwUQPdr;jn2i z`LmeAX>g^6%>{wQv$|0d!2fvOffyN)v!kD^YR?+1nRX!l#=2h^sVm)Sw&`g7LyF#K z$OVD6(mBL%cr|~g&gu8LjW!NpE)^=VOm*l=c-7kE|4~jhQEN#4Kunhlvawu9OmF}K zkC#?*gABPrJj*W;$-k&0lxwW%a?>_r#P?o9Vun+{7+>f}uoU!+7#>!s>a`?lAEIAB zy!%UYd$g{qI#E-pEn?ByQ8V;~w9M^+`ns@ZoDjdE-*pf$yOp-dfM!j|s9`1HrV%f0 z!V*$C7W1iXDC2i}{M+(`lmXE`u&GBPA*r1L=f$>(D^rtC`zsc~E;EG%(r!>N(aXh* zC`2=*DMBYp-uD@Z>?y9FXIqkTDK8iC&2_$UauG1S4sMQLo(~@4&zjf= zYleKntsjKWN@o%FKuj0`Hz#8eZs;k8ZL@P^4-uhT*Y@McHI`Rz&s$0rZEa}tqJzrd z1nbJrBDSNeDW@dcC)>)CVDqrr&i&L-m*&=##vtZZx12WLC$XR(9Rl(iu6Ut}R>n8v z|JBG&NK3t z9MWQBL6Y)W3mJuBFWNX6xNW;gDr&z8i}yJ{CT}Fs&1#)YHJss>V8Zx2U#$>Ggt;t|jJqLOWat z$>Ph|Y4MAw1#{%WyLgg78)c<~j>9o)XfxQ{v!c#(iD7P(z}TTu*nRS=O9 z5vS1EdS3Nv(Kkqoi>>Zm$RMNE>8D?NIzr1c*5ja4;O@si=i8w>oXjNb*`s@#qq~>= z%Vq1QUmh{B(b0S8_(k?ZCb%~#-JVzWe%4G=wn3MVcr|_gy7Ju67E)kfpuPCM^DKCQ z`CT4bDdTOb{8{dMtJ7St=5910)DNK?7SIt$LkT=)Ile!NuiyMW&Q<<78UMs&UP9Il zn&e*A)ej1E)^My7yQ+L^Qoh8m8(>`8im>{n7YipW@xWw)T6A@tUDY(7Ct8{(!pRhG zu73)^&D)AwbK2P%IUSgiP#Xd7g3@+>&Z|`JebNV81_v=>dlYN$^i{uo_<=HCpnXFX zt_C1W976&5Wsyn-UMe8-`80^MZt$k@qAnEv@^{v%USF*`JjWO79U?mo{gHD?iJ=pQeb@In|fL{tshB=LcQ?+tROwIIz^#wkyI5N&EO8x zdD_GBkaFr7Q39}4IqT}Zg40CNtAe-am1}@ncSL5!0KY4`Klwb&hM}H*)v$=$t?mQy z-6IAcA<~cIjbi4rz+{39fD9w)+}{)#Nu_V^2y|idOT$5UV1x-17XhpNJ3?{A8A(_(qi(HzT 0) + url = '/api/on/' + $('.brightness').text() + else + url = '/api/on' + $.getJSON(url, setData) + }) + $('.off').on('click', function () { + $.getJSON('/api/off', setData) + }) + $('form#chsb').on('submit', function (event) { + event.preventDefault() + setCHSB() + }) + $('form#colorform').on('submit', function (event) { + event.preventDefault() + setColor() + }) + $.getJSON('/api/info', setData) +}) \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..b941e18 --- /dev/null +++ b/public/index.html @@ -0,0 +1,79 @@ + + + + + TP-Link Bulb Web + + + + + + + +

TP-Link Bulb Web

+
+

+ +

+

+ + +

+

+ Brightness: + + +
+ Hue: + + +
+ Saturation: + + +
+ Color Temp: + + +

+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+

 

+
+
+ +
+ +
+
+ +
+
+ + + \ No newline at end of file diff --git a/screen.png b/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..4ecd5ee7d920d9200dce5f823ded8a99f5ec1d38 GIT binary patch literal 40077 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