Ok, here's the basic process. The first thing to do is to see if the GW1000 recognizes the devices you want to add. In this case, I'm not sure that the GW1000 recognizes the WH25. It doesn't really need any of that data because it has built in sensors that overlap. In addition, I find that the built in sensors are more responsive than the WH25. The battery life of the WH25 could be better as well. So the thing to do is to use the WS View app to see what devices the GW1000 recognizes. Once you determine that there's more data you want the interceptor driver to collect, you can see what the GW1000 actually sends.
Following the steps in the first post, set things up to the point where you can run the interceptor driver directly. This is the point where you can run this command (from the first post).
PYTHONPATH=bin python bin/user/interceptor.py --device=observer --mode=listen --port=8000 --debug
We're interested in the "raw data" portion of the messages. It consists of attribute value pairs delimited by "&" characters. This is what's needed to add the missing attributes to interceptor.py. There are basically three steps.
First, add the missing attributes to the part of the driver that parses those attributes. For example, here's the part where I added the eventrainin attribute. This is in the section of code that covers the observer portion of the interceptor driver. This puts the value of the eventrainin attribute in the rain_event variable. You will probably find that most of the attributes are already handled in other parts of the driver.
# firmware GW1000B_V1.4.9 (ecowitt GW1000)
'rainratein': 'rain_rate',
'wh65batt': 'battery',
'eventrainin': 'rain_event',
Second, add the value to the database values returned to weewx. Here's the section of code that returns the rain_event value. "rainEvent" is the database value name that I chose to use in weewx. This value didn't exist in the database and I didn't add that value to the database schema. I just used that value for current observations. If your data fits within the weewx database schema, you'll need to use that database value name. If it's not in the database schema and you want to log the data in the database, you'll need to extend the database schema. This is described in the weewx documentation, but it's a somewhat advanced topic.
# map database fields to observation names
DEFAULT_SENSOR_MAP = {
'pressure': 'pressure',
'barometer': 'barometer',
'outHumidity': 'humidity_out',
'inHumidity': 'humidity_in',
'outTemp': 'temperature_out',
'inTemp': 'temperature_in',
'windSpeed': 'wind_speed',
'windGust': 'wind_gust',
'windDir': 'wind_dir',
'windGustDir': 'wind_gust_dir',
'radiation': 'radiation',
'dewpoint': 'dewpoint',
'windchill': 'windchill',
'rain': 'rain',
'rainRate': 'rain_rate',
'UV': 'uv',
'txBatteryStatus': 'battery',
'soilMoist1': 'soilmoisture',
'pm2_5': 'pm2_5',
'rainEvent': 'rain_event',
}
Third, you should add any unused attributes to the IGNORED_LABELS list. Here's the list as it is currently. This list keeps spurious messages from appearing in the log.
IGNORED_LABELS = ['relbaro', 'rainin',
'weeklyrain', 'monthlyrain',
'weeklyrainin', 'monthlyrainin',
'realtime', 'rtfreq',
'action', 'ID', 'PASSWORD', 'PASSKEY', 'dateutc',
'softwaretype',
'stationtype', 'baromrelin', 'maxdailygust',
'hourlyrainin', 'freq', 'model']
That's basically it. Depending on what data you're getting into weewx, you may need to handle it in the weewx code. So, did this answer your question?