Thanks for your reply Bucking_Horn
Yes, ens33 is because pihole is running on a VM on VMware Workstation.
eWeLink is the app for Sonoff devices, so I use the eWeLink app to pair the door sensor via Bluetooth, then configure my WiFi network SSID and password and those details are saved into the sensor so the device can connect to the Wifi network. This all runs on the cloud, I don't run anything Sonoff-related locally.
I have many (80+) Sonoff devices that use the eWeLink app and have no issues with any of them, just these sensors (4 of them, all have the same issue).
What I mean is that after I configure my WiFi details via the app they are saved on to the device and the device gets an IP from pihole's DHCP, but it shows as "offline" on the app all the time, so they don't send open/closed status, battery level or anything. They never worked on the pihole's DHCP.
If I switch DHCP to my ISP's router, they work fine: they get an IP and show as "online" on the eWeLink app, they send open/closed status updates, battery level... all is as it should be.
Even if I add them to the network using my ISP's router DHCP server, then switch to the pihole DHCP, they work while they have an IP lease from the ISP's router, as soon as I remove the batteries from the device and put them back in, they don't work any more, since they now have to get an IP from pihole's DHCP.
I tried removing them from eWeLink and re-adding them many many times, while testing and trying to see what's going on here. I left them on the ISP's router DHCP server for a week, no issues. Left them on the pihole's DHCP for a week, they never showed online.
And yes, right now I have the ISP's router DHCP server enabled as well, with just a 4-IP range and the 4 devices' MAC addresses manually assigned to an IP within the DHCP's range, they work fine, but I don't like having 2 DHCP servers on the network, and I would like everything to work off the pihole's DHCP server. I cannot configure a static IP for these devices.
Thanks!