3.3 KiB
Executable file
3.3 KiB
Executable file
BlueWeather
A (hopefully soon) fully featured selft-hosted web interface and server-backend to store weather data (comparable to opensensemap.org)
State of development
- interface and backend planned
- readonly dashboard is working
Installation
- Install the required packages
sudo apt install git apache2 mysql-server mysql-client php libapache2-mod-php php-mysql php-cli php-common -y
- Prepare the working directory and download SafeMail
cd /var/www/html/
git clone https://git.itsblue.de/dorian/blueweather.git
- Create the database
sudo mysql -u root
CREATE DATABASE blueweather;
- now create the database user, if you change the username, password or database name, don't forget to change that data in the config.php file!
GRANT ALL ON blueweather.* TO 'blueweather'@'localhost' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
exit;
- Prepare database for usage (create Tables and Keys)
cd /var/www/html/blueweather/api
sudo mysql -u root blueweather < blueweather.sql
Your BlueWeather instance can now be reached under: <your_ip>/blueweather
API docs
get locations
triggered by setting no GET parameter at all
Parameters
no parameters
Tags
- id
- locationname
- latitude
- longitude
- countryname
get location data
triggered by setting GET parameter 'locId' to a vaild location id
Parameters
- locId: id of the location to display
- range: range of the data to display in unix time
- from
- to
- max vals: maximum measvals to be transmitted; if more are present in the timespan, the avarage will be calculated
Tags
- id
- locationname
- latitude
- longitude
- countryname
- measvalues
- measvalue
- sensorid
- timestamp
- sensors
- id
- added
- userid
- sensorname
- property ('indoor' || 'sunny' || 'shadow')
- valuetypeid
- valuetypes
- id
- valuetype ('temperature' || 'humidity' || 'pressure' || 'fine dust')
- valueunit (html coding)
- displayproperty
- widget (properties for small widget)
- type ('doughnut' || 'text')
- properties (chartjs dataset properties if type is a chartjs type)
- chart (properties for large chart)
- type ('scatter')
- properties (chartjs dataset properties)
- widget (properties for small widget)
- range (actual range of present measvalues)
- from
- to
submit sensor data
triggered by setting POST parameter 'submitSensorData' to a JSON encoded string containing the request
Request
- identity: identity of the api token (given by webinterface)
- signature: SHA1 Hash of the JSON encoded string of 'data' rsa encrypted with the API Key as private key
- data: JSON array[array[
sensorId,
measvalue,
timestamp
]]
CAUTION!! This MUST be a string and NOT direct JSON!!
Reply
- status:
- 200: was inserted
- 400: format of request was wrong
- 401: signture verify failed
- 404: key identity was not found
- 500: internal error
- 900: format of data JSON string was invalid
- 901: signature was fine but one or more sensors have been ignored due to some error (see 'data') all other sensors were processes successfully
- data: Array[Array[sensorId, errorCode]] sensors which were ignored due to some error (401: user doesn't own sensor; 404: senso wasn't found) only set if status is 901