TapHome

Paradox Digiplex EVO tramite PRT3 (TCP)

Packet Parser → TCP
Inviato da
Ultimo aggiornamento: 11. 2026

Richiede gateway esterno

Paradox PRT3 (APR-PRT3) printer and home automation module, or BUS2SER, with an RS-232-to-Ethernet converter — pagina prodotto

Paradox Digiplex EVO tramite PRT3 (TCP)

Il template Paradox EVO PRT3 collega una centrale d’allarme Paradox Digiplex EVO a TapHome tramite il modulo PRT3 e il protocollo ASCII ufficiale di Paradox. Il PRT3 è collegato al combus della centrale e offre il protocollo sulla sua porta seriale a 9 pin. Un convertitore RS-232/Ethernet rende questa porta raggiungibile nella rete locale e TapHome si collega al convertitore via TCP — non serve un computer in mezzo.

Il template mostra lo stato di inserimento di una partizione e la inserisce o la disinserisce con un codice utente, mostra quattro zone con i loro avvisi e un PGM virtuale e mostra un errore quando il PRT3 perde la centrale.

Il PRT3 funziona come interfaccia domotica solo con le centrali Digiplex EVO. Per le centrali Spectra SP e Magellan MG usa il template della community Centrali d’allarme Paradox tramite PAI (MQTT).

Template della community — non ancora testato con TapHome su una centrale reale. Il template è stato scritto in base al manuale ufficiale del protocollo ASCII di Paradox (ASCII-EP01) ed è stato testato solo con un PRT3 simulato su un TapHome Core 2025.2 locale, non con una vera centrale Digiplex EVO con un vero PRT3 e un convertitore. Verificalo sulla tua installazione prima di affidarti a esso per la sicurezza; i riscontri dal campo sono benvenuti. Scarica l’XML da questa pagina o dal portale TapHome: Paradox EVO tramite PRT3 — template della community, e importalo come nuovo modulo.

Sicurezza: il codice utente è salvato in TapHome e viaggia in chiaro. Il PRT3 inserisce e disinserisce solo con un codice utente e il template invia quel codice con ogni comando di inserimento e disinserimento. Il codice è salvato nella configurazione di TapHome e viaggia in chiaro sulla rete locale tra il TapHome Core e il convertitore. Crea nella centrale un utente apposta per TapHome, limitato alle partizioni che TapHome controlla, e usa il suo codice — mai il codice master.

Centrali supportate

CentraleRequisito
Digiplex EVO48, EVO96, EVO192, EVOHDPRT3 (o BUS2SER) in modalità domotica con il protocollo ASCII
DGP-848versione 4.11 o successiva
DGP-NE96versione 1.60 o successiva

Le centrali Spectra SP e Magellan MG non hanno un’interfaccia domotica ufficiale — vedi Centrali d’allarme Paradox tramite PAI (MQTT).

Collegamento hardware

  • PRT3 alla centrale: collega i quattro morsetti del PRT3 (rosso, nero, verde, giallo) ai morsetti del combus della centrale.
  • Convertitore al PRT3: collega il lato RS-232 del convertitore alla porta seriale a 9 pin del PRT3 — non alla porta parallela né alla porta USB.
  • Convertitore alla rete: imposta il convertitore in modalità server TCP con un indirizzo IP fisso e una porta TCP. TapHome si collega come client TCP e tiene la connessione aperta.

I parametri seriali sono 8N1 (8 bit di dati, nessuna parità, 1 bit di stop). Il convertitore deve usare esattamente la stessa velocità del PRT3 — con una velocità diversa TapHome non riceve nulla.

Configurazione

Modalità domotica del PRT3

Programma il PRT3 da una tastiera della centrale:

  1. Tieni premuto [0] e inserisci il codice installatore.
  2. Entra nella sezione [4003] sulle centrali EVO o [953] sulle centrali DGP-848.
  3. Inserisci il numero di serie a 8 cifre del PRT3.
  4. Entra nella sezione [016] (opzioni della porta seriale) e imposta:
OpzioneImpostazioneSignificato
[1]ONPorta seriale abilitata
[4]ONDomotica (non segnalazione eventi)
[5] e [6]OFF e OFFProtocollo ASCII (non C-Bus)
[2] e [3]come nel manuale del PRT3Velocità: 2400, 9600, 19200 o 57600 bps — imposta la stessa velocità sul convertitore

Il PRT3 si può programmare anche con il software WinLoad (versione 2.62 o successiva) o con la funzione di trasmissione ai moduli (module broadcast) della centrale.

