This project is a step-by-step guide of what i did to remotely control my garage door using a Raspberry Pi, Home Assistant and Homebridge.
- Step 1: DuckDNS domain name setup
- Step 2: Port Forwarding
- Step 3: DuckDNS Home Assistant install and setup
- Step 4: Port Forward validation
- Step 5: Internal/External URL configuration change
- Step 6: Security checks
This project was made because i wanted to control my garage doors with my phone.
Because I have an iPhone and other people who live with me don't, i will be using Home Assistant and Homebridge, that can do the bridge to Apple Homekit.
For this project you will need:
- raspberry pi pico W or raspberry pi pico WH 8€
- relay 1,40€
- reed switch 11€
- jumper cables
- soldering
- Raspberry pi 3 or Raspberry pi 4 (recommended)
To do all these things first you will need to install some things on your Raspberry Pi.
You can do this tutorial and by the end, you should be good to go to the next step:
raspberry pi pico w installations
If you didn't buy the Raspberry Pi Pico WH you need to sold the pins.
It should stay like this:
Next, you will need to choose what pins you will use.
I've used the pin GP6 for the reed switch that tells if the garage door is open
and the pin GP12 to confirm if the garage door is closed
.
Note that you need to connect the other cable of the reed switch to GND, it doesn't matter which cable.
On the relay i've connected the IN1 of the relay to pin GP16
, the GND of the relay to pin 38
, and the VCC of the relay to pin 36
.
The relay will be used in NO(Normally open) mode.
Tip
Normally open (NO) contacts connect the circuit when the relay is activated; the circuit is disconnected when the relay is inactive.
Normally closed (NC) contacts disconnect the circuit when the relay is activated; the circuit is connected when the relay is inactive.
I've used the pin GP0 to confirm if the garage door is closed
.
Because the relay has 2 channels i've connected the IN2 of the relay to pin GP20
.
You can see the pinout of the raspberry pi pico w below:
Tip
Here you can do some tests to check if everything is ok.
To test the relay with an LED copy the code in test_relay_with_LED.py
and paste it into thonny editor.
Add the LED to the breadboard, connecting its Negative Leg to one of the Ground Pins of the Pico.
Connect one side of the Resistor to the Positive Leg of the LED.
Connect the other side of the Resistor to the Common terminal of the Relay.
Connect the Normally Open terminal of the Relay to the VBUS pin of the Pico.
To test the relay and sensors with an LED copy the code in test_relay_reedswitch_with_LED.py
and paste it in thonny editor. Then the LED should turn ON when the sensor is closed.
To see your IP address just copy the code in connect_pi_to_network_and_show_IP.py
and paste it into thonny editor.
You just need to change the WIFI settings to yours, sot the pico can connect to your WIFI. Then run the code.
That IP address is the IP of your rasberry pi pico w, take note of the IP address you will need it down below.
To control your garage door just copy the code in main.py
and paste it into thonny editor.
Important
You need to keep the name of the file main.py so the code is always running
Note
Remember to change the WIFI settings and the pins you connected the reed switches and the relay.
Now you need to install Home Assistant operating system on your raspberry pi 4.
To do this just go to this site and follow the steps.
Within a few minutes after connecting the Raspberry Pi, you will be able to reach your new Home Assistant.
In the browser of your desktop system, enter homeassistant.local:8123.
If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or http://X.X.X.X:8123
(replace X.X.X.X with your Raspberry Pi’s IP address).
Once you've completed installing and now have access to your Home Assistant you need to install Homebridge.
To do that you can see this video or follow the following steps.
- Go to
Configuration
->Add-ons
->Add-on Store
Click on the three dots
->Repositories
->Paste this address (https://github.com/MikeJMcGuire/HASSAddons) and click 'Add'
.
Now you should see a section like this:
- Now on that section
click on Portainer and install it
. - Once installed
disable Protection Mode
andenable Watchdog
and click on Start. - After a moment
click on Open Web UI
andlogin to Portainer
.
- The default credentials are
admin for username
andportainer for the password
. Change the password once you've logged in
.
- Now on Home click on
Primary
->Stacks
->Add Stacks
- Put
homebridge
as a name and thenpaste the following lines into the web editor
:
version: '2'
services:
homebridge:
image: oznu/homebridge:ubuntu
restart: always
network_mode: host
environment:
- PGID=1000
- PUID=1000
- HOMEBRIDGE_CONFIG_UI=1
- HOMEBRIDGE_CONFIG_UI_PORT=8581
- TZ=Europe/Lisbon
volumes:
- /mnt/data/supervisor/homeassistant/homebridge:/homebridge
- Note to
replace Europe/Lisbon to your timezone
. Click deploy the stack
and give it some time.
The Homebridge UI web interface will allow you to install, remove and update plugins, and modify the Homebridge config.json and manage other aspects of your Homebridge service.
Login to the web interface by going to homeassistant.local:8581.
If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8581 or http://X.X.X.X:8581
(replace X.X.X.X with your Raspberry Pi’s IP address).
In the Homebridge UI go to plugins and then search for this plugin and install it:
On Plugins, go to HTTP Advanced Accessory plugin click on the 3 dots, and go to JSON config.
To add the Exterior garage door copy and paste the code from Exterior.json
.
Now i need to add the Interior garage door, for that i just click on the plus button and then copy and paste the code from Interior.json
.
Note
Be aware to change the YOUR_HOMEBRIDGE_USERNAME
, YOUR_HOMEBRIDGE_PASSWORD
and YOUR_RASPBERRY_PI_PICOW_IP_ADDRESS
variables to the ones you have.
Remember that when you're done you need to restart Homebridge
so that the changes have an effect.
After that on the main page, a QR code like this should appear:
Important
Keep that 7-digit code
. You will need it in the next step.
To add the Homebridge accessories to Home Assistant you just need to go to the main page in Home Assistant
-> Settings
-> Devices and Services
and something like this should appear in discovered:
Click on it and then paste the 7-digit code
obtained in the step before.
The final step is to connect to your garage.
- Go to the motor in your garage and see what pins open the garage.
To do that just take a multimeter or a pliers and connect two screws like the picture below shows (one of them should be ground) and test all of them until your garage open:
Note
One end must always be connected to the motor ground.
Warning
For your safety on the step below disconnect the electricity from the motor.
- Once you've found what pins open your garage door, just reconnect the COM of the relay to the ground pin you just discovered on your motor and the NO to the other pin that opens and closes the garage door.
Once that is completed you can turn on the electricity on the motor, go to your phone and open the garage door on Home Assistant app!!!
Now you can control your garage door with your network.
To control the garage door from anywhere you can watch this video or follow the steps below.
- Go to DuckDNS webstite and log in
- Once you log in you can
create a subdomain
. It can be anything you want as long as it is not already in use.
Note
This will be the URL that you will be using to connect to your HomeAssistant.
- Change the current IP to 8.8.8.8 and save it.
Important
Copy your token from the top because we will need it in the next step.
Tip
Port forwarding is a way of allowing people from the internet to connect to you. A port forward puts a device outside of your router as if it was directly connected to the internet.
Next, you need to go to your router webpage and configure Port Forward.
If you don't know your router webpage you can check your router. But usually is something like http://192.168.1.1/.
If you don't know how to Port Forward check this website and search for your router.
In my case (Vodafone Gigabox router) these were the steps:
- Go to
Internet
->Port Mapping
->Click the Plus Button
Something like this should appear:
- On
Name put HomeAssistant
- Choose
TCP as the service
- Choose
Home Assistant as the Device
- The
LAN IP should be the same as your Home Assistant IP
- On
Public Port put 8123
- On
LAN Port put 8123
- Click
save
Now add another Port Mapping. Repeat all as the above
but onPublic Port put 443
Add another Port Mapping.- On
Name put Homebridge
- Choose
TCP as the service
- Choose
Home Assistant as the Device
- The
LAN IP should be the same as your Home Assistant IP
- On
Public Port put 8581
- On
LAN Port put 8581
Tip
Port 8183 will be used for mobile apps and your desktop. Port 443 is useful for services like Alexa and Google Home. Port 8581 is for access to your Homebridge.
Now you need to install DuckDNS add-on.
- To do that
in Home Assistant go to Add-on store
,search for DuckDNS add-on and install it
. Enable Watchdog
andAuto update
.- Go to the
Configuration page
andpaste the token
that you copy into the DuckDNS webpage. - Put
true in accept_terms
. - Put
your domain name in the domains box
andsave it
. Go to the Log page and keep refreshing
until you see something like this:
- Once that's done
go to the DuckDNS webpage and replace 8.8.8.8 with your public IP address
(the one blurred above 31.48.x.x) - Go to your
Home Assistant Configuration.yaml and add this code
:
# Loads default set of integrations. Do not remove.
default_config:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
- Next go to
Developer tools
->Check Configuration
and if you get a successful messageRestart Home Assistant
.
- Go to
[https://canyouseeme.org/](https://canyouseeme.org/)
- In
Your IP put the blurred one
(in this case 31.48.x.x) and inPort to check put 8123
and click Check Port - It should appear a successful message, if it doesn't go back and check if you haven't entered any wrong information
Repeat these steps for ports 443 and 8581
.
- Go to
Settings
->System
->Network
- In Home Assistant URL set Internet and Local Network to the DuckDNS domain name and save it
- Make sure you have some decent passwords
- Once everything is tested and working enable the IP ban in the Home Assistant Configuration.yaml
# Loads default set of integrations. Do not remove.
default_config:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
ip_ban_enabled: true
login_attempts_threshold: 5
Note
This will only allow 5 login attempts from a certain IP address. Once those login attempts have been reached it will automatically blacklist that IP address.
- Next go to
Configurations
,check your configuration
, andrestart the Home Assistant
.
If you want to add your accessories to the Apple Homekit app you can watch this video or follow these steps:
- Go to
Configuration.yaml
file andadd this code
:
homekit:
- name: HA Bridge
port: 51828
filter:
include_entities:
- cover.interior
- cover.exterior
Note
In include_entities you can put all the accessories you want.
- Next go to
Configurations
,check your configuration
, andrestart the Home Assistant
. - Once is restarted, in Notifications, you should see a Homekit Pairing QR code.
- Open the Home app on your iPhone, scan it and add the Bridge.
Note
These accessories will not work remotely on the Apple Homekit app.
You can control them remotely only on your Home Assistant app.