日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1...

47
HARTING HAIIC MICA Programming Guide 日本語

Transcript of 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1...

Page 1: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HARTING HAIIC MICA Programming Guide

日本語

Page 2: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

2 HARTING IT Software Development

3. Edition 2017, 09/17

© HARTING IT Software Development, Espelkamp

翻訳を含むすべての権利が留保されています。

このマニュアルのいかなる部分も、HARTING Electric GmbH & Co. KG, Espelkampの書面による許可なく、電子システムを使用して、いかなる形態(印刷、コピー、マイクロフィルムまたはその他のプロセス)でも複製、加工、複製、配布することはできません。

予告なく変更することがあります。

このProgramming Guideは、MICAコンテナアプリケーションの開発方法が含まれています。ベースバージョンは、V1.5.0で記述されています。

Page 3: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 3

目次1 コンテナの基本と使用方法 ............................................................................. 4

1.1 コンテナベーシック .............................................................................. 41.2 コンテナのインストール ................................................................. 4

1.3 コンテナの起動、停止、管理 ................................................................. 61.4 コンテナのエクスポート ................................................................. 61.5 コンテナの複製 ........................................................................................... 71.6 コンテナの更新 ........................................................................................... 71.7 コンテナのリセット .............................................................................. 7

2 “HelloWorld” アプリケーション ................................................................ 8

2.1 Pythonで“HelloWorld”アプリケーション ....................................... 8

2.2 Javaで“HelloWorld”アプリケーション .................................................... 9

2.3 C++で“HelloWorld” クロスコンパイル .................................................... 9

3 MICAベースシステムによって提供されるサービス ..................................... 11

3.1 概要 ....................................................................................................... 11

3.2 Single Sign On (SSO) .............................................................................. 11

3.3 コンテナ管理 ......................................................................................... 18

3.4 ベース管理 ......................................................................................... 21

3.5 ベースとコンテナのネットワーク設定 .................................................. 25

3.6 ハードウェアアクセス - RPCによるデバイス管理 ........................ 28

3.7 RPCによる時間設定管理 ............................................................... 31

3.8 コンテナアクセス ............................................................................ 32

3.9 ファームウェア更新 ............................................................................ 33

3.10 WLAN Functionality ................................................................................ 36

4 コンテナ開発 ..................................................................................................... 38

4.1 自動起動スクリプト ............................................................................ 38

4.2 クロスコンパイル ............................................................................ 38

5 GUIプログラミング ........................................................................................ 42

6 RFID電子識別プレートの構造 ........................................................................... 44

7 メソッドインデックス ........................................................................................ 46

Page 4: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

4 HARTING IT Software Development

1 コンテナの基本と使用方法

1.1 コンテナベーシック

コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです(ベースシステムと呼ばれます)。 MICAコンテナには、アプリケーションと必要なすべてのライブラリとスクリプトが含まれています。 したがって、アプリケーションは互いに分離され、基本システムはMICA内の依存関係を大幅に減少させます。

1.2 コンテナのインストール

MICAアプリケーションの開発は、通常、開発コンテナから始まります。 HARTINGは、例えば、基本的なPython、DebianまたはJava開発コンテナを提供しています。実行中のMICAベースシステムに新しいコンテナをインストールするには、コンテナアーカイブ(.lzo)をPC上の任意のディレクトリにコピーします。Webブラウザで目的のMICAに接続します。 Windowsでは、MICAにhttps://devicenameでアクセスできます。 お使いのコンピュータがmdns(Linux、Mac)を使用している場合、ホームページはhttps://devicename.local1にアクセスできます。 セキュリティ証明書を受け入れるよう求められます。

1 MICAベースシステムに接続する方法の詳細については、"MICA Quick Start Guide"および"MICA Administrator Guide."を参照してください。

MICAベースOS

HTTPS WSS

TCP/IP

IP 10.86.129.24 fe80::52

ベースサービス(コンテナ管理、システム

構成とメンテナンス、ユーザ管理+ SSO)

コンテナ環境

Pythonコンテナ

GPIOコンテナ

......

IP 10.86.129.22 fe80::1

IP 10.86.129.23 fe80::2

図1 : システムアーキテクチャ

Page 5: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 5

ユーザー名adminと管理者パスワードを使用してデバイスにログインします。 adminアカウントのデフォルトのパスワードはadminです。 必要に応じて、Settings >>> Accountsでパスワードを変更することができます。"Install"をクリックし、コンテナに任意の名前を付け、PCからコンテナアーカイブ.lzoをアップロードします。

図2: コンテナのインストールのためのインストールアイコン

図3: コンテナのアップロードとインストール

Page 6: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

6 HARTING IT Software Development

1.3 コンテナの起動、停止、および管理

WEBGUIでは、コンテナの開始、停止、複製、およびエクスポートを含むコンテナの管理が行えます。 コンテナ管理の詳細については、"MICA Quick Start Guide"および"MICA Administrator Guide"を参照してください。.

図4: コンテナの起動

1.4 コンテナのエクスポート

コンテナをエクスポートすると、アプリケーション設定などコンテナの現在の状態のコピーが作成されます。 これは、コンテナを配布し、クライアントPCまたはネットワークディレクトリにスナップショットとバックアップを保存するために推奨される方法です。

図5 コンテナのエクスポート

Page 7: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 7

1.5 コンテナの複製

コンテナを複製すると、複製されたコンテナの正確なコピーがMICA自体に作成されます。

ルートファイルシステムとオーバーレイの両方が正確にコピーされ、ランニングシステムに追加され、機能的に同等の2つのコンテナがシステムにインストールされます。

1.6 コンテナの更新

コンテナを更新すると、元のファイルシステムが置き換えられ、オーバーレイファイルシステム内のすべての変更されたデータは変更されません。このようにして、ユーザによって行われた変更(例えば設定)は、コンテナおよびそのルートファイルシステムの一貫性を維持しながら失われることはありません。

1.7 コンテナのリセットコンテナをリセットすると、ユーザによって生成されたすべてのデータがコンテナのオーバーレイファイルシステムから削除されます。

コンテナのルートファイルシステムは変更されません。 コンテナファイルのルートシステムは、最後のインストール/更新後の状態にリセットされます。

警告:コンテナをリセットすると、元のコンテナまたは最後のインストール以降に作成されたすべてのデータと設定が削除されます。 コンテナは元のインストールまたは最後の更新の状態に復元されます。

Page 8: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

8 HARTING IT Software Development

2 “HelloWorld” アプリケーション

2.1 Pythonによる“HelloWorld” アプリケーションHARTINGのPythonデモ・コンテナをインストールした後、PythonスクリプトをMICA

WebGUIのPythonプログラミング・シェルに書き込むことができます。コンテナアイコンをクリックしてPythonコンテナを開きます。 コンテナが開いたら、[Enable Shell]をクリックします。 対話的にPythonコードを入力して実行することができます。Pythonのデモ・コンテナでは、コンテナの/home/pythonディレクトリに格納されているPythonスクリプトを実行することもできます。 sshまたはscpを使用してコンテナファイルシステムにアクセスする方法については、2.2項を参照してください。

図6: Python開発コンテナのGUI

例:

Enter

print(“Hello World!”)

and press “Start Script”.

Hello World!

画面に表示されます。

Page 9: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 9

2.2 Javaによる“HelloWorld” アプリケーションHARTING Javaコンテナをインストールした後、独自のJavaプログラムをPCに作成し、実行可能ファイルをssh、scp、またはsftpを使用してJavaコンテナに転送することができます。 次の例では、WindowsにPutty(http://www.putty.org/)とJava SE開発キット7(JDK

7)を使用します。

注意:HARTING JavaコンテナはJava 7のみをサポートしています。新しいコンパイラでコンパイルすると、Hello Worldスクリプトはコンテナで実行されません。JDKをインストールした後、次のような簡単なJavaプログラムを作成して保存します。

class HelloWorldApp {

public static void main(String[] args) {

System.out.println("Hello World!");

}

}

ファイルを "HelloWorld.java"の下に "ANSI"エンコーディングで保存します。

HelloWorld.javaを次のようにコンパイルできます。

javac Helloworld.java

