TapHome

Alarmové ústredne Paradox cez PAI (MQTT)

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 11. 2026

Vyžaduje externú bránu

PAI (Paradox Alarm Interface, open-source MQTT bridge) — stránka produktu

Alarmové ústredne Paradox cez PAI (MQTT)

Šablóna Paradox PAI prepája alarmové ústredne Paradox — Spectra SP, Magellan MG a Digiplex EVO — s TapHome cez MQTT pomocou PAI, Paradox Alarm Interface. PAI je open-source most, nie produkt Paradoxu. Beží na malom počítači pri ústredni (napríklad Raspberry Pi, NAS alebo počítač s Home Assistant), s ústredňou komunikuje cez jej sériový port alebo modul IP150 a stav ústredne publikuje do brokera MQTT. TapHome tieto správy číta a posiela späť príkazy na armovanie. Protokol, ktorý PAI používa, Paradox nezverejňuje.

Šablóna ukazuje stav jednej oblasti a oblasť armuje alebo disarmuje, ukazuje štyri zóny s ich upozorneniami a spína jeden výstup PGM. Pre ústredne Digiplex EVO s modulom PRT3 je samostatná šablóna, ktorá používa oficiálny protokol Paradoxu a nepotrebuje počítač: Paradox Digiplex EVO cez PRT3 (TCP).

Komunitná šablóna — zatiaľ neotestovaná s TapHome na skutočnej ústredni. Šablóna vznikla v portáli TapHome z dokumentácie PAI a otestovaná bola len so simulátorom PAI a ústredne na lokálnom TapHome Core 2025.2, nie so skutočnou ústredňou Paradox. Overte ju na svojej inštalácii skôr, než sa na ňu budete spoliehať pri zabezpečení; skúsenosti z praxe sú vítané. XML stiahnete na tejto stránke alebo v portáli TapHome: Paradox cez PAI — komunitná šablóna, a importujete ho ako nový modul.

Bezpečnosť: kto môže publikovať do brokera, môže alarm disarmovať. PAI armuje a disarmuje ústredňu bez užívateľského kódu ústredne. Zapnite na brokeri MQTT meno a heslo (vstavaný broker TapHome to podporuje) a zadajte ich v PAI aj v tejto šablóne.

Podporované ústredne

RadModelyPoznámky
Spectra SPSP4000, SP5500, SP6000, SP7000, SP65Na modeloch „+“ (SP5500+, SP6000+, SP7000+) je sériový port zamknutý pre zariadenia iných výrobcov. Paradox predáva odomykací kód, alebo PAI pripojte cez IP150
Magellan MGMG5000, MG5050, MG5050+, MG5075Aj MG5050+ má zamknutý sériový port. MG6250 je v PAI len experimentálne
Digiplex EVOEVO48, EVO96, EVO192, EVOHDFirmvér EVO 7.50 a novší šifruje sériový port; PAI 3.8 to zvláda s heslom pre PC. EVO nemá armovanie Sleep

Hardvérové zapojenie

PAI sa k ústredni pripojí jedným z týchto spôsobov:

  • Sériový port ústredne — prevodníkom USB na TTL k počítaču s PAI alebo sériovým mostom ESP32 v lokálnej sieti.
  • Modul IP150 v lokálnej sieti. IP150 prijme naraz len jedného klienta: kým je pripojené PAI, aplikácie Paradoxu Insite Gold a BlueEye sa cez ten istý modul nepripoja. IP150+ s firmvérom 6.x a IP180 lokálne pripojenie neumožňujú.

Počítač s PAI aj TapHome Core musia dosiahnuť ten istý broker MQTT — zvyčajne broker vstavaný v TapHome Core.

Konfigurácia

Broker MQTT v TapHome

Zapnite v TapHome MQTT Broker a nastavte meno a heslo — pozrite MQTT Broker. PAI aj táto šablóna sa nimi prihlasujú k brokeru.

PAI

