I have a GW1200 gateway I would like to interface with weewx to collect data from an Ambient WS-2000 weather station. I am not sure what driver to use so I thought I'd check here. I've seen references to the interceptor, a GW1000 driver, and a new driver being developed which talks to the GW1200 itself.
I am running Ubuntu 24.04.2 LTS on an intel mini-PC. I installed weewx 5.2 using the instructions at
https://weewx.com/docs/5.2/quickstarts/debian/. I got it working with the simulator, then with the WeatherflowUDP extension/driver.
The Interceptor seemed like the way to go for my GW1200 and I found it at
https://github.com/matthewwall/weewx-interceptor. I followed the instructions as best I could. I wanted the "sniff" mode and the doc told me to install
pypcap
module. I got this error when I attempted to use "pip3":
/usr/share/weewx/user# pip3 install pypcap
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
I tried "apt install python3-pypcap" and that did not work. I tried "apt-get install libpcap-dev" which installed something, not sure it it satisfied the dependencies of the interceptor module, probably not.
I downloaded the Interceptor modules with "wget -O weewx-interceptor.zip" - that worked. I added it as an extension using "weectl extension install weewx-interceptor.zip". That seemed to work. I edited the weewx.conf file to set the station type to Interceptor and added a basic Interceptor stanza:
[Interceptor]
driver = user.interceptor
device_type = ecowitt-client
I restarted weewx and not unsurprisingly it didn't work (console message below).
I am not sure I have the right driver, and am pretty sure I didn't supply the prerequisite module. Any pointing the right direction would be appreciated.
Dana
17:45:02 zbox weewxd[75068]: INFO __main__: Initializing weewxd version 5.2.0
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Using Python: 3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0]
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Located at: /usr/bin/python3
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Platform: Linux-6.8.0-90-generic-x86_64-with-glibc2.39
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Locale: 'en_US.UTF-8'
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Entry path: /usr/share/weewx/weewxd.py
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: WEEWX_ROOT: /etc/weewx
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Config file: /etc/weewx/weewx.conf
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: User module: /etc/weewx/bin/user
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Debug: 0
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: User: weewx
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Group: weewx
Jan 07 17:45:02 zbox weewxd[75068]: INFO __main__: Groups: weewx
Jan 07 17:45:02 zbox weewxd[75068]: INFO weewx.engine: Loading station type Interceptor (user.interceptor)
Jan 07 17:45:02 zbox weewxd[75068]: INFO user.interceptor: driver version is 0.60
Jan 07 17:45:02 zbox weewxd[75068]: INFO user.interceptor: device type: ecowitt-client
Jan 07 17:45:02 zbox weewxd[75068]: INFO user.interceptor: hardware name: weatherstation via interceptor
Jan 07 17:45:02 zbox weewxd[75068]: INFO user.interceptor: mode is listen
Jan 07 17:45:02 zbox weewxd[75068]: INFO user.interceptor: listen on :80
Jan 07 17:45:02 zbox weewxd[75068]: ERROR weewx.engine: Import of driver failed: [Errno 13] Permission denied (<class 'PermissionError'>)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** Traceback (most recent call last):
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/usr/share/weewx/weewx/engine.py", line 115, in setupStation
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** self.console = loader_function(config_dict, self)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/etc/weewx/bin/user/interceptor.py", line 316, in loader
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** return InterceptorDriver(**config_dict[DRIVER_NAME])
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/etc/weewx/bin/user/interceptor.py", line 2529, in __init__
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** self._device = self.DEVICE_TYPES.get(self._device_type)(**stn_dict)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/etc/weewx/bin/user/interceptor.py", line 2298, in __init__
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** super(EcowittClient, self).__init__(
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/etc/weewx/bin/user/interceptor.py", line 430, in __init__
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** self._server = Consumer.TCPServer(address, port, handler)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/etc/weewx/bin/user/interceptor.py", line 585, in __init__
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** TCPServer.__init__(self, (address, int(port)), handler)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/usr/lib/python3.12/socketserver.py", line 457, in __init__
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** self.server_bind()
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** File "/usr/lib/python3.12/socketserver.py", line 473, in server_bind
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** self.socket.bind(self.server_address)
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL weewx.engine: **** PermissionError: [Errno 13] Permission denied
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL __main__: Unable to load driver: [Errno 13] Permission denied
Jan 07 17:45:02 zbox weewxd[75068]: CRITICAL __main__: **** Exiting...