scpを使用して、実行可能なJavaファイルHelloWorldApp.classをJavaコンテナにプッシュできます。

Windowsでは、Windowsの[スタート]メニューでコンソールウィンドウまたはコマンドプロンプトを開く方法があります。 pscpのPATH変数を設定します。 オプション-scpを指定してpscpを実行することにより、scpの使用を強制します。

Pscp -scp c:\documents\HelloWorldApp.class root@<container-ip-ad-

dress>:

Javaコンテナのルートパスワード(デフォルトルート)を入力する必要があります。

コンテナをコピーした後、sshを使用してJavaコンテナに接続できます。

ssh root@<container-ip-address>

Javaアプリケーションを実行します。

java -cp . HelloWorldApp

すべてがうまくいけば、sshシェルで次のように表示されるはずです。

Hello World!

2.3 C++ による“HelloWorld” クロスコンパイルgccや別のLinuxコンパイラスイートをコンテナ(HARTING Debianベースコンテナなど)にインストールし、MICAでコードを直接開発するだけでなく、Linux環境でプログラムを開発し、MICA ARMv7 CPU用にクロスコンパイルすることも可能でDebianまたはbusyboxのコンテナに転送します。

Page 10: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

10 HARTING IT Software Development

この例では、gcc-linaro-arm-linux-gnueabihf-4.9-2016.02-x86_linux.tar.xz (https://

releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/から入手可能)という事前設定済みのC++クロスコンパイラを使用して、UbuntuからHARTING Busyboxコンテナにクロスコンパイルしています。

http://sourceware.org/ml/crossgcc/2005-08/msg00114/l-cross-ltr.pdfに記載されているように、独自のクロスコンパイラを構築することもできます。

gcc-linaroアーカイブをダウンロードし、ローカルのUbuntuシステムで作成した新しいディレクトリに解凍します。

tar xvf gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf.tar.xz

次に、geditのようなテキストエディタを開き、タイプを入力します。

#include <iostream>

int main()

{

std::cout << “Hello World\n”;

}

HelloWorld.cppとして保存します。 コンパイルを入力

./arm-linux-gnueabihf-g++ HelloWorld.cpp –o a.out.

a.outファイルをBusyboxコンテナに転送し、セクション2.2で説明されているようにssh経由でコンテナ上のa.outを実行します。 Hello Worldが画面に表示されたら成功です!

Page 11: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 11

3 MICAベースシステムによって提供されるサービス3.1 概要

MICAベースシステムは、コンテナのライフサイクル、ハードウェアとネットワークのアクセス、シングルサインオン(SSO)の管理など、開発者向けのさまざまなサービスを提供します。 JSON-RPC 2.0に基づくリモートプロシージャコールメカニズムが使用されています。 詳細な仕様については、www.simple-is-bet-ter.org/json-rpc/jsonrpc20.html

を参照してください。サービスコールの前には矢印が右側に表示され、サービス応答の前には矢印が左に表示されます。 IDプロパティは必須であり、複数のリクエストが同時に送信された場合に、リクエストとの回答を関連付けるためにクライアントによって設定される必要があります。 jsonrpcプロパティは常に2.0に設定されます。 シングルサインオンなしで "ping"メソッドを使用できます。

-> {"jsonrpc":"2.0","id":1,"method":"ping"}

<- {"jsonrpc": "2.0", "id": 1, "result": "pong"}

3.2 シングルサインオン (SSO)

ベースシステムは、Webサービスとしてシングルサインオンサービスを提供します。 このサービスは、POST要求またはWebsocketインタフェースとしてHTTP上で使用できます。

このサービスは、TLS暗号化でのみ使用できます。 mica1.localという名前のデバイスの場合、サービスはポート443上の次のURLで使用できます。:

HTTP: https://mica1.local/base_service/

Websocket: wss://mica1.local/<ws>/

図8 で説明したように、保護されたリソースを使用するクライアントは、検証可能なトークンをまだ所有していないため、SSOサービスリクエストを送信します。

クライアント ウェブサービス

リクエストデータ (例 ping)

送信データ (例 pong)

図7: ベースサービスへのアクセス

Page 12: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

12 HARTING IT Software Development

SSOサービスは、認証が成功した場合に、TTL(Time To Live)のトークンを渡します。

