RESTful API for storing and retrieving vantage weather data.
There are two main components.
- RESTful API - process and provide weather data (this package)
- recorder - upload weather data (here)
The api is an expressjs api, which manages a database and provides simple endpoints to access your weather data.
The recorder repeatedly uploads weather data to the api.
Both of them together form a robust platform!
Running the vantage api is super easy!
import api from "vant-api";
api.configure({
units: {
temperature: "°C",
},
port: 5231,
});
Running the recorder is also pretty easy.
import { Recorder } from "vant-api/recorder";
async function main(){
// Configure recorder
const recorder = await Recorder.create({
path: "COM5",
api: "http://localhost:8000/api",
key: "your-api-key",
...
});
// Configure "/api/v1/current" update interval
recorder.configureCurrentConditionsTask({
interval: 1,
});
// Start recorder
recorder.start();
}
main();
Read the guides to get started!
First of all you should read the guides. After that you may get more information and read the official documentation.
This project is in an early stage. There is still so much to come. Currently the api only stores the current weather conditions. This will change.
Currently following endpoints are planned. This may change.
This route will return interesting records. Using the
:interval
you will be able to choose different periods.
Possible values will be: hour
, day
, week
, month
, year
. By default it will assume that you are interested in the current hour, day, etc. This is changeable by passing a time
query parameter. E.g. /highs-and-lows/week?time=2023/34
(this requests the highs and lows of the 34 calendar week of 2023).
{
"success": true,
"interval": "year",
"data": {
"tempOut": {
"low": {
"value": -12.4,
"time": "2004-01-28"
},
"high": {
"value": 39.2,
"time": "2004-08-27"
}
},
...
}
}
This route will return a summary of the passed interval.
Possible values will be: hour
, day
, week
, month
, year
.
{
"success": true,
"interval": "day",
"data": {
"rain": 7.4,
"windDir": "W",
"tempOut": {
"low": {
"value": 9.4,
"time": "05:34"
},
"high": {
"value": 14.9,
"time": "14:22"
}
},
...
}
}
This route will be useful for generating graphs that visualize the weather of a specified interval.