---
title: "Satel ETHM-1 Plus"
description: "Satel ETHM-1 Plus links INTEGRA and INTEGRA Plus panels to TapHome over the open TCP integration protocol (port 7094): state of up to 128 alarm zones."
url: "https://taphome.com/en/compatibility/satel-ethm-1-plus/"
language: en
lastmod: 2026-03-28
generator: hugo
ai:
  topics: ["data-pp","alarm-system","tcp","ethernet","zone-monitoring"]
  questions: ["How to integrate Satel INTEGRA alarm system with TapHome?","What does the Satel ETHM-1 Plus TapHome template monitor?","How to connect Satel ETHM-1 Plus via TCP to TapHome?","Why does TapHome not connect to the Satel integration port?","How many alarm zones does the Satel TapHome template support?","What alarm panels are compatible with the ETHM-1 Plus module?"]
---

# Satel ETHM-1 Plus

Communication: Packet Parser → TCP

- [Satel ETHM-1 Plus Product Page](https://www.satel.pl/en/products/intruder-alarms/communication-and-messaging/tcp-ip-communication/ethm-1-plus/)

> Network address
> 
> TapHome reaches this device at the address entered on import. Give the device a fixed address — an IP reservation in the router, or its mDNS name if it supports one — otherwise the integration stops working when the router changes the address.
> 
> [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)

## Integration guide

The Satel ETHM-1 Plus is an Ethernet communication module that connects Satel alarm control panels to a TCP/IP network. TapHome communicates with the module over TCP using the Satel open integration protocol on port 7094 (default). The module acts as a network gateway between TapHome and the alarm panel.

The template provides read-only monitoring of up to 128 alarm zones. Each zone maps to a reed contact device that reports whether the zone is violated (open) or normal (closed). This covers door/window sensors, motion detectors, and any other sensor types assigned to zones in the alarm system.

## Hardware connection

The ETHM-1 Plus module connects to the alarm control panel via the communication bus (DTM and CKM data/clock lines) and to the local network via a standard Ethernet cable (RJ-45, 100Base-TX).

### Wiring to alarm panel

![Wiring diagram showing ETHM-1 Plus connection to INTEGRA/INTEGRA Plus and PERFECTA 64 M/VERSA control panels via DTM, CKM, COM and power terminals](https://taphome.com/images/compatibility/satel-ethm-1-plus/wiring-panel-connection_hu_a7234b2ee3338f26.jpg)

Connect the ETHM-1 Plus module terminals to the alarm panel terminals as follows:

| ETHM-1 Plus | INTEGRA / INTEGRA Plus | PERFECTA 64 M / VERSA |
|-------------|----------------------|----------------------|
| +12V | +KPD | KPD |
| COM | COM | COM |
| DTM | DTM | DTA |
| CKM | CKM | CLK |

> [!NOTE]
> Use an unshielded non-twisted cable for the bus connection. If twisted-pair cable is used, the CKM (clock) and DTM (data) signals must not be sent through the same twisted pair.

### Module address

Set the module address using the ADDRESS jumper pins on the board:

- **INTEGRA 24 / INTEGRA 32:** address 0 to 3
- **Other INTEGRA / INTEGRA Plus:** address 0 to 7
- **PERFECTA 64 M:** address 6
- **VERSA:** address 4 (no keypad with address 4 may be connected)

The address must be different from any other device on the keypad bus.

### Ethernet connection

Connect the module to the local network using a standard Ethernet cable (100Base-TX). The module supports DHCP for automatic IP assignment or manual static IP configuration.

> [!WARNING]
> The module must not be connected directly to a public network (MAN, WAN). Always use a router or xDSL modem. Install the module in the same enclosure as the control panel.

## Configuration

### Enabling the integration protocol

The integration protocol must be enabled in the DLOADX installer program before TapHome can connect:

1. Open the DLOADX program (version 1.22.000 or newer)
2. Navigate to **Structure** → **Hardware** → **Keypads**
3. Select the ETHM-1 Plus module
4. In the **Integration** section, enable the **Integration** checkbox
5. **Disable** the **Encrypted integration** checkbox — TapHome connects via unencrypted integration
6. Note the **Port** number — default is **7094**
7. Save the configuration to the control panel

> [!WARNING]
> Encrypted integration is not supported. The "Encrypted integration" option must remain disabled in DLOADX.

### Network configuration

The module IP address can be found or configured in DLOADX under the Network Settings section of the ETHM-1 Plus module. If DHCP is enabled, the IP is assigned automatically. The current IP can also be read from the LCD keypad using the IP/MAC/IMEI/ID user function in the TESTS submenu.

### Compatible alarm panels

The integration protocol requires specific firmware versions:

| Panel | Minimum Firmware |
|-------|-----------------|
| INTEGRA Plus | 1.06 |
| INTEGRA | 1.06 |
| PERFECTA 64 M | Not supported for integration |
| VERSA | Not supported for integration |

> [!NOTE]
> The integration protocol is only available on **INTEGRA Plus** and **INTEGRA** panels. PERFECTA 64 M and VERSA panels support the ETHM-1 Plus module for remote programming and mobile app access, but do not support the open integration protocol used by TapHome.

## Device capabilities

### Zone monitoring

The template monitors 128 alarm zones as individual reed contact devices. Each zone reports a boolean state:

- **Violated** (open) — the zone sensor has been triggered (door opened, motion detected, etc.)
- **Normal** (closed) — the zone sensor is in its resting state

The zone states are received as a 16-byte bitmask. TapHome sends a binary command (`0x00`) and the alarm panel responds with zone violation states packed as bits — zones 1-8 in byte 1, zones 9-16 in byte 2, and so on up to zones 121-128 in byte 16.

The actual number of usable zones depends on the alarm panel model:

| Panel | Maximum Zones |
|-------|--------------|
| INTEGRA 24 | 24 |
| INTEGRA 32 | 32 |
| INTEGRA 64 / 64 Plus | 64 |
| INTEGRA 128 / 128 Plus | 128 |
| INTEGRA 256 Plus | 128 (template limit) |

Zones beyond the panel's capacity will remain in the normal (closed) state. After importing the template, rename each zone device in TapHome to match its function in the alarm system (e.g., "Zone 1" → "Front Door", "Zone 2" → "Living Room Motion").

### Additional capabilities

The Satel INTEGRA alarm system also supports partition arming/disarming, output control (sirens, lights), zone tamper and alarm states, zone bypass management, system trouble reporting, event log access, roller shutter control, and wireless temperature sensor readings (ATD-100). These capabilities are available through the integration protocol and can be added in a future template update.

## Troubleshooting

### TapHome cannot connect to the module

1. Verify that the **Integration** option is enabled in DLOADX and **Encrypted integration** is disabled
2. Confirm the correct IP address and port (default 7094)
3. Check that no other client (Home Assistant, openHAB, GUARDX) is already connected — only one client can connect to the integration port at a time
4. Verify the INTEGRA panel firmware is version 1.06 or newer
5. Check the ETHM-1 Plus module firmware — version 2.00 or newer is recommended for integration

### Connection drops after ~25 seconds

The ETHM-1 Plus (firmware v2.03+) disconnects clients after 25 seconds of inactivity. Ensure the TapHome polling interval is shorter than 25 seconds.

### Module not visible in DLOADX

1. Confirm the module address is correctly set via ADDRESS jumper pins and does not conflict with other devices on the bus
2. Check the DTM, CKM, COM and +12V connections to the control panel
3. Verify the PWR/LOG LED is lit (power OK) and the BUS LED is blinking (data exchange active)

### Wrong IP address after DHCP renewal

If the module uses DHCP and the router assigns a new IP, TapHome will lose connectivity. Set a static IP in DLOADX or configure a DHCP reservation on the router.

> [!WARNING]
> After 3 consecutive failed connection attempts with an incorrect key, the module stops responding for approximately 20 minutes from that IP address. Wait for the lockout to expire or restart the module.

## Available devices 128

These devices appear in TapHome after import.

Satel INTEGRA Module

Read (module)

```taphome
SENDDATA(BYTECOLLECTION("00"));
```

Zone 1 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x01) > 0;
END
```

Zone 2 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x02) > 0;
END
```

Zone 3 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x04) > 0;
END
```

Zone 4 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x08) > 0;
END
```

