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:

Any object can be shared with a guest — a relative, a colleague, a courier — limited by time, schedule or geolocation conditions.

Additional features:


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

  1. Open on your phone entrixy.com/download/android and tap "Download APK".
  2. Wait for the download to finish. Open the downloaded entrixy.apk.
  3. If the system asks, allow installation from unknown sources for your browser or file manager.
  4. Confirm the installation.
  5. On first launch the app asks for permissions. What each one is for:
    PermissionWhat for
    Bluetooth (scan + connect)Finding the controller nearby and sending the open command
    GeolocationGeofence automation scenarios. BLE scanning on older Android versions.
    Background locationTriggering as you approach the object while the app is in the background
    CameraScanning the QR code of a guest key
    NotificationsAlerts about an incoming call or an action awaiting confirmation
    Exempt from battery optimisationSo the background service is not killed by power saving
A tip for Samsung and Huawei. Open Settings → Battery → Never sleeping apps (or a similar item) and add Entrixy.

After installation the app asks which role you want to use it in:


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:

Smart plugs and in-wall Wi-Fi switches will not do. Athom Plug, Shelly Plus Plug S and similar devices switch mains voltage to a load and have no dry NO/COM output. To drive a gate motor you need either a relay with a dry contact (Shelly Plus 1) or a module you build yourself.
Important note about chips. Only ESP32-family chips with Bluetooth support direct BLE control: ESP32, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2. The ESP32-S2 chip and the older ESP8266 have no Bluetooth — they can only be used with the Wi-Fi firmware or through a webhook.
When battery operation is not the point. If the drive has Wi-Fi and a mains socket nearby and you want to open it remotely, consider the Internet option. That is the alternative route, where the controller is always online and does not depend on how far away your phone is.

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. 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. 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. 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. 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. 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. 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".

3.2 Flashing from the browser

The simplest way — no extra software to install.

Requirements:
  • 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.
  1. Connect the controller to the computer over USB.
  2. On the configurator page press "Upload to the controller".
  3. The browser shows a USB device picker. Choose your controller from the list.
  4. 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.
  5. When it finishes, the controller reboots by itself and starts running the new firmware.
Do not unplug USB while flashing. If the process is interrupted, the controller stays in bootloader mode and has to be flashed again.

If something goes wrong:

SymptomFix
"WebSerial is not supported"Open the page in desktop Chrome or Edge
The controller does not appear in the port pickerInstall the USB-to-COM driver (CH340, CP210x)
"Failed to connect" after a long waitHold 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:

Safety. Disconnect the device from the mains before opening it. Never connect a USB-to-serial adapter to a device that is under mains voltage — the difference in ground potential will destroy your computer's USB port.

Steps:

  1. 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".
  2. 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.
  3. 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.
  4. 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.
  5. Put the ESP into bootloader mode (on most devices, tie GPIO0 to GND while powering up).
  6. Press "Build the program" and wait for it to finish.
  7. Upload it with "Upload to the controller" or with esptool on your computer.
  8. Disconnect all the wires and close the case. Give the device its normal mains power.
  9. The relay shows up over BLE as a device waiting to be paired. Pair it as described in section 4. Pairing the controller.
  10. 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:

  1. Look it up on templates.blakadder.com — an open database of Tasmota templates.
  2. The template lists the GPIOs for the main parts: Relay1 = relay pin, Button1 = button pin, Led1 = status LED.
  3. 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.
  4. 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.

  1. On the configurator page press "Download file" and save the .bin.
  2. Install esptool with Python:
    pip install esptool
  3. Connect the controller to the computer.
  4. Run the flashing command:
    esptool.py --chip auto --port /dev/ttyUSB0 \
      write_flash 0x0 entrixy-ble-XXXX.bin
    On Windows, instead of /dev/ttyUSB0 use the COM port (for example COM3). Substitute your own file name. The address 0x0 is correct — our file already contains the bootloader, the partition table and the application in one merged image.
  5. 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.

  1. Open the app in the owner role.
  2. Go to Settings → "Add object" → type "BLE".
  3. The app starts looking for controllers in pairing mode.
  4. If the controller is already in pairing mode (just flashed, or its pairing button was pressed recently), it appears in the list. Select it.
  5. If it does not appear, press the pairing button on the controller. The LED starts blinking rapidly and the list in the app refreshes.
  6. 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.
  7. Enter a name for the object ("Yard barrier", "Side gate", "Storage room lock"). You can pick an icon or upload a photo.
Clearing the pairing. To hand the controller to another owner or pair it again, hold the pairing button for more than 5 seconds. The controller returns to its factory state and re-enters pairing mode for 90 seconds.

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:

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.

  1. Settings → "Add object" → type "Call".
  2. Enter the operator's number or the barrier controller's number.
  3. Set "Hang up after N seconds" if you want a short opening call (5–10 seconds) with no conversation.
  4. 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.

  1. Settings → "Add object" → type "URL".
  2. Enter the URL of the target service.
  3. Choose the HTTP method: GET, POST, PUT.
  4. Add headers if they are required (Authorization, X-API-Key).
  5. Provide the request body for POST or PUT.
  6. 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

  1. On the main screen: Guests → Create key.
  2. Enter the recipient's name ("Courier", "Anna"). You see this name in the log; the guest sees a different one.
  3. Tick the objects you are granting access to. Any subset of your objects will do.
  4. 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.
  5. 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:

Managing guests

The Guests section lists the keys you have issued. For each of them you can:

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.

  1. Place the point on the map (press "Use current" if you are standing by the object).
  2. Set the radius — the distance at which it triggers (typically 20–50 metres for yards, 100–200 for large car parks).
  3. Save.

How triggering works:

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".

  1. Turn the Wi-Fi rule on.
  2. Add a network. The app lists the ones available nearby.
  3. 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.

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.

7.5 Combining rules

You can enable several rules at once and choose how they combine:

7.6 Action confirmation

You can require an extra confirmation before every opening:

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:

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:

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.

PlatformWhat to do
Home AssistantCopy configuration.yaml from the directory. In Entrixy create a webhook in server mode with the URL https://your-ha/api/webhook/entrixy.
ShellyIn 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.
TasmotaSame as Shelly. URL: http://tasmota-ip/cm?cmnd=Power%20Toggle.
ESPHomeAlternative firmware for the ESP32 if you prefer the ESPHome ecosystem to our BLE protocol. The directory has a sample YAML config.
OpenHABSimilar to Home Assistant. It accepts HTTP requests through the rules API.
curlA test script. It accepts our JSON, verifies the HMAC signature and prints the result. Use it for debugging.
FlaskA 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:

The web app does not support:

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

  1. Check that the controller has power. The LED should be blinking.
  2. Check that Bluetooth on the phone is switched on.
  3. If battery saving is on, disable it for Entrixy.
  4. Move closer to the controller, within a metre or two — at the edge of the range the signal can drop.
  5. 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:

A guest says the card is grey and will not open

Check the status of their key in your Guests section. Possible reasons:

The app closed by itself

Android is aggressive about killing background services to save battery. To prevent that:

The webhook does not reach Home Assistant

  1. Check the URL in the webhook settings. It must be complete — with the https:// scheme and the port if it is non-standard.
  2. Check that Home Assistant is reachable from outside (in server mode) or from your home network (in app mode).
  3. Watch the Home Assistant logs as it fires — there should be an entry for the incoming request.
  4. 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.