V konfigurácii PAI nasmerujte MQTT na broker, ktorý používa TapHome. Pre broker vstavaný v TapHome je to IP adresa TapHome Core — meno taphome.mqtt.broker.local funguje len vnútri Core, nie pre PAI:

1
2
3
4
5
6
7
MQTT_ENABLE: true
MQTT_HOST: 192.168.1.10        # IP address of the TapHome Core with the built-in broker
MQTT_PORT: 1883
MQTT_USERNAME: pai
MQTT_PASSWORD: 'replace-me'
MQTT_BASE_TOPIC: paradox
MQTT_RETAIN: true              # default: the broker keeps the last state for TapHome

MQTT_USE_NUMERIC_STATES môže ostať na predvolenej hodnote (False); šablóna číta True/False aj 1/0.

Kľúče oblasti, zón a PGM

PAI pomenúva každú oblasť, zónu a PGM podľa jej názvu v ústredni, pričom medzery a špeciálne znaky nahradí znakom _ (napríklad Front door → Front_door). Kľúče prečítajte z brokera po spustení PAI, napríklad:

1
mosquitto_sub -h 192.168.1.10 -u pai -P 'replace-me' -t 'paradox/states/#' -v
1
2
3
paradox/states/partitions/Area_1/current_state disarmed
paradox/states/zones/Front_door/open False
paradox/states/outputs/Gate/on False

Časť za partitions/, zones/ a outputs/ je kľúč. Kľúče rozlišujú veľké a malé písmená.

Parametre importu

Parameter importuPopisPredvolená hodnota
Adresa brokera MQTTtaphome.mqtt.broker.local pre broker vstavaný v TapHome, alebo adresa iného brokerataphome.mqtt.broker.local
Port brokera MQTTPort brokera1883
Meno a heslo brokera MQTTÚčet na brokeri(prázdne)
Základná téma PAIMQTT_BASE_TOPIC v PAIparadox
Kľúč oblastiKľúč oblastiArea_1
Kľúče zón 1–4Kľúče štyroch zónZone_1 … Zone_4
Kľúč výstupu PGMKľúč jedného výstupu PGMPGM_1

Pre ďalšie oblasti alebo zóny importujte šablónu znova s inými kľúčmi a zariadenia, ktoré nepotrebujete, vymažte.

Funkcie zariadení

Oblasť

Ukazuje stav oblasti a oblasť armuje alebo disarmuje.

StavPAI current_statePo výbere v TapHome
Disarmovanýdisarmedpošle disarm
Armovanýarmed_awaypošle arm
Armovaný Stayarmed_homepošle arm_stay
Armovaný Sleeparmed_nightpošle arm_sleep (len SP a MG)
Armovaniearming (odchodové oneskorenie)nepošle nič
Poplachtriggerednepošle nič

Príkazy sa publikujú do paradox/control/partitions/<key> bez príznaku retain, ako to PAI vyžaduje. Armovanie a Poplach sú stavy, ktoré hlási ústredňa, a nikdy nepošlú príkaz. Pri štarte TapHome Core prevezme oblasť stav z uchovanej (retained) správy PAI a nič nepošle.

Zóny 1–4

Každá zóna ukazuje, či je otvorená alebo zatvorená. Upozornenia sa zobrazia, keď je zóna v poplachu, sabotovaná alebo obídená, alebo keď má bezdrôtová zóna slabú batériu. Každé upozornenie ostane, kým PAI nenahlási, že stav pominul.

Výstup PGM

Zapína a vypína jeden výstup PGM ústredne a ukazuje jeho stav. Či sa dá PGM spínať, závisí od ústredne a od toho, ako ho naprogramoval inštalatér. Pri štarte TapHome Core prevezme PGM stav z PAI a nespína sa.

Modul

Modul ukáže chybu, keď PAI nahlási, že je offline (paradox/interface/availability), napríklad keď PAI stratilo spojenie s ústredňou alebo sa zastavilo.

Bez PAI

