diff --git a/docs/SETUP_DEV.md b/docs/SETUP_DEV.md new file mode 100644 index 0000000..36f39a8 --- /dev/null +++ b/docs/SETUP_DEV.md @@ -0,0 +1,106 @@ +# Setup development environment + +## Backend +To build the backend, you will need to install: + +* Rust: https://www.rust-lang.org/ +* An IDE with Rust support. I would definitly recommend [RustRover](https://www.jetbrains.com/rust/) (the tool from IntelliJ). + +Check if your environment is working using the following command: + +```bash +cargo fmt && cargo clippy && cargo run -- --help +``` + +For development, the following flags might prove being useful: +* `--unsecure-disable-login`: Disable authentication on all web API endpoints +* `--hostname`: Change public server hostname, if you want to expose your test instance to network device, such as an ESP32 + +## Custom consumption +Same requirements as for the backend. This tool spawns a gui that allows to set arbitrary consumption values: + +![Custom consumption](img/custom_consumption.png) + + +To use it, first launch this tool: + +```bash +cd custom_consumption +cargo run +``` + +Set a custom value to force file creation (in the UI). + +Then launch central backend (in another terminal): + +```bash +cd central_backend +cargo fmt && cargo clippy && RUST_LOG=debug cargo run -- file +``` + + +## Central frontend +The frontend has been built using [NodeJS](https://nodejs.org/en), [Vite](https://vite.dev/) and [MUI](https://mui.com/). + +Launch it using this command: + +```bash +cd central_frontend +npm run dev +``` + +## Python device +This component has been built using ... Python. Waw! + +You will need to install this dependency, first: +```bash +apt install python3-jwt +``` + + +Run the client: + +```bash +cd python_device +python3 -m src.main + +# Get CLI help +python3 -m src.main --help +``` + + +Reformat code: + +```bash +black src/*.py +``` + +## ESP32 device +The ESP32 device is in reality a [Wt32-Eth01](https://en.wireless-tag.com/product-item-2.html) device. Use the following mapping to setup dev env: + +![ESP mapping](img/esp_mapping.png) + +You can use a [CP2102](https://fr.aliexpress.com/item/4000120687489.html) to flash the ESP32. + +I recommend to use VSCode with the following extensions: +* [ESP-IDF](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension) +* [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) +* [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) + +To build the project, use this command (in an ESP-IDF terminal): + +```bash +idf.py build +``` + +To flash the ESP32, use this one: + +```bash +idf.py flash +``` + +To capture logs from device, use either `cu` or the following command: + +``` +idf.py monitor +``` \ No newline at end of file diff --git a/docs/img/custom_consumption.png b/docs/img/custom_consumption.png new file mode 100644 index 0000000..96e0d4d Binary files /dev/null and b/docs/img/custom_consumption.png differ diff --git a/docs/img/esp_mapping.png b/docs/img/esp_mapping.png new file mode 100644 index 0000000..4c92094 Binary files /dev/null and b/docs/img/esp_mapping.png differ