pyg90alarm.local.base_cmd

Provides support for basic commands of G90 alarm panel.

Classes

G90BaseCommand(*args, **kwargs)

Class for handling base G90 panel commands.

G90Command(host, port, code[, data, ...])

Base class for command handling for alarm panel protocol.

class pyg90alarm.local.base_cmd.G90Command(host, port, code, data=None, local_port=None, timeout=30.0, retries=3)

Bases: DatagramProtocol, Generic[CommandT, CommandDataT]

Base class for command handling for alarm panel protocol.

connection_made(transport)

Invoked when connection is established.

Return type:

None

connection_lost(exc)

Invoked when connection is lost.

Return type:

None

datagram_received(data, addr)

Invoked when datagram is received.

Return type:

None

error_received(exc)

Invoked when error is received.

Return type:

None

encode_data(data)

Encodes the command data to JSON string.

Return type:

str

decode_data(payload)

Decodes the command data from JSON string.

Return type:

TypeVar(CommandDataT)

to_wire()

Serializes the command to wire format.

Return type:

bytes

from_wire(data)

Deserializes the command from wire format.

Return type:

TypeVar(CommandDataT) | None

property result: CommandDataT

The result of the command.

property host: str

The hostname/IP address of the alarm panel.

property port: int

The port of the alarm panel.

property expects_response: bool

Indicates whether the command expects a response.

async process()

Processes the command.

Return type:

Self

pause_writing()

Called when the transport’s buffer goes over the high-water mark.

Pause and resume calls are paired – pause_writing() is called once when the buffer goes strictly over the high-water mark (even if subsequent writes increases the buffer size even more), and eventually resume_writing() is called once when the buffer size reaches the low-water mark.

Note that if the buffer size equals the high-water mark, pause_writing() is not called – it must go strictly over. Conversely, resume_writing() is called when the buffer size is equal or lower than the low-water mark. These end conditions are important to ensure that things go as expected when either mark is zero.

NOTE: This is the only Protocol callback that is not called through EventLoop.call_soon() – if it were, it would have no effect when it’s most needed (when the app keeps writing without yielding until pause_writing() is called).

resume_writing()

Called when the transport’s buffer drains below the low-water mark.

See pause_writing() for details.

class pyg90alarm.local.base_cmd.G90BaseCommand(*args, **kwargs)

Bases: G90Command[G90Commands, List[Any]]

Class for handling base G90 panel commands.

encode_data(data)

Encodes the command data to JSON string.

Return type:

str

decode_data(payload)

Decodes the command data from JSON string.

Return type:

List[Any]

to_wire()

Returns the command in wire format.

Return type:

bytes

from_wire(data)

Parses the response from the alarm panel.

Return type:

List[Any]

property result: List[Any]

The result of the command.

connection_lost(exc)

Invoked when connection is lost.

Return type:

None

connection_made(transport)

Invoked when connection is established.

Return type:

None

datagram_received(data, addr)

Invoked when datagram is received.

Return type:

None

error_received(exc)

Invoked when error is received.

Return type:

None

property expects_response: bool

Indicates whether the command expects a response.

property host: str

The hostname/IP address of the alarm panel.

pause_writing()

Called when the transport’s buffer goes over the high-water mark.

Pause and resume calls are paired – pause_writing() is called once when the buffer goes strictly over the high-water mark (even if subsequent writes increases the buffer size even more), and eventually resume_writing() is called once when the buffer size reaches the low-water mark.

Note that if the buffer size equals the high-water mark, pause_writing() is not called – it must go strictly over. Conversely, resume_writing() is called when the buffer size is equal or lower than the low-water mark. These end conditions are important to ensure that things go as expected when either mark is zero.

NOTE: This is the only Protocol callback that is not called through EventLoop.call_soon() – if it were, it would have no effect when it’s most needed (when the app keeps writing without yielding until pause_writing() is called).

property port: int

The port of the alarm panel.

async process()

Processes the command.

Return type:

Self

resume_writing()

Called when the transport’s buffer drains below the low-water mark.

See pause_writing() for details.