ラベル M2M の投稿を表示しています。 すべての投稿を表示
ラベル M2M の投稿を表示しています。 すべての投稿を表示

2017-10-24

OpenBlocks IoTシリーズ 基本ソフトウェアにより提供されるPLCクライアント(Modbus)機能について

PLCクライアント(Modbus)機能は、OpenBlocks IoT 基本ソフトウェア2.12より大幅に機能追加されました。

主として以下の項目があげられます。

・データタイプとして、符号のありなし、データサイズ(16bit/32bit)、ビッグ/リトルエンディアンの設定を追加
・データ取得の基準時刻の設定
・CSVファイルを用いた取得PLC対象の拡張

本機能の実装により、1入出力インタフェーズに対し、複数のデバイス、レジスタが割り付けられる場合に、基準時刻を指定してまとめてデータを取得することが可能となり,例えば、RS-485インタフェースに接続される複数のデバイスや、無線メッシュであるOKI SmartHopのRS-232C経由のmodbusペイロードなどでも、1つのデバイスインタフェースから複数個所のデータ(温度や電力データなど)を一定時間にまとめて取得出来るようになります。



本機能はOpenBlocks IoTシリーズすべてのモデルで使用が可能です。ご利用の際は、2.12あるいは今後実施されるそれ以降のアップデートバージョンであることを確認してください。
また、PLCとの接続には、対応したハードウェアインタフェースが必要となります。
各モデル別に、標準もしくは標準オプションとして用意される接続は以下の通りです。
  • OpenBlocks EX1/VX1
    イーサネット、Wifiによる有線/無線ネットワーク、RS-232C/RS-485によるシリアルインタフェースを標準搭載
  • OpenBlocks BX1/BX3(L)/BX5
    Wifiでのネットワーク接続を標準搭載。有線ネットワーク接続にはオプションのUSB二股ケーブルにUSBネットワークアダプタ、RS232C/RS485接続には、オプションのRS232C二股ケーブル、RS-485二股ケーブルを使用
  • BX0
    標準搭載のWifiとPoEケーブルによる、無線/優先のネットワーク接続

    (*) RS-485接続は2線式のみを標準もしくはオプション品にてサポート

今回は、本機能の設定方法について紹介します。
内容に関しては、OpenBlocks IoTシリーズデータ収集ガイドからの抜粋となりますので、詳細に関しては以下のドキュメントをご参照ください。




・PLCクライアント(マスター)の設定方法


本機能は、OpenBlocks IoT Family から Modbus プロトコルを用いて PLC 機器のレジスタ、コイルもしくはステータスを用いて定期的に読み込む(ポーリングを行う)場合に用います。


WEB UI の「サービス」→「基本」タブにおいて、「PD Handler PLC Client」 が「使用する」に設定されている場合、同タブの「取得
PLC 対象数」に応じた入力フォームが表示されます。

※「取得 PLC 対象」(PLC デバイス)とは、PLC 機器そのものではなく、対象となる PLC機器への接続方法の他、データを取得するため
の「読込方法」や「読込開始アドレス」、「読込レジスタ数」等の設定の組み合わせを意図します。
PLC デバイス毎に送信対象項目にて”送信する”を選択すると、PLC デバイスの送信設定の詳細を設定できます。

※「使用プロトコル」としてModbus TCP(ネットワーク)を選択した場合の表示


※「使用プロトコル」としてModbus RTUを選択した場合の表示



”送信する”を選択した場合には、左のように各項目が表示されます。

デバイス番号:
OpenBlocks IoT Family の WEB UI 内で管理している番号です。変更はできません。

ユーザーメモ:
PLC デバイスにデータに付加する任意の文字列を設定します。データを処理する際の識別子等に利用して下さい。

読込方法:
「レジスタ」(レジスタ出力)、「入力レジスタ」(レジスタ入力)、「コイル」(ディジタル出力)、「入力ステータス」(ディジタル入力)から選択します。
「コイル」または「入力ステータス」を選んだ場合は、”0”または”1”の並びが出力されます。

データタイプ:
読込方法を「レジスタ」、「入力レジスタ」を選択した際に、出力のデータタイプを以下から選択します。

・符号なし 16 ビット整数
・符号付き 16 ビット整数
・符号なし 32 ビット整数/リトルエンディアン
・符号付き 32 ビット整数/リトルエンディアン
・符号なし 32 ビット整数/ビッグエンディアン
・符号付き 32 ビット整数/ビッグエンディアン

読込開始アドレス:
読み込みたいデータが格納されている PLC 機器上の開始アドレスを設定します。

読込レジスタ数:
「読込方法」として「コイル」または「入力ステータス」は、読み込まれるビット数と解釈されます。
「開始アドレス」に設定されるアドレスから読み込むレジスタ数もしくビット数を設定します。


取得時間間隔[sec]:
PLC デバイスからデータを取得する時間間隔を数字で設定します。単位は秒です
後述の基準時刻制御を使用する場合、時間間隔は以下の値へと内部的に変更されます。

・86400[sec]使整数倍
・43200[sec]
・28800[sec]
・21600[sec]
・14400[sec]
・10800[sec]
・7200[sec]
・3600[sec]
・1800[sec]
・900[sec]
・60[sec]

基準時刻制御:
毎日定時にデータを取得する場合、本機能を有効とし基準時刻を設定しください。

基準時刻:
定時にデータを取得する際の基準時刻を設定します。HH:MM 形式となります。

タイムアウト[msec]:
PLC デバイスからデータを取得する際のタイムアウトを設定します。単位はミリ秒です。

使用プロトコル:
「Modbus TCP」、「Modbus RTU」のいずれかを選択します。
「Modbus TCP」はネットワーク、「ModbusRTU」はシリアルです。

ユニット ID:
PLC 機器の Modbus ユニット ID を設定します。ユニット ID は、1~247 または 255 の数値です。


PLC 接続アドレス(Modbus TCP)
接続する PLC 機器の IP アドレスを設定します。

