API リファレンス - Bamiel

Bamiel を操作するソフトウェアを開発するためのモジュールです。 最初に BamielClient クラスのインスタンスを作成して、そのメソッドを実行することで操作を行います。

データは、以下の dataclass で定義されるクラスのオブジェクトとして扱います

class hylable.bamiel.BamielClient(profile_name: str = 'default')

Bamiel との通信を行うクラス

add_objects(objects: list[FieldObject]) list[FieldObject]

オブジェクトを追加する関数

パラメータ:

objects (list[FieldObject]) -- 追加したいオブジェクトのリスト

戻り値:

追加されたオブジェクト

戻り値の型:

list[FieldObject]

サンプル

>>> client = BamielClient()
>>> objs = [
        FieldObject(id='obj1', type='human', name='Tom'),
        FieldObject(id='obj2', type='human', name='Alice'),
    ]
>>> obj = client.add_object(objs)
add_snapshot(snapshot: FieldObjectSnapshot) None

指定されたオブジェクト位置を表すスナップショットを追加する関数

パラメータ:

snapshot (FieldObjectSnapshot) -- 追加したいフィールドのスナップショット

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> time1 = datetime.datetime(2023, 1, 1, 0, 0, 0, 0)
>>> time2 = datetime.datetime(2023, 1, 1, 0, 0, 5, 0)
>>> snapshot = FieldObjectSnapshot(
        start=time1,
        range_sec=70,
        positions=[
            FieldObjectPosition({
                "id": "obj1",
                "field_id": field[0].id,
                "timestamp": time1,
                "position": {"x": 20, "y": 20}
            },
            FieldObjectPosition({
                "id": "obj1",
                "field_id": field[0].id,
                "timestamp": time2,
                "position": {"x": 21, "y": 21}
            })
        ]
    )
>>> client.add_snapshot(snapshot)
del_object(object_id: str)

オブジェクトを削除する関数

パラメータ:

object_id (str) -- 削除したいオブジェクトのID

サンプル

>>> client = BamielClient()
>>> client.del_object('obj1')
del_position(position: FieldObjectPosition) None

指定されたオブジェクト位置を削除する関数

パラメータ:

position (FieldObjectPosition) -- 削除したいオブジェクト位置

サンプル

>>> client = BamielClient()
>>> pos = FieldObjectPosition({
        "id": "obj1",
        "field_id": field[0].id,
        "timestamp": time1,
        "position": {"x": 20, "y": 20}
    })
>>> client.del_position(pos)
del_snapshot(snapshot: FieldObjectSnapshot) None

指定されたオブジェクト位置を表すスナップショットを削除する関数

パラメータ:

snapshot (FieldObjectSnapshot) -- 削除したいフィールドのスナップショット

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> time1 = datetime.datetime(2023, 1, 1, 0, 0, 0, 0)
>>> time2 = datetime.datetime(2023, 1, 1, 0, 0, 5, 0)
>>> snapshot = FieldObjectSnapshot(
        start=time1,
        range_sec=70,
        positions=[
            FieldObjectPosition({
                "id": "obj1",
                "field_id": field[0].id,
                "timestamp": time1,
                "position": {"x": 20, "y": 20}
            },
            FieldObjectPosition({
                "id": "obj1",
                "field_id": field[0].id,
                "timestamp": time2,
                "position": {"x": 21, "y": 21}
            })
        ]
    )
>>> client.del_snapshot(snapshot)
get_assigned_recorders(field: Field) list[Recorder]

与えられたフィールドに登録されているレコーダーの一覧を取得する関数

パラメータ:

field (Field) -- レコーダーの一覧を取得したいフィールド

戻り値:

レコーダーの一覧

戻り値の型:

List[Recorder]

サンプル

>>> client = BamielClient()
>>> recorders = client.get_assigned_recorders()
get_field(field_id: str) Field

特定のフィールドの詳細を得る関数

パラメータ:

field_id (str) -- フィールドのID

戻り値:

ID に対応するフィールドのオブジェクト

戻り値の型:

Field

例外:

DataNotFoundError -- 指定されたフィールドIDがない時

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> field = client.get_field(fields[0].id)
get_fields() list[Field]

すべてのフィールドの情報を得る関数

戻り値:

フィールドのリスト

戻り値の型:

list[Field]

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
get_heatmap(field: Field, timestamp: datetime = datetime.datetime(2024, 3, 29, 9, 23, 35, 35334, tzinfo=datetime.timezone.utc)) Heatmap

指定されたフィールドと時刻のヒートマップを得る関数

パラメータ:
  • field (Field) -- ヒートマップを取得するフィールド

  • timestamp (datetime) -- ヒートマップを取得する時刻。与えられない場合は現在時刻

戻り値:

指定されたフィールド・時刻のヒートマップ

戻り値の型:

Heatmap

例外:

DataNotFoundError -- ヒートマップがないとき

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> heatmap = client.get_heatmap(fields[0]).heatmap
get_object(object_id: str) FieldObject

指定された ID のオブジェクトを得る関数

パラメータ:

object_id (str) -- オブジェクトのID

戻り値:

指定されたオブジェクト

戻り値の型:

FieldObject

例外:

DataNotFoundError -- オブジェクトがないとき

サンプル

>>> client = BamielClient()
>>> objs = client.get_objects()
>>> obj = client.get_object(objs[0])
get_objects() list[FieldObject]

すべてのオブジェクトの情報を得る関数

戻り値:

オブジェクトのリスト

戻り値の型:

list[FieldObject]

サンプル

>>> client = BamielClient()
>>> objects = client.get_objects()
get_snapshot_by_field(field: Field, start: datetime, end: datetime | None = None, range_sec: int | None = None) FieldObjectSnapshot

指定されたフィールドの指定された時間帯における、 オブジェクトの位置情報を得る関数

パラメータ:
  • field (Field) -- データを取得するフィールド

  • start (datetime) -- データを取得する開始時刻

  • end (datetime) -- データを取得する終了時刻。end または range_sec の片方の指定が必要

  • range_sec (int) -- データを取得する時間間隔 (単位は秒)

戻り値:

オブジェクトの位置を表す

戻り値の型:

FieldObjectSnapshot

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> start = datetime.datetime(2023, 1, 1, 0, 0, 0, 0)
>>> range_sec = 120
>>> snapshot = client.get_snapshot_by_field(
        fields[0], start, range_sec=range_sec
    )
get_snapshot_by_object(fieldObject: FieldObject, start: datetime, end: datetime | None = None, range_sec: int | None = None) FieldObjectSnapshot

指定されたオブジェクトの指定された時間帯における位置情報を得る関数

パラメータ:
  • fieldObject (FieldObject) -- データを取得したいオブジェクト

  • start (datetime) -- データを取得する開始時刻

  • end (datetime) -- データを取得する終了時刻。end または range_sec の片方の指定が必要

  • range_sec (int) -- データを取得する時間間隔 (単位は秒)

戻り値:

オブジェクトの位置を表す

戻り値の型:

FieldObjectSnapshot

サンプル

>>> client = BamielClient()
>>> objs = client.get_objects()
>>> start = datetime.datetime(2023, 1, 1, 0, 0, 0, 0)
>>> range_sec = 120
>>> snapshot = client.get_snapshot_by_object(
        objs[0], start, range_sec=range_sec
    )
start(field: Field) None

指定されたフィールドの分析を開始する関数

パラメータ:

field (Field) -- 分析を開始したいフィールドのID

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> client.start(fields[0])
stop(field: Field) None

指定されたフィールドの分析を停止する関数

パラメータ:

field (Field) -- 分析を停止したいフィールドのID

サンプル

>>> client = BamielClient()
>>> fields = client.get_fields()
>>> client.stop(fields[0])

Bamiel を操作するソフトウェアを開発するためのモジュールです。 最初に BamielClient クラスのインスタンスを作成して、そのメソッドを実行することで操作を行います。

データは、以下の dataclass で定義されるクラスのオブジェクトとして扱います

class hylable.bamiel.Field(rawdata: dict = <factory>, id: str = '', name: str = '', created_at: ~datetime.datetime | None = None, areas: list = <factory>, current: bool = False, image: str = '', orgid: str = '', size: dict = <factory>)

ベースクラス: BaseDataModel

フィールドを表す dataclass

id

fld_ から始まるフィールドのID

Type:

str

orgid

org_ から始まる組織のID

Type:

str

name

フィールドの名前

Type:

str

created_at

フィールドが作成された時刻

Type:

datetime

current

このフィールド定義が最新のものであれば True、過去のものなら False になる

Type:

bool

image

フィールドへのパス

Type:

str

size

{"w": W, "h": H} の形式で表されるフィールドのサイズ

Type:

dict

class hylable.bamiel.FieldObject(rawdata: dict = <factory>, id: str = '', orgid: str = '', type: str = '', name: str = '')

ベースクラス: BaseDataModel

フィールド上のオブジェクトを表す dataclass たとえば、人の位置やモノの位置などが上げられる。

id

オブジェクトのID

Type:

str

orgid

org_ から始まる組織のID

Type:

str

type

任意に指定できるオブジェクトの種類

Type:

str

name

任意に指定できるオブジェクトの名前

Type:

str

class hylable.bamiel.FieldObjectPosition(rawdata: dict = <factory>, id: str = '', orgid: str = '', field_id: str = '', timestamp: ~datetime.datetime | None = None, position: dict = <factory>)

ベースクラス: BaseDataModel

フィールド上のオブジェクトの位置を表す dataclass FieldObjectSnapshot のメンバーとして使われる。

id

このポジションが関連するオブジェクトのID

Type:

str

orgid

org_ から始まる組織のID

Type:

str

field_id

このオブジェクトがいたフィールドの ID

Type:

str

timestamp

オブジェクトがこの位置にいた時刻

Type:

datetime

position

{"x": X, "y": Y} の形式で表現んされるオブジェクトの位置

Type:

dict

class hylable.bamiel.FieldObjectSnapshot(rawdata: dict = <factory>, orgid: str = '', start: ~datetime.datetime | None = None, end: ~datetime.datetime | None = None, range_sec: int | None = None, positions: list[~hylable.bamiel.FieldObjectPosition] = <factory>)

ベースクラス: BaseDataModel

ある時間の範囲中にフィールドに含まれるのオブジェクトとその 位置をあらわす dataclass

orgid

org_ から始まる組織の ID

Type:

str

start

このスナップショットが対象とする時間範囲の開始時刻

Type:

datetime

end

このスナップショットが対象とする時間範囲の終了時刻。 endrange_sec の片方のみ設定でき、もう一方は自動で計算される

Type:

datetime

range_sec

このスナップショットが対象とする時間範囲の長さ(単位: 秒)。 endrange_sec の片方のみ設定でき、もう一方は自動で計算される

Type:

int

positions

このスナップショットの対象範囲のオブジェクトの位置のリスト

Type:

list[FieldObjectPosition]

class hylable.bamiel.Heatmap(rawdata: dict = <factory>, id: str = '', orgid: str = '', timestamp: ~datetime.datetime | None = None, window: float = 0, heatmap: ~numpy.array = <factory>, recorder_ids: list[str] = <factory>, min: float = 0, max: float = 0, average: float = 0, field_size: dict = <factory>, updated_at: ~datetime.datetime | None = None)

ベースクラス: BaseDataModel

フィールドのヒートマップを表す dataclass

id

ヒートマップが所属するフィールドの ID

Type:

str

orgid

org_ から始まる組織の ID

Type:

str

timestamp

このヒートマップが対応する時刻

Type:

datetime

window

このヒートマップの計算に使われた計算窓の長さ

Type:

float

heatmap

2次元配列で表現されるヒートマップ

Type:

numpy.array

recorder_ids

このヒートマップの計算に使われたレコーダー ID のリスト

Type:

list[str]

min

ヒートマップの最小値

Type:

float

max

ヒートマップの最大値

Type:

float

average

ヒートマップの平均値

Type:

float

field_size

{"w": W, "h": H} の形式で表されるフィールドのサイズ

Type:

dict

updated_at

このヒートマップが計算された時刻

Type:

datetime