LEAPS センター
LEAPS センター は、デバイス管理、ネットワーク管理、ネットワーク全体の位置情報と遠隔測定データの可視化を提供するウェブアプリケーションです。
主な機能
2Dと3Dのグリッドはリアルタイムで位置を更新し、ネットワーク内のデバイスを視覚化します。
その他の便利な機能には、ユーザー管理、ゾーン管理、ゾーン履歴、フロアプラン管理、ポジション履歴、ポジションヒートマップがあります。
The LEAPS センター は MQTT Broker を介して LEAPSサーバー と相互接続します。LinuxとWindowsのプラットフォーム上でサービスとして動作する。
インストール
システム要件
Dockerのシステム要件はOSによって異なります。
Linuxの場合、64ビット・アーキテクチャ、互換性のあるカーネル・バージョン、特定のカーネル機能が必要だ。
Windowsでは、仮想化を有効にしたWindows 10上でDocker Desktopを使用します
macOSの場合は、macOS 10.13以降のDocker Desktopを使用してください。ハードウェアに関しては、最低2GBのRAMと十分なCPUとディスク容量を推奨します。
注釈
最新の詳細については`Docker <https://docs.docker.com/>`_公式ドキュメントを参照してください。
使用方法
PCにDockerをインストールする
さらに、以下のコマンドを参考にしてインストールすることもできる:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh sudo usermod -aG docker $USER
コンフィギュレーション・パッケージを準備する。
設定ファイル を含むleaps_centerディレクトリを作成します。
leaps-center-web.conf
アプリケーション.特性
leaps-center-history.properties
leaps-center-web.properties
または、LEAPS Center設定パッケージをダウンロードすることもできます(LEAPS_CENTER_DOCKER.zip)。
PCでコマンドプロンプトまたはターミナルウィンドウを開く。
LEAPS Center構成パッケージを解凍したディレクトリに移動します。
たとえば、Ubuntu (Linux) の場合:
cd LEAPS_CENTER_DOCKER/
LEAPS Center Dockerパッケージをインストールし、実行します:
docker run -d -p 80:8080/tcp --name some_name -v /path/to/data/data/:/app/data/ -e LEAPS_CENTER_HOME=/app/data/ leapslabs/leaps_center:tag sh -c "cd /app && java -jar leaps-center-web.jar"
ここで、
some_name
はコンテナに割り当てたい名前であり、tag
は希望するleaps-center-web
バージョンを指定するタグである。leaps_centerイメージは、設定ファイル、アプリケーションログ、設定/ノード履歴データベースを格納する外部マウントフォルダと共に動作する必要があります。
オプション
-v /path/to/data/:/app/data/
は/path/to/data/
にあるフォルダを内部の/app/data
フォルダにマウントします。データフォルダには以下のファイルが必要です。
推奨される走行オプション
--user $(id -u):$(id -g)
特定のユーザーとグループの下でインスタンスを実行する。
--restart unless-stopped
サーバーがクラッシュした場合にインスタンスを自動的に再起動する。走行オプション
--security-opt seccomp=unconfined
このオプションは32ビットのRaspberry Piイメージ(Raspbian)で必要です。なぜなら、Dockerイメージに悪影響を与える(MQTTサーバーに接続できない)バグのある旧式のseccompライブラリが含まれているからです。このオプションにより、この問題を上書きすることができます。
LEAPS Centerのインストール処理が開始されます。
たとえば、Ubuntu (Linux) の場合:
docker run -d -p 80:8080/tcp --name leaps_center -v $PWD/leaps_center/:/app/data/ -e LEAPS_CENTER_HOME=/app/data/ leapslabs/leaps_center:latest sh -c "cd /app && java -jar leaps-center-web.jar" Unable to find image 'leapslabs/leaps_center:latest' locally latest: Pulling from leapslabs/leaps_center a458657ccc71: Pull complete Digest: sha256:a19b127656d41d8607f043c2c83924e5b9a5cbd4dc23cfbed070be3b9cfc6b9a Status: Downloaded newer image for leapslabs/leaps_center:latest 320d3768289874e063619f75faca7a24dd75a08884df8cd8fb2cc9b54c6f0a46
インストールが成功したことを確認し、実行する:
たとえば、Ubuntu (Linux) の場合:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1145b72db35 leapslabs/leaps_center:latest "sh -c 'cd /app && …" 37 seconds ago 11 seconds ago leaps_center
ウェブブラウザを開き、次のhttp://localhost:80;LEAPS Centerアプリケーションがウェブブラウザにロードされます。
これでLEAPS CenterのPCへのインストールと起動は完了です。
設定ファイル
leaps-center-web.conf
JAVA_OPTS="-Xms256m -Xmx512m -Xss256k"
アプリケーション.特性
leaps-center-history.properties
leaps-center-web.properties
この設定ファイルは、アプリケーションのロギングを制御する。
spring.main.banner-mode=OFF logging.level.root=OFF logging.level.global.leaps.center.mqtt=OFF logging.level.global.leaps.center.init=OFF logging.level.global.leaps.center.service=OFF logging.level.global.leaps.center.history.filter=OFF logging.level.global.leaps.center.history.service=OFF logging.level.global.leaps.center.history=OFF logging.level.global.leaps.center.web.component=OFF logging.level.global.leaps.center.web.rest=OFF logging.level.global.leaps.center.web.sse=OFF logging.level.global.leaps.center.web=OFF logging.level.global.leaps.center=OFF
この設定ファイルはノードの位置履歴ロギングを制御します。
# # LEAPS - Low Energy Accurate Positioning System - LEAPS Center. # # Copyright (c) 2016-2021, LEAPS. # # Licensed under the Apache License, Version 2.0 (the "License"); # You may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # history enabled (default false) history.enabled=false history.position.enabled=true history.zone.enabled=true # use node position message timestamp (default true) history.use.position.timestamp=false # ======================================================================================================= # Export Options # ======================================================================================================= # add headers (default false) history.export.headers=false # maximum number of records (default 1000000) history.export.max.lines=1000000 # compress export file (default true) history.export.compress=true # number of decimal places for x, y, z values (default 4) history.export.position.decimal.places=2 # format network id to hex value (default true) history.export.hex.network.id=true # format node ID to hex value (default true) history.export.hex.node.id=true # ======================================================================================================= # Position History Options # ======================================================================================================= # interval time to add a history record (default 10000) history.node.position.interval.time=10000 # minimun quality value (default 0) history.node.position.min.quality=0 # ======================================================================================================= # Heatmap Options # ======================================================================================================= # maximum number of records for heatmap (default 100000) heatmap.max.results=100000 # ======================================================================================================= # Purge Options # ======================================================================================================= # time to purge database records in days (default 30 days) history.purge.time=30 # backup purged records to a file in /history folder (default false) history.purge.backup.records=true # max number of backup files (default 10) history.purge.max.backup.files=5 # ======================================================================================================= # DBMS (SQLITE, POSTGRESQL, MY_SQL, ORACLE, SQL_SERVER or CUSTOM) # ======================================================================================================= # History - SQLite Database Example (default). # history.dbms=SQLITE # history.db.jdbc.url=jdbc:sqlite:leaps-center-history.db # history.db.username= # history.db.password= # History - PostgreSQL Database Example # history.dbms=POSTGRESQL # history.db.jdbc.url=jdbc:postgresql://localhost:5432/leaps_center_history # history.db.username=leaps_center # history.db.password=pwd # History - Oracle Database Example # Important! To use Oracle DBMS is mandatory to change global.leaps.center.history.entity.NetworkNodeHistory.id @Id generation strategy to GenerationType.AUTO or GenerationType.SEQUENCE. Oracle does not support GenerationType.IDENTITY. # history.dbms=ORACLE # history.db.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect # history.db.jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/XE # history.db.username=leaps_center # history.db.password=pwd # History - MySQL Database Example # history.dbms=MY_SQL # history.db.jdbc.url=jdbc:mysql://localhost:3306/leaps_center # history.db.username=leaps_center # history.db.password=pwd # History - SQL Server Database Example # TODO: It needs to be tested. # history.dbms=SQL_SERVER # history.db.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=leaps_center_history;integratedSecurity=true # history.db.jdbc.url=jdbc:jtds:sqlserver://localhost:1433/leaps_center_history;instance=SQLEXPRESS; # history.db.username=leaps_center # history.db.password=pwd # History - Custom Database # history.dbms=CUSTOM # Hibernate Dialect # history.db.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect # JDBC driver class # history.db.jdbc.driver.class=org.postgresql.Driver
この設定ファイルはleaps_centerアプリケーションをコントロールします。
# # LEAPS - Low Energy Accurate Positioning System - LEAPS Center. # # Copyright (c) 2016-2021, LEAPS. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # database (SQLITE, POSTGRESQL, MY_SQL, ORACLE, SQL_SERVER or CUSTOM) db.dbms=SQLITE # History - SQLite Database Example. # dbms=SQLITE # db.jdbc.url=jdbc:sqlite:leaps-center-db # db.username= # db.password= # History - PostgreSQL Database Example # db.dbms=POSTGRESQL # db.jdbc.url=jdbc:postgresql://localhost:5432/leaps_center # db.username=postgres # db.password=qwe123 # History - Oracle Database Example # Important! To use Oracle DBMS is mandatory to change global.leaps.center.entity.NetworkNodeHistory.id @Id generation strategy to GenerationType.AUTO or GenerationType.SEQUENCE. Oracle does not support GenerationType.IDENTITY. # db.dbms=ORACLE # db.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect # db.jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/XE # db.username=leaps_center # db.password=q1w2e3r4t5 # History - MySQL Database Example # db.dbms=MY_SQL # db.jdbc.url=jdbc:mysql://localhost:3306/leaps_center # db.username=root # db.password=qwe123 # History - SQL Server Database Example # db.dbms=SQL_SERVER # db.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=leaps_center_history;integratedSecurity=true # db.jdbc.url=jdbc:jtds:sqlserver://localhost:1433/leaps_center_history;instance=SQLEXPRESS; # db.username=leaps_center # db.password=qwe123 # History - Custom Database # db.dbms=CUSTOM # Hibernate Dialect # db.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect # JDBC driver class # history.db.jdbc.driver.class=org.postgresql.Driver # db.jdbc.url=jdbc:postgresql://localhost:5432/leaps_center # db.username=postgres # db.password=qwe123 # db.jdbc.driver.class= # db.hibernate.dialect= # show sql (default false) # db.jpa.show-sql=false # format sql (default false) # db.jpa.format-sql=false # ======================================================================================================= # network # ======================================================================================================= # enable the registration of networks with mqtt connection type = HOST. (default true) network.mqtt.connection.by.host.enabled=true # enable the registration of networks with mqtt connection type = PAN_ID. (default false) network.mqtt.connection.by.network.id.enable=false # enable the registration of networks with web client connection by websocket. (default false) network.web.client.connection.by.web.socket=false # create the default network if it does not exist when starting. (default true) network.create.default.network=true # network.create.default.floor.plan=true network.default.id= network.default.name=Default # PAN_ID or HOST network.default.mqtt.connection.type=HOST # WS or SSE network.default.web.client.connection.type=SSE # MQTT mqtt.host= mqtt.ws.port=15675 mqtt.tcp.port=1883 mqtt.username=dwmuser mqtt.password=dwmuser # Enable/Disable TLS #mqtt.tls= # CA_SIGNED_CERTIFICATE (signed by a publicly trusted CA), CA_FILE_CERTIFICATE (file certificate); #mqtt.tls.certificate.type=CA_SIGNED_CERTIFICATE # TLS Protocol: TLS_V1 (TLSv1), TLS_V1_1 (TLSv1.1), TLS_V1_2 (TLSv1.2), TLS_V1_3(TLSv1.3); #mqtt.tls.protocol=TLS_V1_2 #mqtt.tls.certificate.file=/user/.../leaps-center.crt mqtt.topic.prefix=dwm mqtt.tag.topic.prefix=node mqtt.anchor.topic.prefix=node # ======================================================================================================= # floorplan settings # ======================================================================================================= # size in pixels (default 2048) floorplan.max.image.dimension.size=2048 # ======================================================================================================= # scene settings # ======================================================================================================= # size in cm (default 50cm) scene.grid.size=50 # color in int (default 0xD8D8D8) scene.grid.color=0xD8D8D8 # max grid visibility distance in meters (default 100) scene.grid.max.visibility.distance=100 # zoom min in meters (default 2) scene.zoom.min=2 # zoom max in meters (default 100) scene.zoom.max=100 # ======================================================================================================= # web server settings # ======================================================================================================= # http session timeout server.servlet.session.timeout=120m # maximum number of http sessions per user (-1 is unlimited) server.max.sessions.per.user=-1 # mod-jk/ajp connector configuration tomcat.ajp.enabled=false # tomcat.ajp.port=8009 # tomcat.ajp.secret.required=false # tomcat.apr.enabled=false # server port (2-65535) server.port=8080 # enable / disable https server.ssl.enabled=false # keystore format # server.ssl.key-store-type=PKCS12 # keystore location # server.ssl.key-store=D:\\Leaps\\tls\\springboot.p12 # keystore alias # server.ssl.key-alias=springboot # keystore password # server.ssl.key-store-password=password # SSL protocol to use # server.ssl.protocol=TLS # Enabled SSL protocols # server.ssl.enabled-protocols=TLSv1.2
はじめに
デフォルトでは、ユーザー名は admin、パスワードは admin です。
LEAPS サーバー Docker
LEAPS Centerを起動します:
docker start leaps_center
を実行します。LEAPS Center を停止します:
docker stop leaps_center
を実行します。LEAPS Centerを再起動します:
docker restart leaps_center
を実行します。LEAPS Centerを削除するには、
docker rm --force leaps_center
を実行します。
ネットワーク構成
ネットワークを設定するには、メニューから Networks を選択する。
![]()
ネットワーク管理ダイアログがポップアップします。デフォルトでローカルホストネットワークがネットワークID 0x1234で設定されています。
![]()
新しいネットワークを作成するには、右下の Add ボタンをクリックします。
次に、必要な設定パラメータを入力する:
ネットワークIDがわからない場合は、LEAPSマネージャー やShellを使って見つけることができる。
最後に Test ボタンをクリックして接続を確認し、 Save ボタンをクリックして設定を保存します。
ノード構成
ノードを設定するには、あらかじめノードを特定のネットワークに割り当てる必要があります。
指定したノードのあるネットワークを選択すると、ネットワークの詳細が表示されます。次に、ノードの設定を開始します。
ゲートウェイ・ノード、アンカー・ノード、タグ・ノードとして設定可能なノードについては、以下を参照してください
フロアプラン
ゾーン
ユーザー
API 認証
ユーザは /login に以下のパラメータを渡すシンプルな HTTP POST を行う必要があります (admin:admin を例にしています)。
ユーザー名: admin
パスワード: admin
remember-me: on
ログイン後、JSESSIONIDクッキーが生成され、ユーザはそれ以降のリクエストでそれを使用する必要があります。
注釈
これは必須ではありません。もしユーザがこれを使うと、レスポンスとして別のクッキー (クッキー REMEMBERME) が追加され、ユーザはそれ以降のリクエストでそれを使うことができます。
LEAPS Centerでは、ログイン後およびユーザが認証されていない場合にリダイレクトを実行するため、ユーザのクライアントで
follow redirects
パラメータを適切に設定する必要がある。ログイン後のレスポンスコードは302であるが、ユーザが認証されていない場合のステータスコードも302であるため、ユーザはそれを手動で処理する必要がある。ユーザは、例えばRESTサービスに対してどのようなリクエストを行っても、レスポンスのステータスコードが200でなければ、ユーザは認証されません。
以下は、リクエストとネットワークへの問い合わせを行うJavaのコード例である:

詳細については、以下の2つのビデオを参照してください。1つはPostmanを使用し、もう1つはJavaコードを使用します。
Postman
Java Client
トラブルシューティング
次のコマンド
docker restart leaps_center
を使って LEAPS Center を再起動してください。LEAPS Center が起動しているときにログをチェックし、docker デスクトップを開いて leaps_center コンテナを選択してください。