Zone 5 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x10) > 0;
END
```

Zone 6 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x20) > 0;
END
```

Zone 7 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x40) > 0;
END
```

Zone 8 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,1) & 0x80) > 0;
END
```

Zone 9 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x01) > 0;
END
```

Zone 10 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x02) > 0;
END
```

Zone 11 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x04) > 0;
END
```

Zone 12 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x08) > 0;
END
```

Zone 13 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x10) > 0;
END
```

Zone 14 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x20) > 0;
END
```

Zone 15 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x40) > 0;
END
```

Zone 16 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,2) & 0x80) > 0;
END
```

Zone 17 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x01) > 0;
END
```

Zone 18 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x02) > 0;
END
```

Zone 19 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x04) > 0;
END
```

Zone 20 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x08) > 0;
END
```

Zone 21 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x10) > 0;
END
```

Zone 22 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x20) > 0;
END
```

Zone 23 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x40) > 0;
END
```

Zone 24 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,3) & 0x80) > 0;
END
```

Zone 25 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x01) > 0;
END
```

Zone 26 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x02) > 0;
END
```

Zone 27 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x04) > 0;
END
```

Zone 28 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x08) > 0;
END
```

Zone 29 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x10) > 0;
END
```

Zone 30 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x20) > 0;
END
```

Zone 31 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x40) > 0;
END
```

Zone 32 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,4) & 0x80) > 0;
END
```

Zone 33 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x01) > 0;
END
```

Zone 34 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x02) > 0;
END
```

Zone 35 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x04) > 0;
END
```

Zone 36 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x08) > 0;
END
```

Zone 37 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x10) > 0;
END
```

Zone 38 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x20) > 0;
END
```

Zone 39 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x40) > 0;
END
```

Zone 40 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,5) & 0x80) > 0;
END
```

Zone 41 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x01) > 0;
END
```

Zone 42 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x02) > 0;
END
```

Zone 43 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x04) > 0;
END
```

Zone 44 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x08) > 0;
END
```

Zone 45 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x10) > 0;
END
```

Zone 46 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x20) > 0;
END
```

Zone 47 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x40) > 0;
END
```

Zone 48 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,6) & 0x80) > 0;
END
```

Zone 49 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x01) > 0;
END
```

Zone 50 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x02) > 0;
END
```

Zone 51 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x04) > 0;
END
```

Zone 52 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x08) > 0;
END
```

Zone 53 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x10) > 0;
END
```

Zone 54 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x20) > 0;
END
```

Zone 55 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x40) > 0;
END
```

Zone 56 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,7) & 0x80) > 0;
END
```

Zone 57 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x01) > 0;
END
```

Zone 58 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x02) > 0;
END
```

Zone 59 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x04) > 0;
END
```

Zone 60 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x08) > 0;
END
```

Zone 61 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x10) > 0;
END
```

Zone 62 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x20) > 0;
END
```

Zone 63 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x40) > 0;
END
```

Zone 64 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,8) & 0x80) > 0;
END
```

Zone 65 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x01) > 0;
END
```

Zone 66 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x02) > 0;
END
```

Zone 67 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x04) > 0;
END
```

Zone 68 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x08) > 0;
END
```

Zone 69 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x10) > 0;
END
```

Zone 70 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x20) > 0;
END
```

Zone 71 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x40) > 0;
END
```

Zone 72 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,9) & 0x80) > 0;
END
```

Zone 73 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x01) > 0;
END
```

Zone 74 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x02) > 0;
END
```

Zone 75 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x04) > 0;
END
```

Zone 76 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x08) > 0;
END
```

Zone 77 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x10) > 0;
END
```

Zone 78 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x20) > 0;
END
```

Zone 79 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x40) > 0;
END
```

Zone 80 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,10) & 0x80) > 0;
END
```

Zone 81 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x01) > 0;
END
```

Zone 82 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x02) > 0;
END
```

Zone 83 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x04) > 0;
END
```

Zone 84 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x08) > 0;
END
```

Zone 85 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x10) > 0;
END
```

Zone 86 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x20) > 0;
END
```

Zone 87 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x40) > 0;
END
```

Zone 88 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,11) & 0x80) > 0;
END
```

Zone 89 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x01) > 0;
END
```

Zone 90 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x02) > 0;
END
```

Zone 91 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x04) > 0;
END
```

Zone 92 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x08) > 0;
END
```

Zone 93 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x10) > 0;
END
```

Zone 94 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x20) > 0;
END
```

Zone 95 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x40) > 0;
END
```

Zone 96 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,12) & 0x80) > 0;
END
```

Zone 97 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x01) > 0;
END
```

Zone 98 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x02) > 0;
END
```

Zone 99 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x04) > 0;
END
```

Zone 100 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x08) > 0;
END
```

Zone 101 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x10) > 0;
END
```

Zone 102 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x20) > 0;
END
```

Zone 103 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x40) > 0;
END
```

Zone 104 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,13) & 0x80) > 0;
END
```

Zone 105 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x01) > 0;
END
```

Zone 106 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x02) > 0;
END
```

Zone 107 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x04) > 0;
END
```

Zone 108 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x08) > 0;
END
```

Zone 109 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x10) > 0;
END
```

Zone 110 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x20) > 0;
END
```

Zone 111 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x40) > 0;
END
```

Zone 112 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,14) & 0x80) > 0;
END
```

Zone 113 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x01) > 0;
END
```

Zone 114 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x02) > 0;
END
```

Zone 115 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x04) > 0;
END
```

Zone 116 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x08) > 0;
END
```

Zone 117 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x10) > 0;
END
```

Zone 118 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x20) > 0;
END
```

Zone 119 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x40) > 0;
END
```

Zone 120 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,15) & 0x80) > 0;
END
```

Zone 121 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x01) > 0;
END
```

Zone 122 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x02) > 0;
END
```

Zone 123 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x04) > 0;
END
```

Zone 124 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x08) > 0;
END
```

Zone 125 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x10) > 0;
END
```

Zone 126 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x20) > 0;
END
```

Zone 127 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x40) > 0;
END
```

Zone 128 Reed Contact Read-only

boolean bitmask

Listener

```taphome
VAR cmd := GETAT(RECEIVEDBYTES,0);

IF(cmd = 0)
   Rc := (GETAT(RECEIVEDBYTES,16) & 0x80) > 0;
END
```

**Connection:** Packet Parser → TCP

Possible improvements (10)

- Partition Control — Arm/disarm partitions — supported by HA and openHAB via integration protocol, not implemented in TapHome template
- Output Control — Control mono/bistable outputs (switches, sirens) — requires user code authentication
- Zone Tamper State — Zone tamper detection channel, available in openHAB binding
- Zone Alarm State — Zone alarm state (separate from violation), available in openHAB binding
- Zone Bypass State — Zone bypass status, available in openHAB binding
- System Troubles — Active trouble indicator and trouble memory, available via system thing
- System Date/Time — System clock synchronization channel
- Event Log — Alarm event history with timestamps and descriptions
- Roller Shutter — Dual-output roller shutter control via dedicated thing type
- Wireless Temperature Sensor (ATD-100) — Temperature readings from ATD-100 wireless detectors, with battery and communication status

## Import parameters

Enter these values when you import the XML.

| Asked in the app       | Default       |
|------------------------|---------------|
| IP address             | `192.168.0.1` |
| Port                   | `7094`        |
| Internal poll interval | `2500`        |

## Sources

- Satel ETHM-1 Plus Installation Manual (FW 3.11)
  
  [www.satel.eu](https://www.satel.eu/en/download/instrukcje/ethm1_plus_en_a1951078.pdf) 2026-03-27
- Satel ETHM-1 Plus Product Page
  
  [www.satel.pl](https://www.satel.pl/en/products/intruder-alarms/communication-and-messaging/tcp-ip-communication/ethm-1-plus/) 2026-03-27
- Home Assistant Satel Integra Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/satel_integra/) 2026-03-27
- openHAB Satel Integra Binding
  
  [www.openhab.org](https://www.openhab.org/addons/bindings/satel/) 2026-03-27

## Related Documentation

- [Packet Parser Integration](https://taphome.com/en/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)

