caspia.meadow.client.connection package

Submodules

caspia.meadow.client.connection.connection module

class caspia.meadow.client.connection.connection.AsyncioHelper(loop, client: paho.mqtt.client.Client, name)[source]

Bases: object

async misc_loop()[source]
on_socket_close(client, userdata, sock)[source]
on_socket_open(client, userdata, sock)[source]
on_socket_register_write(client, userdata, sock)[source]
on_socket_unregister_write(client, userdata, sock)[source]
class caspia.meadow.client.connection.connection.Connection(broker_url, name=None, loop=None)[source]

Bases: object

attach_subscriber(subscriber)[source]

Attach the subscriber and return immediatelly.

The subscriber will be ready sometime in future. To wait for that, use await self.subscriber_ready(s).

property connected
detach_subscriber(subscriber)[source]

Detach the subscriber (with immediate effect).

async ensure_connected()[source]
on_connect(client, userdata, flags, rc)[source]
on_disconnect(client, userdata, rc)[source]
on_message(client, userdata, message)[source]
on_publish(client, userdata, mid)[source]
on_subscribe(client, userdata, mid, granted_qos)[source]
on_unsubscribe(client, userdata, mid)[source]
async run_forever()[source]

Never return. Main runloop of the client managing its connection.

async subscriber_ready(subscriber)[source]

Await the subscriber to be ready.

class caspia.meadow.client.connection.connection.Subscription[source]

Bases: object

property should_subscribe
property should_unsubscribe

caspia.meadow.client.connection.consumer module

class caspia.meadow.client.connection.consumer.ConsumerConnection(broker_url, name=None, loop=None)[source]

Bases: caspia.meadow.client.connection.connection.Connection

attach_subscriber(subscriber)

Attach the subscriber and return immediatelly.

The subscriber will be ready sometime in future. To wait for that, use await self.subscriber_ready(s).

property connected
detach_subscriber(subscriber)

Detach the subscriber (with immediate effect).

async ensure_connected()
listen_writes(service, characteristic, target)[source]

Listen for writes on a given characteristic.

This is a way for one client to observe, that another client issued a write. This is not for responding to write commands (see GatewayConnection instead).

on_connect(client, userdata, flags, rc)
on_disconnect(client, userdata, rc)
on_message(client, userdata, message)
on_publish(client, userdata, mid)
on_subscribe(client, userdata, mid, granted_qos)
on_unsubscribe(client, userdata, mid)
async read(service, characteristic, timeout=None, req_id=None)[source]
async request_rules(gateway, rules)[source]

Request activation of rules from a gateway.

Use subscribe_active_rules to see activated rules.

Parameters

rules – iterable of serialized Rule instances

async run_forever()

Never return. Main runloop of the client managing its connection.

async subscribe(service, characteristic, on_value, on_error=None)[source]

Subscribe for characteristic notification on service.

Parameters
  • service – Service name or None for all services.

  • characteristic – Characteristic or None for all characteristics.

  • on_value – callable(value=, extra=, service=, characteristic=)

  • on_error – callable(error=, service=, characteristic=) or None

Returns

An subscription object with .unsubscribe method.

async subscribe_gateways_update(func)[source]
async subscribe_rules_update(gateway, target)[source]

Subscribe for rule activation updates from a gateway.

Parameters

target – callable(rules: list of serialized Rule instances)

Returns

an object with .unsubscribe() method.

async subscriber_ready(subscriber)

Await the subscriber to be ready.

async write(service, characteristic, value, extra=None, timeout=None, req_id=None)[source]

caspia.meadow.client.connection.gateway module

class caspia.meadow.client.connection.gateway.GatewayConnection(*args, **kwargs)[source]

Bases: caspia.meadow.client.connection.connection.Connection

attach_subscriber(subscriber)

Attach the subscriber and return immediatelly.

The subscriber will be ready sometime in future. To wait for that, use await self.subscriber_ready(s).

property connected
detach_subscriber(subscriber)

Detach the subscriber (with immediate effect).

async ensure_connected()
handle_read(service, characteristic, target, handle_dolar=False)[source]

Handle read requests and return an object which has .unsubscribe() attr.

async handle_rules_request(target)[source]

Handle rule activation requests for given gateway name.

target signature should be target(rules: list of serialized Rule instances) Returns an object with .unsubscribe() method.

handle_write(service, characteristic, target, handle_dolar=False)[source]

Handle write requests and return an object which has .unsubscribe() attr.

async notify(service, characteristic, value, extra=None, retain=False, **_)[source]
on_connect(client, userdata, flags, rc)[source]
on_disconnect(client, userdata, rc)
on_message(client, userdata, message)
on_publish(client, userdata, mid)
on_subscribe(client, userdata, mid, granted_qos)
on_unsubscribe(client, userdata, mid)
async run_forever()

Never return. Main runloop of the client managing its connection.

async subscriber_ready(subscriber)

Await the subscriber to be ready.

async update_registration(registration)[source]
async update_rules(rules=None)[source]

Update active rules for given gateway name.

Parameters

rules – list of serialized Rule instances

caspia.meadow.client.connection.subscriber module

class caspia.meadow.client.connection.subscriber.AnonymousSubscriber(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.BaseSubscriber(topic, target)[source]

Bases: object

Meadow’s topic subscriber.

async call_target(*args, **kwargs)[source]
is_coroutine()[source]
is_future()[source]
unsubscribe()[source]
class caspia.meadow.client.connection.subscriber.GatewaySubscriber(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.NotificationSubscriber(topic, on_value, on_error)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.ReadResponseSubscriber(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.ReadSubscriber(*args, **kwargs)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.RulesSubscriber(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.WriteResponseSubscriber(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.WriteSniffer(topic, target)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()
class caspia.meadow.client.connection.subscriber.WriteSubscriber(*args, **kwargs)[source]

Bases: caspia.meadow.client.connection.subscriber.BaseSubscriber

async call_target(*args, **kwargs)
is_coroutine()
is_future()
unsubscribe()

Module contents