Automates dust collection in a woodworking shop using a Raspberry Pi and ESP8266 wireless buttons. When you press an "ON" button at a tool, the system activates the corresponding blast gate relay and turns on the dust collector. Pressing "OFF" shuts everything down.
Each tool (jointer, table saw, planer) has a wireless ESP8266 button station mounted nearby. The buttons publish MQTT messages to a MQTT broker running on a Raspberry Pi, which controls relay modules to open/close blast gates and start/stop the dust collector.
[ESP8266 Button] --MQTT--> [Raspberry Pi] --GPIO--> [Relays] ---> [Blast Gates + Dust Collector]
- Raspberry Pi (runs the MQTT broker and control script)
- 4-channel relay module (one relay per blast gate + one for the dust collector)
- ESP8266 board
- Momentary push buttons (one ON, one OFF) wired to GPIO5 and GPIO4
The blast gates are Oneida iVAC Pro Blast Gates, controlled via the relay module.
The wiring for the blast gates can be seen in the diagram below:

See config.yml for the full pin mapping. Summary:
| Function | GPIO Pin |
|---|---|
| Dust Collector | 23 |
| Jointer Relay | 17 |
| Table Saw Relay | 27 |
| Planer Relay | 22 |
- Raspberry Pi with Raspberry Pi OS
- Python 3 with
RPi.GPIO,paho-mqtt, andPyYAML - Mosquitto MQTT broker installed on the Pi (
sudo apt install mosquitto) - ESPHome CLI for flashing the ESP8266 boards
-
Clone the repo:
git clone https://github.com/adamzimmermann/dustcollection.git cd dustcollection -
Install Python dependencies:
pip install paho-mqtt PyYAML RPi.GPIO
-
Start the Mosquitto MQTT broker:
sudo systemctl enable mosquitto sudo systemctl start mosquitto -
Run the control script:
python3 dustcontrol.py
-
Install ESPHome:
pip install esphome
-
Create a
secrets.yamlfile in the project root with your credentials:wifi_ssid: "your-wifi-ssid" wifi_password: "your-wifi-password" mqtt_broker: "" # Your Raspberry Pi's IP address
-
Flash each button board:
esphome run jointer.yml esphome run tablesaw.yml esphome run planer.yml
dust/<tool_id>/on- Activates the tool's blast gate and the dust collectordust/<tool_id>/off- Deactivates all blast gates and the dust collector
Publish:
mosquitto_pub -h PI_IP_ADDRESS -t "dust/jointer/on" -m "1"
Listen:
mosquitto_sub -h PI_IP_ADDRESS -t "dust/#" -v