Project architecture - Progradius/PhytoController GitHub Wiki
Project architecture
Here is a tree representation of project's architecture and a brief explanation of folders and files
phyto-controller/
├── boot.py #====> micropython boot file, executed first
├── CODE_OF_CONDUCT.md #====> github project's code of conduct
├── controller #====> hold files controlling models
│ ├── components
│ │ ├── component_handler.py #====> generic component handler
│ │ ├── cyclic_timer_handler.py #====> cyclic timer handler
│ │ ├── dailytimer_handler.py #====> daily timer handler
│ │ └── MotorHandler.py #====> centrifugal motor handler
│ ├── ControllerStatus.py #====> Responsible of passing app status to web api
│ ├── network_handler.py #====> handle wifi connection
│ ├── parameter_handler.py #====> handle parameters, update or write them using Parameter model
│ ├── PuppetMaster.py #====> Class orchestrating asynchronous operations
│ ├── sensor #====> Folder storing sensors handlers classes
│ │ ├── BME280Handler.py
│ │ ├── DS18Handler.py
│ │ ├── HCSR04Handler.py
│ │ ├── MLX90614Handler.py
│ │ ├── TSL2591Handler.py
│ │ ├── VEML6075Handler.py
│ │ └── VL53L0XHandler.py
│ ├── SensorHandler.py #====> Expose a way to choose a sensor and gets it's value using sensors handlers
│ └── web #====> Hold web related files
│ ├── influx_handler.py #====> Handle influx communications
├── function.py #====> Application wide generic purpose functions
├── images #====> Hold picture for github ect
│ ├── logo.png
│ └── screenshot.png
├── lib #====> Hold project's libraries
│ ├── sensors #====> Sensor related libraries
│ │ ├── BME280.py
│ │ ├── DS18B20.py
│ │ ├── HCSR04.py
│ │ ├── MLX90614.py
│ │ ├── TSL2591.py
│ │ ├── VEML6075.py
│ │ └── VL53L0X.py
│ └── uasyncio #====> uasyncio library
│ ├── core.py
│ ├── __init__.py
│ ├── queues.py
│ ├── synchro.py
│ └── websocket
│ └── server.py
├── LICENSE #====> Repo LICENSE file
├── main.py #====> the main.py file is executed right after boot.py by the esp32
├── model #====> Hold model files
│ ├── Component.py #====> Generic component model
│ ├── CyclicTimer.py #====> Cyclic timer model
│ ├── DailyTimer.py #====> Daily timer model
│ ├── Motor.py #====> Motor model
│ └── Parameter.py #====> Parameters model, retrieve parameters from the json file
├── param.json #====> JSON file holding application configration
└── README.md #====> Repo readme