Wifi Logger for Davis weather stations!

For the longest time I’ve been trying to find a way to get data off of my Davis weather station without spending a fortune on their modules.

Yesterday I stumbled across the Wifi Logger, built on a ESP-12S and is installed in the data logger port of the Davis base station.

http://wifilogger.net/
https://www.wxforum.net/index.php?topic=34312.0

I ordered one yesterday and I’m waiting for it to arrive.

Apparently it works with MQTT so I’ll see if I can get it working with Home Assistant.

Anyone else out there have one of these or a Davis weather station?

2 Likes

Hi! I have a Davis Vantage Vue, but not the Logger.
Very keen to hear how it works for you!

Got it today and the MQTT setting exports data in Json. However it seems temperatures are exported in F, I would prefer C. I’ll post on the other forum and ask the developer.

Here is what the MQTT data looks like, will have to get this formatted for Homeassistant

{
	"stnmod": 17,
	"ver": 2.12,
	"loctime": 1547581760,
	"utctime": 1547599760,
	"tzone": 10,
	"units": 190,
	"tempout": "24.6",
	"humout": "90",
	"tempin": "75.6",
	"humin": "31",
	"windspd": "0.0",
	"winddir": "132",
	"windavg2": "0.0",
	"windavg10": "0.0",
	"gust": "0.0",
	"gustdir": "360",
	"bar": "29.998",
	"bartr": "60",
	"dew": "22",
	"cdew": "22.1",
	"chill": "25",
	"heat": "25",
	"thsw": "---",
	"uv": "---",
	"solar": "---",
	"rainr": "0.00",
	"storm": "0.00",
	"rain15": "0.00",
	"rain1h": "0.00",
	"raind": "0.00",
	"rain24": "0.00",
	"rainmon": "0.66",
	"rainyear": "0.66",
	"etday": "0.00",
	"etmon": "0.00",
	"etyear": "0.00",
	"xt": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"xlt": [
		"---",
		"---",
		"---",
		"---"
	],
	"xst": [
		"---",
		"---",
		"---",
		"---"
	],
	"xh": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"xsm": [
		"---",
		"---",
		"---",
		"---"
	],
	"xlw": [
		"---",
		"---",
		"---",
		"0"
	],
	"bat": "3.67",
	"trbat": "0",
	"foreico": "0",
	"forrule": "---",
	"sunrt": "7:29",
	"sunst": "16:37",
	"hlbar": [
		"29.997",
		"30.007",
		"19:44",
		"19:30",
		"30.644",
		"29.276",
		"30.644",
		"29.276"
	],
	"hlwind": [
		"---",
		"0.0",
		"---",
		"---",
		"21.0",
		"---",
		"21.0",
		"---"
	],
	"hltempin": [
		"73.5",
		"76.0",
		"19:30",
		"19:44",
		"84.0",
		"64.0",
		"84.0",
		"64.0"
	],
	"hlhumin": [
		"31",
		"38",
		"19:41",
		"19:30",
		"65",
		"30",
		"65",
		"30"
	],
	"hltempout": [
		"24.6",
		"24.6",
		"19:35",
		"19:35",
		"164.0",
		"-90.0",
		"164.0",
		"-90.0"
	],
	"hlhumout": [
		"90",
		"90",
		"19:36",
		"19:36",
		"100",
		"58",
		"100",
		"58"
	],
	"hldew": [
		"22",
		"22",
		"19:35",
		"19:35",
		"134",
		"-95",
		"134",
		"-95"
	],
	"hlchill": [
		"25",
		"---",
		"19:35",
		"---",
		"---",
		"25",
		"---",
		"18"
	],
	"hlheat": [
		"---",
		"25",
		"---",
		"19:35",
		"164",
		"---",
		"25",
		"---"
	],
	"hlthsw": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlsolar": [
		"---",
		"0",
		"---",
		"---",
		"0",
		"---",
		"0",
		"---"
	],
	"hluv": [
		"---",
		"0.0",
		"---",
		"---",
		"0.0",
		"---",
		"0.0",
		"---"
	],
	"hlrainr": [
		"0.00",
		"0.00",
		"---",
		"---",
		"34.89",
		"---",
		"34.89",
		"---"
	],
	"hlxt0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt4": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt5": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxt6": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh4": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh5": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxh6": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxst0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxst1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxst2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxst3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlt0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlt1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlt2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlt3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxsm0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxsm1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxsm2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxsm3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlw0": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlw1": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlw2": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	],
	"hlxlw3": [
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---",
		"---"
	]
}

