Get Data from Vantage Pro Weatherstation from Davis Instruments via telnet connection
- Telnet Live-Connection (data every 2 seconds)
- Prometheus Data export
- MySQL Storage
- Socket.IO Server
- Simple REST API
- MQTT Export
- InfluxDB Export
There are two options: Use the docker image, or the plain nodejs script
- Copy
config.example.jsontoconfig.jsonand change your data - Create a MySQL / MariaDB Database with user
- Install dependencies with
npm iand compile project withnpm run build - Start Programm with
npm start
Download Docker image from Docker Hub (
n404/vantage-node)run
docker run -p 3010:3010 --name vantage-node -e VANTAGE_URL=123.123.123.123 -e MYSQL_ENABLED=false n404/vantage-nodeWith Custom
config.jsonfile:docker run --rm -v $(pwd)/config.json:/config.json -p 3011:3011 n404/vantage-nodeThe Table on the MYSQL Database will be automatically generated if it is not existed
- a
config.jsonfile in the root directory of the project - Configuration with environment variables (mostly for docker / kubernetes)
{"vantage": {"url": "192.168.178.xxx"//REQUIRED, default ""},"mysql": {"enabled": true|false,//required, default true"ip": "<database-Host>",//default "127.0.0.1""database": "<database>",//default "weather""username": "<databae-User>",//default "weather""password": "<database-Password>"//default ""},"socket": {"enabled": true|false,//default true"port": 3011//default 3010},"influxdb": {"api_token": "<token>","bucket": "<bucket>","organisation": "<org>>","url": "http://<host:port>","enabled": true},"mqtt": {"enable": true|false,"host": "emqx","user": "emqx","password": "","clientid": "mqtt_vantage_node_system_client","topic": "vantage_data"},"saveinterval": 60//default 60, given in seconds}| Environment Variable | Description | Default Value | Type | Required |
|---|---|---|---|---|
| VANTAGE_URL | The URL to the Vantage-Pro Telnet adapter | "" | string | yes |
| VANTAGE_PORT | The Port to the Vantage-Pro telnet adapter | 22222 | number | no |
| MYSQL_ENABLED | If MYSQL should be used | true | boolean | yes |
| MYSQL_IP | The MYSQL Host (IP or Hostname) | 127.0.0.1 | string | no |
| MYSQL_PORT | The Mysql Port | 3306 | number | no |
| MYSQL_DB | The MYSQL Database name | weather | string | no |
| MYSQL_USERNAME | The MYSQL Database user | weather | string | no |
| MYSQL_PASSWORD | The MYSQL database password | "" | string | no |
| SOCKET_PORT | The Port the websocket-Server should listen on | 3010 | number | no |
| SOCKET_ENABLED | If websocket should be enabled | true | boolean | no |
| SAVE_INTERVAL | the interval the data should be saved in the MYSQL Database | 60 | number | no |
| LOGLEVEL | string | no | ||
| INFLUXDB_ENABLED | boolean | no | ||
| INFLUXDB_URL | string | no | ||
| INFLUXDB_API_TOKEN | string | no | ||
| INFLUXDB_ORGANISATION | string | no | ||
| INFLUXDB_BUCKET | string | no | ||
| EMQX_ENABLE | true, if mqtt should be used | boolean | no | |
| EMQX_HOST | emqx host | string | no | |
| EMQX_USER | emqx username | string | no | |
| EMQX_PASSWD | emqx password | string | no | |
| EMQX_CLIENTID | emqx clientid - random | string | no | |
| EMQX_TOPIC | emqx topic | string | no | |
| CONFIG_FILE | path of config.json file | string | no |
On the Websocket port there will be sent the packages as soo as they get received from the vantage-pro station. You can use these packages with any socket.io-client (web-client or nodejs-client for example). The Packages have the following structure:
{
"barometer": 986.8407885386599,
"dayrain": 0,
"inhum": 26,
"intemp": 22.722222222222225, "outhum": 82, "outtemp": 9.722222222222221, "rainrate": 0,
"winddir": 258, "windspeed": 0
}/test =>
{
"code": 200,
"message": "Test successful"
}/metrics => returns Prometheus Metrics of the weather data
/healthcheck(used for internal docker checks):
if healthcheck is ok (HTTP Statuscode: 200):
{"message": "Packages are valid","code": 200,"value": 1234// timestamp of last Telnet package in MS}if healthcheck is not valid: (HTTP Statuscode: 500)
{"message": "Packages are outdated and invalid!","code": 500,"value": 1234//timestamp of last Telnet package in MS}/lastdata:
Values are -1 if not set (for example after program restart) (like in barometer)
{
"value": {
"barometer": -1,
"dayRain": 0,
"inHumidity": 29,
"outHumidity": 71,
"outTemperature": 17.055555555555557,
"inTemperature": 22.944444444444443,
"rainRate": 0,
"windDirection": 147,
"windSpeedMax": 0,
"windSpeed": 0
},
"message": "Last Dataset of Weatherstation",
"code": 200
}If your have any problems, fell free to create an issue to contact me