--- layout: default title: Home nav_order: 1 description: Help pages for WebControl wcversion: 0.915.001 tags: webcontrol --- # WebControl The official tool for [Maslow CNC](https://www.maslowcnc.com/); control your Maslow with any web browser. * Browser-based, multi-platform controller software. * Connects to Maslow's Arduino Mega (or similar) via USB. * Includes setup instructions (updated from [Maslow Community Garden](http://maslowcommunitygarden.org/)). * Runs gcode (`.nc` files) for printing cuts. You can [report issues](https://github.com/WebControlCNC/WebControl/issues) to the [volunteer team](https://github.com/WebControlCNC/WebControl/). ## Context WebControl started as a browser-based port of the original GroundControl application, but has grown to support more features: * The calibration and setup process is better documented and easier to use. * It implements a flask+socketio web server, so other computers on the network may control the machine. * It can be run on a low-cost device, like a Raspberry Pi. * It can also support multiple custom firmwares developed by the community which enhance the Maslow. At this point, WebControl has become the **de-facto beginner's tool for Maslow**. <img src="assets/Screenshot.png" alt="Screenshot" width="100%"> ## Installation ### Pre-Built Raspberry Pi Image See the [dedicated repository](https://github.com/WebControlCNC/webcontrol-pi). ### Pre-Built Application Binaries There are both single-file (installer) and single-directory (zipped) releases available. The installer files are appropriate for faster machines, like a Windows 10 laptop where an installer executable is desired. Zipped, "single-directory" releases will unpack faster and startup quicker on devices like the Raspberry Pi. See the [releases page](https://github.com/madgrizzle/WebControl/releases) and choose the appropriate architecture and release type. ### Docker & Kubernetes * Pull the docker image from `inzania/web-control` using the `armv7` or `amd64` tag. * Mount a data/config volume at `/root/.WebControl` * Expose port `5000` * Run with `privileged: true` security context for USB access. ### Remote Access WebControl can be run behind a front-proxy with TLS termination, such as nginx. You can use this in conjunction with semi-static IP to access your Maslow from anywhere with internet access. The full scope of this is outside this documentation, so you should be sure you understand the **security implications** before proceeding (hint: WebControl doesn't have a login or user authentication system). ## Usage Open your web browser to `localhost:5000` (or use the IP address of your device). @ML1xi36LTCSSXHiCD8RsRQ Here's a good place to start onboarding peaple @ ## Built With * [Flask](http://flask.pocoo.org/) - The web framework used * [Flask-Socketio](https://github.com/miguelgrinberg/Flask-SocketIO) - Websocket integration for communications with browser clients * [Bootstrap4](https://getbootstrap.com/) - Front-end component library * [Jinja2](http://jinja.pocoo.org/) - Template engine for web page generation * [Feather.js](https://feathericons.com/) - Only icon library I could find that had diagonal arrows.. works well to boot. * [OpenCV](https://github.com/skvark/opencv-python) - Library for computer vision to implement optical calibration * [Numpy](http://www.numpy.org) - Library for math routines used with optical calibration * [Scipy](http://www.scipy.org) - Another library for math routines used with optical calibration * [Imutils](https://github.com/jrosebr1/imutils) - Adrian Rosebrock's library used with optical calibration * [Schedule](https://github.com/dbader/schedule) - Library used to schedule checking connection with arduino * [Ground Control](https://github.com/maslowcnc/groundcontrol) - Much of this was adapted from the Kivy-based Ground Control ## Developing ### Virtualenv You can use virtualenv to set up a local development environment for running the code without installing packages in the system Python installation. # Create a virtual environment virtualenv -p python3 .venv # Activate the virtual environment source .venv/bin/activate # Install the prerequisites pip install -r requirements.txt When running on the Pi, you'll also need some extra dependencies and will need to build OpenCV from source. See the Dockerfile for details. (TODO: add instructions here) Then you can run the code with. python main.py The server will then be available at http://localhost:5000 ### Automatic code formatting This project uses [black](https://github.com/ambv/black) to automatically format python code. To run the autoformatter, simply install black locally with `pip`. pip install black Subsequently, you can just run `black .` to format all files in the current directory. black . If you don't have python3.6+ locally (to be able to run `black`), you can run `black` in a Docker container. docker run -v $(pwd):/code johnboiles/python-black . ### IDE [Pycharm Community Edition](https://www.jetbrains.com/pycharm/download) is a free, well-featured Python IDE. With the [File Watchers](https://plugins.jetbrains.com/plugin/7177-file-watchers) and [BlackPycharm](https://plugins.jetbrains.com/plugin/10563-black-pycharm) plugins you can set up your editor to automatically format your code on save. Then you never have to think about code formatting again :tada: ## Contributing Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. ## Versioning Added to TODO list? ## With Thanks * **Madgrizzle** - *Initial work* - [madgrizzle](https://github.com/madgrizzle) * **John Boiles** - *Docker Expert* - [johnboiles](https://github.com/johnboiles) * **Tinker** - *UI Improvements/Bug Fixer/Etc.* - [gb0101010101](https://github.com/gb0101010101) See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. ## License See [LICENSE](https://github.com/madgrizzle/WebControl/blob/master/LICENSE)