Cool! Thanks for the feedback

Here it is so far, needs work though to convert the imperial units to metric. According to the author he is getting the data directly from the unit and sending them as is.

https://www.wxforum.net/index.php?topic=34312.msg368020#msg368020

image

# --------------------------------------------------------------------------------
# Davis Weather
- platform: mqtt
  name: "Davis Battery"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'V'
  value_template: "{{ value_json.bat }}"
  icon: mdi:battery-charging-wireless
- platform: mqtt
  name: "Davis Outside Temperature"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.tempout }}"
- platform: mqtt
  name: "Davis Outside Humidity"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '%'
  value_template: "{{ value_json.humout }}"
  icon: mdi:water-percent
- platform: mqtt
  name: "Davis Inside Temperature"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.tempin }}"
- platform: mqtt
  name: "Davis Inside Humidity"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '%'
  value_template: "{{ value_json.humin }}"
  icon: mdi:water-percent
- platform: mqtt
  name: "Davis Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windspd }}"
  icon: mdi:weather-windy
- platform: mqtt
  name: "Davis Wind Direction"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°'
  value_template: "{{ value_json.winddir }}"
  icon: mdi:compass
- platform: mqtt
  name: "Davis 2 Min Avg Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windavg2 }}"
  icon: mdi:weather-windy
- platform: mqtt
  name: "Davis 10 Min Avg Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windavg10 }}"
  icon: mdi:weather-windy
- platform: mqtt
  name: "Davis 10 Min Wind Gust"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.gust }}"
  icon: mdi:weather-windy-variant
- platform: mqtt
  name: "Davis Wind Gust Direction"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°'
  value_template: "{{ value_json.gustdir }}"
  icon: mdi:compass

Yes! This could be neat. Thanks!

I was just down in my stuffy not well ventilated basement thinking… If I knew the outside humidity and temperature, I could run a fan to turn over the air, if it’s not too muggy out.

Ooohh, I hoped it was something I could make with an espxx. I wonder if there’s any info on how to interface with the Davis weatherstation data port.

Hi

My neighbor has a David Vantage Pro2 with a console in their living room.

Does the weather station transmit data via RF?

Is there a way I can receive the data without buying my own weather station?

Mike

Yes the base station can re-transmit its data via RF on 900MHz so in theory you could just buy yourself a base station. Also, you can just listen to what their sensor outside is transmitting with your own base station as long as you know what channel they have set it to. The default is channel 1.

Look on page 13 of this pdf:

Was hoping there was a cheaper 3rd party way to just buy an esp8266 or esp12 chip and rf module to integrate into home assistant but it looks quite difficult to do that as there is some variability in the RF data and Davis has made it difficult to do that.

Thanks so much for sharing this — just ordered mine. Last thing to untether from the Mac Mini before going fully over to the raspberry pi for hass.

I’m trying to figure out how to get this to display in Home Assistant. I have the Davis Vantage Vue 2 and the WiFi Logger.
I installed the mosquito MQTT broker in HA.
I configured WiFi Logger FTP export to use the MQTT broker in HA.

But I’m missing the part that would generate the statistics you have. I’m pretty new to HA so am still getting learning how to get data from my devices. Do I need to add something to the configuration.yaml or is there another piece I need to add?

Thanks.

If you look up a bit at this part of the post, you’ll see the code section that you need to add to your ‘sensor’ section in your configuration.yaml

