My filtering is probably around 2 years old and since not all devices I am filtering seem to be supported out of the box (e.g. eQ-3) and I am not sure if it is simpler to setup filtering of tasmota’s incoming MQTT braodcasts using ESPHome, I set up NodeRed once and have been using it since.
I am sure there are muuuuch more elegant solutions (e.g. also Berry on tasmota) but I managed to get NodeRed to do what I want (with a lot of community support, of course).
I stopped looking at the HA sensors a while back, but unless something significant has changed, the HA sensors do not allow filtering of original input data. What I mean is, that the data comes in through the tasmota integration of HA. I cannot place a filter between HA backend/MQTT broker and the tasmota integration. I could only block tasmota from writing sensor data to the database and then create fake sensors that filter and then write. That is too inelegant even for me 
But now I have hit a bottleneck with the lack of BTHome v2 support in tasmota’s bluetooth driver. So I need a new solution to bridge that one gap (currently still need tasmota for my power sockets and eQ-3 TRV anyway).
I currently do not have any presence sensors, btw. Not really interested in who is where yet. Maybe when I have kids 
Essentially I love the simplicity and ease of use of Home Assistant but it does lack a proper data filtering BEFORE it is processed by the different integrations.
So my approach is to have two brokers. One with the original data and a second with the processed data. HA only sees the second, so I do not need to tamper with the data in HA anymore.
Edit:
I know that AI is forbidden as answer, but I checked anyway to see if maybe I overlooked something in the documentation. MAybe someone can say if Claude/CoPilot are correct or not.
Claude.ai and CoPilot both say that
You're correct - that is a limitation. With the bthome platform in ESPHome, you do need to manually specify each entity (temperature, humidity, battery, etc.) for each device.
If that is the case, then ESPHome does not really support BTHome format for Xiaomi mijia devices. Because for pvvx format you only specify the device (based on MAC) and the platform automatically identifies the different entities, just like tasmota does.
If ESPHome only allows manual creation of each individual entity, then okay, I could do that, but then it would be far inferior to having tasmota support BTHome format (because there you do not even have to define the devices, it just automatically identifies them based on their names and reads all entities from the data).