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