Here is is again incase you can’t find it

# --------------------------------------------------------------------------------
# Davis Weather
- platform: mqtt
  name: "Davis Battery"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'V'
  value_template: "{{ value_json.bat }}"
  icon: mdi:battery-charging-wireless
  
- platform: mqtt
  name: "Davis Outside Temperature"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.tempout }}"
  
- platform: mqtt
  name: "Davis Outside Humidity"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '%'
  value_template: "{{ value_json.humout }}"
  icon: mdi:water-percent
  
- platform: mqtt
  name: "Davis Inside Temperature"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.tempin }}"
  
- platform: mqtt
  name: "Davis Inside Humidity"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '%'
  value_template: "{{ value_json.humin }}"
  icon: mdi:water-percent

- platform: mqtt
  name: "Davis Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windspd }}"
  icon: mdi:weather-windy

- platform: mqtt
  name: "Davis Wind Direction"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°'
  value_template: "{{ value_json.winddir }}"
  icon: mdi:compass

- platform: mqtt
  name: "Davis 2 Min Avg Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windavg2 }}"
  icon: mdi:weather-windy

- platform: mqtt
  name: "Davis 10 Min Avg Wind Speed"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.windavg10 }}"
  icon: mdi:weather-windy

- platform: mqtt
  name: "Davis 10 Min Wind Gust"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'mph'
  value_template: "{{ value_json.gust }}"
  icon: mdi:weather-windy-variant

- platform: mqtt
  name: "Davis Wind Gust Direction"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°'
  value_template: "{{ value_json.gustdir }}"
  icon: mdi:compass

- platform: mqtt
  name: "Davis Barometer"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'in/hg'
  value_template: "{{ value_json.bar }}"
  icon: mdi:nature

- platform: mqtt
  name: "Davis Barometer Trend"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'in/hg'
  value_template: "{{ value_json.bartr }}"
  icon: mdi:nature

- platform: mqtt
  name: "Davis Dew Point"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.dew }}"

- platform: mqtt
  name: "Davis Wind Chill"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.chill }}"

- platform: mqtt
  name: "Davis Heat Index"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: '°F'
  value_template: "{{ value_json.heat }}"

- platform: mqtt
  name: "Davis Rain Rate"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rainr }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Storm Rate"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.storm }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Rain Last 15 Minutes"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rain15 }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Rain Last Hour"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rain1h }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Daily Rain"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.raind }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Rain 24 Hours"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rain24 }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Month Rain"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rainmon }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Year Rain"
  state_topic: "/davis/wflexp.json"
  unit_of_measurement: 'inch'
  value_template: "{{ value_json.rainyear }}"
  icon: mdi:water

- platform: mqtt
  name: "Davis Transmitter Battery Status"
  state_topic: "/davis/wflexp.json"
  value_template: "{{ value_json.trbat }}"
  icon: mdi:battery-charging-wireless

Thanks. I didn’t have any sensors in my configuration.yaml so that was one problem. I had to add “sensors:” before the “- platform: mqtt”

I also need to point the WiFi logger MQTT export to point at “/davis/” as the topic.

Now it’s working. This is one of the things that got me interested in HA as I had to keep going to Weather Underground to get my data.

1 Like

Hi, is there a way to get the data in “metric” format? currently i have the wind speed in mph but i need it in KM/h…; i can’t figure it out…

Hi I’m trying to get this setup and working. What are your settings in the wifilogger export page and in the ha mqtt config page? Thanks, Mark

image

Ok thats what I have and still I can’t get to work soo I can’t figure out if the wifi logger is not sending or HA mqtt is not receiving the topic. How to troubleshoot? Thanks, Mark

Under debug it looks like the logger is sending the data. Is there a way I can see all the output being sent to HA?

Did you connect to your MQTT client with a client to see if the data is getting there?

ex:

root@pi4:~ # mosquitto_sub -h hassio -u hassio -P password -v -t "/davis/#"

If you do this from a linux prompt you should see your topics coming in.