I’ve recently set up my Raspberry Pi Zero W to be a dedicated traffic filtering machine in my home network.
A fantastic tool for this is Pi-Hole. It blocks ads on any device in your network, improves overall network performance and allows you to monitor the traffic and statistics.
After I’ve set up my Pi0W:
- renamed the hostname to
pihole
withsudo raspi-config
(optional) - installed Pi-Hole with
sudo curl -sSL https://install.pi-hole.net | bash
I started integrating it with openHAB, obviously
A few notes:
-
I don’t run openHAB and Pi-Hole on the same machine. I would strongly advise to use separate devices for performance reasons.
-
You need JSONPATH transformation add-on installed
-
You also need HTTP binding (from openHAB 1.x, since there’s no 2.x equivalent for now)
Screenshot
Files
/icons/classic/pihole.svg
Save the file from there -> https://wally3k.github.io/style/phv.svg
/services/http.cfg
Add the following lines at the bottom. Change the IP address in pihole.url
parameter to match your Pi-Hole address.
Update interval is set to 10 minutes (600000 milliseconds).
pihole.url="http://192.168.X.XX/admin/api.php"
pihole.updateInterval=600000
/items/pihole.items
Group gPiHole "Pi-Hole" <pihole>
Number PiHole_DomainsBeingBlocked "Domains being blocked [%d]" <pihole> (gPiHole) {http="<[pihole:100000:JSONPATH($.domains_being_blocked)]"}
Number PiHole_DnsQueriesToday "DNS queries today [%d]" <chart> (gPiHole) {http="<[pihole:100000:JSONPATH($.dns_queries_today)]"}
Number PiHole_AdsBlockedToday "Ads blocked today [%d]" <keyring> (gPiHole) {http="<[pihole:100000:JSONPATH($.ads_blocked_today)]"}
Number PiHole_AdsPercentageToday "Ads percentage today [%.2f %%]" <keyring> (gPiHole) {http="<[pihole:100000:JSONPATH($.ads_percentage_today)]"}
Number PiHole_UniqueDomains "Unique domains [%d]" <network> (gPiHole) {http="<[pihole:100000:JSONPATH($.unique_domains)]"}
Number PiHole_QueriesForwarded "Queries forwarded [%d]" <chart> (gPiHole) {http="<[pihole:100000:JSONPATH($.queries_forwarded)]"}
Number PiHole_QueriesCached "Queries cached [%d]" <wind> (gPiHole) {http="<[pihole:100000:JSONPATH($.queries_cached)]"}
Number PiHole_ClientsEverSeen "Clients ever seen [%d]" <screen> (gPiHole) {http="<[pihole:100000:JSONPATH($.clients_ever_seen)]"}
Number PiHole_UniqueClients "Unique clients [%d]" <screen> (gPiHole) {http="<[pihole:100000:JSONPATH($.unique_clients)]"}
String PiHole_Status "Status [%s]" <status> (gPiHole) {http="<[pihole:100000:JSONPATH($.status)]"}
sitemap
sitemap something {
...
Frame item=gPiHole label="Pi-Hole" {
Text item=PiHole_DomainsBeingBlocked
Text item=PiHole_DnsQueriesToday
Text item=PiHole_AdsBlockedToday
Text item=PiHole_AdsPercentageToday
Text item=PiHole_UniqueDomains
Text item=PiHole_QueriesForwarded
Text item=PiHole_QueriesCached
Text item=PiHole_ClientsEverSeen
Text item=PiHole_UniqueClients
Text item=PiHole_Status
}
...
}
And you’re all set!
You can now write some automation rules e.g.:
- If Pi-Hole is disabled (
PiHole_Status.state == "disabled"
), do something - If a new client has been connected (
PiHole_UniqueClients.state
), flash a light or notify me - If number of queries cached increased (
PiHole_QueriesCached
), play a sound - And so on
Please share your automation ideas in this thread.
Bonus - dashboard link
Modify your /services/dashboard.cfg file by adding the following at the bottom:
pihole.link-name=Pi-Hole
pihole.link-url=http://192.168.X.XX/admin/
pihole.link-imageurl=data:image/jpeg;base64,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
And you’ll have direct access to it from openHAB dashboard (http://youropenhab/start/index
)
Cheers