🔴 This package has been deprecated. Use vantjs instead. 🔴
Javascript/Typescript interface to any Davis Vantage Pro weather station. Based on the vproweather driver. Only works on *unix devices.
1. Driver (vproweather)
This small guide explains how to install and setup the vproweather driver that is a requirement for the vproweatherjs
package.
git clone https://github.com/bytesnz/vproweather
sudo apt install gcc make
cd vproweather
make
Make sure to test the commands the driver offers. No later than now, you should connect your Vantage Pro console to your *unix device serially.
To test the connection, you need the url (e.g. /dev/ttyUSB0
) of your device.
./vproweather --help
This should work for the most *unix devices.
sudo nano ~/.bashrc
Add following to the end of the file:
export PATH="/your/path/to/the/cloned/repository:$PATH"
Now you should be able to access the vproweather globally via vproweather
.
npm install vproweatherjs
After setting up the driver and installing the vproweatherjs package you are ready to connect seamlessly to your weather station in javascript/typescript!
import { SimpleVPDriver } from "vproweatherjs";
async function doDriverStuff(){
const driver = new SimpleVPDriver({
deviceUrl: "/dev/ttyUSB0" // replace with the url to your device
);
// access the currently measured weather data
const realtimeData = await driver.getRealtimeData();
console.log(realtimeData);
// access the highs and lows
const highsAndLows = await driver.getHighsAndLows();
console.log(highsAndLows);
// access the weather station's time
const weatherStationTime = await driver.getTime();
console.log(weatherStationTime);
// synchronize the weather station's time to system time
await driver.synchronizeTime();
// turn the weather station's background light on
await driver.setBackgroundLight(true);
// access the weather station's model name
const modelName = await driver.getModelName();
console.log(modelName);
}
doDriverStuff();
With vproweatherjs, the weather data can also be refractored into a more readable structure. Added to that there is a unit system that allows you to convert the weather data into any unit you want with minimal effort.
import { AdvancedVPDriver, Units, UnitConfig } from "vproweatherjs";
async function doDriverStuff(){
const driver = new AdvancedVPDriver({
deviceUrl: "/dev/ttyUSB0" // replace with the url to your device
);
// access the currently measured weather data in a more structured and unit flexible way
const realtimeData = await driver.getFlexibleRealtimeData();
realtimeData.applyUnits(new UnitConfig({
wind: Units.Wind.kmh,
temperature: Units.Temperature.celsius,
...
}));
console.log(realtimeData.weatherData);
// access the highs and lows in a more structured and unit flexible way
const highsAndLows = await driver.getFlexibleHighsAndLows();
highsAndLows.applyUnits(new UnitConfig({
preset: "eu",
}));
console.log(highsAndLows.weatherData);
// access the weather station's time
const weatherStationTime = await driver.getTime();
console.log(weatherStationTime);
// synchronize the weather station's time to system time
await driver.synchronizeTime();
// turn the weather station's background light on
await driver.setBackgroundLight(true);
// access the weather station's model name
const modelName = await driver.getModelName();
console.log(modelName);
}
doDriverStuff();