PGM virtuale

Il PGM virtuale del template è un PGM virtuale del PRT3, non un’uscita PGM fisica della centrale. Programmalo nel PRT3 con gli eventi della centrale che lo accendono e lo spengono (sezioni da [100] a [399], dieci sezioni per ogni PGM virtuale), in modo che il PRT3 invii il suo stato a TapHome.

Utente per TapHome

Crea nella centrale un utente apposta per TapHome, dagli accesso solo alle partizioni che TapHome inserisce e disinserisce e inserisci il suo codice (da 4 a 6 cifre) durante l’importazione. Il template invia questo codice con ogni comando di inserimento e disinserimento, quindi il parametro non deve restare vuoto.

Parametri di importazione

Parametro di importazioneDescrizionePredefinito
Indirizzo IP del convertitoreIndirizzo IP del convertitore RS-232/Ethernet in modalità server TCP192.168.1.100
Porta TCP del convertitorePorta TCP del convertitore4001
Numero della partizionePartizione nella centrale, tre cifre (da 001 a 008)001
Numeri delle zone 1–4Zone nella centrale, tre cifre (da 001 a 192)001 … 004
Numero del PGM virtualePGM virtuale del PRT3, due cifre (da 01 a 30)01
Codice utenteCodice dell’utente della centrale creato per TapHome(vuoto)

Per altre partizioni o zone importa di nuovo il template con altri numeri ed elimina i dispositivi che non ti servono. Ogni importazione apre una propria connessione TCP, quindi verifica che il convertitore ne accetti più di una.

Funzionalità dei dispositivi

Partizione

Mostra lo stato della partizione e la inserisce o la disinserisce.

StatoQuando lo selezioni in TapHome
Disinseritodisinserisce la partizione con il codice utente
Inseritoinserisce la partizione
Inserito Forceinserisce la partizione in modo forzato (Force)
Inserito Stayinserisce la partizione in modalità Stay
Inserito Instantinserisce la partizione in modalità Instant
Allarmenon invia nulla — lo stato mostra solo un allarme segnalato dalla centrale

Dopo ogni comando il template chiede di nuovo lo stato della partizione. Il dispositivo Partizione mostra un avviso quando la centrale ha rifiutato l’ultimo comando di inserimento o disinserimento (di solito un codice utente errato), quando la partizione ha un guasto e quando c’è un allarme in memoria. All’avvio del TapHome Core il template non invia alcun comando di inserimento o disinserimento — la partizione prende il suo stato dalla risposta successiva della centrale.

Zone 1–4

Ogni zona mostra se è chiusa o aperta; una zona manomessa e una zona con guasto della linea incendio contano come non chiuse. Gli avvisi compaiono quando la zona è in allarme, in allarme incendio, manomessa, ha un guasto della linea incendio, ha perso la supervisione o ha la batteria scarica. Ogni avviso resta finché la centrale non segnala la zona come OK.

PGM virtuale

Mostra lo stato di un PGM virtuale del PRT3. Lo stato cambia solo quando il PRT3 segnala una variazione; il protocollo non ha una richiesta per lo stato di un PGM virtuale, quindi dopo un avvio del TapHome Core il dispositivo non ha un valore fino alla variazione successiva. TapHome non comanda il PGM virtuale.

Modulo

Il template chiede lo stato della partizione e delle quattro zone ogni 5 secondi. Il modulo mostra un errore quando il PRT3 segnala di aver perso la comunicazione con la centrale e lo rimuove quando la comunicazione torna. Quando il convertitore non è raggiungibile, TapHome mostra il consueto errore di connessione del modulo.

Cosa non c’è nel template

  • Panico e reset dei rivelatori di fumo — esclusi di proposito: il panico di emergenza, medico e incendio farebbe partire una vera segnalazione d’allarme.
  • Esclusione delle zone e comando diretto delle uscite PGM fisiche — il PRT3 non li supporta.
  • Nomi di zone e partizioni — il template usa solo numeri.
  • Ingressi virtuali e tasti funzione del PRT3.

Risoluzione dei problemi

Nessun valore in TapHome

Verifica che il convertitore sia raggiungibile all’indirizzo IP e alla porta dell’importazione, che il convertitore e il PRT3 usino la stessa velocità e che nella sezione [016] le opzioni [1] e [4] siano ON e le opzioni [5] e [6] OFF.

L’inserimento o il disinserimento non fa nulla

