# Esp8266-Laser Wifi Host for the Arduino-Laser-Spirograph ## HTTP endpoints: * /spirograph * **GET** returns laser and motor values (0 at startup) * **POST** sets new value(s) * laser=1-128 (1:permanent, 2-127 pulse, 128 off) * motor1=1-128 * motor2=1-128 * motor3=1-128 * /preset * **POST** sets new value(s) to Preset * nr=presetNr (1-128) * laser=1-128 (1:permanent, 2-127 pulse, 128 off) * motor1=1-128 * motor2=1-128 * motor3=1-128 * apply=true -> run preset * /presetMode * **GET** returns current mode * **POST** sets mode 0: presetsOff 1: cycle (not completed feature) * /presets * **GET** returns /presets.json * /wificonfig * **GET** returns wifi settings * **POST** sets new wifi setting{s} * apMode=0: will try to connect to SSID first, 1: will directly start the AP * SSID=ssid * password=password * save=true will save config to spiffs, false will only change RAM variable (useful for onetime ap joins) * apply=true will reset wifi and try to connect with new param (buggy atm) * /heap * **GET** returns free heap of the ESP8266 * /files * **GET** returns list of files ## Install - install arduino ide (1.8.5) or PlatformIO (see Development section for further instructions) - follow this instruction https://github.com/esp8266/Arduino#installing-with-boards-manager - clone/exctract repo to sketchbook - install this libaries https://github.com/plerup/espsoftwareserial https://github.com/bblanchon/ArduinoJson/ - follow this instruction: set wifi parameters in data/wifi.json before upload http://esp8266.github.io/Arduino/versions/2.0.0/doc/filesystem.html#uploading-files-to-file-system You may also need to: - get and install driver for nodemcu https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers ## Development ### PlatformIO ---------- The project is intended to run on PlatformIO and the build environment is configured for NodeMCU 1.0 (ESP-12E Module). More informations: http://docs.platformio.org/en/latest/platforms/espressif8266.html Following libraries need to be installed via PIO Home / Libraries: - SoftwareSerial - ArduinoJson Use following commands to build and upload the firmware and filesystem: ``` # clean the build directory pio run -t clean # run default build job / build the formware pio run # upload the firmware pio run -e nodemcu -t upload # build the filesystem pio run -t buildfs # upload the filesystem pio run -t uploadfs ``` PlatformIO tasks can also be triggered with following npm run commands (pio / platformio executable needs to be in $PATH): ``` build:fs upload:fs build:firmware upload:firmware ``` ### Frontend -------- Frontend development requires NodeJS / npm. The development server watches all files in the frontend directory and automatically builds and copies the frontend code to the data folder. ``` ### install dependencies npm install ### run development server on port 8080 npm run dev ### build distribution source to data folder npm run build ```