Skip to content

ml4ch/CoSESWeather

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to CoSESWeather

In this project a Weather-Data Acquisition and Management System has been developed. In this system an Arduino-based microcontorller (client) interfaces different kinds of sensors and forms the core entity of the weather-station developed throughout this project. Acquired data is then forwarded to a RaspberryPi-based device (server) where data is processed and permanently stored in MySQL databases. A GUI-Application (CoSESWeatherApp) has been developed to enable users to conveniently interact with the system (weather-data export, account management, system commands etc.).

Important links


File-structure of repository

The utilized structure of this project-repository is listed below. As the list shows, this project is split into four sub-directories. Important files are also listed and briefly discussed respectively.

  • Client: Source-code for the microcontroller

    • CoSESClient.ino: To be flashed onto the microcontroller
  • CoSESWeatherApp: App-Development (GUI)

    • CoSESWeatherApp.py: Main source-file of the app (logic and functionality)
    • CoSESWeatherApp_ui.ui: Main source-file of GUI in QtDesigner-format (visual appearance)
    • CoSESWeatherApp_ui.py: Main source-file of GUI converted to python-format
    • convert_ui_to_py_MyApp.bat: Batch-file to convert QtDesigner-format (.ui-files) to python-code (.py-files)
    • CoSESWeatherApp.spec: Specification-file (spec-file) tells PyInstaller how to bundle the app
    • BuildApp.bat: Batch-file to start PyInstaller and bundle the app according to the spec-file
  • Server: Source-code for the server

    • CoSESServer.py: Main server-process (opens socket to acquire raw data forwarded by microcontroller)
    • CoSESDriver.py: WeeWx-driver (interface between server-process, databases and WeeWx-framework)
    • db_manager.php: Database API-script (functionality and queries)
    • db_config.php: Database API-script (authentication data)
    • CoSESWeather.ini: Path-file (contains URLs and file-paths utilized in the project)
    • CoSESServerManager.sh: Helper-script (monitoring and restarting of system-processes)
    • MySQLBackUp.sh: Helper-script (backup creation of MySQL databases)
    • WatchDogResetter.sh: Reset of watchdog-timer (on server-side)
    • localhost.sql: Initial database-structure (can be imported to create required database-tables)
  • WeeWx: Modified WeeWx-framework installation

    • weewx-3.9.1(CoSESWeather_mod).tar.gz: WeeWx weather-station framework (modified installation package)

Development environment

This section gives a brief overview on the required third-party modules and libraries utilized in this project.

Required modules (Python on server-side)

Required libaries (Arduino, C, C++ on client side)


Required installation on server

The commands needed in order to install required packages are listed below. Administrative privileges on the target devicve are required for installation.

  • Apache2 (HTTP web-server)
sudo apt install apache2
  • MySQL (database management system)
sudo apt install mariadb-server
  • phpMyAdmin (web-based tool for database management)
sudo apt install phpmyadmin
  • PHP (programming language required by phpMyAdmin and Apache)
sudo apt install php php-mbstring libapache2-mod-php 
  • MySQL connector for PHP
sudo apt install php-mysql

WeeWx weather-station framework

The popular open-source weather-station framework WeeWx is used in this project. For detailed information on functionality and customization the extensive documentation on the WeeWx-website is to be considered.

Website: WeeWx Framework