Un avviso sul dispositivo Partizione che la centrale ha rifiutato il comando indica un codice utente errato o un utente senza accesso alla partizione. Verifica nella centrale il codice dell’utente TapHome e le sue partizioni.

Errore del modulo sulla comunicazione con la centrale

Il PRT3 ha perso il collegamento combus con la centrale. Verifica il cablaggio dei quattro morsetti del combus.

Una zona mostra uno stato errato

Verifica che il numero di zona dell’importazione sia il numero della zona nella centrale, sempre con tre cifre (la zona 5 è 005).

Dispositivi disponibili

Paradox PRT3 Modulo
Variabili personalizzate
AreaNum (string)Numero della partizione nella centrale, tre cifre (da 001 a 008)
Enter the area number with three digits (area 1 = 001) as the import parameter Area number.
Zone1Num (string)Numero della zona 1 nella centrale, tre cifre (da 001 a 192)
Zone2Num (string)Numero della zona 2 nella centrale, tre cifre (da 001 a 192)
Zone3Num (string)Numero della zona 3 nella centrale, tre cifre (da 001 a 192)
Zone4Num (string)Numero della zona 4 nella centrale, tre cifre (da 001 a 192)
PgmNum (string)Numero del PGM virtuale programmato nel PRT3, due cifre (da 01 a 30)
Program the virtual PGM in the PRT3 (activation and deactivation event) and enter its number with two digits (01) as the import parameter Virtual PGM number.
UserCode (string)Codice di un utente della centrale creato apposta per TapHome (da 4 a 6 cifre), non il codice master; viene inviato in chiaro con ogni comando di inserimento e disinserimento
Create a separate user in the panel for TapHome, limited to the areas TapHome controls, and enter its code as the import parameter User code. Do not use the master code.

Paradox PRT3

Lettura (modulo)
# Poll the area and the four zones; every command ends with CR (framing)
SENDDATA("RA" + AreaNum);
SENDDATA("RZ" + Zone1Num);
SENDDATA("RZ" + Zone2Num);
SENDDATA("RZ" + Zone3Num);
SENDDATA("RZ" + Zone4Num);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
IF INDEXOF(msg, "COMM&fail") = 0
    CommFail := 1;
END
IF INDEXOF(msg, "COMM&ok") = 0
    CommFail := 0;
END
IF CommFail = 1
    ADDERROR(1, "PRT3 reports COMM&fail: no communication between the PRT3 module and the panel");
END
Partizione Interruttore multivalore

Stato di una partizione della centrale e suo inserimento o disinserimento con il codice utente; Allarme è solo mostrato e non invia nulla

enum ascii
Valori / Stati: Disinserito · Inserito · Inserito Force · Inserito Stay · Inserito Instant · Allarme

Partizione

Lettura stato interruttore
RETURN(Mu);
Scrittura stato interruttore
# Alarm (5) is reported by the panel and is never a command
IF Mu = 0
    SENDDATA("AD" + AreaNum + UserCode);
ELSEIF Mu = 1
    SENDDATA("AA" + AreaNum + "A" + UserCode);
ELSEIF Mu = 2
    SENDDATA("AA" + AreaNum + "F" + UserCode);
ELSEIF Mu = 3
    SENDDATA("AA" + AreaNum + "S" + UserCode);
ELSEIF Mu = 4
    SENDDATA("AA" + AreaNum + "I" + UserCode);
END
IF Mu < 5
    SENDDATA("RA" + AreaNum);
END
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
# Area status: RA<nnn> + state (D, A, F, S, I) + M T N P A S, each O when OK
IF INDEXOF(msg, "RA" + AreaNum) = 0 AND LENGTH(msg) >= 12
    VAR st := GETAT(RECEIVEDBYTES, 5);
    IF GETAT(RECEIVEDBYTES, 10) = 65
        Mu := 5;
    ELSEIF st = 68
        Mu := 0;
    ELSEIF st = 65
        Mu := 1;
    ELSEIF st = 70
        Mu := 2;
    ELSEIF st = 83
        Mu := 3;
    ELSEIF st = 73
        Mu := 4;
    END
    AreaMemory := IF(GETAT(RECEIVEDBYTES, 6) = 77, 1, 0);
    AreaTrouble := IF(GETAT(RECEIVEDBYTES, 7) = 84, 1, 0);
END
# Answer to an arming or disarming command of this area
IF INDEXOF(msg, "AA" + AreaNum) = 0 OR INDEXOF(msg, "AD" + AreaNum) = 0
    CodeFailed := IF(INDEXOF(msg, "&fail") > 0, 1, 0);
