Interface with Texecom Premier Elite alarm panels using MQTT including zone updates and arming
100K+
An application to interface with a Texecom Premier Elite alarm panel via MQTT. It requires a Premier Elite panel (not Premier) with v4+ firmware and either a ComIP or SmartCom. The application supports Home Assistant auto-discovery and is available as a Home Assistant Add-on.
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:
disarmedfull_armedpart_armed_1part_armed_2part_armed_3triggeredin_entryin_exitThe last_active_zone parameter is only available when the status is triggered.
Set the area status. Payload must be one of:
full_armpart_arm_1part_arm_2part_arm_3disarmSet 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?Content type
Image
Digest
sha256:24d170a0e…
Size
58.9 MB
Last updated
over 1 year ago
docker pull dchesterton/texecom2mqtt