An application to interface with a Texecom Premier Elite alarm panel via MQTT. It provides real-time sensor updates (whether the panel is armed or not) and full arming/disarming/part arming support. The application also supports Home Assistant auto-discovery and is available as a Home Assistant Add-on.
It requires a Premier Elite panel (not Premier) with v4+ firmware and either a ComIP, ComWifi or SmartCom connection. It's not recommended to run this app on the same physical connection as the official Texecom Connect app. You should use only one of the applications or use a dedicated physical connection for each.
A few people have kindly requested a way to donate a small amount of money. If you feel so inclined I've set up a "Buy Me A Coffee" page where you can donate a small sum. Please do not feel obligated to donate in any way - I work on the app because it's useful to myself and others, not for any financial gain - but any token of appreciation is much appreciated 🙂
To set the app up as a Home Assistant Add-on:
https://github.com/dchesterton/texecom2mqtt-hassio
as
a new repository. The add-on should now be listed on the 'Add-on store' page.docker run -d -v $PWD/config.yml:/app/config.yml --name texecom2mqtt dchesterton/texecom2mqtt:latest
version: "3"
services:
texecom2mqtt:
container_name: texecom2mqtt
image: dchesterton/texecom2mqtt:latest
restart: unless-stopped
volumes:
- ./config.yml:/app/config.yml
texecom:
host: 192.168.0.1 # Required: Texecom panel IP address
udl_password: "abcdef" # Optional: UDL password programmed in the panel. Note: this is NOT the code used to arm/disarm the panel (default: 1234)
port: 10002 # Optional: port used to connect to the panel (default: 10001)
mqtt:
host: 192.168.1.5 # Optional: broker URL or IP address (default: localhost)
port: 1884 # Optional: broker port (default: 1883 or 8883 for TLS connections)
prefix: texecom2mqtt # Optional: topic prefix to use (default: texecom2mqtt)
username: my_user # Optional: broker user (default: none)
password: my_password # Optional: broker password (default: none)
client_id: texecom2mqtt # Optional: client ID (default: texecom2mqtt)
keepalive: 30 # Optional: keepalive in seconds (default: 60)
clean: true # Optional: clean session (default: true)
retain: true # Optional: retain (default: true)
retain_log: false # Optional: retain on log messages (default: false)
qos: 2 # Optional: QoS (default: 0)
ca: /cert/ca.pem # Optional: CA for TLS connection (default: none)
cert: /cert/cert.pem # Optional: certificate for TLS connection (default: none)
key: /cert/key.pem # Optional: private key for TLS connection (default: none)
reject_unauthorized: true # Optional: if not false, the server certificate is verified against the list of supplied CAs. Override with caution (default: true when using TLS)
homeassistant:
discovery: true # Optional: enable Home Assistant discovery (default: false)
prefix: home-assistant # Optional: Home Assistant MQTT topic prefix (default: homeassistant)
# Optional: required only if you want to override a zone name or device class
zones:
- id: front_door # Required: zone number or ID (e.g. 'front_door' or '4')
name: Front Door Sensor # Optional: override the zone name (default: zone name in panel)
device_class: motion # Optional: set the Home Assistant device class for a zone (default: the app will guess based on zone name and type). See https://www.home-assistant.io/integrations/binary_sensor/#device-class for available device classes
- id: ...
name: ...
# Optional: required only for Home Assistant mapping
areas:
- id: house # Required: area number or ID (e.g. 'detached_garage', '4A' or '2')
name: House Alarm # Optional: override the area name (default: area name in panel)
full_arm: armed_away # Optional: mappings of Texecom arm types to Home Assistant arm types (armed_away, armed_home, armed_night, armed_custom_bypass, armed_vacation), omit any which are not relevant
part_arm_1: armed_night
part_arm_2: armed_home
part_arm_3: armed_custom_bypass
code_arm_required: false # Optional: see https://www.home-assistant.io/integrations/alarm_control_panel.mqtt/#code_arm_required
code_disarm_required: false # Optional: see https://www.home-assistant.io/integrations/alarm_control_panel.mqtt/#code_disarm_required
code: "123456" # Optional: see https://www.home-assistant.io/integrations/alarm_control_panel.mqtt/#code
- id: ...
name: ...
cache: true # Optional: cache panel data instead of loading it each time. Recommended if using a larger panel and/or your data will not change (default: false)
log: debug # Optional: trace, debug, panel, info, warning or error (default: info)
An object representing the current state of a zone, e.g.
{
"name": "Front Door",
"number": 5,
"status": 1,
"type": "Entry/Exit 1",
"areas": ["A", "B", "C"]
}
An object representing the current state of an area, e.g.
{
"id": "A",
"name": "House Alarm",
"number": 1,
"status": "disarmed",
"last_active_zone": {
"name": "Front Door",
"number": 1
}
}
The status
parameter will be one of:
disarmed
full_armed
part_armed_1
part_armed_2
part_armed_3
triggered
in_entry
in_exit
The last_active_zone
parameter is only available when the status is triggered
.
Set the area status. Payload must be one of:
full_arm
part_arm_1
part_arm_2
part_arm_3
disarm
Set the LCD text on all connected keypads. The payload is the string to display. Note: a maximum of 32 characters can be displayed.
Set the system date. The payload should be a ISO 8601 formatted string which can be parsed by Luxon.
Either online
or offline
depending on whether the application is running.
An object representing the current power consumption, e.g.
{
"battery_charging_current": 36,
"battery_voltage": 13.42,
"panel_current": 423,
"panel_voltage": 13.49
}
battery_charging_current
and panel_current
are given in milliamps.
An object representing a panel log event, e.g.
{
"type": "ArmFailed",
"description": "Arm Failed",
"timestamp": "2020-01-01T00:00:00+00:00",
"areas": ["A"],
"parameter": 8,
"entity": {
"zone_id": "front_door",
"zone_name": "Front Door"
}
}
{
"type": "UserCode",
"description": "User Code",
"timestamp": "2020-01-01T00:00:00+00:00",
"areas": ["A", "B"],
"parameter": 1,
"entity": {
"user_id": 1,
"user_name": "Daniel"
}
}
{
"type": "TimeChanged",
"description": "Time Changed",
"timestamp": "2020-01-01T00:00:00+00:00",
"areas": [],
"parameter": 0
}
parameter
will be either a zone number, user number, expander number or keypad number
depending on the log event type.
entity
will be a user object as per the example above for 'UserCode' events and a zone
object as per the example above for 'ArmFailed'
Log Event Types | |||
---|---|---|---|
EntryExit1 | EntryExit2 | Guard | GuardAccess |
TwentyFourHourAudible | TwentyFourHourSilent | PAAudible | PASilent |
Fire | Medical | TwentyFourHourGas | Auxiliary |
Tamper | ExitTerminator | MomentKey | LatchKey |
Security | OmitKey | Custom | ConfirmedPAAudible |
ConfirmedPASilent | KeypadMedical | KeypadFire | KeypadAudiblePA |
KeypadSilentPA | DuressCodeAlarm | AlarmActive | BellActive |
Rearm | VerifiedCrossZoneAlarm | UserCode | ExitStarted |
ExitError | EntryStarted | PartArmSuite | ArmedWithLineFault |
OpenClose | PartArmed | AutoOpenClose | AutoArmDeferred |
OpenAfterAlarm | RemoteOpenClose | QuickArm | RecentClosing |
ResetAfterAlarm | PowerOPFault | ACFail | LowBattery |
SystemPowerUp | MainsOverVoltage | TelephoneLineFault | FailToCommunicate |
DownloadStart | DownloadEnd | LogCapacityAlert | DateChanged |
TimeChanged | InstallerProgrammingStart | InstallerProgrammingEnd | PanelBoxTamper |
BellTamper | AuxiliaryTamper | ExpanderTamper | KeypadTamper |
ExpanderTrouble | RemoteKeypadTrouble | FireZoneTamper | ZoneTamper |
KeypadLockout | CodeTamperAlarm | SoakTestAlarm | ManualTestTransmission |
AutomaticTestTransmission | UserWalkTestStartEnd | NVMDefaultsLoaded | FirstKnock |
DoorAccess | PartArm1 | PartArm2 | PartArm3 |
AutoArmingStarted | ConfirmedAlarm | ProxTag | AccessCodeChangedDeleted |
ArmFailed | LogCleared | iDLoopShorted | CommunicationPort |
TAGSystemExitBatteryOK | TAGSystemExitBatteryLow | TAGSystemEntryBatteryOK | TAGSystemEntryBatteryLow |
MicrophoneActivated | AVClearedDown | MonitoredAlarm | ExpanderLowVoltage |
SupervisionFault | PAFromRemoteFOB | RFDeviceLowBattery | SiteDataChanged |
RadioJamming | TestCallPassed | TestCallFailed | ZoneFault |
ZoneMasked | FaultsOverridden | PSUACFail | PSUBatteryFail |
PSULowOutputFail | PSUTamper | DoorAccess2 | CIEReset |
RemoteCommand | UserAdded | UserDeleted | ConfirmedPA |
UserAcknowledged | PowerUnitFailure | BatteryChargerFault | ConfirmedIntruder |
GSMTamper | RadioConfigFailure | QuickPartArm1 | QuickPartArm2 |
QuickPartArm3 | RemotePartArm1 | RemotePartArm2 | RemotePartArm3 |
An object representing the texecom2mqtt config, e.g.
{
"version": "1.0.41",
"log_level": "debug",
"model": "Premier Elite 48",
"firmware_version": "V5.02.01LS1",
"serial_number": "12345"
}
config.yml
? (UDL/Digi Options - Setup Modules - Setup IP Data)config.yml
? (This can be found in UDL/Digi Options - UDL Options - UDL Password)config.yml
?