END
IF CodeFailed = 1
    ADDWARNING(1, "The panel refused the last arming or disarming command (&fail): check the user code");
END
IF AreaTrouble = 1
    ADDWARNING(2, "Trouble in the area");
END
IF AreaMemory = 1
    ADDWARNING(3, "Alarm in memory");
END
Zona 1 Contatto reed Solo lettura

Stato di una zona della centrale (chiusa o aperta), con avvisi per allarme, allarme incendio, manomissione, guasto della linea incendio, perdita di supervisione e batteria scarica

boolean ascii
Variabile: ZoneNum — Numero della zona nella centrale, tre cifre (da 001 a 192)

Zona 1

Lettura
RETURN(Rc);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
# Zone status: RZ<nnn> + C, O, T, F + A F S L, each O when OK
IF INDEXOF(msg, "RZ" + ZoneNum) = 0 AND LENGTH(msg) >= 10
    VAR st := GETAT(RECEIVEDBYTES, 5);
    Rc := IF(st = 67, 0, 1);
    ZTamper := IF(st = 84, 1, 0);
    ZFireLoop := IF(st = 70, 1, 0);
    ZAlarm := IF(GETAT(RECEIVEDBYTES, 6) = 65, 1, 0);
    ZFire := IF(GETAT(RECEIVEDBYTES, 7) = 70, 1, 0);
    ZSupervision := IF(GETAT(RECEIVEDBYTES, 8) = 83, 1, 0);
    ZBattery := IF(GETAT(RECEIVEDBYTES, 9) = 76, 1, 0);
END
# Warnings are rebuilt from the stored zone state on every message
IF ZAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF ZFire = 1
    ADDWARNING(2, "Fire alarm");
END
IF ZTamper = 1
    ADDWARNING(3, "Zone tampered");
END
IF ZFireLoop = 1
    ADDWARNING(4, "Fire loop trouble");
END
IF ZSupervision = 1
    ADDWARNING(5, "Supervision lost");
END
IF ZBattery = 1
    ADDWARNING(6, "Low battery");
END
Zona 2 Contatto reed Solo lettura

Stato di una zona della centrale (chiusa o aperta), con avvisi per allarme, allarme incendio, manomissione, guasto della linea incendio, perdita di supervisione e batteria scarica

boolean ascii
Variabile: ZoneNum — Numero della zona nella centrale, tre cifre (da 001 a 192)

Zona 2

Lettura
RETURN(Rc);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
# Zone status: RZ<nnn> + C, O, T, F + A F S L, each O when OK
IF INDEXOF(msg, "RZ" + ZoneNum) = 0 AND LENGTH(msg) >= 10
    VAR st := GETAT(RECEIVEDBYTES, 5);
    Rc := IF(st = 67, 0, 1);
    ZTamper := IF(st = 84, 1, 0);
    ZFireLoop := IF(st = 70, 1, 0);
    ZAlarm := IF(GETAT(RECEIVEDBYTES, 6) = 65, 1, 0);
    ZFire := IF(GETAT(RECEIVEDBYTES, 7) = 70, 1, 0);
    ZSupervision := IF(GETAT(RECEIVEDBYTES, 8) = 83, 1, 0);
    ZBattery := IF(GETAT(RECEIVEDBYTES, 9) = 76, 1, 0);
END
# Warnings are rebuilt from the stored zone state on every message
IF ZAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF ZFire = 1
    ADDWARNING(2, "Fire alarm");
END
IF ZTamper = 1
    ADDWARNING(3, "Zone tampered");
END
IF ZFireLoop = 1
    ADDWARNING(4, "Fire loop trouble");
END
IF ZSupervision = 1
    ADDWARNING(5, "Supervision lost");
END
IF ZBattery = 1
    ADDWARNING(6, "Low battery");
END
Zona 3 Contatto reed Solo lettura

Stato di una zona della centrale (chiusa o aperta), con avvisi per allarme, allarme incendio, manomissione, guasto della linea incendio, perdita di supervisione e batteria scarica

boolean ascii
Variabile: ZoneNum — Numero della zona nella centrale, tre cifre (da 001 a 192)

Zona 3