Výstup PGM ústredne zapojený na vstup TapHome (armovaný, poplach) a relé TapHome zapojené na zónu ústredne s kľúčovým spínačom fungujú s každou ústredňou Paradox, len s menším počtom stavov a bez podrobností o zónach.

Riešenie problémov

TapHome neukazuje žiadne stavy

Skontrolujte, že PAI beží a publikuje (mosquitto_sub … -t 'paradox/#'), že základná téma a kľúče presne sedia a že v PAI je zapnuté MQTT_RETAIN.

Armovanie nič neurobí

Skontrolujte, že PAI a TapHome používajú ten istý broker, a v paradox/interface/command_status si prečítajte odpoveď PAI. Na EVO armovanie Sleep nie je k dispozícii.

Chyba modulu „PAI reports offline“

PAI stratilo ústredňu alebo sa zastavilo; pozrite log PAI.

PAI sa k ústredni nepripojí

Na SP5500+, SP6000+, SP7000+ a MG5050+ je sériový port zamknutý — vyžiadajte si od Paradoxu odomykací kód, alebo sa pripojte cez IP150. Kým je PAI pripojené cez IP150, zatvorte Insite Gold a BlueEye. IP150+ s firmvérom 6.x ani IP180 lokálne pripojenie PAI neumožňujú.

Dostupné zariadenia

Most Paradox PAI MQTT Modul
Vlastné premenné
baseTopic (string)Základná téma PAI (MQTT_BASE_TOPIC v konfigurácii PAI), predvolene paradox
Enter the same value as MQTT_BASE_TOPIC in the PAI configuration as the import parameter PAI base topic.

Paradox PAI MQTT Bridge

Listener
IF RECEIVEDMSG.TOPIC = baseTopic + "/interface/availability"
    paiStatus := TOSTRING(RECEIVEDMSG.PAYLOAD);
END
# PAI publishes availability as a retained message: offline = PAI lost the panel or stopped
IF paiStatus = "offline"
    ADDERROR(1, "PAI reports offline - no updates from the alarm panel. Check PAI and its connection to the panel.");
END
Oblasť Viacstavový prepínač

Stav jednej oblasti ústredne a jej armovanie alebo disarmovanie; Armovanie a Poplach sa len zobrazujú a nič neposielajú

enum string
Hodnoty / Stavy: Disarmovaný · Armovaný · Armovaný Stay · Armovaný Sleep · Armovanie · Poplach
Premenná: partitionKey — Kľúč oblasti, ako ho PAI publikuje v paradox/states/partitions/<kľúč>, napríklad Area_1

Oblasť

Čítanie stavu prepínača
RETURN(Mu);
Zápis stavu prepínača
# Only the four commands are sent. Arming and Alarm are states reported by the panel, never commands.
VAR cmd := SWITCH(Mu, 0, "disarm", 1, "arm", 2, "arm_stay", 3, "arm_sleep", "");
IF cmd != ""
    MQTTPUBLISH(baseTopic + "/control/partitions/" + partitionKey, cmd);
END
Listener
IF RECEIVEDMSG.TOPIC = baseTopic + "/states/partitions/" + partitionKey + "/current_state"
    VAR state := TOSTRING(RECEIVEDMSG.PAYLOAD);
    # PAI current_state: disarmed, arming (exit delay), armed_away, armed_home (stay), armed_night (sleep), triggered
    IF state = "disarmed"
        Mu := 0;
    ELSEIF state = "armed_away"
        Mu := 1;
    ELSEIF state = "armed_home"
        Mu := 2;
    ELSEIF state = "armed_night"
        Mu := 3;
    ELSEIF state = "arming"
        Mu := 4;
    ELSEIF state = "triggered"
        Mu := 5;
    END
END
Zóna 1 Jazýčkový kontakt Len na čítanie

Stav zóny ústredne (otvorená alebo zatvorená) s upozorneniami na poplach, sabotáž, slabú batériu bezdrôtovej zóny a obídenie

