diff --git a/Dockerfile b/Dockerfile index 16d27243..f72ba8e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:8.12.0-alpine +FROM node:10-alpine WORKDIR / COPY . . diff --git a/README.md b/README.md index c91f7e4d..c0da6558 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### Preamble: -This is a bit modified version of [Valetudo by Hypher](https://github.com/Hypfer/Valetudo), hackishly _enhanced_ by me since I found too many features missing in the original package when I've tried to use it for the first time. So this is a quick list of changes first appeared here: +This is a modified version of [Valetudo by Hypher](https://github.com/Hypfer/Valetudo), hackishly _enhanced_ by me since I found too many features missing in the original package when I've tried to use it for the first time. So this is a quick list of changes first appeared here: * Ability to select multiple saved zones at once; * Selected zones are then shown at the map tab to see and edit what's actually going to be cleaned; @@ -8,6 +8,9 @@ This is a bit modified version of [Valetudo by Hypher](https://github.com/Hypfer * Configurable virtual walls and forbidden zones, finally! * Scheduled zoned cleaning - when you do not need to clean the whole house; * Ability to specify in webGUI the number of iterations to clean the same zone multiple times; +* Showing status of the device on the map; +* A set of dynamically appearing buttons on the map to better control device from there; +* Experimental ability to save/restore maps; * Random visual changes: using different colors and icons here and there, some behavioral changes when working with maps and so on. Beware, I'm not a qualified coder - that's for sure, so the code is awful in places, also I'm not familiar with github at all. All these things are done only for my personal use, so if someone find them handy one day then you're welcome. @@ -26,8 +29,21 @@ Beware, I'm not a qualified coder - that's for sure, so the code is awful in pla Check [deployment](/deployment) on how to install Valetudo onto your device. ### Screenshots of this mod: -![image](https://user-images.githubusercontent.com/30267719/58707398-7b2b3e80-83bd-11e9-81be-ea3148e18f88.jpg) -![image](https://user-images.githubusercontent.com/30267719/58707453-ad3ca080-83bd-11e9-992f-27e126462686.jpg) + +
+ View screenshots + +![qscr1](https://user-images.githubusercontent.com/30267719/67139290-3bbf9a80-f257-11e9-85f1-698617d44a06.png) +![qscr2](https://user-images.githubusercontent.com/30267719/67139299-585bd280-f257-11e9-8688-7d684d90a3d5.png) +---- +![qscr3](https://user-images.githubusercontent.com/30267719/67139303-67428500-f257-11e9-881e-72d71c077886.png) +![qscr4](https://user-images.githubusercontent.com/30267719/67139307-732e4700-f257-11e9-9f5a-5ba95288d82e.png) ---- -![image](https://user-images.githubusercontent.com/30267719/58707479-c1809d80-83bd-11e9-9b80-b82e0b1ee3d6.jpg) -![image](https://user-images.githubusercontent.com/30267719/58707499-d1987d00-83bd-11e9-82bd-046b0563314e.jpg) +![qscr5](https://user-images.githubusercontent.com/30267719/67139309-7cb7af00-f257-11e9-97e0-0d55f402022d.png) +![qscr6](https://user-images.githubusercontent.com/30267719/67139314-85a88080-f257-11e9-88cd-8d191c2193e0.png) +---- +![qscr7](https://user-images.githubusercontent.com/30267719/67139321-98bb5080-f257-11e9-9060-a540ec89efa0.png) +![qscr8](https://user-images.githubusercontent.com/30267719/67139318-8f31e880-f257-11e9-9464-1c39682d6020.png) + +
+ diff --git a/package.json b/package.json index 332d8ffd..2fed81cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "valetudo", - "version": "0.4.0-RE4", + "version": "0.4.0-RE5", "description": "Self-contained control webinterface for xiaomi vacuum robots", "main": "index.js", "bin": "index.js", @@ -18,7 +18,7 @@ "dependencies": { "body-parser": "^1.19.0", "compression": "^1.7.4", - "cron": "^1.7.1", + "cron": "^1.7.2", "express": "^4.17.1", "express-basic-auth": "^1.2.0", "express-dynamic-middleware": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index ba223853..9c92b8cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -135,6 +135,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +async-limiter@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -172,6 +177,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -199,7 +209,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bl@^1.2.1: +bl@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== @@ -207,7 +217,7 @@ bl@^1.2.1: readable-stream "^2.3.5" safe-buffer "^5.1.1" -body-parser@1.19.0, body-parser@^1.18.3: +body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -374,7 +384,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.7.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -434,10 +444,10 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cron@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/cron/-/cron-1.7.1.tgz#e85ee9df794d1bc6579896ee382053c3ce33778f" - integrity sha512-gmMB/pJcqUVs/NklR1sCGlNYM7TizEw+1gebz20BMc/8bTm/r7QUp3ZPSPlG8Z5XRlvb7qhjEjq/+bdIfUCL2A== +cron@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/cron/-/cron-1.7.2.tgz#2ea1f35c138a07edac2ac5af5084ed6fee5723db" + integrity sha512-+SaJ2OfeRvfQqwXQ2kgr0Y5pzBR/lijf5OpnnaruwWnmI799JfWr2jN2ItOV9s3A/+TFOt6mxvKzQq5F0Jp6VQ== dependencies: moment-timezone "^0.5.x" @@ -691,7 +701,7 @@ express-dynamic-middleware@^1.0.0: dependencies: async "^2.6.0" -express@^4.16.3: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -1445,21 +1455,22 @@ moment-timezone@^0.5.x: resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== -mqtt-packet@^5.6.0: - version "5.6.1" - resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-5.6.1.tgz#8ecafce091f5af460664268a22b22091c8915f7b" - integrity sha512-eaF9rO2uFrIYEHomJxziuKTDkbWW5psLBaIGCazQSKqYsTaB3n4SpvJ1PexKaDBiPnMLPIFWBIiTYT3IfEJfww== +mqtt-packet@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-6.2.1.tgz#89b27e5e22a859abe9f5a3359b2e2dd07e4168b2" + integrity sha512-ZxG5QVb7+gMix5n4DClym9dQoCZC6DoNEqgMkMi/GMXvIU4Wsdx+/6KBavw50HHFH9kN1lBSY7phxNlAS2+jnw== dependencies: - bl "^1.2.1" + bl "^1.2.2" inherits "^2.0.3" process-nextick-args "^2.0.0" - safe-buffer "^5.1.0" + safe-buffer "^5.1.2" -mqtt@^2.18.8: - version "2.18.8" - resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-2.18.8.tgz#9d213ccab92151accfb21ee8c0860dc6866ab259" - integrity sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA== +mqtt@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-3.0.0.tgz#7961e5f61efba3eec37d5aa9c4cbcdeb6f841380" + integrity sha512-0nKV6MAc1ibKZwaZQUTb3iIdT4NVpj541BsYrqrGBcQdQ7Jd0MnZD1/6/nj1UFdGTboK9ZEUXvkCu2nPCugHFA== dependencies: + base64-js "^1.3.0" commist "^1.0.0" concat-stream "^1.6.2" end-of-stream "^1.4.1" @@ -1467,11 +1478,11 @@ mqtt@^2.18.8: help-me "^1.0.1" inherits "^2.0.3" minimist "^1.2.0" - mqtt-packet "^5.6.0" + mqtt-packet "^6.0.0" pump "^3.0.0" readable-stream "^2.3.6" reinterval "^1.1.0" - split2 "^2.1.1" + split2 "^3.1.0" websocket-stream "^5.1.2" xtend "^4.0.1" @@ -1485,10 +1496,10 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -multer@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.1.tgz#24b12a416a22fec2ade810539184bf138720159e" - integrity sha512-zzOLNRxzszwd+61JFuAo0fxdQfvku12aNJgnla0AQ+hHxFmfc/B7jBVuPr5Rmvu46Jze/iJrFpSOsD7afO8SDw== +multer@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a" + integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg== dependencies: append-field "^1.0.0" busboy "^0.2.11" @@ -1827,6 +1838,15 @@ readable-stream@1.1.x: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + regenerator-runtime@^0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" @@ -1915,7 +1935,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -2049,12 +2069,12 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== +split2@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.1.1.tgz#c51f18f3e06a8c4469aaab487687d8d956160bb6" + integrity sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q== dependencies: - through2 "^2.0.2" + readable-stream "^3.0.0" sshpk@^1.7.0: version "1.16.1" @@ -2101,6 +2121,13 @@ streamsearch@0.1.2: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -2133,7 +2160,7 @@ through2-filter@^3.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@^2.0.1, through2@^2.0.2, through2@~2.0.0: +through2@^2.0.1, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -2301,7 +2328,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -2361,12 +2388,12 @@ ws@^3.2.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^6.1.4: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== +ws@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.2.tgz#c672d1629de8bb27a9699eb599be47aeeedd8f73" + integrity sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg== dependencies: - async-limiter "~1.0.0" + async-limiter "^1.0.0" xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2"