Lettura
RETURN(Rc);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
# Zone status: RZ<nnn> + C, O, T, F + A F S L, each O when OK
IF INDEXOF(msg, "RZ" + ZoneNum) = 0 AND LENGTH(msg) >= 10
    VAR st := GETAT(RECEIVEDBYTES, 5);
    Rc := IF(st = 67, 0, 1);
    ZTamper := IF(st = 84, 1, 0);
    ZFireLoop := IF(st = 70, 1, 0);
    ZAlarm := IF(GETAT(RECEIVEDBYTES, 6) = 65, 1, 0);
    ZFire := IF(GETAT(RECEIVEDBYTES, 7) = 70, 1, 0);
    ZSupervision := IF(GETAT(RECEIVEDBYTES, 8) = 83, 1, 0);
    ZBattery := IF(GETAT(RECEIVEDBYTES, 9) = 76, 1, 0);
END
# Warnings are rebuilt from the stored zone state on every message
IF ZAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF ZFire = 1
    ADDWARNING(2, "Fire alarm");
END
IF ZTamper = 1
    ADDWARNING(3, "Zone tampered");
END
IF ZFireLoop = 1
    ADDWARNING(4, "Fire loop trouble");
END
IF ZSupervision = 1
    ADDWARNING(5, "Supervision lost");
END
IF ZBattery = 1
    ADDWARNING(6, "Low battery");
END
Zona 4 Contatto reed Solo lettura

Stato di una zona della centrale (chiusa o aperta), con avvisi per allarme, allarme incendio, manomissione, guasto della linea incendio, perdita di supervisione e batteria scarica

boolean ascii
Variabile: ZoneNum — Numero della zona nella centrale, tre cifre (da 001 a 192)

Zona 4

Lettura
RETURN(Rc);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
# Zone status: RZ<nnn> + C, O, T, F + A F S L, each O when OK
IF INDEXOF(msg, "RZ" + ZoneNum) = 0 AND LENGTH(msg) >= 10
    VAR st := GETAT(RECEIVEDBYTES, 5);
    Rc := IF(st = 67, 0, 1);
    ZTamper := IF(st = 84, 1, 0);
    ZFireLoop := IF(st = 70, 1, 0);
    ZAlarm := IF(GETAT(RECEIVEDBYTES, 6) = 65, 1, 0);
    ZFire := IF(GETAT(RECEIVEDBYTES, 7) = 70, 1, 0);
    ZSupervision := IF(GETAT(RECEIVEDBYTES, 8) = 83, 1, 0);
    ZBattery := IF(GETAT(RECEIVEDBYTES, 9) = 76, 1, 0);
END
# Warnings are rebuilt from the stored zone state on every message
IF ZAlarm = 1
    ADDWARNING(1, "Zone in alarm");
END
IF ZFire = 1
    ADDWARNING(2, "Fire alarm");
END
IF ZTamper = 1
    ADDWARNING(3, "Zone tampered");
END
IF ZFireLoop = 1
    ADDWARNING(4, "Fire loop trouble");
END
IF ZSupervision = 1
    ADDWARNING(5, "Supervision lost");
END
IF ZBattery = 1
    ADDWARNING(6, "Low battery");
END
PGM virtuale Contatto reed Solo lettura

Stato di un PGM virtuale del PRT3, acceso e spento dagli eventi della centrale programmati per esso; si limita a segnalare a TapHome

boolean ascii

PGM virtuale

Lettura
RETURN(Rc);
Listener
VAR msg := TOSTRING(RECEIVEDBYTES);
IF INDEXOF(msg, "PGM" + PgmNum + "ON") = 0
    Rc := 1;
END
IF INDEXOF(msg, "PGM" + PgmNum + "OFF") = 0
    Rc := 0;
END
Connessione: Packet Parser → TCP
Possibili miglioramenti (8)
  • Emergency, medical and fire panic — Left out on purpose: a panic command triggers a real alarm report.
  • Smoke detector reset — Left out on purpose.
  • Virtual inputs 1–16 — TapHome could open and close virtual inputs of the PRT3 to trigger actions in the panel; not in the template.
  • Zone, area and user labels — The panel returns 16-character labels; the template uses numbers only.
  • Utility keys — Utility key commands of the PRT3, not in the template.
  • System events — The PRT3 sends live events (zone open, arming, alarm); the template reads states by polling every 5 s instead.
  • Zone bypass and direct control of physical PGM outputs — The PRT3 ASCII protocol has no command for either.
  • More areas and zones — The template has one area, four zones and one virtual PGM. Import it again with other numbers for more; the converter usually accepts one TCP client, so check whether it allows a second connection.

Fonti

  • Paradox APR-PRT3 Printer Module — ASCII Protocol Programming Instructions (ASCII-EP01)

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Community — non revisionato

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale