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:
- Go to 'Supervisor' in Home Assistant, then 'Add-on store'.
- Click on the icon in the top right and add
https://github.com/dchesterton/texecom2mqtt-hassio
as a new repository. The add-on should now be listed on the 'Add-on store' page. - Click on 'texecom2mqtt' on the 'Add-on store' page and click 'Install'.
- Add your Texecom panel and MQTT details in the 'Configuration' tab (the add-on will work with any MQTT server but it's pre-configured to use the official Mosquitto MQTT add-on).
- Click 'Save' to save your configuration.
- Go to the 'Info' tab, select 'Start on boot' and 'Watchdog', then click 'Start'.
- The app should now be running. Go to the 'Log' tab to check the output logs.
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)
username: my_user # Optional: broker user (default: none)
password: my_password # Optional: broker password (default: none)
client_id: texecom2mqtt # Optional: client ID (default: random)
keepalive: 30 # Optional: keepalive in seconds (default: 10)
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)
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), 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: ...
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
or 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.
{
"log_level": "info",
"version": "1.0.30"
}
- Have you added the correct IP address and port in
config.yml
? (UDL/Digi Options - Setup Modules - Setup IP Data) - Have you set up your ComIP/SmartCom? (UDL/Digi Options - Com Port Setup - Set either Com Port 1, Com Port 2 or Com Port 3 to 'ComIP Module')
- Have you added the correct UDL password to
config.yml
? (This can be found in UDL/Digi Options - UDL Options - UDL Password) - Have you disabled encryption? (UDL/Digi Options - Setup Modules - Encrypted Ports)
- The entities are not showing in Home Assistant.
- Have you enabled 'discovery' in your MQTT config in Home Assistant? (Configuration - MQTT)
- If you've changed the default prefix, have you set the correct prefix in
config.yml
?
- The Alarm Panel Card is not showing the correct states for my alarm in the frontend.
- Unfortunately, this card only shows Arm Away and Arm Home by default. You'll need to edit the card and select the additional states from the "available states" dropdown.