i am nearly finished doing something similar, except
(1) i position weewx as the manager of the wx hardware via station-specific interface - weewx is the app that encapsulates the wx and provides its data as mqtt to the world (unless the wx is natively mqtt). e.g. the vantage driver is solid.
(2) i also position weewx as manager of an abstract weather station that receives its observations from many sources - and i have chosen mqtt as the common messaging medium i.e. lots of little IoT devices provide data to weewx via mqtt. this is a different role from (1), and i know some weewx users stream to data consolidaters that can provide this abstraction instead.
(3) i wrote my own bi-directional mqtt gateway, for use in all my mqtt apps (the paho client leaves a lot ’to the reader’ to implement in a production environment so needs a whole software layer above it). most of my former data services have been migrated to separate apps that talk to weewx via mqtt. (some of my weewx data services manipulate data within weewx so are not externalised.) i have a weewx data service built on the bi-directional gateway as the interface between weewx and mqtt world.
i expect there is a lot of overlap with the excellent MQTTSubscribe. but my requirement was for a generic gateway outside of weewx, and the weewx interface is just one of the apps built on it