PLC 接続ポート(Modbus TCP)
接続する PLC 機器の TCP ポート番号を設定します。 デフォルト値は、502 です。

読込デバイスファイル(ModbusRTU)
PLC 機器を接続するシリアルポートのデバイスファイル名を設定します。

ボー・レート(Modbus シリアル):
PLC 機器を接続するシリアルポートのボー・レートを選択します。

パリティビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのパリティビットを選択します。

データビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのデータビット数を選択します。

ストップビット(Modbus シリアル):
PLC 機器を接続するシリアルポートのストップビット数を選択します。

送信先設定:
“使用する”を選択した送信先に対してチェックボックスが選択できるようになります。
チェックを付けたクラウド等に対して、送信を行います。


デバイス ID サフィックス(PD):
PD Exchange に送信する際のデバイス ID のサフィックスを設定します。

クライアント ID (AWSIoT):
AWSIoTに送信する際のクライアント ID を設定します。Thing Shadows を使用する場合、クライアント ID が Thing Name となります。

Thing Shadows(AWSIoT):
AWSIoT に送信する際の Thing Shadows を使用するかの設定を選択します。

トピック名(AWSIoT):
AWSIoT に送信する際のトピックを設定します。Thing Shadows を使用する場合、トピックはクライアントIDをThing Nameとして自動生成されます。

証明書(AWSIoT):
AWSIoT に送信する際に使用するデバイスの証明書を設定します。

プライベートキー(AWSIoT):
AWSIoT に送信する際に使用するデバイスのプライベートキーを設定します。

デバイスタイプ(Watson IoT/Device):
Watson IoT(Device)に送信する際のデバイスタイプを設定します。

デバイス ID(Watson IoT/Device):
Watson IoT(Device)に送信する際のデバイスID を設定します。

パスワード(Watson IoT/Device):
Watson IoT(Device)に送信する際のパスワードを設定します。

デバイスタイプ(Watson IoT/Gateway):
Watson IoT(Gateway)に送信する際のデバイスタイプを設定します。


デバイス ID(Watson IoT/Gateway):
Watson IoT(Gateway)に送信する際のデバイス ID を設定します。

Event hubs 名:
Event hubs に送信する際の Event hubs 名を設定します。

SAS ポリシー:
Event hubs に送信する際の SAS ポリシーを設定します。

SAS キー:
Event hubs に送信する際の SAS キーを設定します。

デバイス ID(IoT Hub):
IoT Hubに送信する際のデバイス ID を設定します。

デバイスキー(IoT Hub):
IoT Hub に送信する際のデバイスキーを設定します。

Gatway Name(T4D):
Toami for docomo に送信する際に用いるGateway Name を設定します。

App key(T4D):
Toami for docomo に送信する際に用いる AppKey を設定します。

