Skip to main content

JabloPy - Simple interface for Jablotron alarm systems

This service enables 2-way communication with a Jablotron alarm system without relying on cloud services or reverse-engineered APIs.

It exposes:

  • The alarm system itself (supports arming and disarming of sections)
  • Sensors (motion sensors, contact sensors, smoke and fire alarm, sirens, ...)
  • System flags (arming delay, entry delay, ...)
  • System state (armed, disarmed, alarm, ...)

Requirements

  • A JA-121-T interface module must be installed
  • A bridge device that can translate the RS-485 bus to tcp (For instance: A Waveshare RS485 to WiFi/Ethernet Module)

Installing and running

Create a virtual environment and install the project in editable mode:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"

Run the interactive CLI:

jablopy --host 192.168.1.140 --port 8899 --pin 1234

Use --connect-timeout to stop waiting after a fixed number of seconds if the initial connection cannot be established:

jablopy --host 192.168.1.140 --port 8899 --pin 1234 --connect-timeout 10

Alternative ways to run the CLI during development:

.\.venv\Scripts\python.exe -m jablopy.cli --host 192.168.1.140 --port 8899 --pin 1234
.\.venv\Scripts\python.exe src\jablopy\cli.py --host 192.168.1.140 --port 8899 --pin 1234

For a PyCharm run configuration, use either:

  • Module name: jablopy.cli
  • Script path: src\jablopy\cli.py

Set the working directory to the project root.

Library usage

from jablopy import JablotronClient, JablotronProtocol

command = JablotronProtocol.build_arm_partial_command("1234", sections=[1])
client = JablotronClient("192.168.1.140", 8899)

The client reconnects automatically when the TCP connection drops. Commands sent while disconnected raise RuntimeError and are not queued.

Responses and errors

Incoming lines are parsed into event objects and dispatched to listeners. This includes responses to commands and unsolicited pushed updates from the alarm system.

Response Event
OK HeartbeatEvent
STATE 1 ARMED_PART SectionStateEvent
EXIT 1 ON FlagEvent
PRFSTATE 28 PrfStateEvent
ERROR CommandErrorEvent
ERROR: 3 NO_ACCESS CommandErrorEvent

Commands

Supported commands

Control commands:

Command Description
SET Arm system fully
SETP Arm system partially
UNSET Disarm system

Usage:

<userId>*<pin> <command> <sections>

Query commands:

Command Description
VER Get version info from device
HELP Get list of valid commands
STATE Get current state of each section
FLAGS Get active system flags
PRFSTATE Get device and sensor states

Usage:

<command>

Example commands

# Partially arm section 1 with user 2 and pin 1234
2*1234 SETP 1 

# User can be left out if there is only one
1234 SETP 1

# Disarm section 1
1234 UNSET 1

# Get flags
FLAGS

# Get device and sensor states
PRFSTATE

Statuses

Section statuses

Status Description
READY Normal mode
ARMED_PART Partially set
ARMED Set
MAINTENANCE Maintenance
SERVICE Service
BLOCKED Blocked after an alarm
OFF Section disabled

Flags

Flag Description
INTERNAL_WARNING Internal siren active
EXTERNAL_WARNING External siren active
FIRE_ALARM Fire alarm
INTRUDER_ALARM Intruder alarm
PANIC_ALARM Panic alarm
ENTRY Entrance delay
EXIT Exit delay

Release files for jablopy 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jablopy 0.1.0
File Size Uploaded
jablopy-0.1.0.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jablopy 0.1.0
File Interpreter ABI Platform
jablopy-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.5 kB

Release files / jablopy-0.1.0.tar.gz

Download URL jablopy-0.1.0.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
04ccc0bada95a176f24d642dbb3699a6fde8d2eff09891b7cc2a85aed5f86001
BLAKE2b-256 checksum
How to use checksums
faae15b5ea9e3ac10786eba8c0395a2f5151e57aeee07df68d39ed50a2e755f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.1

Release files / jablopy-0.1.0-py3-none-any.whl

Download URL jablopy-0.1.0-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c59a384260e4e7542de07c1d365c7af7d25e47512c03ccb924d458be5ce6d09
BLAKE2b-256 checksum
How to use checksums
5dc0b7f8b39e2f0a9d1f615ab4dbc088ae968a3338c0d8fe59028ba730404788
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.1

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page