boolean
Premenná: zoneKey — Kľúč zóny, ako ho PAI publikuje v paradox/states/zones/<kľúč>, napríklad Front_door

Zóna 1

Čítanie
RETURN(Rc);
Listener
VAR prefix := baseTopic + "/states/zones/" + zoneKey + "/";
VAR topic := RECEIVEDMSG.TOPIC;
IF INDEXOF(topic, prefix) = 0
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);
    VAR isOn := IF(payload = "True" OR payload = "1", 1, 0);
    IF topic = prefix + "open"
        Rc := isOn;
    ELSEIF topic = prefix + "tamper"
        zoneTamper := isOn;
    ELSEIF topic = prefix + "rf_low_battery_trouble"
        zoneLowBattery := isOn;
    ELSEIF topic = prefix + "bypassed"
        zoneBypassed := isOn;
    ELSEIF topic = prefix + "alarm"
        zoneAlarm := isOn;
    END
END
# Warnings are rebuilt from the stored zone states on every message, so they stay until the panel clears them
IF zoneAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF zoneTamper = 1
    ADDWARNING(2, "Zone tampered");
END
IF zoneLowBattery = 1
    ADDWARNING(3, "Wireless zone: low battery");
END
IF zoneBypassed = 1
    ADDWARNING(4, "Zone bypassed");
END
Zóna 2 Jazýčkový kontakt Len na čítanie

Stav zóny ústredne (otvorená alebo zatvorená) s upozorneniami na poplach, sabotáž, slabú batériu bezdrôtovej zóny a obídenie

boolean
Premenná: zoneKey — Kľúč zóny, ako ho PAI publikuje v paradox/states/zones/<kľúč>, napríklad Front_door

Zóna 2

Čítanie
RETURN(Rc);
Listener
VAR prefix := baseTopic + "/states/zones/" + zoneKey + "/";
VAR topic := RECEIVEDMSG.TOPIC;
IF INDEXOF(topic, prefix) = 0
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);
    VAR isOn := IF(payload = "True" OR payload = "1", 1, 0);
    IF topic = prefix + "open"
        Rc := isOn;
    ELSEIF topic = prefix + "tamper"
        zoneTamper := isOn;
    ELSEIF topic = prefix + "rf_low_battery_trouble"
        zoneLowBattery := isOn;
    ELSEIF topic = prefix + "bypassed"
        zoneBypassed := isOn;
    ELSEIF topic = prefix + "alarm"
        zoneAlarm := isOn;
    END
END
# Warnings are rebuilt from the stored zone states on every message, so they stay until the panel clears them
IF zoneAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF zoneTamper = 1
    ADDWARNING(2, "Zone tampered");
END
IF zoneLowBattery = 1
    ADDWARNING(3, "Wireless zone: low battery");
END
IF zoneBypassed = 1
    ADDWARNING(4, "Zone bypassed");
END
Zóna 3 Jazýčkový kontakt Len na čítanie

Stav zóny ústredne (otvorená alebo zatvorená) s upozorneniami na poplach, sabotáž, slabú batériu bezdrôtovej zóny a obídenie

boolean
Premenná: zoneKey — Kľúč zóny, ako ho PAI publikuje v paradox/states/zones/<kľúč>, napríklad Front_door

Zóna 3

Čítanie
RETURN(Rc);
Listener
VAR prefix := baseTopic + "/states/zones/" + zoneKey + "/";
VAR topic := RECEIVEDMSG.TOPIC;
IF INDEXOF(topic, prefix) = 0
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);
    VAR isOn := IF(payload = "True" OR payload = "1", 1, 0);
    IF topic = prefix + "open"
        Rc := isOn;
    ELSEIF topic = prefix + "tamper"
        zoneTamper := isOn;
    ELSEIF topic = prefix + "rf_low_battery_trouble"
        zoneLowBattery := isOn;
    ELSEIF topic = prefix + "bypassed"
        zoneBypassed := isOn;
    ELSEIF topic = prefix + "alarm"
        zoneAlarm := isOn;
    END