イベントタイプ(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いるイベントタイプを設定します。

デバイス ID(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いるデバイス ID を設定します。

API キー(IoT デバイスハブ):
IoT デバイスハブ(Nifty)に送信する際に用いる API キーを設定します。

ユニーク ID (MQTT):
MQTT サーバに送信する際のユニーク ID を設定します。ユニーク ID は、トピックのサフ
ィックスとして扱われます。トピックのプレフィックスは、MQTT サーバに設定されるトピ
ックプレフィックスです。プレフィックスとサフィックスの間は '/' で区切られ送信されます。

※一部を除くクラウドに紐付く設定情報は編集ボタンにより編集可能になります。既存の
デバイス不良等の差し替え時に以前のものと同様に扱う為に設定を同一にすることを推奨
します。(不良となったデバイスは送信対象設定を“送信しない”へ変更してください。)
※証明書及びプライベートキーはシステム→ファイル管理タブからアップロードしてくだ
さい。

・CSV ファイルを用いた「取得 PLC 対象」の拡張


/var/webui/upload_dir ディレクトリに pd-handler-plc-client.csv というファイル名の CSVファイルを置くことで、WEB UI 管理にて割り当てされた 1 デバイス番号に対して複数の「取得 PLC 対象」を割り当てることが可能です。
尚、pd-handler-plc-client.csv ファイルは WEB UI の「システム」→「ファイル管理」タブのアップロード機能により置くことが可能です。
また、CSV ファイルの書式は、次の通りです。

デバイス番号,ユニット ID,読込方式,データタイプ,読込開始アドレス,読込レジスタ数

※行の先頭が#または/の場合、コメント行として扱います。
※CSV 内の”等での動作は保証いたしません。

パラメタデータの形式説明
デバイス番号半角英数字WEB UIによりれたデバイス番号記載します
WEB UIに設定されていないデバイス番号無視されます
ユニット番号半角英数字PLC機器のModbusユニットIDを設定します。
ユニットIDは、1~247 または 255 を記載します。
方式半角英数字読込方式として、以下のいずれかを記載します
設定内容Web UI表記
bitsコイル
input_bits入力ステータス
registerレジスタ
input_register入力レジスタ
データタイプ半角英数字データタイプとして以下設定してください
なお、読込方式を"bits"または"input_bits"を設定した場合カラムは無視されます
設定内容WEB UI表記
u_int16符号なし16ビット整数
int16符号き16ビット整数
u_int32lsb符号なし32ビット整数
リトルエイディアン
int32lsb符号き32ビット整数
リトルエイディアン
u_int32msb符号なし32ビット整数
ビッグエイディアン
int32msb符号き32ビット整数
ビッグエイディアン
読込開始アドレス半角英数字みたいデータが格納されているPLC機器開始アドレスを設定します。先頭が"0x"の場合は16進数解釈されます
読込レジスタ半角数字みたいレジスタ記載します。


・記載例

#localname,unit_id,read_function,data_type,read_addr,read_registers
device_plc_client_0000001,15,bits,u_int16,0x130,37
device_plc_client_0000001,15,input_bits,u_int16,0x1c4,22
device_plc_client_0000001,15,registers,u_int16,0x160,3
device_plc_client_0000001,16,input_registers,u_int32lsb,0x108,1
device_plc_client_0000002,17,bits,u_int16,0x130,37
device_plc_client_0000002,18,input_bits,u_int16,0x1c4,22
device_plc_client_0000002,19,registers,int16,0x160,3
device_plc_client_0000002,20,input_registers,int32lsb,0x108,1
device_plc_client_0000003,30,bits,u_int16,0x130,37
device_plc_client_0000003,30,input_bits,u_int16,0x1c4,22
device_plc_client_0000003,31,registers,u_int16,0x160,3
device_plc_client_0000003,31,input_registers,u_int32msb,0x108,1
device_plc_client_0000004,32,bits,u_int16,0x130,37
46/80
device_plc_client_0000004,32,input_bits,u_int16,0x1c4,22
device_plc_client_0000004,33,registers,int16,0x160,3
device_plc_client_0000004,33,input_registers,int32msb,0x108,1

CSV ファイルに定義したデバイス番号の「取得 PLC 対象」は、WEB UI の設定内容(CSVの定義内容)は破棄され、CSV ファイルの内容が使用されます。そのため、CSV ファイルに定義したデバイス番号の設定ついては、1 デバイス番号として取得対象とする全ての「取得PLC 対象」を記載してください。


最後に


今回の機能強化は、ビルや、工場などでの環境測定や、機器データの取得に際し、必要と思われるものをほぼ実装した形となります。
当社IDMアプライアンスなどと合わせてご利用いただき、環境測定やモニタリングシステムの構築に役立てていただければと思います。

2014-11-25

OpenBlocks IoT BX1 ハンズオン開催中

OpenBlocks IoT BX1のハンズオンDayを正式にスタートしました。

今週より、BX1本体およびDockBoard(ES版)との組み合わせにてご利用いただけます。

 
天王洲アイル、Samurai Startup Islandにて毎週水曜日(10:00-18:00)に開催。
予約制となりますので、以下の開催概要にそってご予約下さい。
当日でも空いていれば予約可能です。

現在ほぼマンツーマンのハンズオンとなっており、使用できるセットも限られているため、多人数となる場合は、早めにご連絡いただき、機材などの調整をさせてください。


------

「ハンズオンDay」開催概要

  • 実施内容
    当社IoT向けマイクロサーバー「OpenBlocks® IoT BX1」を使用したハンズオンです。
    実際にOpenBlocks® IoT BX1の実機や開発環境に触れながら基本操作の確認や、アプリケーション開発、システム構築に必要となる事項の事前サーベイなどが可能です。

    参考:OpenBlocks® IoT BX1特設サイトURL
    http://openblocks.plathome.co.jp/products/special/bx1_sp/
  • 対象となる方
    IoTのアプリケーション開発や、センサーデバイス接続開発、IoTサービス開発などを検討している方に最適です。
  • 開催スケジュール
    原則、毎週水曜日に実施致します。詳細なスケジュールは下記URLよりご確認下さい。
    http://goo.gl/vUxmwv
  • 参加方法
    機材の都合上事前予約が必要となります。開催スケジュールをご確認のうえ、当社WEBサイトの参加申込フォームよりお申込み下さい。

    参加申込フォームURL
    https://openblocks.plathome.co.jp/form/bx1_handson/input.html
  • 参加費用
    無料です。
  • 開催場所
    Samurai Startup Island
    住所:東京都品川区 東品川2-2-28 Tビル2F
    アクセス:天王洲アイル駅より徒歩5分
    http://samurai-startupisland.asia/access

2014-10-08

OpenBlocks IoT BX1 開発者向け情報など

OpenBlocks IoTファミリ BX1を発表しました。

M2M・IoTシステムの構築に最適な極小サイズのマイクロサーバー「OpenBlocks® IoTファミリ BX1」を発表

OpenBlocksシリーズは、従来より複数のLANポートを持ち小型堅牢かつ汎用のLinux環境を提供するマイクロサーバとして、ネットワークの監視管理、ゲートウェイなど、様々なシーンで利用していただいていましたが、今回のBX1シリーズにおいては、Wifi/3G/BlueTooth(BLE対応)を標準サポートした、無線通信に重点を置いた製品となっています。

発表ではスケルトンカバーに入った製品としてお見せしていますが、まずは内部写真をここに公開します。


カバーは試作品のため、スケルトン仕様となっていますが、製品ではホワイトとなる予定です。


外部コネクタ。上部がオプション有線接続用端子となり、ケーブルを交換することにより、USB(有線LAN含む)、シリアル(RS-232C/RS-485)、GPIO(最大19ポート)に対応します。
下部がSIMスロットです。


標準でUSBケーブルが添付します。本ケーブルはUSB側からの給電と、シリアル通信をサポートしており、PCに接続する場合は、 USBシリアル経由のコンソールとして見えます。


本体基板の裏側です。


本体基板の上部写真です。

本体の仕様は以下の通り。

CPU モデル インテル® Atom™ プロセッサー 500MHz (デュアルコア)
動作速度 500MHz (デュアルコア)
メインメモリ オンボード 1GB (LPDDR3)
FLASH ROM 4GB (eMMC)
内部インターフェイス 3G(W-CDMA)※1
Bluetooth 4.0
Wi-Fi (IEEE802.11a/b/g/n)
外部インターフェイス USB 2.0(Type-A)ケーブル
GPIO (最大19ポート) オプションケーブルにて対応
シリアル 1ポート RS-232C/RS-485
寸法 (mm) 41.6mm(W)x 96mm(D)x 11.3mm(H)(突起部含まず)
電源 DC 5〜48V
出荷時OS Debian GNU/Linux

※1 NTTドコモ FOMA網に対応予定。他通信事業者向けも検討中。

開発環境は、Debian GNU/Linuxを標準でサポートし、従来のOpenBlocksシリーズと同様に、実機ベースでの手早い開発環境をBXでも提供していきたいと考えています。

提供時期ですが、開発者向けに、本体と各種IOを外だし出来るボードをセットにしたDPパッケージを先に提供し(時期は未定)、製品としては2月を予定しています。

展示会の情報などは、以下のページでご案内しています。

特設サイトURL:
http://openblocks.plathome.co.jp/products/special/bx1_sp/

Facebook:

https://www.facebook.com/OpenBlocksIoT



現在、DPパッケージのリリースに前後して、いち早く製品をご覧いただけるよう、ハンズオンdayやハッカソン、アイディアソンなどを企画しておりますので、日程が決まり次第またお知らせします。


2013-12-12

[.tested] TI CC2541 SensorTag Development Kit[debian Wheezy][AX3][A7]




先日、以下の記事で紹介した、TI CC2541 SensorTag Kitと、OpenBlocks Aシリーズとの接続評価を行いました。

TI CC2541 SensorTag Development Kit


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A6/A7 kernel: 3.2.40

1. 事前準備


本装置は、Bluetooth LEにより通信を行うため、OpenBlocks本体に、USB Bluetoothアダプタを接続して使用します。
Bluetoothアダプタに関しては、以下の記事において、一部製品の接続検証を行っております。

 周辺機器接続テスト

上記の記事に、Bluetooth接続に関する説明を記述しておりますが、今回は、Bluetooth LEによる接続であるため、手順に関しては本記事にて説明します。

Bluez 5.12の導入

Debian Wheezyにて提供されるbluezパッケージでは、gatttoolによるデータのwriteが出来ず、Web検索したところ、以下のページを参考に、5.12をインストールしました。
また、下記ページでは今回使用したデバイスそのもののテストも行っています。

Michael Saunby: Raspberry Pi and TI CC2541 SensorTag:

導入に際しては、事前に開発環境のインストールを行ってください。
( すでに行っている場合は必要ありません)

# aptitude install build-essential

Bluez 5.12のビルドに必要なライブラリをインストールします。

# aptitude install libglib2.0-dev libdbus-1-dev libusb-dev libudev-dev libical-dev systemd libreadline-dev

Bluez 5.12を入手し、解凍します。

# wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.12.tar.xz
# tar -Jxvf bluez-5.12.tar.xz

INSTALLドキュメントに従い、インストールします。

# cd bluez-5.12/
# ./configure
# make
# make install

2. 接続方法


CC2541のデータハンドリングは、以下のTI Wikiに記述されています。

SensorTag User Guide - Texas Instruments Wiki:


今回は、wheezyのbluetoothサポートパッケージを導入していませんので、手動でデバイスの立ち上げからテストまでを行っています。

# hciconfig hci0 up

デバイスサイドにあるスイッチを押して、BLEデバイスのスキャンを行います。


# hcitool lescan
LE Scan ...
34:B1:F7:D5:59:2A (unknown)
34:B1:F7:D5:59:2A SensorTag
 :
 :

gatttoolにより、インタラクティブにセンサーデータを取得してみます。

# gatttool -i hci0 -b 34:B1:F7:D5:59:2A -I
[34:B1:F7:D5:59:2A][LE]> connect
Attempting to connect to 34:B1:F7:D5:59:2A
Connection successful
[34:B1:F7:D5:59:2A][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0x002a uuid: f000aa00-0451-4000-b000-000000000000
attr handle: 0x002b, end grp handle: 0x0035 uuid: f000aa10-0451-4000-b000-000000000000
attr handle: 0x0036, end grp handle: 0x003d uuid: f000aa20-0451-4000-b000-000000000000
attr handle: 0x003e, end grp handle: 0x0048 uuid: f000aa30-0451-4000-b000-000000000000
attr handle: 0x0049, end grp handle: 0x0054 uuid: f000aa40-0451-4000-b000-000000000000
attr handle: 0x0055, end grp handle: 0x005c uuid: f000aa50-0451-4000-b000-000000000000
attr handle: 0x005d, end grp handle: 0x0061 uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
attr handle: 0x0062, end grp handle: 0x0068 uuid: f000aa60-0451-4000-b000-000000000000
attr handle: 0x0069, end grp handle: 0xffff uuid: f000ffc0-0451-4000-b000-000000000000
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 00 00 00 00
[34:B1:F7:D5:59:2A][LE]> char-write-req 3c 01
Characteristic value was written successfully
[34:B1:F7:D5:59:2A][LE]> char-read-hnd 38
Characteristic value/descriptor: 4c 6d 46 60
[34:B1:F7:D5:59:2A][LE]>


上記の手順により、センサーデータから数値を取得することが出来ます。


ただし、このデバイスは常時監視する用途には向きません。
USBに直結するタイプのインターフェースも配布されていますので、別途入手して評価する予定です。

2013-12-09

TI CC2541 SensorTag Development Kit

TEXAS INSTRUMENTS社より、センサータグ開発キットCC2541が配布されているので、TIショップより入手しました。

 CC2541 SensorTag 開発キット - CC2541DK-SENSOR - TI ツール・フォルダ:

この開発キットは、以下のセンサー入力をBluetoothにより出力します。
  • IR 温度センサ
  • 湿度センサ
  • 圧力センサ
  • 加速度計
  • ジャイロスコープ
  • 磁力計


購入は、TIショップからの直接購入をお勧めします。($25で送料込み)
展示会などでの即売もあるようです。

Bluetooth LEデバイスとして、bluezでscan出来るところまでは確認しました。
OpenBlocksとの接続や監視ツールとの連携に関してはこれから行いたいと思います。

(TIのサイトより、各種OS向けの開発キットやテストツールが配布されていますが、ソースコードの入手にはagreementが必要になっていますので、muninプラグインなど作成した際の公開に関しては少し時間がかるかと思います)

2013-12-06

[.tested] SII MB-B100-00 CDMA 1X 通信アダプタ [debian Wheezy][AX3][A7/A6]



SII MB-B100-00は、CDMA 1x 通信モジュール(セイコーインスツル製 WM-M200A)を内蔵したKDDI CDMA1x 汎用通信アダプタです。
KDDI CDMA 1x 通信サービスを利用して、パケット通信、SMS 受信、GPS 測位を行うことができます。
今回は、本装置によるパケット通信サービスをOpenBlocks AX/A7/A6で 利用するための検証を行います。

OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A6/A7 kernel: 3.2.40

<使用機器>
OpenBlocks AX3
OpenBlocks A6/A7
SII MB-B100-00 CDMA 1X 通信アダプタ

1. 事前準備


本装置は、RS-232Cインタフェースにより接続します。
OpenBlocksの場合は、RS-232Cポートに接続しますが、他社の外付けモデムと同様に、別売の
シリアル変換アダプタ(ストレート) PH-RD/RH/600を使用します。
(添付のクロスアダプタを使用する場合は、Dsub9pinのオスメスのシリアルクロスケーブルにより接続して下さい)


RS-232Cポートのデバイス名は、
/dev/ttyS1
になります。


2. 接続方法


接続は、他のモバイル通信アダプタと同様、pppconfigで設定を行います。

pppconfigをインストールします。

# aptitude install pppconfig

pppconfigの設定は以下の通りです。

Provider Name  au
Configure Nameservers (DNS)  Dynamic
Authentication Method for test  PAP
User Name  アカウント名(*1)
Password  パスワード(*1)
Speed  19200
Pulse or Tone  Tone
Phone Number  電話番号(*2)
Choose Modem Config Method  No
Select Modem Port  Manual
Manually Select Modem Port  /dev/ttyS1

(*1) 通信事業者より提供されたアカウント名、パスワードを使用してください。
(*2) 通信事業者より提供された番号を使用してください。

/etc/chatscripts/auを編集します。
ATZコマンドはこのモジュールの場合使用出来ません。
また、その後の処理も一部変更しています。
(****は発信する電話番号のため、置き換えてください)

# This chatfile was generated by pppconfig 2.3.18.
# Please do not delete any of the comments.  Pppconfig needs them.
#
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TON
E' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
#'' ATZ
# ispnumber
#OK-AT-OK "ATDT****"
'' "ATDT****"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff

eth0や他のインタフェースが有効になっている場合は、/etc/ppp/peers/auに、以下の行を加えることにより、defaultrouteが変更されます。

replacedefaultroute


上記設定により、外部のサーバにアクセス出来ることを確認しました。

# pon au
# ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:106.170.173.51  P-t-P:210.169.0.102  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:72 (72.0 B)  TX bytes:87 (87.0 B)

ただ、poffコマンドにより通信終了後、最初のATコマンドの出力が”NO CARRIER"となり、ponによる再ダイヤルの最初の1回目がエラーになります。
これを避けるためには、再度ダイヤルするか、リセット用の専用プログラムを作成し、ATコマンドを1度実行するなどの対策が必要かと思います。

なお、コンシューマ向けの機器と違い、M2M向けは通信データ量に対しての従量課金が細かく定義されるため、評価を行う際は、条件に注意して行ってください。

2013-09-19

OpenBlocks M2Mゲートウェイオプション [AX3][A7]

先日のOpenBlocks A7モデルのリリースに加え、M2Mゲートウェイオプションのリリースを発表しました。
M2Mゲートウェイオプションは、M2Mを主とした用途において、以下の機能を提供するものです。
  • 3G通信モジュール ( 対応機種: A7/AX3 )
    OpenBlocksをワイヤレスでインターネットに接続できます。固定インターネット回線の敷設が困難な場所などにおけるネットワーク環境構築を実現します。3G(W-CDMA)方式に加え、GSMやGPRSといった世界各国で使用される通信方式にも対応しており、M2Mのグローバル展開に最適です。
    3G通信モジュールは国内・海外のM2M通信サービスに対応しています。
  • RS485モジュール ( 対応機種 A7 )
    RS485コネクターをOpenBlocksへ追加し、RS485インターフェイスを持つ各種センサーデバイスなどから直接情報を収集することが可能です。
本記事では、本オプションの内部実装について、簡単に説明したいと思います。

1. 外観

A7の上部に、RS-485の端子を2系統、背面上部から3Gのアンテナ用端子を配置。
外部アンテナユニットも付属します。


2. 内部

非常にコンパクトなA7筐体ですが、内部には2.5inch SSDを内蔵するスペースがあり、そのエリアとの排他使用となります。
SSDについては、A7は2.5inchSSDのスペースに加え、ハーフサイズのSSDユニットを本体基盤に直接装着出来ますので、ストレージが必要な場合は、ハーフサイズのSSDユニットを利用します。


3Gモジュールは、AX3のPCI-Eコネクタにも装着出来る形状となり、モジュールの裏面にmicroSIMのソケットが配置されています。

 

なお、今回写真公開しているユニットは試作品のものです。

3. 3Gモジュールの仕様について

標準品として用意される3Gモジュールの仕様は以下の通りです。

3G通信モジュール概要(A7・AX3用共通)    

  • 対応周波数帯
    GSM/GPRS/EDGE     850/900/1800/1900 MHz   
    WCDMA (UMTS/HSPA)     800/850/900/1700/1900/2100 MHz   
    LTE     未対応
       
  • 対応SIM形状
    microSIM

  • 対応キャリア (取得済みIOT)
    NTT DoCoMo
    Rogers
    BellMobility
    Telus
    Vodafone
       
  • 認証
    JATE/TELEC、GCF、R&TTE
    PTCRB、FCC、IC、A-tic、
    IDA、Anatel、NCC、CCC、KCC
       
  • アンテナ
    サイズ アンテナ高さ:約116mm ケーブル長:約2,000mm   
    防水規格 IP65

4. 出荷時の制限など

本製品は、WiFi無線ユニット同様、基本的には出荷時のオプションとなります。
A7の場合は、本オプションを使用する場合は、SSDはハーフタイプのものを選択します。
AX3の場合は、PCI-Eコネクタに装着するため、SSDに関する制限はありませんが、PCIスロット数が1であるため、WiFi無線ユニットとは排他使用となります。

なお、国外対応については、それぞれの国に応じた規格の受査が別途必要になります。

2013-03-25

[.tested] 富士通ビー・エス・シー F-PLUG [AX3][A6]


F-PLUGは、電気製品の電気使用量、電気料金、CO2換算値だけでなく、周辺の温度、湿度、照度の測定センサーを備えた、Bluetooth接続型の測定ユニットです。

電力・温度・湿度・照度測定機能つきプラグ  F-PLUG(エフプラグ)


本製品は、Windowsに対応した「F-PLUGユーティリティ」が用意されますが、今回、開発元の富士通ビー・エス・シー様のご協力により、OpenBlocks AX3/A6シリーズとの接続検証を行いました。
また、HTMLによるリソースモニタリングツールである、「munin」のpluginを作成し、環境モニタリングツールとしての活用例も紹介します。


  


OBDN技術ブログによる動作検証は、当社およびF-PLUG開発元において、デバイスの動作を保証およびサポートを行うものではありません。
また、F-PLUG製品は、現在Microsoft Windows7/Windows8に対応したソフトウェアのみが 用意されており、OpenBlocksを含むLinux製品との接続検証に対しては、制御データ形式 の一部のみの公開となります。
動作の保証、サポートなどは行っておりません。 内容に関するご質問、ご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8

1. ペアリング方法


OpenBlocksによる、Bluetoothアダプタの導入に関しては、

【.tested】Logitec製 Bluetoothアダプタ (LBT-UAN03C1BK) [AX3]

を参照して下さい。
また、現在β公開を行っている、Debian Wheezy 環境を使用する場合は、

[.tested] RATOC SYSTEM REX-BT60 [Debian Wheezy/Squeeze][AX3][A6]

を参考にペアリングを行ってください。

ペアリングに、simple-agentコマンドを使用した場合、Confirm passkey (yes/no):と表示された時に、F-PLUGアダプタがペアリング要求を受け付ける状況になりますので、アダプタのペアリングボタンを押し、yesと入力して下さい。
ペアリングが完了します。

# /usr/share/doc/bluez/examples/simple-agent hci0 <BTADDR>
RequestConfirmation (/org/bluez/2001/hci0/dev_B0_99_28_A4_43_BB, 457589)
Confirm passkey (yes/no): yes
Release
New device (/org/bluez/2001/hci0/dev_B0_99_28_A4_43_BB)

ペアリングの確認は以下のコマンドで行います。

# /usr/share/doc/bluez/examples/test-device list
dbus.Array([dbus.ObjectPath('/org/bluez/1453/hci0/dev_B0_99_28_A4_43_BB')], signature=dbus.Signature('o'))

2. rfcommによるSPP接続方法


本デバイスはSPPプロファイルに対応しており、OpenBlocksからデータをハンドリングするためには、rfcommにより仮想シリアルデバイスとして扱うのが簡単です。
今回のハンドリングデータはテキスト形式でなく、バイナリデータを含むため、-rオプション(rawモード)を追加します。

# rfcomm -r connect hci0 <BTADDR>&

/dev/rfcomm0が出来ているのを確認してください。

# ls -la /dev/rfcomm0
crw-rw---- 1 root dialout 216, 0 Feb 28 09:07 /dev/rfcomm0

3. F-PLUGの制御データ形式について


制御データ形式、および、その説明は、以下のgithubのサイトを参照してください。

 https://github.com/goto2048/fplug_for_linux

なお、今回公開される要求/応答データ形式は一部です。
公開されていない要求コマンドの中には、ファームウェア操作など本体設定に関わるものもあり、誤ったデータの送信により、本体が正常に動作しなくなる場合もあります。
利用される際は、送出するデータの設定に十分注意してください。

4. 通信テスト


本デバイスのデータハンドリングは、要求データの送出により、本体が処理を行い、そのステータスおよび計測値その他を返すシンプルなものです。
 
rfcommによる仮想シリアルデバイスを使用した、最もシンプルなハンドリングの例は以下の通りです。
この例では、温度取得要求を行い、応答データを16進表示します。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>

#define SERIAL_PORT "/dev/rfcomm0"

unsigned char sm_req[]={0x10, 0x81, 0x00, 0x00, 0x0e, 0xf0, 0x00, 0x00, 0x11, 0x00, 0x62, 0x01, 0xe0, 0x00};

int main(int argc, char *argv[])
{
    int fd;
    int ret,cnt;
    unsigned char buf[256];   
    struct termios oldtio, newtio;

    fd = open(SERIAL_PORT, O_RDWR );

    tcgetattr( fd, &oldtio );
    newtio = oldtio;
    newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
    tcsetattr(fd, TCSANOW, &newtio);

    write(fd, sm_req, sizeof(sm_req) );
    ret=read(fd, buf, 256);

    for ( cnt=0; cnt\<ret; cnt++ ) {
        printf( "%02x,", buf[cnt] );
    }
    printf( "\n" );

    tcsetattr(fd, TCSANOW, &oldtio);
    close(fd);

    return 0;
}

また、メニュー形式によるテストプログラムfptestのソースコードををgithubに置きました。
このプログラムにより温度、湿度、光量、リアルタイムの電力計測のデータハンドリングテストを行うことが出来ます。
本テストプログラムおよび、要求応答データ形式などのドキュメント、5項以降で使用する一連のプログラムは、以下の手順により入手してください。

# git clone https://github.com/goto2048/fplug_for_linux.git

fplug_for_linuxディレクトリ以下に本レポジトリが展開されます。

テストプログラムは、シンプルに以下の手順でビルドしてください。

# make fptest

なお、/dev/rfcomm0デバイスのアトリビュートが、初期値ではrw-rw---となっていますので、テストを行う場合、root権限で実行するか、 rfcomm0デバイスを、

chmod o+rw /dev/rfcomm0

するなどの対策をして下さい。

本テストプログラムにより、F-PLUGの初期化およびデータ取得が出来ることを確認しました。

5. muninによるモニタリング


Munin はネットワーク化に対応したリソース・モニタリングツールです。
F-PLUGも、簡単なpluginを作成するだけで監視対象に加える事が可能です。

apache2およびmuninのインストールと初期設定

muninのモニタリング表示はhtmlを介して行うため、webサーバを用意します。
今回はapache2を使用しました。

# aptitude install apache2

続けてmuninをインストールします。

# aptitude install munin

今回、htmlの展開場所はデフォルトの/var/cache/munin/wwwのままで作業しました。
/etc/apache2/conf.dの下にmuninというファイルが追加されますので、これを編集します。
Allow from 以下に、アクセスを許可するIPアドレスを記述して下さい。
以下のサンプルでは、192.168.253.xxxからのアクセスを許可しています。

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
        Order allow,deny
        Allow from localhost 192.168.253.0/24
        Options None

        # This file can be used as a .htaccess file, or a part of your apache
        # config file.
        #
        # For the .htaccess file option to work the munin www directory
        # (/var/cache/munin/www) must have "AllowOverride all" or something
        # close to that set.
        #

        # AuthUserFile /etc/munin/munin-htpasswd
        # AuthName "Munin"
        # AuthType Basic
        # require valid-user

        # This next part requires mod_expires to be enabled.
        #

        # Set the default expiration time for files to 5 minutes 10 seconds from
        # their creation (modification) time.  There are probably new files by
        # that time.
        #

    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault M310
    </IfModule>

</Directory>

apache2をrestartします。

# apachectl restart

なお、debian 6.0パッケージにより提供されるmuninのバージョンは1.4.5です。
今回、1.4.5での作業の後、2.0をセルフビルドして乗せ換えましたが、プラグインは手を入れずそのまま使用しています。

・muninの監視プラグインの追加および削除

munin-node-configureにより、プラグインのリストおよび状態を表示することが出来ます

# munin-node-configure Plugin | Used | Extra information ------ | ---- | ----------------- acpi | no | amavis | no | apache_accesses | no | apache_processes | no | apache_volume | no | apc_envunit_ | no | apt | no | apt_all | no | bind9 | no | bind9_rndc | no | bonding_err_ | no | buddyinfo | no | courier_mta_mailqueue | no | courier_mta_mailstats | no | courier_mta_mailvolume | no | cps_ | no | cpu | yes | cpuspeed | no | cupsys_pages | no | df | yes | df_abs | no | df_inode | no | digitemp_ | no | diskstat_ | no | diskstats | no | entropy | no | exim_mailqueue | no | exim_mailstats | no | fail2ban | no | forks | no | fplug_humid | yes | fplug_illum | yes | fplug_rwatt | yes | fplug_temp | yes | freeradius_acct | no | freeradius_auth | no | freeradius_proxy_acct | no | freeradius_proxy_auth | no | fw_conntrack | no | fw_forwarded_local | no | fw_packets | no | hddtemp_smartctl | no | http_loadtime | no | if_ | yes | eth0 : :

プラグインは、/usr/share/munin/pluginsに記述されており、サーバ監視に必要なリソースモニタリング用のpluginはほぼ網羅されています。
監視を有効にしたいpluginは、/etc/munin/plugins下にシンボリックリンクされています。

obsa6:/etc/munin/plugins# ls -la
total 8
drwxr-xr-x 1 root root 4096 Mar  1 18:56 .
drwxr-xr-x 1 root root 4096 Mar  4 10:34 ..
lrwxrwxrwx 1 root root   28 Mar  1 15:35 cpu -> /usr/share/munin/plugins/cpu
lrwxrwxrwx 1 root root   27 Mar  1 15:35 df -> /usr/share/munin/plugins/df
lrwxrwxrwx 1 root root   36 Mar  1 18:56 fplug_humid -> /usr/share/munin/plugins/fplug_humid
lrwxrwxrwx 1 root root   36 Mar  1 18:56 fplug_illum -> /usr/share/munin/plugins/fplug_illum
lrwxrwxrwx 1 root root   36 Mar  1 18:56 fplug_rwatt -> /usr/share/munin/plugins/fplug_rwatt
lrwxrwxrwx 1 root root   35 Mar  1 18:42 fplug_temp -> /usr/share/munin/plugins/fplug_temp
lrwxrwxrwx 1 root root   28 Mar  1 15:35 if_eth0 -> /usr/share/munin/plugins/if_
lrwxrwxrwx 1 root root   29 Mar  1 15:35 load -> /usr/share/munin/plugins/load
lrwxrwxrwx 1 root root   31 Mar  1 15:35 memory -> /usr/share/munin/plugins/memory
lrwxrwxrwx 1 root root   34 Mar  1 15:35 processes -> /usr/share/munin/plugins/processes
lrwxrwxrwx 1 root root   31 Mar  1 15:35 uptime -> /usr/share/munin/plugins/uptime
lrwxrwxrwx 1 root root   30 Mar  1 15:35 users -> /usr/share/munin/plugins/users
obsa6:/etc/munin/plugins#

監視を無効にする場合は、このシンボリックリンクを削除してください。
今回は、F-PLUGのテストが目的ですので、監視対象を大幅に削除しています。
修正後、muninをrestartします。

# /etc/init.d/munin-node restart

・F-PLUG用モニタコマンドの作成

muninに監視データを渡すためのF-PLUG用データハンドラを作成します。
githubに置いた、fpstatus.cをコンパイルし、/usr/local/binの下にコピーしてください。
本プログラムはリアルタイムデータの要求/応答のみに特化したもので、上記のテスト用サンプルプログラムをベースに、応答データのステータスチェック、エラーリトライを加えています。
温度、湿度、照度、リアルタイム消費電力に対応し、コマンドラインオプション(-t,-h,-i,-w)により監視するデータを選択できます。

# make fpstatus
# cp fpstatus /usr/local/bin

なお、munin-nodeは、muninユーザで実行されるため、rfcomm0デバイスはそのままでは使用出来ません。

chmod u+s /usr/local/bin/fpstatus

として、setuidするか、

chmod o+rw /dev/rfcomm0

として、rfcommデバイスにアクセス権限を付加する必要があります。

fpstatusのコマンドラインオプションは以下の通りです。

fpstatus [option]
  -t, t      温度 (℃)
  -h, h      湿度 (%)
  -i, i       照度 (ルクス)
  -r, r      リアルタイム消費電力 (ワット)

・munin用fplugプラグインの作成

minin用のプラグインを作成します。

munin用プラグインは、以下の実行結果を出力することが出来るならば、何の言語で記述してもよく、他のプラグインを雛形にすると簡単に作成出来ます。
ただし、テストとしてプラグインの実行結果を単体で確認するためには、環境変数MUNIN_LIBDIRの設定が必要です。

# setenv MUNIN_LIBDIR=/usr/share/munin

プラグイン名をmunin_pluginとした場合、

munin_plugin autoconf

このプラグインが利用可能かどうかを返します。
このプラグインが正常に値を返せる状態かどうかをチェックし、yesかnoかを返します。
今回のサンプルでは、yesのみを返しています。

# ./fplug_temp autoconf
yes

munin_plugin config

このプラグインの情報を出力します。

# ./fplug_temp config
graph_title fplug_temperature
graph_args --base 1000 -l 0
graph_scale no
graph_vlabel temperature
graph_category fplug
fplug_temp.label fplug_temp
fplug_temp.draw LINE2

munin_plugin

オプションなしで実行すると、プラグイン名.value [値]を標準出力します。
fpstatus -tにより出力される数値をecho出力で組み合わせました。

echo fplug_temp.value `/usr/local/bin/fpstatus -t`

fpstatus側でfplug_temp.valueまで出力していないのは、プラグイン名の自由度を優先したためです。

# ./fplug_temp
fplug_temp.value 24.0

温度監視用plugin、fplug_tempは以下の様に記述しました。

#!/bin/sh
# -*- sh -*-

: << =cut

=head1 NAME

fplug_temp - Plugin to temperature at fplug

=head1 NOTES

Especially the average and max values on the bigger graphs (yearly) can be interesting.

=head1 AUTHOR

Contributed by Toshiya Goto

=head1 LICENSE

Unknown license

=head1 MAGIC MARKERS

 #%# family=auto
 #%# capabilities=autoconf

=cut

. $MUNIN_LIBDIR/plugins/plugin.sh

if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi

if [ "$1" = "config" ]; then

        echo 'graph_title fplug_temperature'
        echo 'graph_args --base 1000 -l 0 '
        echo 'graph_scale no'
        echo 'graph_vlabel temperature'
        echo 'graph_category fplug'
        echo 'fplug_temp.label fplug_temp'
        echo 'fplug_temp.draw LINE2'
        print_warning fplug_temp
        print_critical fplug_temp
        exit 0
fi

echo fplug_temp.value `/usr/local/bin/fpstatus -t`


上記のpluginを/usr/share/munin/pluginsの下にコピーします。
同様に、githubから取得した他のプラグインもコピーしてください。

obsa6:/usr/share/munin/plugins# ls -la fplug_*
-rwxr-xr-x 1 root root 808 Mar  1 18:51 fplug_humid
-rwxr-xr-x 1 root root 815 Mar  1 18:53 fplug_illum
-rwxr-xr-x 1 root root 812 Mar  1 18:55 fplug_rwatt
-rwxr-xr-x 1 root root 807 Mar  1 18:35 fplug_temp

有効にしたいpluginを/etc/munin/pluginsの下にシンボリックリンクします。

obsa6:/etc/munin/plugins# ls -ls fp*
0 lrwxrwxrwx 1 root root 36 Mar  1 18:56 fplug_humid -> /usr/share/munin/plugins/fplug_humid
0 lrwxrwxrwx 1 root root 36 Mar  1 18:56 fplug_illum -> /usr/share/munin/plugins/fplug_illum
0 lrwxrwxrwx 1 root root 36 Mar  1 18:56 fplug_rwatt -> /usr/share/munin/plugins/fplug_rwatt
0 lrwxrwxrwx 1 root root 35 Mar  1 18:42 fplug_temp -> /usr/share/munin/plugins/fplug_temp

muninをrestartします。

# /etc/init.d/munin-node restart

pluginが正常に動作しているかどうかは、/var/log/munin/の下のログを確認して下さい。

# tail /var/log/munin/munin-update.log
2013/03/04 11:35:10 [INFO] Reaping Munin::Master::UpdateWorker<localdomain;localhost.localdomain>.  Exit value/signal: 0/0
2013/03/04 11:35:10 [INFO]: Munin-update finished (5.86 sec)
2013/03/04 11:40:04 Opened log file
2013/03/04 11:40:04 [INFO]: Starting munin-update
2013/03/04 11:40:10 [INFO] Reaping Munin::Master::UpdateWorker<localdomain;localhost.localdomain>.  Exit value/signal: 0/0
2013/03/04 11:40:10 [INFO]: Munin-update finished (5.80 sec)
2013/03/04 11:45:04 Opened log file
2013/03/04 11:45:04 [INFO]: Starting munin-update
2013/03/04 11:45:10 [INFO] Reaping Munin::Master::UpdateWorker<localdomain;localhost.localdomain>.  Exit value/signal: 0/0
2013/03/04 11:45:10 [INFO]: Munin-update finished (5.80 sec)

・使用方法

Webブラウザにて、

http://<muninを実行しているサーバのアドレス>/munin

にアクセスすることにより、muninのトップメニューが表示されます。
対象となるサーバおよび項目をクリックすることにより、監視対象の状態がグラフ表示されます。

<munin Overview画面>

<munin fplugプラグインのグラフ表示例>
  
<参考: munin 2.0による fplugプラグインのWebUI>

5. さいごに


今回は、単純なデータハンドリングのテスト、およびWebモニタリングツールへのplugin実装を行ってみました。

電力監視に関してはリアルタイム消費電力をmuninの巡回時間毎に取得しているだけであり、ピーク管理のみとなります。

積算電力の取得をはじめ、F-PLUGの持つより高度なデータオペレーションについてお考えの方は、当blog担当までご相談下さい。