User guide
Installing the app, the controller, pairing, guest keys, automation and security. Document version: 2026-05-30.
1. What Entrixy is
Entrixy is a system for controlling access points remotely: barriers, doors, gates, locks. There are two ways to control them:
- BLE controller — receives the command straight from your phone over Bluetooth and closes the relay. Neither server nor internet is needed, so it works even where there is no network; the app can also open automatically as you approach.
- Internet controller — keeps a permanent connection to the server and opens the object from anywhere, not just nearby (ESP32, ESP8266 or Raspberry Pi). Wi-Fi and constant power are required next to the drive.
- Phone number — opens a gate or barrier by calling the controller number or by caller ID recognition.
- Webhook — sends an HTTP request to a third-party service: a smart home, a relay on your Wi-Fi network, a gate controller API.
Any object can be shared with a guest — a relative, a colleague, a courier — limited by time, schedule or geolocation conditions.
Additional features:
- Automatic triggering as you approach — by geolocation, BLE, connection to your home Wi-Fi network or on a schedule.
- Confirmation by PIN or biometrics before every opening.
- A log of every opening, showing who initiated it.
- Works alongside smart home systems: Home Assistant, Shelly, Tasmota, ESPHome, OpenHAB.
2. Installing the app
The app is distributed as a separate APK file from the site entrixy.com. It is not in the app stores yet.
On an Android phone
- Open on your phone entrixy.com/download/android and tap "Download APK".
- Wait for the download to finish. Open the downloaded
entrixy.apk. - If the system asks, allow installation from unknown sources for your browser or file manager.
- Confirm the installation.
- On first launch the app asks for permissions. What each one is for:
Permission What for Bluetooth (scan + connect) Finding the controller nearby and sending the open command Geolocation Geofence automation scenarios. BLE scanning on older Android versions. Background location Triggering as you approach the object while the app is in the background Camera Scanning the QR code of a guest key Notifications Alerts about an incoming call or an action awaiting confirmation Exempt from battery optimisation So the background service is not killed by power saving
After installation the app asks which role you want to use it in:
- "I am the owner" — you will have a controller, pair it and be able to share access with other people.
- "I have an invitation" — someone sent you a QR code or a link. You scan it and get access to their object.
3. Preparing the controller
If you already have a ready-made controller with factory Entrixy firmware, skip this section and go straight to pairing.
By default the controller works in momentary mode: it closes a pair of contacts on the drive or lock for a short time (0.5–2 seconds), just as if someone pressed the Open button.
For drives and locks that need separate open/close inputs or a held state there is bistable mode: the controller switches the position and keeps track of it — the app shows Open/Closed rather than just Triggered. The mode is chosen when you build the firmware in the configurator.
Any of these will work as a controller:
- A board you assemble yourself — an ESP32 development board (S3 DevKit, the classic WROOM, C3 SuperMini and the like) with a relay module attached. The most flexible option, but it takes basic soldering skills.
- An off-the-shelf Wi-Fi relay with a dry NO/COM contact, reflashed to Entrixy. Shelly Plus 1 and Shelly Plus 1PM fit — relays with extra Open terminals made specifically for gate and garage automation. You will have to open the case and connect a USB-to-serial adapter to the board's UART pins.
- An off-the-shelf Wi-Fi device without reflashing with its stock cloud, Tasmota or ESPHome, driven through an Entrixy webhook. No BLE required and easier to start with, but it draws more power and responds more slowly. Described in the section "Integrations".
If you are building the controller yourself, or need firmware for a non-standard pin layout, it takes three steps:
3.1 Firmware configurator
Open entrixy.com/esp/ble/ — it is a form with the firmware parameters. (The hub entrixy.com/controller/ lets you choose between the BLE and Internet options first — here we follow the BLE route.)
What to fill in (the form is split into sections):
- 1. Pick your board. Tap the card for your board (ESP32 DevKit, ESP32-S3 DevKit, ESP32-C3 SuperMini, a ready Shelly Plus 1 relay, a bare module and so on) — the model, pins and polarity are filled in automatically. You can adjust them by hand afterwards.
- 2. Board. The ESP32 chip model — it determines which pins are available. The "Detect connected chip" button recognises the board over USB in Chrome or Edge.
- 3. Lock type. Latch — a single Open pulse. Bistable — two positions (open and close on separate pins); the state is stored and visible in the app.
- 4. Pins and polarity. Open relay pin — the GPIO the relay module's control input is wired to; its NO/COM contacts go to the drive's Open terminals. Level during the pulse and idle level (HIGH/LOW): for most off-the-shelf modules and for Shelly the pulse is LOW and idle is HIGH; for direct transistor switches it is the other way round. Pulse length — typically 500–2000 ms. Below that: the pairing button pin (usually the built-in BOOT button, GPIO0; a long press clears the pairing) and optional LEDs (set −1 if you have none).
- 5. Power and battery saving. BLE cycle parameters: advertising cycle period (how often the controller wakes up — a lower value means a faster response, a higher one saves power), advertising window length, connection hold time, pairing window and sleep between cycles (10–20 s — a pair of AA batteries lasts for months; 0 means no sleep, for USB power).
- 6. External clock (optional). An RTC module (DS3231, DS1307, PCF8563) and the I2C pins — needed only if you issue guests time-limited keys. Without one you can skip this section.
Once the form is filled in, press "Build the program".
- The first build takes 25–60 seconds, depending on the chip.
- If someone has already built a program with the same parameters, it comes from the cache instantly.
- When the build is done you get the buttons "Upload to the controller" (flashing straight from the browser), "Download file" and "Open in the editor".
3.2 Flashing from the browser
The simplest way — no extra software to install.
- Desktop Chrome, Edge, Opera or Brave version 89 or newer. Firefox, Safari and mobile browsers have no WebSerial support and will not work.
- A USB cable to connect the controller to the computer.
- A USB-to-COM driver. For most boards it installs itself. If your board uses a CH340 or CP210x chip and no port appears, install the manufacturer's driver.
- Connect the controller to the computer over USB.
- On the configurator page press "Upload to the controller".
- The browser shows a USB device picker. Choose your controller from the list.
- A progress log appears on the page:
- Reading the chip information (type, MAC address).
- Downloading the firmware from the server.
- Writing starts. The progress bar runs from 0 to 100%.
- Rebooting the controller.
- When it finishes, the controller reboots by itself and starts running the new firmware.
If something goes wrong:
| Symptom | Fix |
|---|---|
| "WebSerial is not supported" | Open the page in desktop Chrome or Edge |
| The controller does not appear in the port picker | Install the USB-to-COM driver (CH340, CP210x) |
| "Failed to connect" after a long wait | Hold the BOOT (or IO0) button on the board, press RESET, release RESET, then BOOT — this puts the controller into bootloader mode manually |
| "Port is already open" | Close Arduino IDE, PuTTY, MicroPython and anything else holding the port |
3.3 Reflashing off-the-shelf Wi-Fi relays
Off-the-shelf Wi-Fi relays with a dry contact (Shelly Plus 1, Shelly Plus 1PM) ship with the manufacturer's own firmware. To get direct BLE control with no cloud and no dependence on Wi-Fi, that firmware has to be overwritten with Entrixy.
These devices are designed for gate and barrier automation: they have a pair of dry NO/COM terminals that wire straight to your drive's Open terminals. The case is compact, the relay is certified and, unlike a home-made module, needs no junction box.
What you will need:
- A USB-to-serial adapter (CP2102, CH340, FTDI). It costs a few dollars.
- Four or five wires with crocodile clips or jumper leads.
- A screwdriver to open the case.
- A multimeter is useful for ringing out the pins if your unit is a newer revision and they differ from the published ones.
Steps:
- Open the configurator entrixy.com/esp/ble/. Pick the preset named after your relay in the section "Off-the-shelf Wi-Fi relays for reflashing".
- The pin settings are filled in automatically. They come from open pinout databases (templates.blakadder.com, devices.esphome.io) and are tested on the common revisions.
- On the configurator page, in the section "Getting to the UART on off-the-shelf Wi-Fi relays", find your model and follow the wiring instructions.
- Connect the USB-to-serial adapter: TX to the device's RX, RX to the device's TX, GND to GND. Power the device from the adapter's 3.3 V, or from its own supply with the mains disconnected.
- Put the ESP into bootloader mode (on most devices, tie GPIO0 to GND while powering up).
- Press "Build the program" and wait for it to finish.
- Upload it with "Upload to the controller" or with esptool on your computer.
- Disconnect all the wires and close the case. Give the device its normal mains power.
- The relay shows up over BLE as a device waiting to be paired. Pair it as described in section 4. Pairing the controller.
- Wire the NO/COM terminals on the mains side of the device in parallel with your drive's Open button (see the table of typical terminals in the configurator section "Connecting the relay to the drive").
If your model is not among the presets:
- Look it up on templates.blakadder.com — an open database of Tasmota templates.
- The template lists the GPIOs for the main parts: Relay1 = relay pin, Button1 = button pin, Led1 = status LED.
- Make sure the device has NO/COM output terminals (a dry contact) — without them it cannot drive a gate motor, only switch power to a load.
- Enter the GPIO values you found into the configurator form by hand.
3.4 Flashing manually with esptool
If WebSerial does not work (on an older computer or a mobile device, say), download the firmware file and use the esptool utility.
- On the configurator page press "Download file" and save the .bin.
- Install esptool with Python:
pip install esptool - Connect the controller to the computer.
- Run the flashing command:
On Windows, instead ofesptool.py --chip auto --port /dev/ttyUSB0 \ write_flash 0x0 entrixy-ble-XXXX.bin/dev/ttyUSB0use the COM port (for exampleCOM3). Substitute your own file name. The address0x0is correct — our file already contains the bootloader, the partition table and the application in one merged image. - When it is done, unplug the controller and plug it back in to start the new firmware.
4. Pairing the controller with the app
After flashing, the controller waits to be paired. In that mode it broadcasts a "waiting for an owner" signal for 90 seconds. If nobody pairs within that time, it switches to normal mode with no owner.
- Open the app in the owner role.
- Go to Settings → "Add object" → type "BLE".
- The app starts looking for controllers in pairing mode.
- If the controller is already in pairing mode (just flashed, or its pairing button was pressed recently), it appears in the list. Select it.
- If it does not appear, press the pairing button on the controller. The LED starts blinking rapidly and the list in the app refreshes.
- The app performs an ECDH key exchange. It takes a few seconds. After that the controller is yours — nobody else can pair with it until you reset it.
- Enter a name for the object ("Yard barrier", "Side gate", "Storage room lock"). You can pick an icon or upload a photo.
5. Objects
An object is the thing you want to control. One user can have several objects of different types: the yard barrier (a BLE controller), the operator's number (a phone number), a relay in a smart home (a webhook).
5.1 BLE controller
Added through the "Pairing the controller" section above. On the main screen it appears as a card with a status indicator:
- Grey — the controller is not visible over the air (out of BLE range or switched off).
- Orange — the controller is visible, but you are not in the trigger zone yet (when automation is set up).
- Green — you are in the trigger zone and it is opening.
- Grey with a green outline and the caption "Tap to call" — it triggered recently; tap to open again.
Tapping the card opens the object directly, if your security settings allow it.
5.2 Phone number
For gates and barriers that open when you call a number.
- Settings → "Add object" → type "Call".
- Enter the operator's number or the barrier controller's number.
- Set "Hang up after N seconds" if you want a short opening call (5–10 seconds) with no conversation.
- Choose how it is handled:
- Direct call — the app dials the number itself.
- Notification — guests get an "open?" prompt, you confirm it yourself and the call goes from your phone.
5.3 Webhook
For integration with anything that accepts HTTP commands: a smart home, a relay on your Wi-Fi network, a gate API, IFTTT.
- Settings → "Add object" → type "URL".
- Enter the URL of the target service.
- Choose the HTTP method: GET, POST, PUT.
- Add headers if they are required (Authorization, X-API-Key).
- Provide the request body for POST or PUT.
- Choose the mode: app or server (details in section 8. Webhooks).
6. Guest keys
A guest key is an invitation for another person to get access to your objects. The guest uses the same Entrixy app, just in the guest role.
Creating a key
- On the main screen: Guests → Create key.
- Enter the recipient's name ("Courier", "Anna"). You see this name in the log; the guest sees a different one.
- Tick the objects you are granting access to. Any subset of your objects will do.
- Set up automation for each object you share (geofence, schedule, BLE zone). You can lock the settings so the guest cannot change them, or offer defaults the guest may relax or tighten.
- Save. The key appears in the guest list.
Handing over the key
The key's card offers several ways to pass it to the recipient:
- QR code — the recipient scans it with their phone camera. The quickest way when they are next to you.
- Link — copied to the clipboard. Send it by messenger, email or SMS. The recipient taps the link, it opens the Entrixy app (if installed) and adds the key.
- Text — a short activation code you can read out loud.
Managing guests
The Guests section lists the keys you have issued. For each of them you can:
- Change which objects the guest sees.
- Change the automation rules.
- Change the displayed name.
- Revoke the key entirely — the guest loses access immediately.
- See the status: online or offline, and when it was last used.
The guest's event log
Every opening by a guest lands in the owner's log marked "Guest: name". This works even when the guest used BLE directly with no network — the event is stored on the guest's phone and sent the moment it connects to the server.
7. Automation
Every object can be set to trigger automatically on conditions. Open it from the object menu → Automation.
7.1 Geolocation
Opens as you approach a point on the map.
- Place the point on the map (press "Use current" if you are standing by the object).
- Set the radius — the distance at which it triggers (typically 20–50 metres for yards, 100–200 for large car parks).
- Save.
How triggering works:
- In the outer zone — the radius plus 250 metres, but never closer than 300 m to the point — the card turns orange: you are approaching. The trigger is armed.
- Inside the radius it opens automatically, once. The card flashes green, then turns grey with a green outline.
- It will not fire again until you leave the outer zone. That prevents repeat openings while you move around the point.
7.2 Wi-Fi
Opens when your phone connects to a particular Wi-Fi network. Handy for "when I am home, open the gate as I drive up".
- Turn the Wi-Fi rule on.
- Add a network. The app lists the ones available nearby.
- You can add several networks (home and work, say). By default any match triggers it.
7.3 Time
A limit by time of day and day of week. Use it to restrict a guest ("access during working hours only") or as a condition in your own automation.
- Add an interval: from one time to another. Several intervals a day are allowed.
- Tick the days of the week.
- You can create several different intervals with different days.
7.4 BLE
Triggers on the strength of the controller's BLE signal. Good for locks and barriers where GPS is inaccurate — indoors or in an underground car park.
- Set the trigger radius (from 1 to 30 metres).
- Inside the radius the card turns green and it opens automatically.
- Within range but outside the radius the card is orange.
- It fires again only after you leave the range.
7.5 Combining rules
You can enable several rules at once and choose how they combine:
- OR (the default) — fires when any one of them is met. For example: "at home (Wi-Fi) or arriving (geofence)".
- AND — fires only when every rule is met at once. For example: "working hours (schedule) AND at the office (Wi-Fi)". In AND mode there is no automatic opening: the card merely hints that the conditions match and you may tap it.
7.6 Action confirmation
You can require an extra confirmation before every opening:
- PIN code — a short numeric code entered in the app.
- Biometrics — fingerprint or face scan, using the system Android dialog.
- Confirmation — a simple "Open? Yes / No" dialog. It guards against an accidental tap.
These settings can be baked into a guest's key — require a PIN from the guest, for instance, but not from yourself.
8. Webhooks in detail
A webhook object works in one of two modes. Which one you pick depends on who should make the HTTP request: your phone or our server.
8.1 App mode
The HTTP request is sent by the app on your phone. When it fires — you tap, or a guest asks through the server — the server signals your phone, and the phone makes the request to the target address.
When to choose it:
- The target service lives on your local network (Shelly, Tasmota, a smart home relay) and is not reachable from the internet. The request goes from your phone, inside your network.
- You do not want our server to know the target URL.
Limitation: your phone must be online at that moment. If it is switched off or has no internet, the webhook will not be sent.
8.2 Server mode
Our server sends the HTTP request itself, from its own IP address. Your phone is not needed at that moment.
The request body is JSON with an HMAC signature:
{
"action": "open",
"object_id": 42,
"timestamp": 1717075200,
"nonce": "8f2a1c4b5e6d7f80",
"signature": "a3b4c5d6e7f8..."
}
The signature is computed like this: build the string timestamp.nonce.action.object_id and compute HMAC-SHA256(that string, webhook_secret), then compare it with the signatureyou received. Reject the request if |now − timestamp| is more than 300 seconds old. The full format and a test vector are on entrixy.com/webhook.
When to choose it:
- The target service is reachable from the internet (Home Assistant on a public address, a cloud API, IFTTT).
- You want it to open even when your phone is off — on a schedule, say, or at a guest's request.
- The target service requires signed requests as protection against forged calls from outside.
Security: when you create the webhook you set a webhook_secret. Guests never receive that secret, even when they have access to the object. The server signs the requests with it on your behalf.
Timeout: if the target service does not answer within 15 seconds, the server closes the connection and returns an error status.
9. Smart home integrations
The /integrations/ directory on the site holds ready-made configurations for the popular platforms. Each has its own README with a wiring diagram.
| Platform | What to do |
|---|---|
| Home Assistant | Copy configuration.yaml from the directory. In Entrixy create a webhook in server mode with the URL https://your-ha/api/webhook/entrixy. |
| Shelly | In Entrixy create a webhook in app mode with the URL http://shelly-ip/relay/0?turn=on. A plain GET call: the phone makes the request inside your home network. |
| Tasmota | Same as Shelly. URL: http://tasmota-ip/cm?cmnd=Power%20Toggle. |
| ESPHome | Alternative firmware for the ESP32 if you prefer the ESPHome ecosystem to our BLE protocol. The directory has a sample YAML config. |
| OpenHAB | Similar to Home Assistant. It accepts HTTP requests through the rules API. |
| curl | A test script. It accepts our JSON, verifies the HMAC signature and prints the result. Use it for debugging. |
| Flask | A Python skeleton for your own service. It accepts our JSON and validates the signature. |
10. The guest web app
If a guest does not want to install the Android app, or has an iPhone, there is a web version at entrixy.com/app/.
The web app supports:
- Opening through a phone number and a webhook.
- The event log.
- Installing to the home screen as a PWA (through the browser's "Install app" menu).
The web app does not support:
- Working with a BLE controller directly (a browser has no access to the Bluetooth stack at the required level).
- Background geolocation automation.
- Notifications through FCM.
For everything to work without limits, a guest is better off installing the Android app.
11. Security
The link with the controller
The first pairing uses ECDH X25519. Both sides compute the shared secret at the same time — the secret itself never goes over the air.
Every open command (FIRE) is signed with HMAC-SHA256 using the shared secret and a one-time nonce the controller issues beforehand. Sniffing the air will not let anyone replay the command — that nonce is already spent.
Guest access
A guest gets not the shared secret but a token with a limited lifetime (24 hours by default), signed by the owner. The controller checks the owner's signature and the expiry — even a leaked guest token stops working once it expires.
The token is renewed automatically through the server for as long as the owner's pairing stands. Once the owner revokes the key, the next renewal fails and the guest loses access.
The link between app and server
All connections use TLS (HTTPS and WSS). User data — phone numbers, object and guest names — is stored on the server end-to-end encrypted, so even the server's owner cannot read it without your key.
The cryptography is specified in detail in the document E2EE architecture.
Webhooks in server mode
Requests are signed with HMAC-SHA256. The secret you set on the server is never handed to clients or guests. Anyone who intercepts a request cannot replay it, because the timestamp expires after 300 seconds — a rule the target service enforces.
12. Common questions and troubleshooting
The BLE controller is not visible
- Check that the controller has power. The LED should be blinking.
- Check that Bluetooth on the phone is switched on.
- If battery saving is on, disable it for Entrixy.
- Move closer to the controller, within a metre or two — at the edge of the range the signal can drop.
- If the controller is set to deep sleep (deep_sleep_wake_s > 0), it is not on the air all the time — only during its awake window. Wait 10–30 seconds.
It fires several times in a row
Most likely you are standing right on the edge of the trigger zone and the signal is fluctuating because of interference. What to do:
- Reduce the BLE zone radius in the automation settings.
- Move the controller away from metal objects that shield the signal.
A guest says the card is grey and will not open
Check the status of their key in your Guests section. Possible reasons:
- The guest's token has expired — more than 24 hours have passed since their phone was last online, for instance. The guest should open the app and connect to a network, and the token renews itself.
- You revoked the key by accident. Create a new one.
- The guest is out of range — BLE objects require being physically next to the controller.
The app closed by itself
Android is aggressive about killing background services to save battery. To prevent that:
- Open App settings → Entrixy → Battery and choose Unrestricted.
- On Samsung, add Entrixy to Never sleeping apps, under device care.
- On Xiaomi and Redmi, allow Autostart for Entrixy.
- On Huawei, add it to Protected apps and allow background activity.
The webhook does not reach Home Assistant
- Check the URL in the webhook settings. It must be complete — with the https:// scheme and the port if it is non-standard.
- Check that Home Assistant is reachable from outside (in server mode) or from your home network (in app mode).
- Watch the Home Assistant logs as it fires — there should be an entry for the incoming request.
- Check the firewall on your router in case it blocks incoming connections.
Call notifications do not work on Huawei
Push notifications rely on Google FCM, which is unavailable on Huawei without Google Services. As a workaround, keep the app open rather than minimised, or use BLE pairing and geofences instead of notifications.
How to update the app
Open entrixy.com/download/android on your phone and install the latest version over the existing one. Your data is kept.
When an update is mandatory — a critical security fix — the app shows a blocking dialog on start.
How to delete your account and all data
Open the app → Settings → Delete account. Everything on the server is erased within 30 days, the standard period stated in the privacy policy.
For immediate deletion, send a request to the support address given in the Privacy Policy.
Document updated 2026-05-30. If anything is unclear or your scenario is not covered, write to hello@entrixy.com.