END
# Warnings are rebuilt from the stored zone states on every message, so they stay until the panel clears them
IF zoneAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF zoneTamper = 1
    ADDWARNING(2, "Zone tampered");
END
IF zoneLowBattery = 1
    ADDWARNING(3, "Wireless zone: low battery");
END
IF zoneBypassed = 1
    ADDWARNING(4, "Zone bypassed");
END
Zóna 4 Jazýčkový kontakt Len na čítanie

Stav zóny ústredne (otvorená alebo zatvorená) s upozorneniami na poplach, sabotáž, slabú batériu bezdrôtovej zóny a obídenie

boolean
Premenná: zoneKey — Kľúč zóny, ako ho PAI publikuje v paradox/states/zones/<kľúč>, napríklad Front_door

Zóna 4

Čítanie
RETURN(Rc);
Listener
VAR prefix := baseTopic + "/states/zones/" + zoneKey + "/";
VAR topic := RECEIVEDMSG.TOPIC;
IF INDEXOF(topic, prefix) = 0
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);
    VAR isOn := IF(payload = "True" OR payload = "1", 1, 0);
    IF topic = prefix + "open"
        Rc := isOn;
    ELSEIF topic = prefix + "tamper"
        zoneTamper := isOn;
    ELSEIF topic = prefix + "rf_low_battery_trouble"
        zoneLowBattery := isOn;
    ELSEIF topic = prefix + "bypassed"
        zoneBypassed := isOn;
    ELSEIF topic = prefix + "alarm"
        zoneAlarm := isOn;
    END
END
# Warnings are rebuilt from the stored zone states on every message, so they stay until the panel clears them
IF zoneAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF zoneTamper = 1
    ADDWARNING(2, "Zone tampered");
END
IF zoneLowBattery = 1
    ADDWARNING(3, "Wireless zone: low battery");
END
IF zoneBypassed = 1
    ADDWARNING(4, "Zone bypassed");
END
Výstup PGM Prepínač

Zapína a vypína jeden programovateľný výstup (PGM) ústredne a zobrazuje jeho stav

boolean
Hodnoty / Stavy: ON · OFF
Premenná: outputKey — Kľúč výstupu PGM, ako ho PAI publikuje v paradox/states/outputs/<kľúč>

Výstup PGM

Čítanie stavu prepínača
RETURN(St);
Zápis stavu prepínača
MQTTPUBLISH(baseTopic + "/control/outputs/" + outputKey, IF(St = 1, "on", "off"));
Listener
IF RECEIVEDMSG.TOPIC = baseTopic + "/states/outputs/" + outputKey + "/on"
    VAR payload := TOSTRING(RECEIVEDMSG.PAYLOAD);
    St := IF(payload = "True" OR payload = "1", 1, 0);
END
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (6)
  • Zone bypass control — The template shows the bypass state of a zone as a warning but does not bypass a zone.
  • Force arming and EVO instant arming — arm_instant exists on EVO panels only; EVO has no Sleep arming, so Armed Sleep does nothing there.
  • Panic alarms — Left out on purpose: a panic command triggers a real alarm report.
  • System trouble flags — Trouble flags of the panel that PAI publishes under states/system/troubles.
  • Event stream — Live panel events PAI publishes as JSON when MQTT_PUBLISH_RAW_EVENTS is on.
  • More partitions, zones and PGM outputs — The template has one partition, four zones and one PGM. Import it again with other keys for more.

Zdroje

  • PAI — Paradox Alarm Interface, project README (version 3.8.1)
    github.com 2026-11-04
  • PAI wiki — MQTT Interface (topics, states, control commands)
    github.com 2026-11-04
  • PAI — example configuration pai.conf.example
  • PAI wiki — Compatibility (panels, firmware, connections)
    github.com 2026-11-04
  • PAI wiki — Connection methods (serial, IP150, ESP32 bridge)
    github.com 2026-11-04

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Komunita — nepreverené

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli