ParamStore Usage

Lightweight Mode (Runtime)

For production use, lightweight mode provides fast access to parameter values.

from pybragerone.models.param import ParamStore

# Create store
param_store = ParamStore()

# Subscribe to EventBus (forwards module scope from each update)
async for event in event_bus.subscribe():
      if event.value is None:
         continue
      param_store.upsert(
         f"{event.pool}.{event.chan}{event.idx}",
         event.value,
         devid=event.devid,
      )

# Read values (``get_family`` / ``upsert`` return snapshot copies)
fam = param_store.get_family("P4", 1)
temperature = fam.value if fam else None
status_fam = param_store.get_family("P5", 40)
status = status_fam.status_raw if status_fam else 0

Note

Binary sensor pattern for status bits:

status_fam = param_store.get_family("P5", 40)
status_value = status_fam.status_raw if status_fam else 0
bit_index = 3
is_active = bool(status_value & (1 << bit_index))

Asset-Aware Mode (Setup)

For config flow and entity discovery, enable rich metadata support.

from pybragerone.models import ParamResolver

# ParamStore stays runtime-light; ParamResolver provides asset-driven metadata.
resolver = ParamResolver.from_api(api=api_client, store=param_store, lang="en")

# Access metadata
label = await resolver.resolve_label("PARAM_0")
mapping = await resolver.get_param_mapping("PARAM_0")
print(f"label={label} mapping={mapping}")

Warning

Asset-aware mode requires fetching JavaScript assets from BragerOne web app. Use only during setup, not in production runtime!