API リファレンス - Bamiel
Bamiel を操作するソフトウェアを開発するためのモジュールです。
最初に BamielClient
クラスのインスタンスを作成して、そのメソッドを実行することで操作を行います。
データは、以下の dataclass で定義されるクラスのオブジェクトとして扱います
フィールド:
Field
ヒートマップ:
Heatmap
オブジェクト:
FieldObject
- 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]
与えられたフィールドに登録されているレコーダーの一覧を取得する関数
サンプル
>>> client = BamielClient() >>> recorders = client.get_assigned_recorders()
- get_field(field_id: str) Field
特定のフィールドの詳細を得る関数
- パラメータ:
field_id (str) -- フィールドのID
- 戻り値:
ID に対応するフィールドのオブジェクト
- 戻り値の型:
- 例外:
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) -- ヒートマップを取得する時刻。与えられない場合は現在時刻
- 戻り値:
指定されたフィールド・時刻のヒートマップ
- 戻り値の型:
- 例外:
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
- 戻り値:
指定されたオブジェクト
- 戻り値の型:
- 例外:
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) -- データを取得する時間間隔 (単位は秒)
- 戻り値:
オブジェクトの位置を表す
- 戻り値の型:
サンプル
>>> 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) -- データを取得する時間間隔 (単位は秒)
- 戻り値:
オブジェクトの位置を表す
- 戻り値の型:
サンプル
>>> 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 )
Bamiel を操作するソフトウェアを開発するためのモジュールです。
最初に BamielClient
クラスのインスタンスを作成して、そのメソッドを実行することで操作を行います。
データは、以下の dataclass で定義されるクラスのオブジェクトとして扱います
フィールド:
Field
ヒートマップ:
Heatmap
オブジェクト:
FieldObject
- 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
このスナップショットが対象とする時間範囲の終了時刻。 end か range_sec の片方のみ設定でき、もう一方は自動で計算される
- Type:
datetime
- range_sec
このスナップショットが対象とする時間範囲の長さ(単位: 秒)。 end か range_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