[DRIVER] Ecowitt GW1000 Wi-Fi Gateway

  • LAN communication only, no cloud/weather service needed.

  • One Hubitat device for each Ecowitt sensor for easy dashboard tiles and RM rules handling.

  • On-the-fly Imperial <-> Metric conversion.

  • Tile HTML templates, which allows endless tiles customization, including displaying multiple attributes with dynamic weather icons in a single tile.

What differentiate this from other implementations is the ability to dynamically create child devices, one for every sensor connected to the gateway. In this way device states are readily available in Hubitat dashboard tiles and RM rules.

I tried to implement a basic object-oriented architecture where the gateway/parent driver is in charge of dispatching data to each sensor/child driver and it's mostly agnostic of the content. Child drivers are, in turn, tasked with updating Hubitat with their internal state.

Suggestions and constructive criticisms are welcome and needed.

Supported sensors:
  • PWS Sensor
  • Indoor Weather Sensor
  • Outdoor Weather Sensor
  • Multi-Channel Weather Sensor
  • Rain Gauge Sensor
  • Air Quality (PM2.5, PM10, CO₂) Sensor
  • Soil Moisture Sensor
  • Water Leak Sensor
  • Lightning Detection Sensor
  • Wind & Solar Sensor
  • WeatherFlow Tempest Stations (via local UDP relay)

PS: Me testing the WH51 sensor :slightly_smiling_face:


@mircolino Just what I was looking for, what timing. I have the GW1000, WH51 and the WH31B ordered. thanks

Wondering if perhaps someone from Ecowitt (monitoring this thread) or other Ecowitt owners can help me:

After supporting the :

  • WH32 - Outdoor Temperature and Humidity Sensor
  • WH31 - Multi-Channel Temperature & Humidity Sensor
  • WH51 - Soil Moisture Sensor

I'm now trying to support the following:

  • WH40 - Rain Gauge Sensor
  • WH41 - Air Quality Sensor
  • WS80 - Ultrasonic 6-in-1 Sensor

I have them on order but it will take a while to get them, so I was hoping to get a headstart.

Is the following data returned accurate?:


  • rainratein
  • eventrainin
  • hourlyrainin
  • dailyrainin
  • weeklyrainin
  • monthlyrainin
  • yearlyrainin
  • totalrainin
  • wh40batt → mapped to hubitat capability "Battery"


  • pm25_ch[1-4]
  • pm25_avg_24h_ch[1-4]
  • pm25batt[1-4] → mapped to hubitat capability "Battery"


  • winddir
  • windspeedmph
  • windgustmph
  • uv → mapped to hubitat capability "UltravioletIndex"
  • solarradiation → mapped to hubitat capability "IlluminanceMeasurement"
  • humidity → mapped to hubitat capability "RelativeHumidityMeasurement"
  • tempf → mapped to hubitat capability "TemperatureMeasurement"

Am I missing something? Is the WS80 temperature and humidity overlapping the WH32? Can you have them both connected at the same time to the same station?
Any other native hubitat capability mapping such as rain and wind?

I'll try and remember and pull this info.

1 Like

The pm25_ch and battery follow the mapping you have. I didn't include the avg into my ISY integration so I'll pull out my PM25 and put fresh batteries in it and get back to you.

EDIT: PM25 follows -> pm25_avg_24h_ch2



  • Added GitHub versioning.
    The drivers pulls the latest GitHub release metadata and updates a state if a new version is available:

  • While waiting for a bunch of sensors I purchased I tentatively added support for the following: WH40, WH41, WH43, WS68 and WS80

If you’re interested in participating, Im trying to get more developers using [BETA] Hubitat Package Manager so we don’t all have to build our own versioning/updated systems.


@mircolino I am waiting on things to arrive. Just wondering, do we still need the Soil Moisture (WH51) driver or has it been incorporated into the RF Sensors driver? thanks

1 Like

TLDR: no :wink:

I streamlined the architecture and now all Ecowitt sensors are supported by the generic RF Sensor driver. The parent driver will still create an instance for each sensor detected.
It's just much more efficient this way, uses less hubitat memory and it's easier to maintain.

I am. Love the concept and want to support it to build critical mass. Was reading about the process today when the thread got bumped. I'll work on it tomorrow.


Hi, thanks for sharing your drivers, these devices look great (I don't have any yet). Local communication with hubitat is huge.

Do you know if the sensors can report to more than one ecowitt receiver? For example, WH32 sends data to both a GW1000 (and on to hubitat through your integration) and one of their local display devices with its native RF protocol?

I'm pretty sure they can.
I have a WH32 that's happily reporting back to both a GW1000 and to an old ObserverIP WS-0800-IP at the same time.

1 Like

Yes they can. I have a GW1000 and a HP255 display both working fine. The system is a typical RF where the sensors broadcast and the GW1000 and displays receive so you can have multiple receivers.


I started working on a document outlining the current data mapping and conversion used by the driver.

Since I don't have (yet) some of the sensors to verify it, if you know of some of the data to be inaccurate, please let me know and I'll fix it right away.




Battery reporting range is now uniform among sensors. All returning to Hubitat a level between 0% (empty) and 100% (full).

@mircolino I have a dumb question. I have the gateway, WH31, WH51 connected to the phone app. I have your RF sensor and Gateway drivers loaded in HE. Here it is: How do I see the WH31 and WH51 in HE?

@razorwing, did you create a Ecowitt Gateway device like at point (3) of the installation instructions?

Also, it may take up to 5 minutes after you enter the mac address and "save preferences" for the children to show up.

Yep, it looks like I missed Step 2. I now see a couple of devices that are not in the phone app. I only can assume they are either coming from the gateway or the pws I have. I see the WH40 and a WH32B. I have the pws in the phone app and I can't find a way to delete it.

Yes, the WH32B is the Internal sensor (the little wire hanging outside the GW1000). In the Ambient Weather systems it's external.

The Hubitat driver takes a PWS and splits it into separate sensors, so for example a WS-2902 should become a WH40 + WS80. This is so you can create individual tiles in a dashboard.
You can always rename the devices by editing the "label" in Hubitat

I have the WS-2902 as well but I don't see the WS80 as a child.

Download the Hubitat app