最初はこの時間は10分です。 クライアントがサーバ上でプロシージャを開始したい場合、このトークンを引き渡す必要があります。 トークンを取得するには、ユーザ名とbase64でコード化されたパスワードをパラメータとして、get_auth_token rpcリクエストを送信する必要があります((applicable for ad-mins, containeradmins, users):

Method: get_auth_token

Parameters: User (string),

pwd (base64 encoded string)

Return Value: act_token (string), auth_token (string), time to live (seconds)

例:

-> { "jsonrpc" : "2.0",

"id" : <int>,

"method" : "get_auth_token",

"params" : {

"user" : "<string>",

"pwd" : "<base64 encoded string>"

}

}

<- {"result": ["Vo0DlhA43D", "i2xVTBPKuM", 600]}

この場合、パラメータはjsonオブジェクトに表示されます。 あるいは、パラメータを配列として与えることもできます:

-> {

"jsonrpc" : "2.0",

"id" : <int>,

"method" : "get_auth_token",

"params" : ["<string>", "<base64 encoded string>"]

}

<- {"result": ["Vo0DlhA43D", "i2xVTBPKuM", 600]}

有効化 the auth_token (admin, containeradmin, user):

Method: validate_auth_token

Parameters: auth_token (string),

Return Value: time to live (seconds, float), user (string)

例:

-> {"method":"validate_auth_token", "params":["'+auth_token+'"]}

<- {"result": [599.9869105815887, "user"]}

更新 auth_token (admin, containeradmin, user):

Method: renew_auth_token

Parameters: act_token (string), auth_token (string),

Return Value: time to live (seconds)

-> {"method":"renew_auth_token","params":["'+act_token+'",

"'+auth_token+'"]}

<- {"result": [600]}

Page 13: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 13

有効化と更新 auth_token (admin, containeradmin, user):

Method: validate_and_renew_auth_token

Parameters: act_token (string), auth_token (string),

Return Value: time to live (seconds)

例:

-> {"validate_and_renew_auth_token","params":["'+act_token+'",

"'+auth_token+'"]}

<- {"result": [600]}

無効化 auth_token (admin, containeradmin, user): Method:

invalidate_auth_token

Parameters: act_token (string), auth_token (string),

Return Value: success (string) or error( error code and string)

例:

-> {"method":"invalidate_auth_token","params":["'+act_token+'",

"'+auth_token+'"]}

<- {"result": "token sucessfully invalidated"}

ホストとファームウェアに関する情報を取得 (admin, containeradmin, user):

Method: get_info_text

Parameters: none

Return Value: def_host (default hostname)(string), product_name (string), product_version

(string), cur_host (current hostname)(string), base_version (string), interface_version (inter-

face for containers)(number)

例:

-> {"method":"get_info_text"}

<- {

"result" : {

"def_host" : "Default Hostname: mica-n7v6o",

"product_name" : "Product Name: HAIIC MICA USB",

"product_version" : "Product Version: HAIIC MICA

1.4.0",

"cur_host" : "Current Hostname:

mica-n7v6o.espel.harting.intra",

"base_version" : "Base Version: 1.4.0",

"interface_version" : "Interface Version:

1.1.1"

}

}

再起動後に回復されたコンテナの名前を取得するには(LXCファイルが存在するが、meta-conf-entriesがないコンテナ(admin、contain-eradmin、user)に適用可能):

Method: get_autostart_information

Parameters: auth_token (string)

Return Value: container name

Page 14: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

14 HARTING IT Software Development

例:

-> { "method":"get_autostart_information","params":["'+auth_to-

ken+'"]}

<- {"result": []}

サービスバージョン、つまりAPIのバージョンを取得 (admin, containeradmin, user):

Method: get_service_version

Parameters: auth_token (string)

Return Value: container name

Example:

-> {"method":"get_service_version","params":["'+auth_token+'"]}

<- {"result": "1.0.0"}

使用可能なユーザースペースを取得 (admin, containeradmin, user):

Method: get_available_userspace

Parameters: auth_token (string)

Return Value: free_MB (float)

例:

-> {"method":"get_available_userspace","params":["'+auth_token+'"]}

<- {"result": {"free_MB": 2046.623744}}

デバイス名を取得 (admin, containeradmin, user):

Method: get_name

Parameters: none

Return Value: name (string)

例:

-> {"method":"get_name"}

<- {"result": ["mica-n7v6o.espel.harting.intra"]}

ユーザー設定を取得 (admin, containeradmin, user):

Method: get_name

Parameters: none

Return Value: name (string)

例:

-> {"method":"get_user_settings","params":["'+auth_token+'"]}

<- {

"use_ntp" : true,

"ipv6Prefix" : 64,

"passwords" : {

"user" : [2,

"009b2b3c4f08a79e6cb3a6148cf755c8f9aece12ecac044ed2253608a6fe9aed",

"2a55584792fd44c1500d69ccc2c17a09466cb044cd9bef83eb26ad87da7266f1"],

"containeradmin" : [1,

"321d6549f5133acf0e007d8a8f4afbe10ad664e2ad5c5ccb5c15cc792169a135",

Page 15: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 15

"c7666b4ca23662edd83e698e4a31b62c969c0c85d120f2e17510cee0f28f65f0"],

"admin" : [0, "b8e94a8788a3913dac82be-

aaa7937719a6824f56d180506941158663e341b7a0",

"279cec99665f3291353c8d4361d6817f9407215521508fdc8c2d5b39218ac58b"]

},

"ipv4Prefix" : 12,

"productionYear" : 16,

"timezone" : "UTC",

"ipv4Mode" : 1,

"defaultPassword" : "admin",

"ntp_list" :

"0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org",

"epc" : "30-2d-96-4a-31-20-00-40-00-e9-f2-48",

"ipv6Gateway" : "::",

"ipv4Address" : "0.0.0.0",

"productionDay" : 9,

"conf" : {

"ipv4Prefix" : 20,

"ipv6Prefix" : 64,

"ipv4Mode" : 2,

"dnsMode" : 0,

"ipv6Address" : "fd9e:21a7:a92c:2323::1",

"ipv6Mode" : 2,

"ipv4Address" : "10.86.129.200",

"dnsAddress" : "0.0.0.0",

"ipv6Gateway" : "fd9e:21a7:a92c:2323::1",

"ipv4Gateway" : "10.86.139.1"

},

"dnsMode" : 0,

"ipv6Address" : "::",

"control" : 0,

"revisionNumber" : "01",

"dns-Address" : "0.0.0.0",

"productName" : "HAIIC MICA USB",

"ipv4Gateway" : "0.0.0.0",

"productionMonth" : 6,

"ipv6Mode" : 0,

"version" : 2,

"mac" :

"00:0A:ED:E9:F2:48",

"hostname" : "mica-n7v6o"

}

Page 16: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

16 HARTING IT Software Development

図8: シングルサインオン認証:トークン要求とサービス使用

例:

次の例では、Linux上でPC上のPythonスクリプトを使用してコンテナを開始します。MICAデバイスにPython 3.4コンテナをインストールし、 “Stop App”で非アクティブに設定します。 パドロックアイコンをクリックして証明書を保存します。

Page 17: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 17

図9: Firefoxでの証明書ダウンロード

“More Information” ボタンをクリックします。 その後 “View Certificate” -> “Details” ->

“Export”でアクセスします。

選択したディレクトリに証明書を保存します。

Python 3.5をLinuxにインストールします。 たとえば、 Anacondaからhttps://

www.continuum.io/downloads をダウンロードし、Pythonのテキストエディタ "Spyder"を起動します。

コンソールを開きます。 インポートurllib3:

import json

import urllib3

import hashlib

from base64 import b64encode

role = "admin"

passwd = "admin"

service_url = "https://mica17.local/base_service/"

MICAの証明書アクセス

http = urllib3.PoolManager( assert_hostname=False,

ca_certs="../Downloads/HARTINGITSoftwareDevelopmentGmbH&Co.KG.crt" )

アクションと認証トークンの要求をMICAベースサービスに送信するには、次の手順を実行します。:

passwd_b64 = str( b64encode( bytes( passwd, "utf8" ) ), "utf8" )

rpc_obj = {

"jsonrpc": "2.0",

"id":1,

"method":"get_auth_token",

"params":{

"user": "admin", "pwd": passwd_b64

}

}

Page 18: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

18 HARTING IT Software Development

at = http.urlopen( "POST", service_url, body=json.dumps( rpc_obj ) )

rep_data_str = str( at.data, "utf-8" )

ret = json.loads( rep_data_str )

auth_token = ret["result"][1]

act_token = ret["result"][0]

応答を確認は:

print (ret)

応答は次の形式にする必要があります。:

{'result': ['Xy763b2HC7', 'T8QqT3PeND', 600], 'id': 1, 'jsonrpc':

'2.0'}

コンテナの起動は:

rpc_obj= {

"jsonrpc": "2.0",

"id":3,

"method":"start_container",

"params":[ "Samba", auth_token ]

}

r = http.urlopen( "POST", service_url, body=json.dumps( rpc_obj ) )

応答確認は:

print(r.data)

レスポンスのフォームが必要:

{"result": {"started_container": "Samba"}}

また、MICAのコンテナが起動しているかどうか確認してください。

3.3 コンテナ管理

SSOインタフェースを介して、コンテナを管理することができます。 すべてのコマンドで、認証トークンの値は、例の停止コンテナに示されているように最後のパラメータとして指定する必要があります。 jsonrpcとidプロパティは、読みやすさを高めるために例には示されていません。 認証が必要な場合は、有効なトークンを持つauth token-Propertyを呼び出しのparamsプロパティにインサートする必要があります。.

コンテナのリセット (admins または containeradmins):

Method: reset_container

Parameters: container name (string)

Return Value: result (string)

例:

-> { "method": "reset_container", "params" : "<container name>" }

Page 19: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 19

<- { "result": "reset_in_progress" }

コンテナの削除 (admins)

Method: delete_container

Parameters: container name (string)

Return Value: container deleted (string) or error code

例:

-> { "method": "delete_container", "params" : "<container name>" }

<- { "result": "container_deleted" }

コンテナの起動 (admins と containeradmins)

Method:start_container

Parameters: container name

Return Value: container started (string)

例:

-> { "method": "start_container", "params" : "<container name>" }

<- { "result": "container started” }

コンテナのエクスポート (admins と containeradmins)

Method: stop_container

Parameters: container name

Return Value: container stopped (string)

例:

-> { "method": "stop_container", "params" : "<container name>" }

<- { "result": "container_stopped" }

インストール済みのすべてのコンテナ情報を取得 (admins, containeradmins, users)

Method: get_container_config

Parameters: auth_token (string)

Return Value: state (int) 2=off 1=on 3=error -1=container nonexistant, start (bool), ipv6Prefix (int), dhcp_ipv4Gateway (ip_address), ipv6Address (ip_address), dhcp_ipv4Prefix (int), ipv4Prefix (int), ipv4Gateway (ip_address), dhcp_ipv4Address (ip_address), devices (string), index (int), ipv4Mode(int), install_info {container, devices, build_date, version, inter-face_version"}, ipv6Mode (int), disable_delete (bool), mac (mac address), ipv6Gateway (ipv6 address), ipv4Address (ip_address)

例:

-> {"method":"get_container_config","params": { "auth_token":

"'+auth_token+'"}}

<- {

"result" : "USB" : {

"state" : 2,

"start" : false,

"ipv6Prefix" : "",

"dhcp_ipv4Gateway" : "10.86.139.1",

"ipv6Address" : "",

Page 20: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

20 HARTING IT Software Development

"dhcp_ipv4Prefix" : "20",

"ipv4Prefix" : "",

"ipv4Gateway" : "",

"dhcp_ipv4Address" : "10.86.129.136",

"devices" : ["/dev/bus/usb/002/004"],

"index" : 17,

"ipv4Mode" : 1,

"install_info" : {

"container" : "[base] Busybox (C12)",

"devices" :

["/dev/bus/usb/002/004"],

"build_date" : "Wed May 18 18:43:18 CEST 2016",

"version" : "1.1.0_r

(93:1bfd14980510)",

"interface_version" : "1.1.0"

},

"ipv6Mode" : 0,

"disable_delete" : false,

"mac" : "16:01:91:e8:b6:c4",

"ipv6Gateway" : "",

"ipv4Address" : ""

}

}

}

コンテナの検索 (admins, containeradmins, users):

Method: container_exists

Parameters: container name

Return Value: container exists (boolean)

例:

-> {"method":"container_exists","params": { "name": "Java"}}

<- {"result": true}

コンテナ設定 “read-only” (admins)

Method: set_container_ro

Parameters: container name (string), ro (boolean), auth_token (string)

Return Value: success (string), or error code

例:

-> {"method":"set_container_ro","params": { "name": "Java", "ro" :

"", "auth_token": "'+auth_token+'"}}

<- {"result": "ro flag of container Java changed to False"}

コンテナ状態の取得 (admins, containeradmins, users):

Method: get_container_state

Parameters: container name (string)

Return Value: state (int)

2=off 1=on 3=error -1=container nonexistant, name (string)

例:

-> {"method":"get_container_state","params": { "name": "Java"}}

Page 21: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 21

<- {"result": {"state": 1, "name": "Java"}}

コンテナの複製 (admins, containeradmins, users):

Method: duplicate_container

Parameters: auth_token (string), container name (string), duplicate name (string)

Return Value: success (string) or error code

例:

-> {"method":"duplicate_container","params": { "auth_token":

"'+auth_token+'", "name" : "Java", "duplicate_name" : "Java2"}}

<- {"result": "successfully duplicated"}

コンテナのエクスポート (admins, containeradmins, users):

Method: get_container_state

Parameters: auth token (string), container name (string) Return

Value: exorted container file (string)

例:

-> {"method":"export_container","params": { "auth_token":

"'+auth_token+'", "name" : "Java"}}

<- {"result": {"exported_container_file": "OAJBIhsvQlr-

woF/Java.tar.lzo"}}

3.4 ベース管理

さらに、ベースシステムを管理する方法があります。

ベースシステムのリセット (admins)

Method: firmware_reset

Parameters: auth_token (string)

Return Value: undefined

例:

-> { "method": "firmware_reset","params":{ "auth_token": "'+auth_to-

ken+'"} }

<- { "result": ["", ""] }

ベースシステムの再起動 (admins)

Method: reboot

Parameters: auth_token (string)

Return Value: undefined

例:

-> { "method": "reboot"","params":{ "auth_token": "'+auth_token+'"}}

<- { "result": ["", ""] }

システムバージョン取得 (admins)

Method: get_system_version

Parameters: none

Return Value: current system version number string

例:

Page 22: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

22 HARTING IT Software Development

-> { "method": "get_system_version" }

<- { "result": "<current system version number string>" }

コンテナをインストールするには、いくつかの方法が必要です。コンテナ転送を開始 (admins)

Method: transfer_start

Parameters: filename (string), auth_token (string) Return Value:

transfer created (string) or error code

例:

-> { "method" : "transfer_start",

"params" : ["'+filename+'", '+test2+', '+test1+', "'+auth_to-

ken+'"]

}

<- {"result": "transfer created"}

コンテナチャンクの転送 (admins)

Method: transfer_chunk

Parameters: filename (string), string, string, auth_token (string)

Return Value: done (string) or error code

例: -> {"method" : "transfer_chunk",

"params" : ["'+filename+'", '+str(c_num)+', "'+data+'",

"'+auth_token+'"]

}

<- {"result": "done"}

転送状態の取得 (admins)

Method: transfer_state

Parameters: filename (string), string, string, auth_token (string)

Return Value: installation triggered (string) or error code

例:

-> {"method" : "transfer_state",

"params" : ["'+filename+'", '+test2+', '+test1+', "'+auth_to-

ken+'"]

}

{

"jsonrpc" : "2.0",

"id" : 1,

"result" : "installation triggered"

}

コンテナのインストール(admins)

Method: install_container

Parameters: containername (string), filename (string), auth_token (string)

Return Value: installation triggered (string) or error code

例:

Page 23: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 23

-> {"method":"install_container","params":["'+containername+'",

"'+filename+'", "'+auth_token+'"]}

<- {"result": "installation triggered"}

例: コンテナのインストール

PCでPython 3環境を開きます。

Enter:

# -*- coding: utf-8 -*-

import json

import urllib3

import sys

import base64

import os

import io

import base64

import hashlib

from base64 import b64encode

role = "admin"

passwd = "admin"

service_url = "https://10.86.129.230/base_service/"

http = urllib3.PoolManager( assert_hostname=False,

ca_certs="../Downloads/HARTINGITSoftwareDevelopmentGmbH&Co.KG.crt" )

passwd_b64 = str( b64encode( bytes( passwd, "utf8" ) ), "utf8" )

rpc_obj = {

"jsonrpc": "2.0",

"id":1,

"method":"get_auth_token",

"params":{

"user": "admin", "pwd": passwd_b64

}

}

at = http.urlopen( "POST", service_url, body=json.dumps( rpc_obj ) )

rep_data_str = str(at.data, "utf-8")

ret = json.loads (rep_data_str)

auth_token = ret["result"][1]

act_token = ret["result"][0]

rs = http.urlopen( "POST", service_url,

body='{"jsonrpc":"2.0","id":1,"method":"renew_auth_token",

"params":["'+act_token+'", "'+auth_token+'"]}')

print (rs.data)

filename = "Busybox.tar.lzo"

filesize = os.path.getsize( filename )

Page 24: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

24 HARTING IT Software Development

chunksize = 1024*1024

test1 = str(int(chunksize))

test2 = str(int(filesize))

inf = divmod( filesize, chunksize )

containername = "BST"

fhandle = io.open( filename, "r+b" )

inf = divmod( filesize, chunksize )

total_chunks = ( inf[0]+1 if inf[1] > 0 else inf[0] )

last_chunk_size = ( inf[1] if inf[1] > 0 else chunksize )

def get_raw_file_chunk( chnk_num ):

read_size = ( chunksize if chnk_num < total_chunks-1 else

last_chunk_size )

fhandle.seek( chnk_num * chunksize, io.SEEK_SET )

return fhandle.read( read_size )

def get_b64_file_chunk( chnk_num ):

return str( base64.b64encode( get_raw_file_chunk( chnk_num

)), "utf-8" )

def b64_file_chunks( ):

chunk_num_to_transfer = 0

while chunk_num_to_transfer < total_chunks:

ret = get_b64_file_chunk( chunk_num_to_transfer )

chunk_num_to_transfer = chunk_num_to_transfer + 1

yield ret

q = http.urlopen( "POST", "https://10.86.129.230/base_service/",

body='{"jsonrpc":"2.0","id":1,"method":"transfer_start",

"params":["'+filename+'", '+test2+' , '+test1+', "'+auth_to-

ken+'"]}')

c_num=0

for data in b64_file_chunks():

req='{"jsonrpc":"2.0","id":1,"method":"transfer_chunk",

"params":["'+filename+'", '+str(c_num)+', "'+data+'",

"'+auth_token+'"]}'

Page 25: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 25

rt = http.urlopen( "POST", "https://10.86.129.230/base_ser-

vice/",body=req)

c_num += 1

s = http.urlopen( "POST", "https://10.86.129.230/base_ser-

vice/",body='{"jsonrpc":"2.0","id":1,"method":"install_con-

tainer","params":["'+containername+'", "'+filename+'", "'+auth_to-

ken+'"]}')

print (s.data)

コンテナがMICAにインストールされたかどうか確認してください。

3.5 ベースとコンテナのネットワーク設定

ベースとコンテナのネットワーク構成を読み取り、設定することができます(MurataオブジェクトにはSystem-RFID-Chip、DHCPオブジェクトの設定値などの情報が含まれています)。

ベース設定を取得するには: Method: get_base_net_config Parameters: auth_token (string)

Return Value: "murata" : {mac, ipv4Address, ipv6Prefix, productionMonth, hostname, epc,

defaultPassword, ipv6Address, ipv4Gateway, control, dnsAddress, productName,

ipv4Mode, version, ntp_list, ipv4Prefix, productionDay, dnsMode, use_ntp, productionYear,

passwords" : {"user" : [2, "…"], "admin" : [0, "…"], "containeradmin" : [1, "…"]}, timezone,

revisionNumber, ipv6Gateway, ipv6Mode}, dhcp : { "NS" : "10.65.140.50 10.129.129.254",

"IP" : "10.86.129.232", "MASK" : "20", "GW" : "10.86.139.1" } }

例:

-> { "method": "get_base_net_config", "params":["'+auth_token+'"] }

<- {

"result" : {

"murata" : {

"mac" : "c8:05:f7:ba:33:de",

"ipv4Address" : "0.0.0.0",

"ipv6Prefix" : 64,

"productionMonth" : 0,

"hostname" : "MICA29",

"epc" : "00-01-02-03-04-05-06-07-08-09-0a-0b",

"defaultPassword" : "admin",

"ipv6Address" : "::",

"ipv4Gateway" : "0.0.0.0",

"control" : 0,

"dnsAddress" : "0.0.0.0",

"productName" : "",

"ipv4Mode" : 1,

"version" : 2,

"ntp_list" :

"0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org",

"ipv4Prefix" : 12,

"productionDay" : 0,

"dnsMode" : 0,

Page 26: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

26 HARTING IT Software Development

"use_ntp" : true,

"productionYear" : 0,

"passwords" : {

"user" : [2, "…"],

"admin" : [0, "…"],

"containeradmin" : [1, "…"]

},

"timezone" : "UTC",

"revisionNumber" : "0",

"ipv6Gateway" : "::",

"ipv6Mode" : 0

},

"dhcp" : {

"NS" : "10.65.140.50 10.129.129.254",

"IP" : "10.86.129.232",

"MASK" : "20",

"GW" : "10.86.139.1"

}

}

}

ベースのネットワーク設定を行うことができます。

コンテナ転送を開始 (admins)

Method: set_base_net_config

Parameters: "conf" : {ipv6Mode,ipv6Address,ipv6Prefix,ipv6Gateway,ipv4Mode,ipv4Ad-

dress,ipv4Prefix,ipv4Gateway,dnsMode,dnsAddress},auth_token (string)

Return Value: success (string) or error code

例:-> {"method":"set_base_net_config","params":[{"conf" : {"ipv6Mode":

2,"ipv6Address": "fd9e:21a7:a92c:2323::1","ipv6Prefix":

64,"ipv6Gateway": "fd9e:21a7:a92c:2323::1","ipv4Mode": 2,"ipv4Ad-

dress": "10.86.129.200","ipv4Prefix": 20,"ipv4Gateway":

"10.86.139.1","dnsMode": 0,"dnsAddress": "0.0.0.0"}},"'+auth_to-

ken+'"]}

<- {"result": "success", "id": 1, "jsonrpc": "2.0"}

ベースのパスワードを変更するには:

Method: change_passwd

Parameters: action_token (string), auth_token (string), user (string), new_pwd (string base

64 encoded)

Return Value: password successfully changed (string) or error code

例:

-> { "method": "change_passwd", "params" :

{ "action_token" : <token string>,

"auth_token" : <token string>, "user" : <user name>,

"new_pwd" :<new passwd base 64 encoded>

}

}

<- {"result": "password successfully changed"}

Page 27: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 27

ネットワーク構成を読み取り(admins, containeradmins, users) oIPv4モードのコンテナーの場合、以下の値が定義されます。

0: IPv4 deactivated

1: DHCP

2: static IPv4

IPv6の場合:

0: use only link local addresses

1: DHCVP6 (this value has no effect at the moment)

2: static IPv6 address

コンテナのネットワーク設定を取得:

-> {

"method" : "get_container_net_config", {

"name" : "<container_name>"}

}

<- {

"result" : {

"ipv6Address" : "",

"ipv4Prefix" : "",

"dhcp_ipv4Gateway" : "10.86.139.1",

"ipv4Mode" : 1,

"ipv4Gateway" : "",

"ipv4Address" : "",

"dhcp_ipv4Address" : "10.86.129.52",

"dhcp_ipv4Prefix" : "20",

"ipv6Prefix" : "",

"ipv6Mode" : 0,

"ipv6Gateway" : ""

}

}

コンテナのネットワーク構成を書き込み (admins と containeradmins) IIPv4モードでは同じ値が使用されています。

0: IPv4 deactivated

1: DHCP

2: static IPv4

静的IPv4の場合、フィールドIPv4アドレス、IPv4プレフィックス、すなわちIPv4ゲートウェイが提供されなければなりません。

IPv6モードの場合、以下の書き込み値が定義されます:

Page 28: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

28 HARTING IT Software Development

0: use only link local addresses

1: DHCVP6 (not set yet)

2: static IPv6 address

ネットワーク値を設定するには、次の方法が使用可能(admins と containeradmins).

すべての値を設定する必要があります。また、同じ値を設定する必要があります。Method: set_container_net_config

Parameters: filename (string), settings : { ipv6Address, ipv6Prefix, ipv6Gateway, ipv4Mode

[0 | 1 | 2], ipv4Address, ipv4Prefix, ipv4Gateway, ipv6Mode" : [0 | 1 | 2]}, auth_token (string)

Return Value: done (string) or error code

例:

->{

"method" : "set_container_net_config",

"params" : {

"name" : "<container name>",

"settings" : {

"ipv6Address" : "<ipv6addr>",

"ipv6Prefix" : < dec num > ,

"ipv6Gateway" : < ipv6addr > ,

"ipv4Mode" : [0 | 1 | 2],

"ipv4Address" : "<ipv4addr>",

"ipv4Prefix" : < dec num > ,

"ipv4Gateway" : "<ipv4addr>",

"ipv6Mode" : [0 | 1 | 2]

}, auth_token

}

}

<- {"result": { "done" }}

3.6 ハードウェアアクセス - RPCによるデバイス管理

デバイスをコンテナに追加および削除するには、次の方法があります (adminsのみ ):

Method: firmware_reset

Parameters: auth_token (string)

Return Value: undefined

例:

-> {

"method" : "add_container_device",

"params" : [ < container_name >,< device_name >,< auth_token > ]

}

<- {

"result" : "Creating Device successfully!",

}

Method: firmware_reset

Parameters: auth_token (string)

Return Value: undefined

例:

Page 29: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 29

-> {

"method" : "del_container_device",

"params" : [ < container_name >,< device_name >,< auth_token > ]

}

<- {

"result" : "Deleting Device successfully!",

}

コンテナをエクスポートするときに、ウィッシュリストがエクスポートされます。コンテナをインストールするときに、ウィッシュリストのデバイスをインポートするかどうかを尋ねられます。

他の新しいrpc-calls:

例えば次のようなデバイス情報メジャー/マイナー番号、ベンダーIDなど(adminsのみ):

Method: get_device_info

Parameters: device name (string), auth_token (string)

Return Value: Major, number, minor number, info text

例:

-> {

"method" : "get_device_info",

"params" : [ < device_name > , < auth_token > ]

}

<- {

"result" : "<tr><td class=\'info_output\'><b>Major Num-

ber:</b></td><td class=\'info_text\'>4</td></tr><tr><td

class=\'info_output\'><b>Minor Number:</b></td><td

class=\'info_text\'>2</td></tr>",

}

コンテナの要求されたデバイスを取得 (user, containeradmins, admins):

Method: get_requested_devices

Parameters: container, auth_token

Return Value: device list

例:

-> {"method":"get_requested_devices"

"params" : [ < container_name > , < auth_token > ]

}

<- {

"result" : []

}

コンテナに使用可能なデバイスを表示(デバイスのウェブサイトの左側の列)(admins のみ):

Method: get_device_info

Parameters: device name (string), auth_token (string)

Return Value: Major, number, minor number, info text

例:

-> {

"method" : "get_available_devices",

Page 30: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

30 HARTING IT Software Development

"params" : [ < container_name > , < auth_token > ]

}

<- {

"result" : ["/dev/alarm", "/dev/zero"],

}

コンテナの有効なデバイスを表示(デバイスのウェブサイトの右側の列)(adminsのみ):

Method: get_container_devices

Parameters: container name (string), auth_token (string)

Return Value: device list

例:

-> {

"method" : "get_container_devices",

"params" : [ < container_name > , < auth_token > ]

}

<- {

"result" : ["/dev/alarm", "/dev/zero"],

}

コンテナへのデバイス追加(adminsのみ):

Method: add_container_device

Parameters: container name (string), container device (string), auth_token (string)

Return Value: device list

例:

-> {

"method" : "add_container_device", "params" : {

"name" : "PythonDemo",

"device" : "/dev/alarm",

"auth_token" : "'+auth_token+'"

}

}

<- {

"result" : "Creating Device successfully!"

}

metaconfにデバイスを追加 (adminsのみ):

Method: add_devices_to_metaconf

Parameters: container name (string), container devices (array of string), auth_token (string)

Return Value: device list

例:

-> {

"method" : "add_devices_to_metaconf",

"params" : {

"name" : "PythonDemo",

"devices" : "/dev/alarm",

"auth_token" : "'+auth_token+'"

}

}

<- {

Page 31: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 31

"result" : "Success"

}

3.7 RPCによる時間設定管理時間設定を管理するには、以下の方法があります(adminsのみ):

get_datetime (minimal role: user)

Method: add_container_device

Parameters: auth_token (string)

Return Value:date (date), time (time)

例:

-> {

"method" : "get_datetime",

"params" : [ < auth_token > ]

}

<- {

"result" : {

"date" : "2000-01-01",

"time" : "05:14:42"

}

}

set_date( datestr, auth_token ) (minimal role: admin)

Method: set_date

Parameters: date (date), auth_token (string)

Return Value:date (date)

例:

-> {

"method" : "set_date",

"params" : ["year-month-day", < auth_token > ]

}

<- {"result" : ""}

set_time( datestr, auth_token ) (minimal role: admin)

Method: set_time

Parameters: timestr (date), auth_token (string)

Return Value: time (time)

例:

-> {"method":"set_time","params": {"timestr": "14:03:03", "auth_to-

ken": "'+auth_token+'"}

<- {"result": ""}

set_use_ntp ( tz, auth_token ) (minimal role: admin)

Method: set_use_ntp

Parameters: use_ntp (string), auth_token (string)

Return Value: ntp_status (string)

例:

Page 32: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

32 HARTING IT Software Development

-> {"method" : "set_use_ntp",

"params" : ["use_ntp", < auth_token > ]}

<- { "result" : "Stopping ntpd\\nstopped process in pidfile

\'/run/ntpd.pid\' (pid 337)\\nStarting ntpd\\n"}

set_ntp_list( ntplist, auth_token ) (minimal role: admin)

Method: set_ntp_list

Parameters: ntp_list (string), auth_token (string)

Return Value: ntp_status (string)

例:

-> {"method":"set_ntp_list", "params":["ntp_list",<auth_token>]}

<- {"result": "Stopping ntpd\\nStarting ntpd\\n"}

get_tz_list( auth_token ) (minimal role: user)

Method: get_tz_list

Parameters: get_tz_list (string), auth_token (string)

Return Value: timezone list (string)

例:

-> {"method":"get_tz_list", "params":[<auth_token>]}

<- {"result": ["<timezone_list>"]}

3.8 コンテナアクセス

各コンテナに対して、アプリケーションは、httpおよびwsでhaproxyを介してクライアントから安全にアクセスできます。 wss://<hostname>.local/<container>/ resp. https://<hostname>.local/<container>/ https respを介して外部からアクセスすることができます。システム全体は証明書で保護されています。

Figure 10: Container Network Access

Page 33: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 33

3.9 ファームウェア更新ファームウェアを更新するには、以下の方法となります。:

署名を確認 (admins)

Method: check_signature

Parameters: firmware pathname (string), auth_token (string)

Return Value: verified ok (string)

例:

-> {

"method" : "checkSignature",

"params" : ["../Downloads/signed_up-

date_12d0b4de998c_1.0.0_r.tar", "'+auth_token+'"]

}

<- {"result": "Verified OK\\n"}

互換性を確認 (admins)

Method: check_compatibility

Parameters: auth_token (string)

Return Value: verified ok (string)

例:

-> {

"method" : "checkCompatibility",

"params" : ["'+auth_token+'"]

}

<- {"result": [1, "scripts/update_X0_1.1.0_1.2.x_1.3.0.py"]}

ステータスメッセージ数を取得 (admins, containeradmins, users):

Method: getStatusMessageCount

Parameters:

Return Value: result code (int)

例:

-> {

"method" : "getStatusMessageCount"

}

<- {"result": 11}

ステータスメッセージを取得 (admins, containeradmins, users):

Method: getStatusMessage

Parameters: time counter

Return Value: result message (string), result type (string), result code (int), time (seconds

after 1970)

例:

-> {"method":"getStatusMessage","params":[1]}

<- {

"result" : [{

"message" : "begin update script",

"type" : "info",

Page 34: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

34 HARTING IT Software Development

"code" : 111,

"time" : 1471427118

}

]

}

更新 (admins):

Method: update

Parameters: update python script (string), auth_token (string)

Return Value: result code (int)

例:

-> {"method":"update","params":["..//update.py", "'+auth_token+'"]}

<- {

"result" : "execution of update triggered"

}

例: RPC callによるファームウェア更新:

import json

import urllib3

import sys

import base64

import os

import io

import time

import base64

import hashlib

from base64 import b64encode

role = "admin"

passwd = "admin"

service_url = "https://mica-n7v6o.local/base_service/"

http = urllib3.PoolManager(assert_hostname = False,

ca_certs = "../Downloads/HARTINGITSoftwareDevelop-

mentGmbH&Co.KG.crt")

passwd_b64 = str(b64encode(bytes(passwd, "utf8")), "utf8")

rpc_obj = {

"jsonrpc" : "2.0",

"id" : 1,

"method" : "get_auth_token",

"params" : {

"user" : "admin",

"pwd" : passwd_b64

}

}

at = http.urlopen("POST", service_url, body = json.dumps(rpc_obj))

rep_data_str = str(at.data, "utf-8")

ret = json.loads(rep_data_str)

auth_token = ret["result"][1]

act_token = ret["result"][0]

Page 35: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 35

print('{"jsonrpc":"2.0","id":1,"method":"renew_auth_to-

ken","params":["' + act_token + '", "' + auth_token + '"]}')

rs = http.urlopen("POST", "https://mica-n7v6o.local/base_ser-

vice/", body = '{"jsonrpc":"2.0","id":1,"method":"renew_auth_to-

ken","params":["' + act_token + '", "' + auth_token + '"]}')

filename = "../Downloads/signed_update_1.4.0.tar"

filesize = os.path.getsize(filename)

chunksize = 1024 * 1024

test1 = str(int(chunksize))

test2 = str(int(filesize))

inf = divmod(filesize, chunksize)

containername = "BST"

fhandle = io.open(filename, "r+b")

inf = divmod(filesize, chunksize)

total_chunks = (inf[0] + 1 if inf[1] > 0 else

inf[0])

last_chunk_size = (inf[1]if inf[1] > 0 else chunksize)

def get_raw_file_chunk(chnk_num) :

read_size = (chunksize if chnk_num < total_chunks - 1 else

last_chunk_size)

fhandle.seek(chnk_num * chunksize, io.SEEK_SET)

return fhandle.read(read_size)

def get_b64_file_chunk(chnk_num) :

return str(base64.b64en-

code(get_raw_file_chunk(chnk_num)), "utf-8")

def b64_file_chunks() :

chunk_num_to_transfer = 0 while

chunk_num_to_transfer < total_chunks :

ret =

get_b64_file_chunk(chunk_num_to_transfer)

chunk_num_to_transfer =

chunk_num_to_transfer + 1

yield ret

q = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"trans-

fer_start","params":["' + filename + '", ' + test2 + ' , ' + test1 +

', "' + auth_token + '"]}')

c_num = 0

for data in b64_file_chunks() :

req =

'{"jsonrpc":"2.0","id":1,"method":"transfer_chunk","params":["' +

Page 36: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

36 HARTING IT Software Development

filename + '", ' + str(c_num) + ', "' + data + '", "' + auth_token +

'"]}'

rt = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = req)

c_num += 1

print("/tmp/up/file/" + os.path.basename("../Downloads/signed_up-

date_1.4.0.tar"))

s = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"checkSigna-

ture","params":["' + "/tmp/up/file/" + os.path.basename("../Down-

loads/signed_update_1.4.0.tar") + '", "' + auth_token + '"]}')

t = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"checkCompatibil-

ity","params":["' + auth_token + '"]}')

rep_data_str = str(t.data, "utf-8")

ret = json.loads(rep_data_str)

update_script = ret["result"][1]

u = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"update","params":["' + up-

date_script + '", "' + auth_token + '"]}')

time.sleep(10)

uv = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"getStatusMessageCount"}')

uw = http.urlopen("POST", "https://mica-n7v6o.local/base_service/",

body = '{"jsonrpc":"2.0","id":1,"method":"getStatusMessage"}')

3.10 WLAN機能wlanが搭載されているかの問い合わせ (user, containeradmins, admins):

Method: has_wlan

Parameters: none

Return Value: true or false

例:

-> {"method":"has_wlan"}

<- {

"result" : false

}

wlanパラメータ取得 (user, containeradmins, admins) :

Method: get_wlan

Parameters: none

Return Value: wlan parameters

例:

-> {"method":"get_wlan

<- {

"result" : {"runtime": {"visible_networks": []}, "settings": {},

"defaults": {"country": {"JP": "JP", "US": "US", "DE": "DE"},

Page 37: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 37

"wpa_cipher": {"TKIP": "TKIP", "CCMP": "CCMP", "auto": "auto"},

"channel": ["auto", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],

"sec_mode": {"wep": "WEP", "open": "Open", "wpapsk": "WPA/WPA2 Pre-

shared Key", "wpa": "WPA/WPA2 Enterprise"}, "mode": {"sta": "Cli-

ent", "ap": "Access Point"}, "sta_wpa_username": "mica-cjyyo",

"ap_ssid": "mica-cjyyo", "standard": {"n": "802.11 n", "bg": "802.11

b/g"}}

}

Page 38: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

38 HARTING IT Software Development

4 コンテナ開発

コンテナは、以下の手順で開発することができます。:

4.1 自動起動スクリプト

rc.dディレクトリにソフトリンクを作成することで、スクリプトを自動起動することができます。例:

ssh経由でビジーボックスコンテナにアクセスします。 etc/init.dには、httpdの起動スクリプトがあります。 実行によってrc.dの下にソフトリンクを作成します。

cd /etc/rc.d

ln -s ../init.d/<script> <link_name>

link_nameは、実行される開始スクリプトの行の場所を示す番号で始まる必要があります。index.htmlファイルを/var/wwwディレクトリに追加し、それを変更してコンテナWebGUIを作成します。 ビジーボックスコンテナを再起動します。WebGUIには、https経由でクライアントからアクセスできます。

4.2 クロスコンパイル

コンテナのアイコンは、/META/web_iconsの下にApp.pngとHeader.pngとして配置され、ユーザが交換することができます。

証明書は、/META/harting_web.crtの下の各コンテナに基づいて配置されます。 これは、コンテナ上で実行されているアプリケーションによって証明書リポジトリに保存され、スムーズなパフォーマンスが保証されます。

例:httpdウェブサーバをbusyboxコンテナに設定し、WebGUIにhttpsでアクセスすることができます。

ssh経由でbusyboxコンテナにアクセスします。 etc/init.dには、httpdの起動スクリプトがあります。 実行によってrc.dの下にソフトリンクを作成します。

cd /etc/rc.d

ln -s ../init.d/<script> <link_name>

link_nameは、実行される開始スクリプトの行の場所を示す番号で始まる必要があります。index.htmlファイルを/var/wwwディレクトリに追加し、それを変更してコンテナWebGUIを作成します。 busyboxコンテナを再起動します。WebGUIには、https経由でクライアントからアクセスできます。独自のコンテナを作成する1つの方法は、busyboxコンテナをPCにエクスポートし、それを変更します。例:busyboxコンテナ内のデバイスを有効にします。busyboxコンテナをlinux PCにエクスポートします。 コンテナファイルシステム用のディレクトリを作成し、例えば BS /にコンテナを解凍します(アクセス権の一貫性を保つためにsudoを使う必要があります):

Page 39: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 39

sudo lzop -d BS1.tar.lzo

sudo tar -C BSTest/ -xvf BS1.tar

BS/META/configuration.json ファイルのオープン

sudo gedit BS/META/configuration.json

フェイル編集例:

{"devices": ["/dev/input/mice"], "container": "BS", "build_date":

"Fr 4. Nov 11:11:15 CET 2016", "version": "1.1.x

(74+:5c38e23d22d0+)"}

もう一度コンテナを圧縮:

sudo tar -C BS/ -cf - . | lzop -c -6 > BS1DEV.tar.lzo

それをMICAに再インポートします。 これでデバイスコンソールが有効になります。

例: Busyboxコンテナから開始するUSBコンテナの作成

busybox/ ディレクトリをPC上に作成

Busybox ContainerをPCにダウンロードします。 コンテナを解凍します(sudoを使用してアクセス権の一貫性を保つ必要があります):

sudo lzop -d BS1.tar.lzo

sudo tar -C busybox/ -xvf BS1.tar

クロスコンパイラファイル用のディレクトリを作成:

/Base/build/toolchain

Download the gcc-linaro-arm-linux-gnueabihf-4.9-2016.02-x86_linux.tar.xz from

https://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/)

to /Base/build/toolchain.

解凍:

tar xvf gcc-linaro-arm-linux-gnueabihf-4.9-2016.02-x86_linux.tar.xz

Copy the compiler files to the toolchain folder:

cp –r gcc-linaro-arm-linux-gnueabihf-4.9-2016.02-x86_linux/*

/Base/build/toolchain

ディレクトリを作成 /Base/build/packages/libusb.

ダウンロード libusb-1.0.9.tar.bz2 https://sourceforge.net/projects/libusb/files/libusb-1.0/より

Page 40: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

40 HARTING IT Software Development

解凍:

tar xfvj libusb-1.0.9.tar.bz2

次のbashスクリプトを使用してlibusbを構成:

#!/bin/bash

TOOLCHAIN_ROOT=/home/nele/Base/build/toolchain

Desktop=/home/nele/Desktop

./configure --host=arm-linux-gnueabihf --prefix=$Desktop/libusb

CC=$TOOLCHAIN_ROOT/bin/arm-linux-gnueabihf-gcc

CXX=$TOOLCHAIN_ROOT/bin/arm-linux-gnueabihf-g++

LDFLAGS="-L{TOOLCHAIN_ROOT}/arm-linux-gnueabihf/libc/usr/lib/arm-

linux-gnueabihf"

次に、ライブラリをビルドしてインストール:

sudo make all

sudo make install

cd into the libusb-1.0.9/examples/ directory.

listdevsの例を次のように作成:

sudo make

実行可能ファイルを取得:

sudo -s cp .libs/listdevs

Cp the libusb/include and libusb/lib to

busybox/include resp. busybox/lib.

listdevs実行可能ファイルをビジーボックスにプッシュします。

コンテナアーカイブを圧縮:

sudo tar -C busybox/ -cf - . | lzop -c -6 > busybox.tar.lzo.

MICAにインストールし、ssh経由でlistdevsをテストしてください。

上記のようにhttpdウェブサーバを起動します。 listdevsの出力を.txtファイルに書き込む:

./listdevs > /var/www/listdevs.txt

/var/www/にindex.htmlファイルを作成し、それを変更します。:

<object data="listdevs.txt" type="text/plain"

width="500" style="height: 300px">

Page 41: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 41

<a href="listdevs.txt">No Support?</a>

今度はコンテナのwebGUIを開く:次の出力が表示:

バス1上のデバイス68は、製品ID045eおよびベンダーID0737を有したUSBマウスです。

図11: 自己定義USBコンテナ

Page 42: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

42 HARTING IT Software Development

5 GUI プログラミング /var/wwwの下にあるコンテナのindex.htmlファイルを変更するとコンテナのGUIを変更できます。 /var/www/下のファイルを編集して、コンテナのWebGUIを変更します。

Debian Basis Containerを左クリックして開きます。 次のメッセージが表示されます:

図12: Debian Basis コンテナのWebGUI

これはWebGUIを作成するためにWebサーバ(この例ではlighttpd)を構成する必要がある

ことを意味します。

まず、コンテナをインターネットに接続します。 WinScpでコンテナにアクセスします。 /etc/resolv.confファイルを作成または編集します。 ドメイン名解決を可能にするためにネームサーバのipアドレスをここに入力してください。 ファイルはたとえば次のように表示されます:

nameserver 192.168.178.1

nameserver 8.8.8.8

プロキシを介したアクセスがある場合:ファイルを作成

/etc/apt/apt.conf.d/99proxy with the content

Acquire::http { Proxy "http://<proxy-ip-address>"; };

Puttyなどを使用してコンテナにアクセス.

次に/var/ ディレクトリに移動してlighttpdをインストールします:

apt-get install lighttpd

ディスクスペースの確認要求でYesを選択します。

いくつかのアーカイブがフェッチされていない場合、run

apt-get update

リターン

apt-get install lighttpd.

Page 43: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 43

var内に新しいファイルと新しいディレクトリが作成:

/var/www/index.lighttpd.html

index.lighttpd.htmlファイルを変更してWebGUIを作成することができます。 いくつかのコンテナ内のディレクトリ/var/www/cssからCSSスタイルファイルをインポートすることができます。 HARTINGスタイルのbase.css。 ファイルがコンテナに格納されていない場合は、https//devicename/css/base.cssです。

図13: セルフデザインコンテナ WebGUI

注意: Busyboxベースのコンテナをインターネットに接続:

タイプ:

export http_proxy=http://10.131.130.50:80/

export https_proxy=https://10.131.130.50:80/

コンソールで。

Page 44: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

44 HARTING IT Software Development

6 RFID 電子識別プレートの構造 電子識別プレートは、以下の位置で装置内に組み込まれています。 この識別プレートは、ポータブルRFIDリーダで読み書きすることができます。

注意:HARTINGは、SDカードカバーの取り外しまたは交換を推奨しません。これは防水性に影響し、IP67認証を無効にする可能性があるためです。 RFIDチップは、カバーを閉じた状態で読み取ることができます。

図14: RFID プレートの位置

以下の構造は、RFID識別プレートの製造バージョン2に対応しています。 値は、管理者が設定インターフェイスで編集できます。

Byte 名前サイズ

Byte

内容

0 Version 1 設定のバージョン。 バージョン2は文書化

1 - 2 Checksumme 2 CRC-CCITT (CRC-16)

3 IPv6 Mode 1

IPv6アドレスのモード:

0 = Link-Local-address が自動生成

1 = DHCPサーバ提供のアドレスを使用

2 = IPv6 ホストアドレスが使用

4 - 19 IPv6 host address

16 デバイスのIPv6アドレス

20 IPv6 prefix length

1 現在のサブネットをによるIPv6アドレスのビット数

RFID プレート

Page 45: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 45

21 IPv4 Mode 1

IPv4 アドレスのモード

0 = IPv4 アドレスなし

1 = DHCPサーバ提供のアドレス

2 = IPv4 ホストアドレス使用

22 -

25

IPv4 host address

16 デバイスのIPv4アドレス

26 IPv4 prefix length

1 Ipv4アドレスのサブネットマスクビット数

27 -

58 Host name 32

デバイスの名前。 異なるネームサービス(DNSなど)で使用。 ゼロ終端された文字列。

59 -

74 IPV6 Gateway 16

IPV6ゲートウェイアドレス

75 -

78 IPV4 Gateway 4

IPV4ゲートウェイアドレス

79 DNS Mode 1

DNS サーバアドレス:

0 = DNSなし, DNSサーバアドレスを無視

4 = IPV4 アドレスのDNSサーバ6 = IPV6 アドレスのDNSサーバ

80 -

95

DNS server address

16 DNSサーバのアドレス、アドレスのタイプはフィールド "DNS Mode"によって決定

96 Control-Byte 1 未使用

電子識別プレート

97 -

113

Product name 17 製品名, 最大16文字 + zero

114 -

115

Product version

2 製品バージョン(単純なカウンター)英数字

116 -

128

default Password

13 デリバリー時のWebGuiの管理者パスワード。

パスワードがWebGui上で変更された場合、ステータスRFIDチップは同じままです。 最大12文字+ゼロ終了

129 Production day 1 デバイス製造日

130 Production month

1 デバイス製造月

131 Production year

1 デバイス製造年

Page 46: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

46 HARTING IT Software Development

7 メソッドインデックス

add_container_device ......................................................................................................28, 30

add_devices_to_metaconf ..................................................................................................... 30

change_passwd ..................................................................................................................... 26

checkCompatibility ................................................................................................................. 33

checkSignature ...................................................................................................................... 33

container_exists ..................................................................................................................... 20

del_container_device ............................................................................................................. 29

delete_container .................................................................................................................... 19

duplicate_container ................................................................................................................ 21

export_container .................................................................................................................... 21

firmware_reset ....................................................................................................................... 21

get_auth_token ................................................................................................................12, 23

get_autostart_information ...................................................................................................... 14

get_available_devices ........................................................................................................... 29

get_available_userspace ....................................................................................................... 14

get_base_net_config ............................................................................................................. 25

get_container_config ............................................................................................................. 19

get_container_devices ........................................................................................................... 30

get_container_net_config ...................................................................................................... 27

get_container_state ............................................................................................................... 20

get_datetime .......................................................................................................................... 31

get_device_info ...................................................................................................................... 29

get_info_text .......................................................................................................................... 13

get_name ............................................................................................................................... 14

get_requested_devices .......................................................................................................... 29

get_service_version ............................................................................................................... 14

get_system_version ............................................................................................................... 22

get_tz_list ............................................................................................................................... 32

get_user_settings................................................................................................................... 14

get_wlan ................................................................................................................................. 36

getStatusMessage ................................................................................................................. 33

getStatusMessageCount ....................................................................................................... 33

has_wlan ................................................................................................................................ 36

install_container ...............................................................................................................23, 25

invalidate_auth_token ............................................................................................................ 13

ping ........................................................................................................................................ 11

reboot ..................................................................................................................................... 21

Page 47: 日本語 - HARTING MICA...HAIIC MICA Programming Guide 4 HARTING IT Software Development 1 コンテナの基本と使用方法 1.1 コンテナベーシック コンテナは、ホスティングシステムとLinuxカーネルを共有する軽量の仮想マシンです

HAIIC MICA Programming Guide

HAIIC MICA Programming Guide, Edition 2017 47

renew_auth_token ...........................................................................................................12, 23

reset_container ...................................................................................................................... 18

set_base_net_config .............................................................................................................. 26

set_container_net_config ....................................................................................................... 28

set_container_ro .................................................................................................................... 20

set_date ................................................................................................................................. 31

set_ntp_list ............................................................................................................................. 32

set_time ................................................................................................................................. 31

set_use_ntp .....................................................................................................................31, 32

start_container .................................................................................................................18, 19

stop_container ....................................................................................................................... 19

transfer_chunk .................................................................................................................22, 24

transfer_start ....................................................................................................................22, 24

transfer_state ......................................................................................................................... 22

update .................................................................................................................................... 34

validate_and_renew_auth_token ........................................................................................... 13

validate_auth_token ............................................................................................................... 12

ドキュメントバージョン

1.1 コンテナ間のコンテナアクセスとデータ交換に関する章が含まれています。 SSOによるネットワーク構成方法の説明が完了しました。

websocketの作成、IOピンの読み込みと設定を記述する例が含まれています。

1.2. デバイス構成に関するJSON-RPC呼び出しが含まれています。

websocketの作成、IOピンの読み込みと設定を記述する例は、アプリケーションノートにエクスポートされています。 時刻と時刻の設定方法が含まれています。

1.3. コードがフォーマットされました。 新しいパスワードハッシュに関するスクリプトを更新しました。 sso上のアクセスを説明する新しい画像。 新しい章コンテナ開発。 対話型コンテンツディレクトリ。

1.4 メソッドのインデックスが追加されました。